eric7/PipInterface/PipPackagesWidget.py

branch
eric7
changeset 8999
723f61499a79
parent 8997
d8946c2a22b5
child 9000
bc0b38405b6a
--- 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):

eric ide

mercurial