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):