--- a/src/eric7/Project/DebuggerPropertiesDialog.py Fri Mar 08 15:30:23 2024 +0100 +++ b/src/eric7/Project/DebuggerPropertiesDialog.py Fri Mar 08 15:30:53 2024 +0100 @@ -28,16 +28,18 @@ settings. """ - def __init__(self, project, parent=None, name=None): + def __init__(self, project, isRemote=False, parent=None, name=None): """ Constructor @param project reference to the project object @type Project - @param parent parent widget of this dialog - @type QWidget - @param name name of this dialog - @type str + @param isRemote flag indicating a remote project (defaults to False) + @type bool (optional) + @param parent parent widget of this dialog (defaults to None) + @type QWidget (optional) + @param name name of this dialog (defaults to None) + @type str (optional) """ super().__init__(parent) if name: @@ -45,6 +47,7 @@ self.setupUi(self) self.project = project + self.__isRemote = isRemote debugClientsHistory = Preferences.getProject("DebugClientsHistory") self.debugClientPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) @@ -61,8 +64,11 @@ venvManager = ericApp().getObject("VirtualEnvManager") + # Virtual Environment self.venvGroupBox.setVisible( not self.project.getProjectData(dataKey="EMBEDDED_VENV") + and not isRemote + # TODO: change once remote environments have been implemented ) self.venvComboBox.addItem("") if self.project.getProjectData(dataKey="EMBEDDED_VENV"): @@ -89,7 +95,12 @@ else: venvIndex = 0 self.venvComboBox.setCurrentIndex(venvIndex) - if self.project.debugProperties["DEBUGCLIENT"]: + + # Debug Client + self.debugClientGroup.setVisible(not isRemote) + if isRemote: + self.debugClientPicker.clear() + elif self.project.debugProperties["DEBUGCLIENT"]: self.debugClientPicker.setText( self.project.debugProperties["DEBUGCLIENT"], toNative=False ) @@ -101,12 +112,17 @@ else: debugClient = "" self.debugClientPicker.setText(debugClient, toNative=False) + + # Debug Environment self.debugEnvironmentOverrideCheckBox.setChecked( self.project.debugProperties["ENVIRONMENTOVERRIDE"] ) self.debugEnvironmentEdit.setText( self.project.debugProperties["ENVIRONMENTSTRING"] ) + + # Remote (ssh) Debugger + self.remoteDebuggerGroup.setVisible(not isRemote) self.remoteDebuggerGroup.setChecked( self.project.debugProperties["REMOTEDEBUGGER"] ) @@ -120,11 +136,20 @@ ) self.translationRemoteEdit.setText(self.project.debugProperties["REMOTEPATH"]) self.translationLocalEdit.setText(self.project.debugProperties["LOCALPATH"]) + + # Console Debugger + self.consoleDebuggerGroup.setVisible(not isRemote) self.consoleDebuggerGroup.setChecked( self.project.debugProperties["CONSOLEDEBUGGER"] ) self.consoleCommandEdit.setText(self.project.debugProperties["CONSOLECOMMAND"]) - self.redirectCheckBox.setChecked(self.project.debugProperties["REDIRECT"]) + + # Redirect stdin/stdout/stderr + self.redirectCheckBox.setChecked( + self.project.debugProperties["REDIRECT"] or isRemote + ) + + # No encoding self.noEncodingCheckBox.setChecked(self.project.debugProperties["NOENCODING"]) msh = self.minimumSizeHint() @@ -148,17 +173,20 @@ """ self.project.debugProperties["VIRTUALENV"] = self.venvComboBox.currentText() - self.project.debugProperties["DEBUGCLIENT"] = self.debugClientPicker.text( - toNative=False - ) - if not self.project.debugProperties["DEBUGCLIENT"]: - if self.project.getProjectData(dataKey="PROGLANGUAGE") == "Python3": - debugClient = os.path.join( - getConfig("ericDir"), "DebugClients", "Python", "DebugClient.py" - ) - else: - debugClient = "" - self.project.debugProperties["DEBUGCLIENT"] = debugClient + if self.__isRemote: + self.project.debugProperties["DEBUGCLIENT"] = "" + else: + self.project.debugProperties["DEBUGCLIENT"] = self.debugClientPicker.text( + toNative=False + ) + if not self.project.debugProperties["DEBUGCLIENT"]: + if self.project.getProjectData(dataKey="PROGLANGUAGE") == "Python3": + debugClient = os.path.join( + getConfig("ericDir"), "DebugClients", "Python", "DebugClient.py" + ) + else: + debugClient = "" + self.project.debugProperties["DEBUGCLIENT"] = debugClient self.project.debugProperties[ "ENVIRONMENTOVERRIDE" @@ -166,25 +194,43 @@ self.project.debugProperties[ "ENVIRONMENTSTRING" ] = self.debugEnvironmentEdit.text() - self.project.debugProperties[ - "REMOTEDEBUGGER" - ] = self.remoteDebuggerGroup.isChecked() - self.project.debugProperties["REMOTEHOST"] = self.remoteHostEdit.text() - self.project.debugProperties["REMOTECOMMAND"] = self.remoteCommandEdit.text() - self.project.debugProperties[ - "REMOTEDEBUGCLIENT" - ] = self.remoteDebugClientEdit.text() - self.project.debugProperties[ - "PATHTRANSLATION" - ] = self.pathTranslationGroup.isChecked() - self.project.debugProperties["REMOTEPATH"] = self.translationRemoteEdit.text() - self.project.debugProperties["LOCALPATH"] = self.translationLocalEdit.text() - self.project.debugProperties[ - "CONSOLEDEBUGGER" - ] = self.consoleDebuggerGroup.isChecked() - self.project.debugProperties["CONSOLECOMMAND"] = self.consoleCommandEdit.text() - self.project.debugProperties["REDIRECT"] = self.redirectCheckBox.isChecked() + + if self.__isRemote: + self.project.debugProperties["REMOTEDEBUGGER"] = False + else: + self.project.debugProperties[ + "REMOTEDEBUGGER" + ] = self.remoteDebuggerGroup.isChecked() + self.project.debugProperties["REMOTEHOST"] = self.remoteHostEdit.text() + self.project.debugProperties[ + "REMOTECOMMAND" + ] = self.remoteCommandEdit.text() + self.project.debugProperties[ + "REMOTEDEBUGCLIENT" + ] = self.remoteDebugClientEdit.text() + self.project.debugProperties[ + "PATHTRANSLATION" + ] = self.pathTranslationGroup.isChecked() + self.project.debugProperties[ + "REMOTEPATH" + ] = self.translationRemoteEdit.text() + self.project.debugProperties["LOCALPATH"] = self.translationLocalEdit.text() + + if self.__isRemote: + self.project.debugProperties["CONSOLEDEBUGGER"] = False + else: + self.project.debugProperties[ + "CONSOLEDEBUGGER" + ] = self.consoleDebuggerGroup.isChecked() + self.project.debugProperties[ + "CONSOLECOMMAND" + ] = self.consoleCommandEdit.text() + + self.project.debugProperties["REDIRECT"] = ( + self.redirectCheckBox.isChecked() or self.__isRemote + ) self.project.debugProperties["NOENCODING"] = self.noEncodingCheckBox.isChecked() + self.project.debugPropertiesLoaded = True self.project.debugPropertiesChanged = True