eric6/Debugger/DebugViewer.py

branch
multi_processing
changeset 7389
770ffcb88be5
parent 7379
72a72fd56494
child 7405
bf6be3cff6cf
equal deleted inserted replaced
7386:3de001de249c 7389:770ffcb88be5
6 """ 6 """
7 Module implementing a widget containing various debug related views. 7 Module implementing a widget containing various debug related views.
8 8
9 The views avaliable are: 9 The views avaliable are:
10 <ul> 10 <ul>
11 <li>variables viewer for global variables</li> 11 <li>selector showing all connected debugger backends</li>
12 <li>variables viewer for local variables</li> 12 <li>variables viewer for global variables for the selected debug client</li>
13 <li>variables viewer for local variables for the selected debug client</li>
14 <li>call stack viewer for the selected debug client</li>
13 <li>call trace viewer</li> 15 <li>call trace viewer</li>
14 <li>viewer for breakpoints</li> 16 <li>viewer for breakpoints</li>
15 <li>viewer for watch expressions</li> 17 <li>viewer for watch expressions</li>
16 <li>viewer for exceptions</li> 18 <li>viewer for exceptions</li>
17 <li>viewer for threads</li> 19 <li>viewer for threads for the selected debug client</li>
18 <li>a file browser (optional)</li>
19 <li>an interpreter shell (optional)</li>
20 </ul> 20 </ul>
21 """ 21 """
22 22
23 23
24 import os 24 import os
430 @param line linenumber 430 @param line linenumber
431 @type int 431 @type int
432 @param debuggerId ID of the debugger backend 432 @param debuggerId ID of the debugger backend
433 @type str 433 @type str
434 """ 434 """
435 if debuggerId: 435 self.__setDebuggerIcon(debuggerId, "exceptions")
436 index = self.__debuggersCombo.findText(debuggerId, Qt.MatchExactly) 436
437 if index >= 0:
438 self.__debuggersCombo.setItemIcon(
439 index, UI.PixmapCache.getIcon("exceptions"))
440
441 # TODO: Refactor the icon setting code into a method
442 def __clientSyntaxError(self, message, filename, lineNo, characterNo, 437 def __clientSyntaxError(self, message, filename, lineNo, characterNo,
443 debuggerId): 438 debuggerId):
444 """ 439 """
445 Private method to handle a syntax error in the debugged program. 440 Private method to handle a syntax error in the debugged program.
446 441
453 @param characterNo character number of the syntax error position 448 @param characterNo character number of the syntax error position
454 @type int 449 @type int
455 @param debuggerId ID of the debugger backend 450 @param debuggerId ID of the debugger backend
456 @type str 451 @type str
457 """ 452 """
458 if debuggerId: 453 self.__setDebuggerIcon(debuggerId, "syntaxError22")
459 index = self.__debuggersCombo.findText(debuggerId, Qt.MatchExactly)
460 if index >= 0:
461 self.__debuggersCombo.setItemIcon(
462 index, UI.PixmapCache.getIcon("syntaxError22"))
463 454
464 def __clientException(self, exceptionType, exceptionMessage, stackTrace, 455 def __clientException(self, exceptionType, exceptionMessage, stackTrace,
465 debuggerId): 456 debuggerId):
466 """ 457 """
467 Private method to handle an exception of the debugged program. 458 Private method to handle an exception of the debugged program.
473 @param stackTrace list of stack entries 464 @param stackTrace list of stack entries
474 @type list of str 465 @type list of str
475 @param debuggerId ID of the debugger backend 466 @param debuggerId ID of the debugger backend
476 @type str 467 @type str
477 """ 468 """
478 if debuggerId: 469 self.__setDebuggerIcon(debuggerId, "exceptions")
479 index = self.__debuggersCombo.findText(debuggerId, Qt.MatchExactly)
480 if index >= 0:
481 self.__debuggersCombo.setItemIcon(
482 index, UI.PixmapCache.getIcon("exceptions"))
483 470
484 def setVariablesFilter(self, globalsFilter, localsFilter): 471 def setVariablesFilter(self, globalsFilter, localsFilter):
485 """ 472 """
486 Public slot to set the local variables filter. 473 Public slot to set the local variables filter.
487 474
521 """ 508 """
522 Public slot to set the global variable filter. 509 Public slot to set the global variable filter.
523 """ 510 """
524 if self.debugServer.isDebugging(): 511 if self.debugServer.isDebugging():
525 filterStr = self.globalsFilterEdit.text() 512 filterStr = self.globalsFilterEdit.text()
526 self.debugServer.remoteClientSetFilter(1, filterStr) 513 self.debugServer.remoteClientSetFilter(
514 self.getSelectedDebuggerId(), 1, filterStr)
527 self.debugServer.remoteClientVariables( 515 self.debugServer.remoteClientVariables(
528 self.getSelectedDebuggerId(), 2, self.globalsFilter) 516 self.getSelectedDebuggerId(), 2, self.globalsFilter)
529 517
530 def setLocalsFilter(self): 518 def setLocalsFilter(self):
531 """ 519 """
532 Public slot to set the local variable filter. 520 Public slot to set the local variable filter.
533 """ 521 """
534 if self.debugServer.isDebugging(): 522 if self.debugServer.isDebugging():
535 filterStr = self.localsFilterEdit.text() 523 filterStr = self.localsFilterEdit.text()
536 self.debugServer.remoteClientSetFilter(0, filterStr) 524 self.debugServer.remoteClientSetFilter(
525 self.getSelectedDebuggerId(), 0, filterStr)
537 if self.currentStack: 526 if self.currentStack:
538 self.debugServer.remoteClientVariables( 527 self.debugServer.remoteClientVariables(
539 self.getSelectedDebuggerId(), 0, self.localsFilter, 528 self.getSelectedDebuggerId(), 0, self.localsFilter,
540 self.framenr) 529 self.framenr)
541 530
622 icon = "mediaPlaybackStart" 611 icon = "mediaPlaybackStart"
623 elif debugStatus == 0: 612 elif debugStatus == 0:
624 icon = "mediaPlaybackPause" 613 icon = "mediaPlaybackPause"
625 else: 614 else:
626 icon = "exceptions" 615 icon = "exceptions"
627 self.__debuggersCombo.setItemIcon(self.__debuggersCombo.currentIndex(), 616 self.__setDebuggerIcon("", icon)
628 UI.PixmapCache.getIcon(icon))
629 617
630 def __threadSelected(self, current, previous): 618 def __threadSelected(self, current, previous):
631 """ 619 """
632 Private slot to handle the selection of a thread in the thread list. 620 Private slot to handle the selection of a thread in the thread list.
633 621
691 679
692 @return selected debugger ID 680 @return selected debugger ID
693 @rtype str 681 @rtype str
694 """ 682 """
695 return self.__debuggersCombo.currentText() 683 return self.__debuggersCombo.currentText()
684
685 def __setDebuggerIcon(self, debuggerId, iconName):
686 """
687 Private method to set the icon for a specific debugger ID.
688
689 @param debuggerId ID of the debugger backend (empty ID means the
690 currently selected one)
691 @type str
692 @param iconName name of the icon to be used
693 @type str
694 """
695 if debuggerId:
696 index = self.__debuggersCombo.findText(debuggerId, Qt.MatchExactly)
697 else:
698 index = self.__debuggersCombo.currentIndex()
699 if index >= 0:
700 self.__debuggersCombo.setItemIcon(
701 index, UI.PixmapCache.getIcon(iconName))

eric ide

mercurial