src/eric7/PipInterface/PipPackagesWidget.py

branch
eric7
changeset 10209
8bb763e85937
parent 10207
df02f650f574
child 10210
7d0e5ca7eb3e
--- a/src/eric7/PipInterface/PipPackagesWidget.py	Wed Sep 13 17:46:12 2023 +0200
+++ b/src/eric7/PipInterface/PipPackagesWidget.py	Thu Sep 14 15:54:56 2023 +0200
@@ -292,10 +292,10 @@
         @type bool
         """
         if not shutdown:
+            # the project entry is always at index 1
             if self.environmentsComboBox.currentIndex() == 1:
                 self.environmentsComboBox.setCurrentIndex(0)
 
-            # the project entry is always at index 1
             self.environmentsComboBox.removeItem(1)
 
     def __populateEnvironments(self):
@@ -441,7 +441,6 @@
 
                 with EricOverrideCursor():
                     # 1. populate with installed packages
-                    self.packagesList.setUpdatesEnabled(False)
                     installedPackages = self.__pip.getInstalledPackages(
                         venvName,
                         localPackages=self.localCheckBox.isChecked(),
@@ -450,41 +449,60 @@
                     )
                     for package, version in installedPackages:
                         QTreeWidgetItem(self.packagesList, [package, version, "", ""])
-                    self.packagesList.setUpdatesEnabled(True)
+                    self.packagesList.sortItems(
+                        PipPackagesWidget.PackageColumn, Qt.SortOrder.AscendingOrder
+                    )
+                    self.packagesList.resizeColumnToContents(
+                        PipPackagesWidget.PackageColumn
+                    )
+                    self.packagesList.resizeColumnToContents(
+                        PipPackagesWidget.InstalledVersionColumn
+                    )
+                    QApplication.processEvents()
+
+                    # 2. update with vulnerability information
+                    if self.vulnerabilityCheckBox.isChecked():
+                        self.__updateVulnerabilityData()
+                        self.packagesList.resizeColumnToContents(
+                            PipPackagesWidget.VulnerabilityColumn
+                        )
                     self.statusLabel.setText(self.tr("Getting outdated packages..."))
                     QApplication.processEvents()
 
-                    # 2. update with update information
-                    self.packagesList.setUpdatesEnabled(False)
-                    outdatedPackages = self.__pip.getOutdatedPackages(
+                    # 3. update with update information
+                    self.__pip.getOutdatedPackages(
                         venvName,
                         localPackages=self.localCheckBox.isChecked(),
                         notRequired=self.notRequiredCheckBox.isChecked(),
                         usersite=self.userCheckBox.isChecked(),
+                        callback=self.__updateOutdatedInfo,
                     )
-                    for package, _version, latest in outdatedPackages:
-                        items = self.packagesList.findItems(
-                            package,
-                            Qt.MatchFlag.MatchExactly | Qt.MatchFlag.MatchCaseSensitive,
-                        )
-                        if items:
-                            itm = items[0]
-                            itm.setText(
-                                PipPackagesWidget.AvailableVersionColumn, latest
-                            )
-                    QApplication.processEvents()
+
+        else:
+            self.__updateActionButtons()
+            self.__updateSearchActionButtons()
+            self.__updateSearchButton()
+            self.__updateSearchMoreButton(False)
+
+    def __updateOutdatedInfo(self, outdatedPackages):
+        """
+        Private method to process the list of outdated packages.
 
-                    # 3. update with vulnerability information
-                    if self.vulnerabilityCheckBox.isChecked():
-                        self.__updateVulnerabilityData()
-
-                    self.packagesList.sortItems(
-                        PipPackagesWidget.PackageColumn, Qt.SortOrder.AscendingOrder
-                    )
-                    for col in range(self.packagesList.columnCount()):
-                        self.packagesList.resizeColumnToContents(col)
-                    self.packagesList.setUpdatesEnabled(True)
-                self.statusLabel.hide()
+        @param outdatedPackages list of tuples containing the package name,
+            installed version and available version
+        @type list of tuple of (str, str, str)
+        """
+        for package, _version, latest in outdatedPackages:
+            items = self.packagesList.findItems(
+                package,
+                Qt.MatchFlag.MatchExactly | Qt.MatchFlag.MatchCaseSensitive,
+            )
+            if items:
+                items[0].setText(PipPackagesWidget.AvailableVersionColumn, latest)
+        self.packagesList.resizeColumnToContents(
+            PipPackagesWidget.AvailableVersionColumn
+        )
+        self.statusLabel.hide()
 
         self.__updateActionButtons()
         self.__updateSearchActionButtons()
@@ -611,6 +629,8 @@
             self.vulnerabilitiesInfoWidget.clear()
             self.infoWidget.tabBar().hide()
 
+        self.__updateActionButtons()
+
     @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem)
     def on_packagesList_currentItemChanged(self, curr, prev):
         """

eric ide

mercurial