Sat, 23 Feb 2019 13:22:24 +0100
PipInterface: continued with the pip interface widget.
PipInterface/PipPackagesWidget.py | file | annotate | diff | comparison | revisions | |
PipInterface/PipPackagesWidget.ui | file | annotate | diff | comparison | revisions |
--- a/PipInterface/PipPackagesWidget.py Fri Feb 22 19:37:00 2019 +0100 +++ b/PipInterface/PipPackagesWidget.py Sat Feb 23 13:22:24 2019 +0100 @@ -30,7 +30,6 @@ # TODO: use icons for action buttons -# TODO: show package details for installed packages class PipPackagesWidget(QWidget, Ui_PipPackagesWidget): """ Class implementing the pip packages management widget. @@ -187,10 +186,13 @@ bool(self.packagesList.selectedItems())) self.upgradeAllButton.setEnabled( bool(self.__allUpdateableItems())) + self.showPackageDetailsButton.setEnabled( + len(self.packagesList.selectedItems()) == 1) else: self.upgradeButton.setEnabled(False) self.uninstallButton.setEnabled(False) self.upgradeAllButton.setEnabled(False) + self.showPackageDetailsButton.setEnabled(False) def __refreshPackagesList(self): """ @@ -354,6 +356,29 @@ self.__updateActionButtons() + @pyqtSlot(QTreeWidgetItem, int) + def on_packagesList_itemActivated(self, item, column): + """ + Private slot reacting on a package item activation. + + @param item reference to the activated item + @type QTreeWidgetItem + @param column activated column + @type int + """ + packageName = item.text(0) + if column == 1: + # show details for installed version + packageVersion = item.text(1) + else: + # show details for available version or installed one + if item.text(2): + packageVersion = item.text(2) + else: + packageVersion = item.text(1) + + self.__showPackageDetails(packageName, packageVersion) + @pyqtSlot(bool) def on_verboseCheckBox_clicked(self, checked): """ @@ -447,6 +472,22 @@ userSite=self.userCheckBox.isChecked()) return ok + @pyqtSlot() + def on_showPackageDetailsButton_clicked(self): + """ + Private slot to show information for the selected package. + """ + item = self.packagesList.selectedItems()[0] + if item: + packageName = item.text(0) + # show details for available version or installed one + if item.text(2): + packageVersion = item.text(2) + else: + packageVersion = item.text(1) + + self.__showPackageDetails(packageName, packageVersion) + ####################################################################### ## Search widget related methods below ####################################################################### @@ -762,7 +803,7 @@ """ Private slot to handle pressing the Show Details button. """ - self.__showDetails() + self.__showSearchedDetails() @pyqtSlot(QTreeWidgetItem, int) def on_searchResultList_itemActivated(self, item, column): @@ -776,16 +817,14 @@ """ self.__showDetails(item) - def __showDetails(self, item=None): + def __showSearchedDetails(self, item=None): """ - Private slot to show details about the selected package. + Private slot to show details about the selected search result package. @param item reference to the search result item to show details for @type QTreeWidgetItem """ self.showDetailsButton.setEnabled(False) - QApplication.setOverrideCursor(Qt.WaitCursor) - QApplication.processEvents(QEventLoop.ExcludeUserInputEvents) if not item: item = self.searchResultList.selectedItems()[0] @@ -805,6 +844,21 @@ if not ok: return packageName = item.text(0) + + self.__showPackageDetails(packageName, packageVersion) + + def __showPackageDetails(self, packageName, packageVersion): + """ + Private method to populate the package details dialog. + + @param packageName name of the package to show details for + @type str + @param packageVersion version of the package + @type str + """ + QApplication.setOverrideCursor(Qt.WaitCursor) + QApplication.processEvents(QEventLoop.ExcludeUserInputEvents) + packageData = self.__pip.getPackageDetails(packageName, packageVersion) QApplication.restoreOverrideCursor()
--- a/PipInterface/PipPackagesWidget.ui Fri Feb 22 19:37:00 2019 +0100 +++ b/PipInterface/PipPackagesWidget.ui Sat Feb 23 13:22:24 2019 +0100 @@ -270,6 +270,16 @@ </widget> </item> <item> + <widget class="QPushButton" name="showPackageDetailsButton"> + <property name="toolTip"> + <string>Press to show details for the selected entry</string> + </property> + <property name="text"> + <string>Show Details...</string> + </property> + </widget> + </item> + <item> <spacer name="horizontalSpacer_2"> <property name="orientation"> <enum>Qt::Horizontal</enum>