--- a/src/eric7/PipInterface/PipPackagesWidget.py Tue Dec 10 15:46:34 2024 +0100 +++ b/src/eric7/PipInterface/PipPackagesWidget.py Wed Dec 11 18:12:50 2024 +0100 @@ -214,6 +214,7 @@ self.installButton.setIcon(EricPixmapCache.getIcon("plus")) self.installUserSiteButton.setIcon(EricPixmapCache.getIcon("addUser")) self.showDetailsButton.setIcon(EricPixmapCache.getIcon("info")) + self.cleanupButton.setIcon(EricPixmapCache.getIcon("clear")) self.refreshDependenciesButton.setIcon(EricPixmapCache.getIcon("reload")) self.showDepPackageDetailsButton.setIcon(EricPixmapCache.getIcon("info")) @@ -431,11 +432,13 @@ self.showPackageDetailsButton.setEnabled( len(self.packagesList.selectedItems()) == 1 ) + self.cleanupButton.setEnabled(True) else: self.upgradeButton.setEnabled(False) self.uninstallButton.setEnabled(False) self.upgradeAllButton.setEnabled(False) self.showPackageDetailsButton.setEnabled(False) + self.cleanupButton.setEnabled(False) def __refreshPackagesList(self): """ @@ -546,6 +549,9 @@ self.__refreshPackagesList() self.__selectedEnvironment = name + ##self.cleanupButton.setEnabled(bool(name)) + self.__updateActionButtons() + @pyqtSlot() def on_localCheckBox_clicked(self): """ @@ -837,6 +843,30 @@ upgradable=upgradable, ) + @pyqtSlot() + def on_cleanupButton_clicked(self): + """ + Private slot to cleanup the site-packages directory of the selected + environment. + """ + envName = self.environmentsComboBox.currentText() + if envName: + ok = self.__pip.runCleanup(envName=envName) + if ok: + EricMessageBox.information( + self, + self.tr("Cleanup Environment"), + self.tr("The environment cleanup was successful."), + ) + else: + EricMessageBox.warning( + self, + self.tr("Cleanup Environment"), + self.tr( + "Some leftover package directories could not been removed." + " Delete them manually."), + ) + ####################################################################### ## Search widget related methods below #######################################################################