eric6/Debugger/DebugUI.py

changeset 8163
29fb6d420a25
parent 8162
8358c3c95841
child 8176
31965986ecd1
child 8218
7c09585bd960
--- a/eric6/Debugger/DebugUI.py	Sun Mar 14 19:59:27 2021 +0100
+++ b/eric6/Debugger/DebugUI.py	Mon Mar 15 17:55:48 2021 +0100
@@ -8,6 +8,7 @@
 """
 
 import os
+import copy
 
 from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, Qt
 from PyQt5.QtGui import QKeySequence
@@ -110,12 +111,12 @@
         self.multiprocessNoDebugHistory = Preferences.toList(
             Preferences.Prefs.settings.value(
                 'DebugInfo/MultiprocessNoDebugHistory'))
-        self.overrideGlobalConfig = Preferences.toBool(
-            Preferences.Prefs.settings.value(
-                'DebugInfo/OverrideGlobal', False))
-        self.redirectStdinAndStdout = Preferences.toBool(
-            Preferences.Prefs.settings.value(
-                'DebugInfo/RedirectStdinStdout', True))
+        self.overrideGlobalConfig = {
+            "enable": Preferences.toBool(Preferences.Prefs.settings.value(
+                'DebugInfo/OverrideGlobal', False)),
+            "redirect": Preferences.toBool(Preferences.Prefs.settings.value(
+                'DebugInfo/RedirectStdinStdout', True)),
+        }
         
         self.lastDebuggedFile = None
         self.lastStartAction = 0    # 0=None, 1=Script, 2=Project
@@ -1012,10 +1013,10 @@
             self.multiprocessNoDebugHistory)
         Preferences.Prefs.settings.setValue(
             'DebugInfo/OverrideGlobal',
-            self.overrideGlobalConfig)
+            self.overrideGlobalConfig["enable"])
         Preferences.Prefs.settings.setValue(
             'DebugInfo/RedirectStdinStdout',
-            self.redirectStdinAndStdout)
+            self.overrideGlobalConfig["redirect"])
         
     def shutdownServer(self):
         """
@@ -1703,10 +1704,12 @@
         dlg = StartDialog(
             cap, self.lastUsedVenvName, self.argvHistory, self.wdHistory,
             self.envHistory, self.exceptions, self.ui, 2,
-            autoClearShell=self.autoClearShell)
+            autoClearShell=self.autoClearShell,
+            configOverride=self.overrideGlobalConfig)
         if dlg.exec() == QDialog.DialogCode.Accepted:
             (lastUsedVenvName, argv, wd, env, exceptions, clearShell,
              console) = dlg.getData()
+            configOverride = dlg.getGlobalOverrideData()
             eraseCoverage = dlg.getCoverageData()
             
             if runProject:
@@ -1729,7 +1732,8 @@
                 # save the info for later use
                 self.project.setDbgInfo(
                     lastUsedVenvName, argv, wd, env, exceptions, self.excList,
-                    self.excIgnoreList, clearShell
+                    self.excIgnoreList, clearShell,
+                    configOverride=configOverride
                 )
                 
                 self.lastStartAction = 6
@@ -1775,6 +1779,9 @@
             # Save the run in console flag
             self.runInConsole = console
             
+            # Save the global config override data
+            self.overrideGlobalConfig = copy.deepcopy(configOverride)
+            
             # Hide all error highlights
             self.viewmanager.unhighlight()
             
@@ -1791,7 +1798,8 @@
                     lastUsedVenvName, fn, argv, wd, env,
                     autoClearShell=self.autoClearShell, erase=eraseCoverage,
                     forProject=runProject, runInConsole=console,
-                    clientType=self.clientType)
+                    clientType=self.clientType,
+                    configOverride=self.overrideGlobalConfig)
                 
                 self.stopAct.setEnabled(True)
         
@@ -1840,10 +1848,12 @@
         dlg = StartDialog(
             cap, self.lastUsedVenvName, self.argvHistory, self.wdHistory,
             self.envHistory, self.exceptions, self.ui, 3,
-            autoClearShell=self.autoClearShell)
+            autoClearShell=self.autoClearShell,
+            configOverride=self.overrideGlobalConfig)
         if dlg.exec() == QDialog.DialogCode.Accepted:
             (lastUsedVenvName, argv, wd, env, exceptions, clearShell,
              console) = dlg.getData()
+            configOverride = dlg.getGlobalOverrideData()
             eraseTimings = dlg.getProfilingData()
             
             if runProject:
@@ -1866,7 +1876,8 @@
                 # save the info for later use
                 self.project.setDbgInfo(
                     lastUsedVenvName, argv, wd, env, exceptions, self.excList,
-                    self.excIgnoreList, clearShell
+                    self.excIgnoreList, clearShell,
+                    configOverride=configOverride
                 )
                 
                 self.lastStartAction = 8
@@ -1912,6 +1923,9 @@
             # Save the run in console flag
             self.runInConsole = console
             
+            # Save the global config override data
+            self.overrideGlobalConfig = copy.deepcopy(configOverride)
+            
             # Hide all error highlights
             self.viewmanager.unhighlight()
             
@@ -1928,7 +1942,8 @@
                     lastUsedVenvName, fn, argv, wd, env,
                     autoClearShell=self.autoClearShell, erase=eraseTimings,
                     forProject=runProject, runInConsole=console,
-                    clientType=self.clientType)
+                    clientType=self.clientType,
+                    configOverride=self.overrideGlobalConfig)
                 
                 self.stopAct.setEnabled(True)
         
@@ -1978,12 +1993,11 @@
             cap, self.lastUsedVenvName, self.argvHistory, self.wdHistory,
             self.envHistory, self.exceptions, self.ui, 1,
             autoClearShell=self.autoClearShell,
-            enableConfigOverride=self.overrideGlobalConfig,
-            enableRedirect=self.redirectStdinAndStdout)
+            configOverride=self.overrideGlobalConfig)
         if dlg.exec() == QDialog.DialogCode.Accepted:
             (lastUsedVenvName, argv, wd, env, exceptions, clearShell,
              console) = dlg.getData()
-            enableConfigOverride, enableRedirect = dlg.getGlobalOverrideData()
+            configOverride = dlg.getGlobalOverrideData()
             
             if runProject:
                 fn = self.project.getMainScript(True)
@@ -2003,10 +2017,10 @@
                     doNotStart = True
                 
                 # save the info for later use
-                # TODO: add global config override data
                 self.project.setDbgInfo(
                     lastUsedVenvName, argv, wd, env, exceptions, self.excList,
-                    self.excIgnoreList, clearShell
+                    self.excIgnoreList, clearShell,
+                    configOverride=configOverride
                 )
                 
                 self.lastStartAction = 4
@@ -2051,8 +2065,7 @@
             self.runInConsole = console
             
             # Save the global config override data
-            self.overrideGlobalConfig = enableConfigOverride
-            self.redirectStdinAndStdout = enableRedirect
+            self.overrideGlobalConfig = copy.deepcopy(configOverride)
             
             # Hide all error highlights
             self.viewmanager.unhighlight()
@@ -2066,11 +2079,11 @@
                 self.debugViewer.initCallStackViewer(runProject)
                 
                 # Ask the client to open the new program.
-                # TODO: add global config override data
                 self.debugServer.remoteRun(
                     lastUsedVenvName, fn, argv, wd, env,
                     autoClearShell=self.autoClearShell, forProject=runProject,
-                    runInConsole=console, clientType=self.clientType)
+                    runInConsole=console, clientType=self.clientType,
+                    configOverride=self.overrideGlobalConfig)
                 
                 self.stopAct.setEnabled(True)
         
@@ -2122,10 +2135,12 @@
             tracePython=self.tracePython, autoClearShell=self.autoClearShell,
             autoContinue=self.autoContinue,
             enableMultiprocess=self.enableMultiprocess,
-            multiprocessNoDebugHistory=self.multiprocessNoDebugHistory)
+            multiprocessNoDebugHistory=self.multiprocessNoDebugHistory,
+            configOverride=self.overrideGlobalConfig)
         if dlg.exec() == QDialog.DialogCode.Accepted:
             (lastUsedVenvName, argv, wd, env, exceptions, clearShell,
              console) = dlg.getData()
+            configOverride = dlg.getGlobalOverrideData()
             (tracePython, autoContinue, enableMultiprocess,
              multiprocessNoDebug) = dlg.getDebugData()
             
@@ -2152,7 +2167,8 @@
                     self.excIgnoreList, clearShell, tracePython=tracePython,
                     autoContinue=autoContinue,
                     enableMultiprocess=enableMultiprocess,
-                    multiprocessNoDebug=multiprocessNoDebug
+                    multiprocessNoDebug=multiprocessNoDebug,
+                    configOverride=configOverride
                 )
                 
                 self.lastStartAction = 2
@@ -2205,6 +2221,9 @@
             self.enableMultiprocess = enableMultiprocess
             self.setMultiprocessNoDebugHistory(multiprocessNoDebug)
             
+            # Save the global config override data
+            self.overrideGlobalConfig = copy.deepcopy(configOverride)
+            
             # Hide all error highlights
             self.viewmanager.unhighlight()
             
@@ -2231,7 +2250,8 @@
                     runInConsole=console, clientType=self.clientType,
                     enableCallTrace=enableCallTrace,
                     enableMultiprocess=enableMultiprocess,
-                    multiprocessNoDebug=multiprocessNoDebug)
+                    multiprocessNoDebug=multiprocessNoDebug,
+                    configOverride=self.overrideGlobalConfig)
                 
                 if (
                     self.debugServer.isClientProcessUp() and
@@ -2320,7 +2340,8 @@
                     clientType=self.clientType,
                     enableCallTrace=enableCallTrace,
                     enableMultiprocess=self.enableMultiprocess,
-                    multiprocessNoDebug=multiprocessNoDebug)
+                    multiprocessNoDebug=multiprocessNoDebug,
+                    configOverride=self.overrideGlobalConfig)
                 
                 # Signal that we have started a debugging session
                 self.debuggingStarted.emit(fn)
@@ -2332,7 +2353,8 @@
                     autoClearShell=self.autoClearShell,
                     forProject=forProject,
                     runInConsole=self.runInConsole,
-                    clientType=self.clientType)
+                    clientType=self.clientType,
+                    configOverride=self.overrideGlobalConfig)
             
             elif self.lastStartAction in [5, 6]:
                 # Ask the client to coverage run the new program.
@@ -2342,7 +2364,8 @@
                     erase=self.eraseCoverage,
                     forProject=forProject,
                     runInConsole=self.runInConsole,
-                    clientType=self.clientType)
+                    clientType=self.clientType,
+                    configOverride=self.overrideGlobalConfig)
             
             elif self.lastStartAction in [7, 8]:
                 # Ask the client to profile run the new program.
@@ -2352,7 +2375,8 @@
                     erase=self.eraseTimings,
                     forProject=forProject,
                     runInConsole=self.runInConsole,
-                    clientType=self.clientType)
+                    clientType=self.clientType,
+                    configOverride=self.overrideGlobalConfig)
             
             self.stopAct.setEnabled(True)
         
@@ -2589,14 +2613,13 @@
         """
         self.enableMultiprocess = enableMultiprocess
     
-    def setEnableGlobalConfigOverride(self, override, redirect):
+    def setEnableGlobalConfigOverride(self, overrideData):
         """
         Public method to initialize the global config override data.
         
-        @param override flag indicating to enable global config override
-        @type bool
-        @param redirect flag indicating to redirect stdin/stdout/stderr
-        @type bool
+        @param overrideData dictionary containing a flag indicating to enable
+            global config override and a flag indicating to redirect
+            stdin/stdout/stderr
+        @type dict
         """
-        self.overrideGlobalConfig = override
-        self.redirectStdinAndStdout = redirect
+        self.overrideGlobalConfig = copy.deepcopy(overrideData)

eric ide

mercurial