PipInterface: continued with the pip interface widget. pypi

Sat, 23 Feb 2019 13:22:24 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 23 Feb 2019 13:22:24 +0100
branch
pypi
changeset 6801
df623ed5aaa6
parent 6800
ce5b800b2fe2
child 6802
864d10ecf3a4

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>

eric ide

mercurial