Extended the use of eric-ide server environments. server

Mon, 10 Jun 2024 11:41:34 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 10 Jun 2024 11:41:34 +0200
branch
server
changeset 10766
d35d6f96c24b
parent 10765
b0632e55ec9a
child 10767
b3672d3e7644

Extended the use of eric-ide server environments.

src/eric7/Debugger/DebugServer.py file | annotate | diff | comparison | revisions
src/eric7/Debugger/DebuggerInterfacePython.py file | annotate | diff | comparison | revisions
src/eric7/Debugger/StartDialog.py file | annotate | diff | comparison | revisions
src/eric7/PipInterface/Pip.py file | annotate | diff | comparison | revisions
src/eric7/PipInterface/PipPackagesWidget.py file | annotate | diff | comparison | revisions
src/eric7/Preferences/ConfigurationPages/DebuggerPython3Page.py file | annotate | diff | comparison | revisions
src/eric7/Preferences/ConfigurationPages/QtPage.py file | annotate | diff | comparison | revisions
src/eric7/Preferences/ProgramsDialog.py file | annotate | diff | comparison | revisions
src/eric7/Project/DebuggerPropertiesDialog.py file | annotate | diff | comparison | revisions
src/eric7/Project/Project.py file | annotate | diff | comparison | revisions
src/eric7/QScintilla/Shell.py file | annotate | diff | comparison | revisions
src/eric7/QScintilla/ShellWindow.py file | annotate | diff | comparison | revisions
src/eric7/Testing/TestingWidget.py file | annotate | diff | comparison | revisions
src/eric7/VirtualEnv/Ui_VirtualenvAddEditDialog.py file | annotate | diff | comparison | revisions
src/eric7/VirtualEnv/VirtualenvManager.py file | annotate | diff | comparison | revisions
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/Debugger/DebugServer.py
--- a/src/eric7/Debugger/DebugServer.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/Debugger/DebugServer.py	Mon Jun 10 11:41:34 2024 +0200
@@ -2265,6 +2265,4 @@
         @return string for the eric-ide server environment
         @rtype str
         """
-        # TODO: make this more elaborate once server environments definitions
-        #       are supported
         return "eric-ide Server"
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/Debugger/DebuggerInterfacePython.py
--- a/src/eric7/Debugger/DebuggerInterfacePython.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/Debugger/DebuggerInterfacePython.py	Mon Jun 10 11:41:34 2024 +0200
@@ -541,8 +541,15 @@
         ) and ericApp().getObject("EricServer").isServerConnected():
             # TODO change this once server environment definitions are supported
             startRemote = True
-            venvName = self.debugServer.getEricServerEnvironmentString()
-            interpreter = ""  # use the interpreter of the server
+            if venvName and venvName != self.debugServer.getProjectEnvironmentString():
+                venvManager = ericApp().getObject("VirtualEnvManager")
+                interpreter = venvManager.getVirtualenvInterpreter(venvName)
+            else:
+                venvName = project.getProjectVenv()
+                interpreter = project.getProjectInterpreter()
+            if not venvName:
+                venvName = self.debugServer.getEricServerEnvironmentString()
+                interpreter = ""  # use the interpreter of the server
         else:
             if venvName and venvName != self.debugServer.getProjectEnvironmentString():
                 venvManager = ericApp().getObject("VirtualEnvManager")
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/Debugger/StartDialog.py
--- a/src/eric7/Debugger/StartDialog.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/Debugger/StartDialog.py	Mon Jun 10 11:41:34 2024 +0200
@@ -128,8 +128,12 @@
         # nothing special for 'Run' mode
 
         self.venvComboBox.addItem("")
+        projectEnvironmentString = (
+            ericApp().getObject("DebugServer").getProjectEnvironmentString()
+        )
+        if projectEnvironmentString:
+            self.venvComboBox.addItem(projectEnvironmentString)
         if ericApp().getObject("EricServer").isServerConnected():
-            # TODO: add project entry once server based project envs are supported
             self.venvComboBox.addItems(
                 sorted(
                     ericApp()
@@ -140,13 +144,12 @@
                 )
             )
         else:
-            projectEnvironmentString = (
-                ericApp().getObject("DebugServer").getProjectEnvironmentString()
-            )
-            if projectEnvironmentString:
-                self.venvComboBox.addItem(projectEnvironmentString)
             self.venvComboBox.addItems(
-                sorted(ericApp().getObject("VirtualEnvManager").getVirtualenvNames())
+                sorted(
+                    ericApp().getObject("VirtualEnvManager").getVirtualenvNames(
+                        noServer=True
+                    )
+                )
             )
 
         self.scriptnamePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE)
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/PipInterface/Pip.py
--- a/src/eric7/PipInterface/Pip.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/PipInterface/Pip.py	Mon Jun 10 11:41:34 2024 +0200
@@ -245,7 +245,9 @@
 
         return interpreter
 
-    def getVirtualenvNames(self, noRemote=False, noConda=False, noGlobals=False):
+    def getVirtualenvNames(
+        self, noRemote=False, noConda=False, noGlobals=False, noServer=False
+    ):
         """
         Public method to get a sorted list of virtual environment names.
 
@@ -257,13 +259,21 @@
         @param noGlobals flag indicating to exclude global environments
             (defaults to False)
         @type bool (optional)
+        @param noServer flag indicating to exclued eric-ide server environments
+            (defaults to False)
+        @type bool (optional)
         @return sorted list of virtual environment names
         @rtype list of str
         """
         return sorted(
             ericApp()
             .getObject("VirtualEnvManager")
-            .getVirtualenvNames(noRemote=noRemote, noConda=noConda, noGlobals=noGlobals)
+            .getVirtualenvNames(
+                noRemote=noRemote,
+                noConda=noConda,
+                noGlobals=noGlobals,
+                noServer=noServer,
+            )
         )
 
     def installPip(self, venvName, userSite=False):
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/PipInterface/PipPackagesWidget.py
--- a/src/eric7/PipInterface/PipPackagesWidget.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/PipInterface/PipPackagesWidget.py	Mon Jun 10 11:41:34 2024 +0200
@@ -320,6 +320,7 @@
                 noRemote=True,
                 noConda=Preferences.getPip("ExcludeCondaEnvironments"),
                 noGlobals=Preferences.getPip("ExcludeGlobalEnvironments"),
+                noServer=True,
             )
         )
 
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/Preferences/ConfigurationPages/DebuggerPython3Page.py
--- a/src/eric7/Preferences/ConfigurationPages/DebuggerPython3Page.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/Preferences/ConfigurationPages/DebuggerPython3Page.py	Mon Jun 10 11:41:34 2024 +0200
@@ -98,7 +98,7 @@
         """
         self.venvComboBox.clear()
         self.venvComboBox.addItems(
-            [""] + sorted(self.__virtualenvManager.getVirtualenvNames())
+            [""] + sorted(self.__virtualenvManager.getVirtualenvNames(noServer=True))
         )
 
         # set initial value
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/Preferences/ConfigurationPages/QtPage.py
--- a/src/eric7/Preferences/ConfigurationPages/QtPage.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/Preferences/ConfigurationPages/QtPage.py	Mon Jun 10 11:41:34 2024 +0200
@@ -197,7 +197,9 @@
         venvName = Preferences.getQt(envKey) if initial else comboBox.currentText()
 
         comboBox.clear()
-        comboBox.addItems([""] + sorted(self.__virtualenvManager.getVirtualenvNames()))
+        comboBox.addItems(
+            [""] + sorted(self.__virtualenvManager.getVirtualenvNames(noServer=True))
+        )
 
         if venvName:
             index = comboBox.findText(venvName)
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/Preferences/ProgramsDialog.py
--- a/src/eric7/Preferences/ProgramsDialog.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/Preferences/ProgramsDialog.py	Mon Jun 10 11:41:34 2024 +0200
@@ -265,7 +265,7 @@
 
             # 5. do the pip program(s)
             virtualenvManager = ericApp().getObject("VirtualEnvManager")
-            for venvName in virtualenvManager.getVirtualenvNames():
+            for venvName in virtualenvManager.getVirtualenvNames(noServer=True):
                 interpreter = virtualenvManager.getVirtualenvInterpreter(venvName)
                 self.__createProgramEntry(
                     self.tr("PyPI Package Management"),
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/Project/DebuggerPropertiesDialog.py
--- a/src/eric7/Project/DebuggerPropertiesDialog.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/Project/DebuggerPropertiesDialog.py	Mon Jun 10 11:41:34 2024 +0200
@@ -67,14 +67,23 @@
         # 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"):
             venvIndex = 0
         else:
-            self.venvComboBox.addItems(sorted(venvManager.getVirtualenvNames()))
+            if isRemote:
+                self.venvComboBox.addItems(
+                    sorted(
+                        venvManager.getEricServerEnvironmentNames(
+                            host=ericApp().getObject("EricServer").getHostName()
+                        )
+                    )
+                )
+            else:
+                self.venvComboBox.addItems(
+                    sorted(venvManager.getVirtualenvNames(noServer=True))
+                )
 
             if self.project.debugProperties["VIRTUALENV"]:
                 venvIndex = max(
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/Project/Project.py
--- a/src/eric7/Project/Project.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/Project/Project.py	Mon Jun 10 11:41:34 2024 +0200
@@ -4646,7 +4646,6 @@
         @return executable search path prefix
         @rtype str
         """
-        # TODO: remote server not supported yet
         if self.__pdata["EMBEDDED_VENV"]:
             execPath = self.__venvConfiguration["exec_path"]
         else:
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/QScintilla/Shell.py
--- a/src/eric7/QScintilla/Shell.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/QScintilla/Shell.py	Mon Jun 10 11:41:34 2024 +0200
@@ -395,7 +395,7 @@
         """
         self.lmenu.clear()
         venvManager = ericApp().getObject("VirtualEnvManager")
-        for venvName in sorted(venvManager.getVirtualenvNames()):
+        for venvName in sorted(venvManager.getVirtualenvNames(noServer=True)):
             act = self.lmenu.addAction(venvName)
             act.setData(venvName)
         if self.__project and self.__project.isOpen():
@@ -404,6 +404,13 @@
             act.setData("<<project>>")
         if ericApp().getObject("EricServer").isServerConnected():
             self.lmenu.addSeparator()
+            for venvName in sorted(
+                venvManager.getEricServerEnvironmentNames(
+                    ericApp().getObject("EricServer").getHostName()
+                )
+            ):
+                act = self.lmenu.addAction(venvName)
+                act.setData(f"<<eric-server>>:{venvName}")
             act = self.lmenu.addAction(self.tr("eric-ide Server"))
             act.setData("<<eric-server>>")
 
@@ -2191,6 +2198,9 @@
             )
         elif venvName == "<<eric-server>>":
             self.dbs.startClient(False, startRemote=True)
+        elif venvName.startswith("<<eric-server>>:"):
+            venvName = venvName.split(":", 1)[1]
+            self.dbs.startClient(False, venvName=venvName, startRemote=True)
         else:
             self.dbs.startClient(False, venvName=venvName)
         self.__getBanner()
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/QScintilla/ShellWindow.py
--- a/src/eric7/QScintilla/ShellWindow.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/QScintilla/ShellWindow.py	Mon Jun 10 11:41:34 2024 +0200
@@ -1455,7 +1455,9 @@
         Private slot to prepare the language menu.
         """
         self.__startMenu.clear()
-        for venvName in sorted(self.virtualenvManager.getVirtualenvNames()):
+        for venvName in sorted(
+            self.virtualenvManager.getVirtualenvNames(noServer=True)
+        ):
             self.__startMenu.addAction(venvName)
 
     def __startShell(self, action):
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/Testing/TestingWidget.py
--- a/src/eric7/Testing/TestingWidget.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/Testing/TestingWidget.py	Mon Jun 10 11:41:34 2024 +0200
@@ -313,7 +313,9 @@
             if venvName:
                 self.venvComboBox.addItem(venvName)
                 self.__projectString = venvName
-        self.venvComboBox.addItems(sorted(self.__venvManager.getVirtualenvNames()))
+        self.venvComboBox.addItems(
+            sorted(self.__venvManager.getVirtualenvNames(noServer=True))
+        )
         self.venvComboBox.setCurrentText(currentText)
 
     def __populateTestFrameworkComboBox(self):
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/VirtualEnv/Ui_VirtualenvAddEditDialog.py
--- a/src/eric7/VirtualEnv/Ui_VirtualenvAddEditDialog.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/VirtualEnv/Ui_VirtualenvAddEditDialog.py	Mon Jun 10 11:41:34 2024 +0200
@@ -123,8 +123,8 @@
         self.anacondaRadioButton.setText(_translate("VirtualenvAddEditDialog", "Anaconda"))
         self.remoteRadioButton.setToolTip(_translate("VirtualenvAddEditDialog", "Select to indicate a remotely (ssh) accessed environment"))
         self.remoteRadioButton.setText(_translate("VirtualenvAddEditDialog", "Remote"))
-        self.serverRadioButton.setToolTip(_translate("VirtualenvAddEditDialog", "Select to indicate an eric IDE server environment."))
-        self.serverRadioButton.setText(_translate("VirtualenvAddEditDialog", "eric IDE Server"))
+        self.serverRadioButton.setToolTip(_translate("VirtualenvAddEditDialog", "Select to indicate an eric-ide server environment."))
+        self.serverRadioButton.setText(_translate("VirtualenvAddEditDialog", "eric-ide server"))
         self.globalCheckBox.setToolTip(_translate("VirtualenvAddEditDialog", "Select,if this is a global environment (i.e. no virtual environment directory to be given)"))
         self.globalCheckBox.setWhatsThis(_translate("VirtualenvAddEditDialog", "<b>Global Environment</b>\n"
 "<p>Setting this indicates, that the environment is defined globally, i.e. not user specific. Usually such environments cannot be deleted by a standard user. The respective button of the Virtual Environment Manager dialog will be disabled for these entries.</p>"))
@@ -136,5 +136,5 @@
         self.label_5.setText(_translate("VirtualenvAddEditDialog", "PATH Prefix:"))
         self.label_4.setText(_translate("VirtualenvAddEditDialog", "Description:"))
         self.label_6.setText(_translate("VirtualenvAddEditDialog", "Server:"))
-        self.serverLineEdit.setToolTip(_translate("VirtualenvAddEditDialog", "Shows the host name of the server this entry belongs to (eric IDE Server environment only)"))
+        self.serverLineEdit.setToolTip(_translate("VirtualenvAddEditDialog", "Shows the host name of the server this entry belongs to (eric-ide server environment only)"))
 from eric7.EricWidgets.EricPathPicker import EricPathPicker
diff -r b0632e55ec9a -r d35d6f96c24b src/eric7/VirtualEnv/VirtualenvManager.py
--- a/src/eric7/VirtualEnv/VirtualenvManager.py	Mon Jun 10 10:22:23 2024 +0200
+++ b/src/eric7/VirtualEnv/VirtualenvManager.py	Mon Jun 10 11:41:34 2024 +0200
@@ -611,7 +611,9 @@
         else:
             return ""
 
-    def getVirtualenvNames(self, noRemote=False, noConda=False, noGlobals=False):
+    def getVirtualenvNames(
+        self, noRemote=False, noConda=False, noGlobals=False, noServer=False
+    ):
         """
         Public method to get a list of defined virtual environments.
 
@@ -623,6 +625,9 @@
         @param noGlobals flag indicating to exclude global environments
             (defaults to False)
         @type bool (optional)
+        @param noServer flag indicating to exclude eric-ide server environments
+            (defaults to False)
+        @type bool (optional)
         @return list of defined virtual environments
         @rtype list of str
         """
@@ -639,6 +644,10 @@
             environments = [
                 name for name in environments if not self.isGlobalEnvironment(name)
             ]
+        if noServer:
+            environments = [
+                name for name in environments if not self.isEricServerEnvironment(name)
+            ]
 
         return environments
 

eric ide

mercurial