eric7/Debugger/BreakPointViewer.py

branch
eric7
changeset 8524
595547ab8d6f
parent 8358
144a6b854f70
child 8881
54e42bc2437a
equal deleted inserted replaced
8523:14e1ee6e720b 8524:595547ab8d6f
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([], [])

eric ide

mercurial