--- a/eric7/PipInterface/PipPackagesWidget.py Thu Mar 24 19:27:29 2022 +0100 +++ b/eric7/PipInterface/PipPackagesWidget.py Thu Mar 24 19:29:13 2022 +0100 @@ -248,10 +248,11 @@ self.on_refreshButton_clicked) venvManager.virtualEnvironmentRemoved.connect( self.on_refreshButton_clicked) + self.__selectedEnvironment = None project = ericApp().getObject("Project") project.projectOpened.connect( - self.on_refreshButton_clicked) + self.__projectOpened) project.projectClosed.connect( self.__projectClosed) @@ -272,6 +273,15 @@ self.viewsStackWidget.setCurrentWidget(self.packagesPage) + @pyqtSlot() + def __projectOpened(self): + """ + Private slot to handle the projectOpened signal. + """ + projectVenv = self.__pip.getProjectEnvironmentString() + if projectVenv: + self.environmentsComboBox.insertItem(1, projectVenv) + @pyqtSlot(bool) def __projectClosed(self, shutdown): """ @@ -281,7 +291,8 @@ @type bool """ if not shutdown: - self.on_refreshButton_clicked() + # the project entry is always at index 1 + self.environmentsComboBox.removeItem(1) def __populateEnvironments(self): """ @@ -465,18 +476,20 @@ self.__updateSearchActionButtons() self.__updateSearchButton() - @pyqtSlot(int) - def on_environmentsComboBox_currentIndexChanged(self, index): + @pyqtSlot(str) + def on_environmentsComboBox_currentTextChanged(self, name): """ Private slot handling the selection of a Python environment. - @param index index of the selected Python environment - @type int + @param name name of the selected Python environment + @type str """ - if self.viewToggleButton.isChecked(): - self.__refreshDependencyTree() - else: - self.__refreshPackagesList() + if name != self.__selectedEnvironment: + if self.viewToggleButton.isChecked(): + self.__refreshDependencyTree() + else: + self.__refreshPackagesList() + self.__selectedEnvironment = name @pyqtSlot() def on_localCheckBox_clicked(self):