--- 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()) ) )