eric6/Debugger/DebugViewer.py

branch
multi_processing
changeset 7374
5401ae8ddaa1
parent 7360
9190402e4505
child 7375
af2500ced7e0
--- a/eric6/Debugger/DebugViewer.py	Mon Jan 27 19:50:40 2020 +0100
+++ b/eric6/Debugger/DebugViewer.py	Tue Jan 28 19:41:51 2020 +0100
@@ -239,6 +239,18 @@
         
         self.__threadList.currentItemChanged.connect(self.__threadSelected)
         
+        # add the debugger viewer
+        self.__debuggersLayout = QHBoxLayout(self)
+        self.__debuggersLayout.addWidget(QLabel(self.tr("Debuggers:")))
+        self.__debuggersCombo = QComboBox(self)
+        self.__debuggersCombo.setSizePolicy(
+            QSizePolicy.Expanding, QSizePolicy.Fixed)
+        self.__debuggersLayout.addWidget(self.__debuggersCombo)
+        self.__mainLayout.addLayout(self.__debuggersLayout)
+        
+        self.__debuggersCombo.currentTextChanged.connect(
+            self.__debuggerSelected)
+
         self.__mainLayout.setStretchFactor(self.__tabWidget, 5)
         self.__mainLayout.setStretchFactor(self.__threadList, 1)
         
@@ -281,6 +293,7 @@
         self.__threadList.clear()
         self.__tabWidget.setCurrentWidget(self.glvWidget)
         self.breakpointViewer.handleResetUI()
+        self.__debuggersCombo.clear()
         
     def initCallStackViewer(self, projectMode):
         """
@@ -396,12 +409,14 @@
         
         @param frmnr frame number (0 is the current frame) (int)
         """
-        self.framenr = frmnr
-        if self.debugServer.isDebugging():
-            self.debugServer.remoteClientVariables(0, self.localsFilter, frmnr)
-        
-        if self.__autoViewSource:
-            self.__showSource()
+        if frmnr >= 0:
+            self.framenr = frmnr
+            if self.debugServer.isDebugging():
+                self.debugServer.remoteClientVariables(
+                    0, self.localsFilter, frmnr)
+            
+            if self.__autoViewSource:
+                self.__showSource()
         
     def setGlobalsFilter(self):
         """
@@ -499,3 +514,47 @@
         """
         if frameNo >= 0:
             self.stackComboBox.setCurrentIndex(frameNo)
+    
+    def __debuggerSelected(self, debuggerId):
+        """
+        Private slot to handle the selection of a debugger backend ID.
+        
+        @param debuggerId ID of the selected debugger backend
+        @type str
+        """
+        if debuggerId:
+            self.globalsViewer.handleResetUI()
+            self.localsViewer.handleResetUI()
+            self.currentStack = None
+            self.stackComboBox.clear()
+            self.__threadList.clear()
+            
+            self.debugUI.getDebuggerData(debuggerId)
+    
+    def showDebuggersList(self, debuggerIds):
+        """
+        Public slot to receive the list of debugger backend IDs.
+        
+        @param debuggerIds list of debugger backend IDs
+        @type list of str
+        """
+        block = self.__debuggersCombo.blockSignals(True)
+        
+        currentDebuggerId = self.__debuggersCombo.currentText()
+        self.__debuggersCombo.clear()
+        self.__debuggersCombo.addItems(debuggerIds)
+        if currentDebuggerId:
+            self.__debuggersCombo.setCurrentText(currentDebuggerId)
+        else:
+            self.__debuggersCombo.setCurrentIndex(0)
+        
+        self.__debuggersCombo.blockSignals(block)
+    
+    def getSelectedDebuggerId(self):
+        """
+        Public method to get the currently selected debugger ID.
+        
+        @return selected debugger ID
+        @rtype str
+        """
+        return self.__debuggersCombo.currentText()

eric ide

mercurial