Debugger/DebugViewer.py

branch
Py2 comp.
changeset 2677
3d4277929fb3
parent 2525
8b507a9a2d40
parent 2622
08cc2f31c983
child 2791
a9577f248f04
--- a/Debugger/DebugViewer.py	Fri May 24 18:39:58 2013 +0200
+++ b/Debugger/DebugViewer.py	Tue May 28 20:52:12 2013 +0200
@@ -178,10 +178,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)
@@ -257,10 +266,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):
         """
@@ -289,6 +299,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.
@@ -365,6 +384,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()
@@ -486,3 +508,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