src/eric7/VirtualEnv/VirtualenvAddEditDialog.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
diff -r e9e7eca7efee -r bf71ee032bb4 src/eric7/VirtualEnv/VirtualenvAddEditDialog.py
--- a/src/eric7/VirtualEnv/VirtualenvAddEditDialog.py	Wed Jul 13 11:16:20 2022 +0200
+++ b/src/eric7/VirtualEnv/VirtualenvAddEditDialog.py	Wed Jul 13 14:55:47 2022 +0200
@@ -24,12 +24,23 @@
     """
     Class implementing a dialog to enter the data of a virtual environment.
     """
-    def __init__(self, manager, venvName="", venvDirectory="",
-                 venvInterpreter="", isGlobal=False, isConda=False,
-                 isRemote=False, execPath="", baseDir="", parent=None):
+
+    def __init__(
+        self,
+        manager,
+        venvName="",
+        venvDirectory="",
+        venvInterpreter="",
+        isGlobal=False,
+        isConda=False,
+        isRemote=False,
+        execPath="",
+        baseDir="",
+        parent=None,
+    ):
         """
         Constructor
-        
+
         @param manager reference to the virtual environment manager
         @type VirtualenvManager
         @param venvName logical name of a virtual environment for editing
@@ -54,98 +65,99 @@
         """
         super().__init__(parent)
         self.setupUi(self)
-        
+
         self.__venvName = venvName
         self.__manager = manager
         self.__editMode = bool(venvName)
-        
+
         if self.__editMode:
             self.setWindowTitle(self.tr("Edit Virtual Environment"))
         else:
             self.setWindowTitle(self.tr("Add Virtual Environment"))
-        
+
         self.__envBaseDir = baseDir
         if not self.__envBaseDir:
             self.__envBaseDir = Utilities.getHomeDir()
-        
+
         self.targetDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE)
         self.targetDirectoryPicker.setWindowTitle(
-            self.tr("Virtualenv Target Directory"))
+            self.tr("Virtualenv Target Directory")
+        )
         self.targetDirectoryPicker.setDefaultDirectory(self.__envBaseDir)
-        
+
         self.pythonExecPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE)
-        self.pythonExecPicker.setWindowTitle(
-            self.tr("Python Interpreter"))
-        self.pythonExecPicker.setDefaultDirectory(
-            Globals.getPythonExecutable())
-        
-        self.execPathEdit.setToolTip(self.tr(
-            "Enter the executable search path to be prepended to the PATH"
-            " environment variable. Use '{0}' as the separator.").format(
-            os.pathsep)
+        self.pythonExecPicker.setWindowTitle(self.tr("Python Interpreter"))
+        self.pythonExecPicker.setDefaultDirectory(Globals.getPythonExecutable())
+
+        self.execPathEdit.setToolTip(
+            self.tr(
+                "Enter the executable search path to be prepended to the PATH"
+                " environment variable. Use '{0}' as the separator."
+            ).format(os.pathsep)
         )
-        
+
         self.nameEdit.setText(venvName)
         if venvDirectory:
-            self.targetDirectoryPicker.setText(venvDirectory,
-                                               toNative=not isRemote)
+            self.targetDirectoryPicker.setText(venvDirectory, toNative=not isRemote)
         else:
-            self.targetDirectoryPicker.setText(self.__envBaseDir,
-                                               toNative=not isRemote)
+            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.pythonExecPicker.setText(venvInterpreter, toNative=not isRemote)
+
         self.globalCheckBox.setChecked(isGlobal)
         self.anacondaCheckBox.setChecked(isConda)
         self.remoteCheckBox.setChecked(isRemote)
         self.execPathEdit.setText(execPath)
-        
+
         self.__updateOk()
-        
+
         self.nameEdit.setFocus(Qt.FocusReason.OtherFocusReason)
-    
+
     def __updateOk(self):
         """
         Private slot to update the state of the OK button.
         """
         enable = (
-            (bool(self.nameEdit.text()) and
-             (self.nameEdit.text() == self.__venvName or
-              self.__manager.isUnique(self.nameEdit.text())))
-            if self.__editMode else
-            (bool(self.nameEdit.text()) and
-             self.__manager.isUnique(self.nameEdit.text()))
-        )
-        
-        if not self.globalCheckBox.isChecked():
-            enable &= (
-                self.remoteCheckBox.isChecked() or (
-                    bool(self.targetDirectoryPicker.text()) and
-                    self.targetDirectoryPicker.text() != self.__envBaseDir and
-                    os.path.exists(self.targetDirectoryPicker.text())
+            (
+                bool(self.nameEdit.text())
+                and (
+                    self.nameEdit.text() == self.__venvName
+                    or self.__manager.isUnique(self.nameEdit.text())
                 )
             )
-        
-        enable = (
-            enable and
-            bool(self.pythonExecPicker.text()) and (
-                self.remoteCheckBox.isChecked() or
-                os.access(self.pythonExecPicker.text(), os.X_OK)
+            if self.__editMode
+            else (
+                bool(self.nameEdit.text())
+                and self.__manager.isUnique(self.nameEdit.text())
             )
         )
-        
-        self.buttonBox.button(
-            QDialogButtonBox.StandardButton.Ok).setEnabled(enable)
-    
+
+        if not self.globalCheckBox.isChecked():
+            enable &= self.remoteCheckBox.isChecked() or (
+                bool(self.targetDirectoryPicker.text())
+                and self.targetDirectoryPicker.text() != self.__envBaseDir
+                and os.path.exists(self.targetDirectoryPicker.text())
+            )
+
+        enable = (
+            enable
+            and bool(self.pythonExecPicker.text())
+            and (
+                self.remoteCheckBox.isChecked()
+                or os.access(self.pythonExecPicker.text(), os.X_OK)
+            )
+        )
+
+        self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(enable)
+
     def __detectPythonInterpreter(self, venvDirectory):
         """
         Private method to search for a suitable Python interpreter inside an
         environment.
-        
+
         @param venvDirectory directory for the virtual environment
         @type str
         @return detected Python interpreter or empty string
@@ -159,102 +171,102 @@
                     os.path.join(venvDirectory, "python.exe"),
                 )
             else:
-                candidates = (
-                    os.path.join(venvDirectory, "bin", "python3"),
-                )
+                candidates = (os.path.join(venvDirectory, "bin", "python3"),)
             for py in candidates:
                 if os.path.exists(py):
                     return py
-        
+
         return ""
-    
+
     @pyqtSlot(str)
     def on_nameEdit_textChanged(self, txt):
         """
         Private slot to handle changes of the logical name.
-        
+
         @param txt current logical name
         @type str
         """
         self.__updateOk()
-    
+
     @pyqtSlot(str)
     def on_targetDirectoryPicker_textChanged(self, txt):
         """
         Private slot to handle changes of the virtual environment directory.
-        
+
         @param txt virtual environment directory
         @type str
         """
         self.__updateOk()
-        
+
         if txt:
             self.pythonExecPicker.setDefaultDirectory(txt)
         else:
-            self.pythonExecPicker.setDefaultDirectory(
-                Globals.getPythonExecutable())
+            self.pythonExecPicker.setDefaultDirectory(Globals.getPythonExecutable())
         py = self.__detectPythonInterpreter(txt)
         if py:
             self.pythonExecPicker.setText(py)
-    
+
     @pyqtSlot(str)
     def on_pythonExecPicker_textChanged(self, txt):
         """
         Private slot to handle changes of the virtual environment interpreter.
-        
+
         @param txt virtual environment interpreter
         @type str
         """
         self.__updateOk()
-    
+
     @pyqtSlot(bool)
     def on_globalCheckBox_toggled(self, checked):
         """
         Private slot handling a change of the global check box state.
-        
+
         @param checked state of the check box
         @type bool
         """
         self.__updateOk()
-    
+
     @pyqtSlot(bool)
     def on_remoteCheckBox_toggled(self, checked):
         """
         Private slot handling a change of the remote check box state.
-        
+
         @param checked state of the check box
         @type bool
         """
         self.__updateOk()
-    
+
     @pyqtSlot(bool)
     def on_anacondaCheckBox_clicked(self, checked):
         """
         Private slot handling a user click on this check box.
-        
+
         @param checked state of the check box
         @type bool
         """
         if checked and not bool(self.execPathEdit.text()):
             # prepopulate the execPathEdit widget
             if Utilities.isWindowsPlatform():
-                self.execPathEdit.setText(os.pathsep.join([
-                    self.targetDirectoryPicker.text(),
-                    os.path.join(self.targetDirectoryPicker.text(),
-                                 "Scripts"),
-                    os.path.join(self.targetDirectoryPicker.text(),
-                                 "Library", "bin"),
-                ]))
+                self.execPathEdit.setText(
+                    os.pathsep.join(
+                        [
+                            self.targetDirectoryPicker.text(),
+                            os.path.join(self.targetDirectoryPicker.text(), "Scripts"),
+                            os.path.join(
+                                self.targetDirectoryPicker.text(), "Library", "bin"
+                            ),
+                        ]
+                    )
+                )
             else:
                 self.execPathEdit.setText(
-                    os.path.join(self.targetDirectoryPicker.text(),
-                                 "bin"),
+                    os.path.join(self.targetDirectoryPicker.text(), "bin"),
                 )
-    
+
     def getData(self):
         """
         Public method to retrieve the entered data.
-        
+
         @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,

eric ide

mercurial