PipxInterface/PipxWidget.py

changeset 106
dcc8d6b448fa
parent 104
45c88e73e3dd
child 111
8ace016a3eee
--- a/PipxInterface/PipxWidget.py	Tue Dec 10 17:43:42 2024 +0100
+++ b/PipxInterface/PipxWidget.py	Tue Dec 10 17:50:48 2024 +0100
@@ -65,17 +65,29 @@
         else:
             self.layout().setContentsMargins(0, 0, 0, 0)
 
+        iconSuffix = "-dark" if ericApp().usesDarkPalette() else "-light"
+
         self.pipxMenuButton.setIcon(EricPixmapCache.getIcon("superMenu"))
         self.refreshButton.setIcon(EricPixmapCache.getIcon("reload"))
         self.installButton.setIcon(EricPixmapCache.getIcon("plus"))
         self.outdatedButton.setIcon(EricPixmapCache.getIcon("question"))
         self.upgradeButton.setIcon(EricPixmapCache.getIcon("upgrade"))
         self.uninstallButton.setIcon(EricPixmapCache.getIcon("minus"))
+        self.showOutdatedDependenciesButton.setIcon(
+            EricPixmapCache.getIcon(
+                os.path.join(
+                    "PipxInterface", "icons", "dependency{0}".format(iconSuffix)
+                )
+            )
+        )
 
         self.installButton.clicked.connect(self.__installPackages)
         self.outdatedButton.clicked.connect(self.__checkOutdatedPackages)
         self.upgradeButton.clicked.connect(self.__upgradePackage)
         self.uninstallButton.clicked.connect(self.__uninstallPackage)
+        self.showOutdatedDependenciesButton.clicked.connect(
+            self.__showOutdatedDependencies
+        )
 
         self.pipxMenuButton.setShowMenuInside(True)
 
@@ -189,7 +201,7 @@
         )
         self.__dependenciseSubmenu.addSeparator()
         self.__upgradeDependenciesAct = self.__dependenciseSubmenu.addAction(
-            self.tr("Upgrade Dependencies"), self.__upgradeDependencies
+            self.tr("Upgrade All Dependencies"), self.__upgradeDependencies
         )
 
         ###################################################################
@@ -593,9 +605,14 @@
             parent=self,
         )
         result = dlg.exec()
-        if result == PipxDependenciesDialog.UpgradeDependenciesAction:
-            # 'Upgrade Dependencies' clicked
-            self.__upgradeDependencies()
+        if result == PipxDependenciesDialog.UpgradeAllDependenciesAction:
+            # 'Upgrade All Dependencies' clicked
+            dependencies = dlg.getDependencies(selectedOnly=False)
+            self.__upgradeDependencies(dependencies=dependencies)
+        elif result == PipxDependenciesDialog.UpgradeSelectedDependenciesAction:
+            # 'Upgrade Selected Dependencies' clicked
+            dependencies = dlg.getDependencies(selectedOnly=True)
+            self.__upgradeDependencies(dependencies=dependencies)
 
     @pyqtSlot()
     def __showUptodateDependencies(self):
@@ -616,12 +633,18 @@
         dlg.exec()
 
     @pyqtSlot()
-    def __upgradeDependencies(self):
+    def __upgradeDependencies(self, dependencies=None):
         """
         Private slot to upgrade the outdated dependencies of the selected package.
+
+        @param dependencies list of dependencies to be upgraded or None to
+            upgrade all outdated dependencies (defaults to None)
+        @type list of str or None (optional)
         """
         package = self.__selectedPackages()[0]
-        self.__pipx.upgradePackageDependencies(package=package)
+        self.__pipx.upgradePackageDependencies(
+            package=package, dependencies=dependencies
+        )
         packageItem = self.__getItemForPackage(package)
         if packageItem:
             self.__checkPackageOutdated(packageItem)
@@ -828,6 +851,13 @@
         )
         self.uninstallButton.setEnabled(len(selectedPackageItems) == 1)
 
+        self.showOutdatedDependenciesButton.setEnabled(
+            len(selectedPackageItems) == 1
+            and bool(
+                selectedPackageItems[0].data(0, PipxWidget.OutdatedDependenciesRole)
+            )
+        )
+
     def __selectedPackages(self):
         """
         Private method to determine the list of selected packages.

eric ide

mercurial