src/eric7/Debugger/DebugViewer.py

branch
eric7
changeset 10935
680150fd2b8c
parent 10689
3ede487187f2
child 11090
f5f5f5803935
diff -r fecc847180b9 -r 680150fd2b8c src/eric7/Debugger/DebugViewer.py
--- a/src/eric7/Debugger/DebugViewer.py	Sat Sep 28 16:51:48 2024 +0200
+++ b/src/eric7/Debugger/DebugViewer.py	Sat Sep 28 17:47:10 2024 +0200
@@ -101,6 +101,8 @@
         self.debugServer = debugServer
         self.debugUI = None
 
+        self.__setFocusToWidget = None
+
         self.setWindowIcon(EricPixmapCache.getIcon("eric"))
 
         self.__mainLayout = QVBoxLayout()
@@ -164,6 +166,9 @@
         self.globalsFilterTypeCombo.addItems(
             [self.tr("Don't Show"), self.tr("Show Only")]
         )
+        self.globalsFilterTypeCombo.setCurrentIndex(
+            1 if Preferences.getDebugger("ShowOnlyAsDefault") else 0
+        )
         self.gvvWidgetHLayout.addWidget(self.globalsFilterTypeCombo)
 
         self.globalsFilterEdit = QLineEdit(self.gvvWidget)
@@ -201,6 +206,12 @@
         self.gvvSourceButton.clicked.connect(self.__showSource)
         self.setGlobalsFilterButton.clicked.connect(self.setGlobalsFilter)
         self.globalsFilterEdit.returnPressed.connect(self.setGlobalsFilter)
+        self.globalsFilterEdit.textEdited.connect(
+            lambda: self.__filterStringEdited(globalsFilter=True)
+        )
+        self.globalsFilterTypeCombo.currentIndexChanged.connect(
+            lambda: self.__filterStringEdited(globalsFilter=True)
+        )
 
         # add the local variables viewer
         self.lvvWidget = QWidget()
@@ -236,6 +247,9 @@
         self.localsFilterTypeCombo.addItems(
             [self.tr("Don't Show"), self.tr("Show Only")]
         )
+        self.localsFilterTypeCombo.setCurrentIndex(
+            1 if Preferences.getDebugger("ShowOnlyAsDefault") else 0
+        )
         self.lvvWidgetHLayout2.addWidget(self.localsFilterTypeCombo)
 
         self.localsFilterEdit = QLineEdit(self.lvvWidget)
@@ -273,6 +287,12 @@
         self.lvvStackComboBox.currentIndexChanged[int].connect(self.__frameSelected)
         self.setLocalsFilterButton.clicked.connect(self.setLocalsFilter)
         self.localsFilterEdit.returnPressed.connect(self.setLocalsFilter)
+        self.localsFilterEdit.textEdited.connect(
+            lambda: self.__filterStringEdited(globalsFilter=False)
+        )
+        self.localsFilterTypeCombo.currentIndexChanged.connect(
+            lambda: self.__filterStringEdited(globalsFilter=False)
+        )
 
         self.preferencesChanged.connect(self.handlePreferencesChanged)
         self.preferencesChanged.connect(self.globalsViewer.preferencesChanged)
@@ -397,6 +417,15 @@
         self.lvvSourceButton.setVisible(not self.__autoViewSource)
         self.gvvSourceButton.setVisible(not self.__autoViewSource)
 
+        if not bool(self.globalsFilterEdit.text()):
+            self.globalsFilterTypeCombo.setCurrentIndex(
+                1 if Preferences.getDebugger("ShowOnlyAsDefault") else 0
+            )
+        if not bool(self.localsFilterEdit.text()):
+            self.localsFilterTypeCombo.setCurrentIndex(
+                1 if Preferences.getDebugger("ShowOnlyAsDefault") else 0
+            )
+
     def setDebugger(self, debugUI):
         """
         Public method to set a reference to the Debug UI.
@@ -484,6 +513,10 @@
         else:
             self.localsViewer.showVariables(vlist, self.framenr)
 
+        if self.__setFocusToWidget is not None:
+            self.__setFocusToWidget.setFocus(Qt.FocusReason.MouseFocusReason)
+            self.__setFocusToWidget = None  # reset it
+
     def showVariable(self, vlist, showGlobals):
         """
         Public method to show the variables in the respective window.
@@ -710,6 +743,20 @@
                     self.getSelectedDebuggerId(), 0, self.__localsFilter, self.framenr
                 )
 
+    def __filterStringEdited(self, globalsFilter):
+        """
+        Private method to handle the editing of the a variables filter.
+
+        @param globalsFilter flag indicating the globals filter was edited
+        @type bool
+        """
+        if globalsFilter:
+            self.__setFocusToWidget = self.globalsFilterEdit
+            self.setGlobalsFilter()
+        else:
+            self.__setFocusToWidget = self.localsFilterEdit
+            self.setLocalsFilter()
+
     def refreshVariablesLists(self):
         """
         Public slot to refresh the local and global variables lists.

eric ide

mercurial