eric6/VirtualEnv/VirtualenvAddEditDialog.py

branch
maintenance
changeset 8043
0acf98cd089a
parent 7924
8a96736d465e
parent 7923
91e843545d9a
child 8176
31965986ecd1
--- a/eric6/VirtualEnv/VirtualenvAddEditDialog.py	Sun Jan 17 13:53:08 2021 +0100
+++ b/eric6/VirtualEnv/VirtualenvAddEditDialog.py	Mon Feb 01 10:38:16 2021 +0100
@@ -10,7 +10,7 @@
 import os
 import sys
 
-from PyQt5.QtCore import pyqtSlot
+from PyQt5.QtCore import pyqtSlot, Qt
 from PyQt5.QtWidgets import QDialog, QDialogButtonBox
 
 from E5Gui.E5PathPicker import E5PathPickerModes
@@ -26,7 +26,7 @@
     """
     def __init__(self, manager, venvName="", venvDirectory="",
                  venvInterpreter="", isGlobal=False, isConda=False,
-                 isRemote=False, execPath="", parent=None):
+                 isRemote=False, execPath="", baseDir="", parent=None):
         """
         Constructor
         
@@ -47,6 +47,8 @@
         @param execPath search path string to be prepended to the PATH
             environment variable
         @type str
+        @param baseDir base directory for the virtual environments
+        @type str
         @param parent reference to the parent widget
         @type QWidget
         """
@@ -57,10 +59,19 @@
         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(E5PathPickerModes.DirectoryMode)
         self.targetDirectoryPicker.setWindowTitle(
             self.tr("Virtualenv Target Directory"))
-        self.targetDirectoryPicker.setDefaultDirectory(Utilities.getHomeDir())
+        self.targetDirectoryPicker.setDefaultDirectory(self.__envBaseDir)
         
         self.pythonExecPicker.setMode(E5PathPickerModes.OpenFileMode)
         self.pythonExecPicker.setWindowTitle(
@@ -75,8 +86,12 @@
         )
         
         self.nameEdit.setText(venvName)
-        self.targetDirectoryPicker.setText(venvDirectory,
-                                           toNative=not isRemote)
+        if venvName:
+            self.targetDirectoryPicker.setText(venvDirectory,
+                                               toNative=not isRemote)
+        else:
+            self.targetDirectoryPicker.setText(self.__envBaseDir,
+                                               toNative=not isRemote)
         self.pythonExecPicker.setText(venvInterpreter,
                                       toNative=not isRemote)
         self.globalCheckBox.setChecked(isGlobal)
@@ -85,6 +100,8 @@
         self.execPathEdit.setText(execPath)
         
         self.__updateOk()
+        
+        self.nameEdit.setFocus(Qt.OtherFocusReason)
     
     def __updateOk(self):
         """
@@ -103,12 +120,11 @@
             )
         
         if not self.globalCheckBox.isChecked():
-            enable = (
-                enable and (
-                    self.remoteCheckBox.isChecked() or (
-                        bool(self.targetDirectoryPicker.text()) and
-                        os.path.exists(self.targetDirectoryPicker.text())
-                    )
+            enable &= (
+                self.remoteCheckBox.isChecked() or (
+                    bool(self.targetDirectoryPicker.text()) and
+                    self.targetDirectoryPicker.text() != self.__envBaseDir and
+                    os.path.exists(self.targetDirectoryPicker.text())
                 )
             )
         

eric ide

mercurial