src/eric7/VirtualEnv/VirtualenvAddEditDialog.py

branch
eric7
changeset 10194
2c26b4fe25db
parent 9653
e67609152c5e
child 10439
21c28b0f9e41
diff -r 0d7392e49c48 -r 2c26b4fe25db src/eric7/VirtualEnv/VirtualenvAddEditDialog.py
--- a/src/eric7/VirtualEnv/VirtualenvAddEditDialog.py	Tue Sep 05 14:17:29 2023 +0200
+++ b/src/eric7/VirtualEnv/VirtualenvAddEditDialog.py	Wed Sep 06 10:28:50 2023 +0200
@@ -16,6 +16,7 @@
 from eric7.SystemUtilities import OSUtilities, PythonUtilities
 
 from .Ui_VirtualenvAddEditDialog import Ui_VirtualenvAddEditDialog
+from .VirtualenvMeta import VirtualenvMetaData
 
 
 class VirtualenvAddEditDialog(QDialog, Ui_VirtualenvAddEditDialog):
@@ -26,14 +27,7 @@
     def __init__(
         self,
         manager,
-        venvName="",
-        venvDirectory="",
-        venvInterpreter="",
-        isGlobal=False,
-        isConda=False,
-        isRemote=False,
-        execPath="",
-        description="",
+        metadata=None,
         baseDir="",
         parent=None,
     ):
@@ -42,34 +36,20 @@
 
         @param manager reference to the virtual environment manager
         @type VirtualenvManager
-        @param venvName logical name of a virtual environment for editing
-        @type str
-        @param venvDirectory directory of the virtual environment
-        @type str
-        @param venvInterpreter Python interpreter of the virtual environment
-        @type str
-        @param isGlobal flag indicating a global environment
-        @type bool
-        @param isConda flag indicating an Anaconda virtual environment
-        @type bool
-        @param isRemote flag indicating a remotely accessed environment
-        @type bool
-        @param execPath search path string to be prepended to the PATH
-            environment variable
-        @type str
-        @param description descriptive text for the environment
-        @type str
-        @param baseDir base directory for the virtual environments
-        @type str
-        @param parent reference to the parent widget
-        @type QWidget
+        @param metadata object containing the metadata of the virtual environment
+            (defaults to None)
+        @type VirtualenvMetaData (optional)
+        @param baseDir base directory for the virtual environments (defaults to "")
+        @type str (optional)
+        @param parent reference to the parent widget (defaults to None)
+        @type QWidget (optional)
         """
         super().__init__(parent)
         self.setupUi(self)
 
-        self.__venvName = venvName
+        self.__venvName = "" if metadata is None else metadata.name
         self.__manager = manager
-        self.__editMode = bool(venvName)
+        self.__editMode = bool(self.__venvName)
 
         if self.__editMode:
             self.setWindowTitle(self.tr("Edit Virtual Environment"))
@@ -97,22 +77,31 @@
             ).format(os.pathsep)
         )
 
-        self.nameEdit.setText(venvName)
-        if venvDirectory:
-            self.targetDirectoryPicker.setText(venvDirectory, toNative=not isRemote)
+        self.nameEdit.setText(self.__venvName)
+        if metadata:
+            if metadata.path:
+                self.targetDirectoryPicker.setText(
+                    metadata.path, toNative=not metadata.is_remote
+                )
+            else:
+                self.targetDirectoryPicker.setText(
+                    self.__envBaseDir, toNative=not metadata.is_remote
+                )
+            if not metadata.interpreter and metadata.path and not metadata.is_remote:
+                py = self.__detectPythonInterpreter(metadata.path)
+                self.pythonExecPicker.setText(py)
+            else:
+                self.pythonExecPicker.setText(
+                    metadata.interpreter, toNative=not metadata.is_remote
+                )
         else:
-            self.targetDirectoryPicker.setText(self.__envBaseDir, toNative=not isRemote)
-        if not venvInterpreter and venvDirectory and not isRemote:
-            py = self.__detectPythonInterpreter(venvDirectory)
-            self.pythonExecPicker.setText(py)
-        else:
-            self.pythonExecPicker.setText(venvInterpreter, toNative=not isRemote)
+            self.targetDirectoryPicker.setText(self.__envBaseDir, toNative=True)
 
-        self.globalCheckBox.setChecked(isGlobal)
-        self.anacondaCheckBox.setChecked(isConda)
-        self.remoteCheckBox.setChecked(isRemote)
-        self.execPathEdit.setText(execPath)
-        self.descriptionEdit.setPlainText(description)
+        self.globalCheckBox.setChecked(metadata.is_global if metadata else False)
+        self.anacondaCheckBox.setChecked(metadata.is_conda if metadata else False)
+        self.remoteCheckBox.setChecked(metadata.is_remote if metadata else False)
+        self.execPathEdit.setText(metadata.exec_path if metadata else "")
+        self.descriptionEdit.setPlainText(metadata.description if metadata else "")
 
         self.__updateOk()
 
@@ -267,25 +256,21 @@
                     os.path.join(self.targetDirectoryPicker.text(), "bin"),
                 )
 
-    def getData(self):
+    def getMetaData(self):
         """
-        Public method to retrieve the entered data.
+        Public method to retrieve the entered metadata.
 
-        @return tuple containing the logical name, the directory, the interpreter of the
-            virtual environment, a flag indicating a global environment, a flag
-            indicating an Anaconda environment, a flag indicating a remotely accessed
-            environment, a string to be prepended to the PATH environment variable and
-            a descriptive text
-        @rtype tuple of (str, str, str, bool, bool, bool, str, str)
+        @return metadata for the virtual environment
+        @rtype VirtualenvMetaData
         """
         nativePaths = not self.remoteCheckBox.isChecked()
-        return (
-            self.nameEdit.text(),
-            self.targetDirectoryPicker.text(toNative=nativePaths),
-            self.pythonExecPicker.text(toNative=nativePaths),
-            self.globalCheckBox.isChecked(),
-            self.anacondaCheckBox.isChecked(),
-            self.remoteCheckBox.isChecked(),
-            self.execPathEdit.text(),
-            self.descriptionEdit.toPlainText(),
+        return VirtualenvMetaData(
+            name=self.nameEdit.text(),
+            path=self.targetDirectoryPicker.text(toNative=nativePaths),
+            interpreter=self.pythonExecPicker.text(toNative=nativePaths),
+            is_global=self.globalCheckBox.isChecked(),
+            is_conda=self.anacondaCheckBox.isChecked(),
+            is_remote=self.remoteCheckBox.isChecked(),
+            exec_path=self.execPathEdit.text(),
+            description=self.descriptionEdit.toPlainText(),
         )

eric ide

mercurial