diff -r fd6b68a0a2df -r c9cd21bcbe33 eric7/VirtualEnv/VirtualenvManager.py --- a/eric7/VirtualEnv/VirtualenvManager.py Thu Sep 16 19:23:07 2021 +0200 +++ b/eric7/VirtualEnv/VirtualenvManager.py Thu Sep 16 19:31:00 2021 +0200 @@ -32,6 +32,8 @@ deletion of a virtual environment @signal virtualEnvironmentChanged(name) emitted to indicate a change of a virtual environment + @signal virtualEnvironmentsListChanged() emitted to indicate a change of + the list of virtual environments (may be used to refresh the list) """ DefaultKey = "<default>" @@ -39,6 +41,8 @@ virtualEnvironmentRemoved = pyqtSignal() virtualEnvironmentChanged = pyqtSignal(str) + virtualEnvironmentsListChanged = pyqtSignal() + def __init__(self, parent=None): """ Constructor @@ -51,8 +55,6 @@ self.__ui = parent self.__loadSettings() - - self.__virtualenvManagerDialog = None def __loadSettings(self): """ @@ -264,8 +266,7 @@ self.__saveSettings() self.virtualEnvironmentAdded.emit() - if self.__virtualenvManagerDialog: - self.__virtualenvManagerDialog.refresh() + self.virtualEnvironmentsListChanged.emit() def setVirtualEnv(self, venvName, venvDirectory, venvInterpreter, isGlobal, isConda, isRemote, execPath): @@ -311,8 +312,7 @@ self.__saveSettings() self.virtualEnvironmentChanged.emit(venvName) - if self.__virtualenvManagerDialog: - self.__virtualenvManagerDialog.refresh() + self.virtualEnvironmentsListChanged.emit() def renameVirtualEnv(self, oldVenvName, venvName, venvDirectory, venvInterpreter, isGlobal, isConda, @@ -397,8 +397,7 @@ self.__saveSettings() self.virtualEnvironmentRemoved.emit() - if self.__virtualenvManagerDialog: - self.__virtualenvManagerDialog.refresh() + self.virtualEnvironmentsListChanged.emit() def __isEnvironmentDeleteable(self, venvName): """ @@ -452,8 +451,7 @@ self.__saveSettings() self.virtualEnvironmentRemoved.emit() - if self.__virtualenvManagerDialog: - self.__virtualenvManagerDialog.refresh() + self.virtualEnvironmentsListChanged.emit() def getEnvironmentEntries(self): """ @@ -474,23 +472,14 @@ @param modal flag indicating that the dialog should be shown in a blocking mode """ - if self.__virtualenvManagerDialog is None: - from .VirtualenvManagerDialog import VirtualenvManagerDialog - self.__virtualenvManagerDialog = VirtualenvManagerDialog( + if modal: + from .VirtualenvManagerWidgets import VirtualenvManagerDialog + virtualenvManagerDialog = VirtualenvManagerDialog( self, self.__ui) - - if modal: - self.__virtualenvManagerDialog.exec() + virtualenvManagerDialog.exec() + self.virtualEnvironmentsListChanged.emit() else: - self.__virtualenvManagerDialog.show() - - def shutdown(self): - """ - Public method to shutdown the manager. - """ - if self.__virtualenvManagerDialog is not None: - self.__virtualenvManagerDialog.close() - self.__virtualenvManagerDialog = None + self.__ui.activateVirtualenvManager() def isUnique(self, venvName): """