--- a/eric6/VirtualEnv/VirtualenvManagerDialog.py Sun Jan 17 13:53:08 2021 +0100 +++ b/eric6/VirtualEnv/VirtualenvManagerDialog.py Mon Feb 01 10:38:16 2021 +0100 @@ -11,8 +11,12 @@ from PyQt5.QtCore import pyqtSlot, Qt from PyQt5.QtWidgets import QDialog, QTreeWidgetItem, QHeaderView +from E5Gui.E5PathPicker import E5PathPickerModes + from .Ui_VirtualenvManagerDialog import Ui_VirtualenvManagerDialog +import Utilities + class VirtualenvManagerDialog(QDialog, Ui_VirtualenvManagerDialog): """ @@ -38,6 +42,15 @@ self.__manager = manager + baseDir = self.__manager.getVirtualEnvironmentsBaseDir() + if not baseDir: + baseDir = Utilities.getHomeDir() + + self.envBaseDirectoryPicker.setMode(E5PathPickerModes.DirectoryMode) + self.envBaseDirectoryPicker.setWindowTitle( + self.tr("Virtualenv Base Directory")) + self.envBaseDirectoryPicker.setText(baseDir) + self.__populateVenvList() self.__updateButtons() @@ -94,7 +107,10 @@ Private slot to add a new entry. """ from .VirtualenvAddEditDialog import VirtualenvAddEditDialog - dlg = VirtualenvAddEditDialog(self.__manager) + dlg = VirtualenvAddEditDialog( + self.__manager, + baseDir=self.envBaseDirectoryPicker.text() + ) if dlg.exec() == QDialog.Accepted: (venvName, venvDirectory, venvInterpreter, isGlobal, isConda, isRemote, execPath) = dlg.getData() @@ -108,7 +124,8 @@ """ Private slot to create a new virtual environment. """ - self.__manager.createVirtualEnv() + self.__manager.createVirtualEnv( + baseDir=self.envBaseDirectoryPicker.text()) @pyqtSlot() def on_editButton_clicked(self): @@ -126,6 +143,7 @@ selectedItem.data(0, VirtualenvManagerDialog.IsCondaRole), selectedItem.data(0, VirtualenvManagerDialog.IsRemoteRole), selectedItem.data(0, VirtualenvManagerDialog.ExecPathRole), + baseDir=self.envBaseDirectoryPicker.text() ) if dlg.exec() == QDialog.Accepted: (venvName, venvDirectory, venvInterpreter, isGlobal, isConda, @@ -273,3 +291,15 @@ self.venvList.header().resizeSections( QHeaderView.ResizeToContents) self.venvList.header().setStretchLastSection(True) + + def closeEvent(self, evt): + """ + Protected method to handle the close event. + + @param evt reference to the close event + @type QCloseEvent + """ + baseDir = self.envBaseDirectoryPicker.text() + self.__manager.setVirtualEnvironmentsBaseDir(baseDir) + + evt.accept()