PipxInterface/PipxWidget.py

changeset 111
8ace016a3eee
parent 106
dcc8d6b448fa
child 116
0f49bfab0768
--- a/PipxInterface/PipxWidget.py	Tue Dec 10 17:53:34 2024 +0100
+++ b/PipxInterface/PipxWidget.py	Fri Dec 13 15:40:08 2024 +0100
@@ -80,6 +80,13 @@
                 )
             )
         )
+        self.repairDependenciesButton.setIcon(
+            EricPixmapCache.getIcon(
+                os.path.join(
+                    "PipxInterface", "icons", "repair{0}".format(iconSuffix)
+                )
+            )
+        )
 
         self.installButton.clicked.connect(self.__installPackages)
         self.outdatedButton.clicked.connect(self.__checkOutdatedPackages)
@@ -88,6 +95,7 @@
         self.showOutdatedDependenciesButton.clicked.connect(
             self.__showOutdatedDependencies
         )
+        self.repairDependenciesButton.clicked.connect(self.__repairBrokenDependencies)
 
         self.pipxMenuButton.setShowMenuInside(True)
 
@@ -652,6 +660,16 @@
         self.__resizePackagesColumns()
         self.__plugin.setOutdatedIndicator(self.__hasOutdatedItems())
 
+    @pyqtSlot()
+    def __repairBrokenDependencies(self):
+        """
+        Private slot to repair broken (unmet) dependencies.
+        
+        Note: This could be necessary after a dependencies upgrade. pip will tell you.
+        """
+        package = self.__selectedPackages()[0]
+        self.__pipx.repairBrokenDependencies(package)
+
     #######################################################################
     ## Main widget related methods below
     #######################################################################
@@ -857,6 +875,7 @@
                 selectedPackageItems[0].data(0, PipxWidget.OutdatedDependenciesRole)
             )
         )
+        self.repairDependenciesButton.setEnabled(len(selectedPackageItems) == 1)
 
     def __selectedPackages(self):
         """

eric ide

mercurial