56 self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) |
56 self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) |
57 self.customContextMenuRequested.connect(self.__showContextMenu) |
57 self.customContextMenuRequested.connect(self.__showContextMenu) |
58 self.doubleClicked.connect(self.__doubleClicked) |
58 self.doubleClicked.connect(self.__doubleClicked) |
59 |
59 |
60 self.__createPopupMenus() |
60 self.__createPopupMenus() |
61 |
|
62 self.condHistory = [] |
|
63 self.fnHistory = [] |
|
64 self.fnHistory.append('') |
|
65 |
|
66 self.__loadRecent() |
|
67 |
61 |
68 def setModel(self, model): |
62 def setModel(self, model): |
69 """ |
63 """ |
70 Public slot to set the breakpoint model. |
64 Public slot to set the breakpoint model. |
71 |
65 |
171 self.menu.addAction(self.tr("Delete"), self.__deleteBreak) |
165 self.menu.addAction(self.tr("Delete"), self.__deleteBreak) |
172 self.menu.addAction(self.tr("Delete all"), self.__deleteAllBreaks) |
166 self.menu.addAction(self.tr("Delete all"), self.__deleteAllBreaks) |
173 self.menu.addSeparator() |
167 self.menu.addSeparator() |
174 self.menu.addAction(self.tr("Goto"), self.__showSource) |
168 self.menu.addAction(self.tr("Goto"), self.__showSource) |
175 self.menu.addSeparator() |
169 self.menu.addSeparator() |
|
170 self.menu.addAction(self.tr("Clear Histories"), |
|
171 self.clearHistories) |
|
172 self.menu.addSeparator() |
176 self.menu.addAction(self.tr("Configure..."), self.__configure) |
173 self.menu.addAction(self.tr("Configure..."), self.__configure) |
177 |
174 |
178 self.backMenuActions = {} |
175 self.backMenuActions = {} |
179 self.backMenu = QMenu() |
176 self.backMenu = QMenu() |
180 self.backMenu.addAction(self.tr("Add"), self.__addBreak) |
177 self.backMenu.addAction(self.tr("Add"), self.__addBreak) |
185 self.tr("Disable all"), |
182 self.tr("Disable all"), |
186 self.__disableAllBreaks) |
183 self.__disableAllBreaks) |
187 self.backMenuActions["DeleteAll"] = self.backMenu.addAction( |
184 self.backMenuActions["DeleteAll"] = self.backMenu.addAction( |
188 self.tr("Delete all"), |
185 self.tr("Delete all"), |
189 self.__deleteAllBreaks) |
186 self.__deleteAllBreaks) |
190 self.backMenu.aboutToShow.connect(self.__showBackMenu) |
187 self.backMenu.addSeparator() |
|
188 self.backMenu.addAction(self.tr("Clear Histories"), |
|
189 self.clearHistories) |
191 self.backMenu.addSeparator() |
190 self.backMenu.addSeparator() |
192 self.backMenu.addAction(self.tr("Configure..."), self.__configure) |
191 self.backMenu.addAction(self.tr("Configure..."), self.__configure) |
|
192 self.backMenu.aboutToShow.connect(self.__showBackMenu) |
193 |
193 |
194 self.multiMenu = QMenu() |
194 self.multiMenu = QMenu() |
195 self.multiMenu.addAction(self.tr("Add"), self.__addBreak) |
195 self.multiMenu.addAction(self.tr("Add"), self.__addBreak) |
196 self.multiMenu.addSeparator() |
196 self.multiMenu.addSeparator() |
197 self.multiMenu.addAction(self.tr("Enable selected"), |
197 self.multiMenu.addAction(self.tr("Enable selected"), |
207 self.multiMenu.addAction(self.tr("Delete selected"), |
207 self.multiMenu.addAction(self.tr("Delete selected"), |
208 self.__deleteSelectedBreaks) |
208 self.__deleteSelectedBreaks) |
209 self.multiMenu.addAction(self.tr("Delete all"), |
209 self.multiMenu.addAction(self.tr("Delete all"), |
210 self.__deleteAllBreaks) |
210 self.__deleteAllBreaks) |
211 self.multiMenu.addSeparator() |
211 self.multiMenu.addSeparator() |
|
212 self.multiMenu.addAction(self.tr("Clear Histories"), |
|
213 self.clearHistories) |
|
214 self.multiMenu.addSeparator() |
212 self.multiMenu.addAction(self.tr("Configure..."), self.__configure) |
215 self.multiMenu.addAction(self.tr("Configure..."), self.__configure) |
213 |
216 |
214 def __showContextMenu(self, coord): |
217 def __showContextMenu(self, coord): |
215 """ |
218 """ |
216 Private slot to show the context menu. |
219 Private slot to show the context menu. |
243 """ |
246 """ |
244 Private slot to handle the add breakpoint context menu entry. |
247 Private slot to handle the add breakpoint context menu entry. |
245 """ |
248 """ |
246 from .EditBreakpointDialog import EditBreakpointDialog |
249 from .EditBreakpointDialog import EditBreakpointDialog |
247 |
250 |
248 dlg = EditBreakpointDialog((self.fnHistory[0], None), None, |
251 fnHistory, condHistory = self.__loadRecent() |
249 self.condHistory, self, modal=1, |
252 |
250 addMode=1, filenameHistory=self.fnHistory) |
253 dlg = EditBreakpointDialog((fnHistory[0], None), None, |
|
254 condHistory, self, modal=1, |
|
255 addMode=1, filenameHistory=fnHistory) |
251 if dlg.exec() == QDialog.DialogCode.Accepted: |
256 if dlg.exec() == QDialog.DialogCode.Accepted: |
252 fn, line, cond, temp, enabled, count = dlg.getAddData() |
257 fn, line, cond, temp, enabled, count = dlg.getAddData() |
253 if fn is not None: |
258 if fn is not None: |
254 if fn in self.fnHistory: |
259 if fn in fnHistory: |
255 self.fnHistory.remove(fn) |
260 fnHistory.remove(fn) |
256 self.fnHistory.insert(0, fn) |
261 fnHistory.insert(0, fn) |
257 |
262 |
258 if cond: |
263 if cond: |
259 if cond in self.condHistory: |
264 if cond in condHistory: |
260 self.condHistory.remove(cond) |
265 condHistory.remove(cond) |
261 self.condHistory.insert(0, cond) |
266 condHistory.insert(0, cond) |
262 |
267 |
263 self.__saveRecent() |
268 self.__saveRecent(fnHistory, condHistory) |
264 |
269 |
265 self.__model.addBreakPoint(fn, line, (cond, temp, enabled, count)) |
270 self.__model.addBreakPoint(fn, line, (cond, temp, enabled, count)) |
266 self.__resizeColumns() |
271 self.__resizeColumns() |
267 self.__resort() |
272 self.__resort() |
268 |
273 |
302 bp = self.__model.getBreakPointByIndex(sindex) |
307 bp = self.__model.getBreakPointByIndex(sindex) |
303 if not bp: |
308 if not bp: |
304 return |
309 return |
305 |
310 |
306 fn, line, cond, temp, enabled, count = bp[:6] |
311 fn, line, cond, temp, enabled, count = bp[:6] |
|
312 fnHistory, condHistory = self.__loadRecent() |
307 |
313 |
308 from .EditBreakpointDialog import EditBreakpointDialog |
314 from .EditBreakpointDialog import EditBreakpointDialog |
309 dlg = EditBreakpointDialog( |
315 dlg = EditBreakpointDialog( |
310 (fn, line), (cond, temp, enabled, count), |
316 (fn, line), (cond, temp, enabled, count), |
311 self.condHistory, self, modal=True) |
317 condHistory, self, modal=True) |
312 if dlg.exec() == QDialog.DialogCode.Accepted: |
318 if dlg.exec() == QDialog.DialogCode.Accepted: |
313 cond, temp, enabled, count = dlg.getData() |
319 cond, temp, enabled, count = dlg.getData() |
314 if cond: |
320 if cond: |
315 if cond in self.condHistory: |
321 if cond in condHistory: |
316 self.condHistory.remove(cond) |
322 condHistory.remove(cond) |
317 self.condHistory.insert(0, cond) |
323 condHistory.insert(0, cond) |
318 |
324 |
319 self.__saveRecent() |
325 self.__saveRecent(fnHistory, condHistory) |
320 |
326 |
321 self.__model.setBreakPointByIndex( |
327 self.__model.setBreakPointByIndex( |
322 sindex, fn, line, (cond, temp, enabled, count)) |
328 sindex, fn, line, (cond, temp, enabled, count)) |
323 self.__resizeColumns() |
329 self.__resizeColumns() |
324 self.__resort() |
330 self.__resort() |
493 ericApp().getObject("UserInterface").showPreferences( |
499 ericApp().getObject("UserInterface").showPreferences( |
494 "debuggerGeneralPage") |
500 "debuggerGeneralPage") |
495 |
501 |
496 def __loadRecent(self): |
502 def __loadRecent(self): |
497 """ |
503 """ |
498 Private method to load the recently used file names. |
504 Private method to load the recently used file names and breakpoint |
|
505 conditions. |
|
506 |
|
507 @return tuple containing the recently used file names and breakpoint |
|
508 conditions |
|
509 @rtype tuple of (list of str, list of str) |
499 """ |
510 """ |
500 Preferences.Prefs.rsettings.sync() |
511 Preferences.Prefs.rsettings.sync() |
501 |
512 |
502 # load recently used file names |
513 # load recently used file names |
503 self.fnHistory = [] |
514 fnHistory = [] |
504 self.fnHistory.append('') |
515 fnHistory.append('') |
505 rs = Preferences.Prefs.rsettings.value(recentNameBreakpointFiles) |
516 rs = Preferences.Prefs.rsettings.value(recentNameBreakpointFiles) |
506 if rs is not None: |
517 if rs is not None: |
507 recent = [f |
518 recent = [f |
508 for f in Preferences.toList(rs) |
519 for f in Preferences.toList(rs) |
509 if QFileInfo(f).exists()] |
520 if QFileInfo(f).exists()] |
510 self.fnHistory.extend( |
521 fnHistory.extend( |
511 recent[:Preferences.getDebugger("RecentNumber")]) |
522 recent[:Preferences.getDebugger("RecentNumber")]) |
512 |
523 |
513 # load recently entered condition expressions |
524 # load recently entered condition expressions |
514 self.condHistory = [] |
525 condHistory = [] |
515 rs = Preferences.Prefs.rsettings.value(recentNameBreakpointConditions) |
526 rs = Preferences.Prefs.rsettings.value(recentNameBreakpointConditions) |
516 if rs is not None: |
527 if rs is not None: |
517 self.condHistory = Preferences.toList(rs)[ |
528 condHistory = Preferences.toList(rs)[ |
518 :Preferences.getDebugger("RecentNumber")] |
529 :Preferences.getDebugger("RecentNumber")] |
519 |
530 |
520 def __saveRecent(self): |
531 return fnHistory, condHistory |
521 """ |
532 |
522 Private method to save the list of recently used file names. |
533 def __saveRecent(self, fnHistory, condHistory): |
523 """ |
534 """ |
524 recent = [f for f in self.fnHistory if f] |
535 Private method to save the list of recently used file names and |
|
536 breakpoint conditions. |
|
537 |
|
538 @param fnHistory list of recently used file names |
|
539 @type list of str |
|
540 @param condHistory list of recently used breakpoint conditions |
|
541 @type list of str |
|
542 """ |
|
543 recent = [f for f in fnHistory if f] |
525 Preferences.Prefs.rsettings.setValue(recentNameBreakpointFiles, recent) |
544 Preferences.Prefs.rsettings.setValue(recentNameBreakpointFiles, recent) |
526 Preferences.Prefs.rsettings.setValue(recentNameBreakpointConditions, |
545 Preferences.Prefs.rsettings.setValue(recentNameBreakpointConditions, |
527 self.condHistory) |
546 condHistory) |
528 Preferences.Prefs.rsettings.sync() |
547 Preferences.Prefs.rsettings.sync() |
|
548 |
|
549 def clearHistories(self): |
|
550 """ |
|
551 Public method to clear the recently used file names and breakpoint |
|
552 conditions. |
|
553 """ |
|
554 self.__saveRecent([], []) |