Debugger/DebugViewer.py

changeset 2622
08cc2f31c983
parent 2400
c1726b754f96
child 2677
3d4277929fb3
child 2723
f6ad272bf486
--- a/Debugger/DebugViewer.py	Thu Apr 25 19:53:25 2013 +0200
+++ b/Debugger/DebugViewer.py	Fri Apr 26 19:37:21 2013 +0200
@@ -176,10 +176,19 @@
         self.__tabWidget.setTabToolTip(index, self.localsViewer.windowTitle())
         
         self.sourceButton.clicked[()].connect(self.__showSource)
-        self.stackComboBox.activated[int].connect(self.__frameSelected)
+        self.stackComboBox.currentIndexChanged[int].connect(self.__frameSelected)
         self.setLocalsFilterButton.clicked[()].connect(self.__setLocalsFilter)
         self.localsFilterEdit.returnPressed.connect(self.__setLocalsFilter)
         
+        from .CallStackViewer import CallStackViewer
+        # add the call stack viewer
+        self.callStackViewer = CallStackViewer(self.debugServer)
+        index = self.__tabWidget.addTab(self.callStackViewer,
+            UI.PixmapCache.getIcon("step.png"), "")
+        self.__tabWidget.setTabToolTip(index, self.callStackViewer.windowTitle())
+        self.callStackViewer.sourceFile.connect(self.sourceFile)
+        self.callStackViewer.frameSelected.connect(self.__callStackFrameSelected)
+        
         from .CallTraceViewer import CallTraceViewer
         # add the call trace viewer
         self.callTraceViewer = CallTraceViewer(self.debugServer)
@@ -255,10 +264,11 @@
         """
         Public method to set a reference to the Debug UI.
         
-        @param debugUI reference to the DebugUI objectTrees
+        @param debugUI reference to the DebugUI object (DebugUI)
         """
         self.debugUI = debugUI
         self.debugUI.clientStack.connect(self.handleClientStack)
+        self.callStackViewer.setDebugger(debugUI)
         
     def handleResetUI(self):
         """
@@ -287,6 +297,15 @@
             self.saveCurrentPage()
             self.__tabWidget.setCurrentWidget(self.shellAssembly)
         
+    def initCallStackViewer(self, projectMode):
+        """
+        Public method to initialize the call stack viewer.
+        
+        @param projectMode flag indicating to enable the project mode (boolean)
+        """
+        self.callStackViewer.clear()
+        self.callStackViewer.setProjectMode(projectMode)
+        
     def isCallTraceEnabled(self):
         """
         Public method to get the state of the call trace function.
@@ -363,6 +382,9 @@
     def handleClientStack(self, stack):
         """
         Public slot to show the call stack of the program being debugged.
+        
+        @param stack list of tuples with call stack data (file name, line number,
+            function name, formatted argument/values list)
         """
         self.framenr = 0
         self.stackComboBox.clear()
@@ -484,3 +506,13 @@
         if current is not None and self.__doThreadListUpdate:
             tid = int(current.text(0))
             self.debugServer.remoteSetThread(tid)
+    
+    def __callStackFrameSelected(self, frameNo):
+        """
+        Private slot to handle the selection of a call stack entry of the
+        call stack viewer.
+        
+        @param frameNo frame number (index) of the selected entry (integer)
+        """
+        if frameNo >= 0:
+            self.stackComboBox.setCurrentIndex(frameNo)

eric ide

mercurial