diff -r 66c11ab8fefd -r 39d1353996b9 src/eric7/PipInterface/PipPackagesWidget.py --- a/src/eric7/PipInterface/PipPackagesWidget.py Mon Jul 24 14:36:06 2023 +0200 +++ b/src/eric7/PipInterface/PipPackagesWidget.py Mon Jul 24 16:23:02 2023 +0200 @@ -213,6 +213,7 @@ self.refreshDependenciesButton.setIcon(EricPixmapCache.getIcon("reload")) self.showDepPackageDetailsButton.setIcon(EricPixmapCache.getIcon("info")) self.dependencyRepairButton.setIcon(EricPixmapCache.getIcon("repair")) + self.dependencyRepairAllButton.setIcon(EricPixmapCache.getIcon("repairAll")) self.__pip = pip @@ -2006,15 +2007,24 @@ ) ) + itm = self.dependenciesList.topLevelItem(0) + while itm: + if not itm.icon(PipPackagesWidget.DepRequiredVersionColumn).isNull(): + self.dependencyRepairAllButton.setEnabled(True) + break + itm = self.dependenciesList.itemBelow(itm) + else: + self.dependencyRepairAllButton.setEnabled(False) + @pyqtSlot() def on_dependencyRepairButton_clicked(self): """ Private slot to repair all selected dependencies. """ - packages = [] + packages = set() for itm in self.dependenciesList.selectedItems(): if not itm.icon(PipPackagesWidget.DepRequiredVersionColumn).isNull(): - packages.append( + packages.add( "{0}{1}".format( itm.text(PipPackagesWidget.DepPackageColumn), itm.text(PipPackagesWidget.DepRequiredVersionColumn), @@ -2024,7 +2034,35 @@ venvName = self.environmentsComboBox.currentText() if venvName and packages: self.__pip.installPackages( - packages, venvName=venvName, userSite=self.userDepCheckBox.isChecked() + list(packages), + venvName=venvName, + userSite=self.userDepCheckBox.isChecked(), + ) + self.on_refreshDependenciesButton_clicked() + + @pyqtSlot() + def on_dependencyRepairAllButton_clicked(self): + """ + Private slot to repair all dependencies. + """ + packages = set() + itm = self.dependenciesList.topLevelItem(0) + while itm: + if not itm.icon(PipPackagesWidget.DepRequiredVersionColumn).isNull(): + packages.add( + "{0}{1}".format( + itm.text(PipPackagesWidget.DepPackageColumn), + itm.text(PipPackagesWidget.DepRequiredVersionColumn), + ) + ) + itm = self.dependenciesList.itemBelow(itm) + + venvName = self.environmentsComboBox.currentText() + if venvName and packages: + self.__pip.installPackages( + list(packages), + venvName=venvName, + userSite=self.userDepCheckBox.isChecked(), ) self.on_refreshDependenciesButton_clicked()