PipxInterface/PipxWidget.py

changeset 12
a09f763d5e1f
parent 11
6af0704c8175
child 14
12413552ae0d
diff -r 6af0704c8175 -r a09f763d5e1f PipxInterface/PipxWidget.py
--- a/PipxInterface/PipxWidget.py	Thu Jun 27 16:20:56 2024 +0200
+++ b/PipxInterface/PipxWidget.py	Thu Jun 27 17:50:51 2024 +0200
@@ -107,7 +107,7 @@
         )
         self.__installSubmenu.addSeparator()
         self.__reinstallPackagesAct = self.__installSubmenu.addAction(
-            self.tr("Re-Install Selected Packages"), self.__reinstallPackages
+            self.tr("Re-Install Selected Package"), self.__reinstallPackage
         )
         self.__reinstallAllPackagesAct = self.__installSubmenu.addAction(
             self.tr("Re-Install All Packages"), self.__reinstallAllPackages
@@ -261,20 +261,53 @@
                 )
 
     @pyqtSlot()
-    def __reinstallPackages(self):
+    def __reinstallPackage(self):
+        """
+        Private slot to force a re-installation of the selected package.
         """
-        Private slot to force a re-installation of the selected packages.
-        """
-        # TODO: not implemented yet
-        pass
+        from .PipxReinstallDialog import PipxReinstallDialog
+
+        package = self.__selectedPackages()[0]
+        yes = EricMessageBox.yesNo(
+            self,
+            self.tr("Re-Install Package"),
+            self.tr(
+                "<p>Shall the package <b>{0}</b> really be reinstalled?</p>"
+            ).format(package),
+        )
+        if yes:
+            dlg = PipxReinstallDialog(reinstallAll=False, parent=self)
+            if dlg.exec() == QDialog.DialogCode.Accepted:
+                pyVersion, fetchMissing, _ = dlg.getData()
+                self.__pipx.reinstallPackage(
+                    package,
+                    interpreterVersion=pyVersion,
+                    fetchMissingInterpreter=fetchMissing,
+                )
+            self.on_refreshButton_clicked()
 
     @pyqtSlot()
     def __reinstallAllPackages(self):
         """
         Private slot to force a re-installation of all packages.
         """
-        # TODO: not implemented yet
-        pass
+        from .PipxReinstallDialog import PipxReinstallDialog
+
+        yes = EricMessageBox.yesNo(
+            self,
+            self.tr("Re-Install All Packages"),
+            self.tr("""Do you really want to reinstall all packages?"""),
+        )
+        if yes:
+            dlg = PipxReinstallDialog(reinstallAll=True, parent=self)
+            if dlg.exec() == QDialog.DialogCode.Accepted:
+                pyVersion, fetchMissing, skipList = dlg.getData()
+                self.__pipx.reinstallAllPackages(
+                    interpreterVersion=pyVersion,
+                    fetchMissingInterpreter=fetchMissing,
+                    skipPackages=skipList,
+                )
+            self.on_refreshButton_clicked()
 
     @pyqtSlot()
     def __upgradePackage(self):

eric ide

mercurial