PipInterface/PipPackagesWidget.py

branch
pypi
changeset 6801
df623ed5aaa6
parent 6798
3985c1a67fa2
child 6804
dc20bde4af90
equal deleted inserted replaced
6800:ce5b800b2fe2 6801:df623ed5aaa6
28 28
29 from .Pip import Pip 29 from .Pip import Pip
30 30
31 31
32 # TODO: use icons for action buttons 32 # TODO: use icons for action buttons
33 # TODO: show package details for installed packages
34 class PipPackagesWidget(QWidget, Ui_PipPackagesWidget): 33 class PipPackagesWidget(QWidget, Ui_PipPackagesWidget):
35 """ 34 """
36 Class implementing the pip packages management widget. 35 Class implementing the pip packages management widget.
37 """ 36 """
38 ShowProcessGeneralMode = 0 37 ShowProcessGeneralMode = 0
185 bool(self.__selectedUpdateableItems())) 184 bool(self.__selectedUpdateableItems()))
186 self.uninstallButton.setEnabled( 185 self.uninstallButton.setEnabled(
187 bool(self.packagesList.selectedItems())) 186 bool(self.packagesList.selectedItems()))
188 self.upgradeAllButton.setEnabled( 187 self.upgradeAllButton.setEnabled(
189 bool(self.__allUpdateableItems())) 188 bool(self.__allUpdateableItems()))
189 self.showPackageDetailsButton.setEnabled(
190 len(self.packagesList.selectedItems()) == 1)
190 else: 191 else:
191 self.upgradeButton.setEnabled(False) 192 self.upgradeButton.setEnabled(False)
192 self.uninstallButton.setEnabled(False) 193 self.uninstallButton.setEnabled(False)
193 self.upgradeAllButton.setEnabled(False) 194 self.upgradeAllButton.setEnabled(False)
195 self.showPackageDetailsButton.setEnabled(False)
194 196
195 def __refreshPackagesList(self): 197 def __refreshPackagesList(self):
196 """ 198 """
197 Private method to referesh the packages list. 199 Private method to referesh the packages list.
198 """ 200 """
352 354
353 QApplication.restoreOverrideCursor() 355 QApplication.restoreOverrideCursor()
354 356
355 self.__updateActionButtons() 357 self.__updateActionButtons()
356 358
359 @pyqtSlot(QTreeWidgetItem, int)
360 def on_packagesList_itemActivated(self, item, column):
361 """
362 Private slot reacting on a package item activation.
363
364 @param item reference to the activated item
365 @type QTreeWidgetItem
366 @param column activated column
367 @type int
368 """
369 packageName = item.text(0)
370 if column == 1:
371 # show details for installed version
372 packageVersion = item.text(1)
373 else:
374 # show details for available version or installed one
375 if item.text(2):
376 packageVersion = item.text(2)
377 else:
378 packageVersion = item.text(1)
379
380 self.__showPackageDetails(packageName, packageVersion)
381
357 @pyqtSlot(bool) 382 @pyqtSlot(bool)
358 def on_verboseCheckBox_clicked(self, checked): 383 def on_verboseCheckBox_clicked(self, checked):
359 """ 384 """
360 Private slot to handle a change of the verbose package information 385 Private slot to handle a change of the verbose package information
361 checkbox. 386 checkbox.
444 """ 469 """
445 ok = self.__pip.upgradePackages( 470 ok = self.__pip.upgradePackages(
446 packages, venvName=self.environmentsComboBox.currentText(), 471 packages, venvName=self.environmentsComboBox.currentText(),
447 userSite=self.userCheckBox.isChecked()) 472 userSite=self.userCheckBox.isChecked())
448 return ok 473 return ok
474
475 @pyqtSlot()
476 def on_showPackageDetailsButton_clicked(self):
477 """
478 Private slot to show information for the selected package.
479 """
480 item = self.packagesList.selectedItems()[0]
481 if item:
482 packageName = item.text(0)
483 # show details for available version or installed one
484 if item.text(2):
485 packageVersion = item.text(2)
486 else:
487 packageVersion = item.text(1)
488
489 self.__showPackageDetails(packageName, packageVersion)
449 490
450 ####################################################################### 491 #######################################################################
451 ## Search widget related methods below 492 ## Search widget related methods below
452 ####################################################################### 493 #######################################################################
453 494
760 @pyqtSlot() 801 @pyqtSlot()
761 def on_showDetailsButton_clicked(self): 802 def on_showDetailsButton_clicked(self):
762 """ 803 """
763 Private slot to handle pressing the Show Details button. 804 Private slot to handle pressing the Show Details button.
764 """ 805 """
765 self.__showDetails() 806 self.__showSearchedDetails()
766 807
767 @pyqtSlot(QTreeWidgetItem, int) 808 @pyqtSlot(QTreeWidgetItem, int)
768 def on_searchResultList_itemActivated(self, item, column): 809 def on_searchResultList_itemActivated(self, item, column):
769 """ 810 """
770 Private slot reacting on an search result item activation. 811 Private slot reacting on an search result item activation.
774 @param column activated column 815 @param column activated column
775 @type int 816 @type int
776 """ 817 """
777 self.__showDetails(item) 818 self.__showDetails(item)
778 819
779 def __showDetails(self, item=None): 820 def __showSearchedDetails(self, item=None):
780 """ 821 """
781 Private slot to show details about the selected package. 822 Private slot to show details about the selected search result package.
782 823
783 @param item reference to the search result item to show details for 824 @param item reference to the search result item to show details for
784 @type QTreeWidgetItem 825 @type QTreeWidgetItem
785 """ 826 """
786 self.showDetailsButton.setEnabled(False) 827 self.showDetailsButton.setEnabled(False)
787 QApplication.setOverrideCursor(Qt.WaitCursor)
788 QApplication.processEvents(QEventLoop.ExcludeUserInputEvents)
789 828
790 if not item: 829 if not item:
791 item = self.searchResultList.selectedItems()[0] 830 item = self.searchResultList.selectedItems()[0]
792 831
793 packageVersions = item.data(0, self.SearchVersionRole) 832 packageVersions = item.data(0, self.SearchVersionRole)
803 packageVersions, 842 packageVersions,
804 0, False) 843 0, False)
805 if not ok: 844 if not ok:
806 return 845 return
807 packageName = item.text(0) 846 packageName = item.text(0)
847
848 self.__showPackageDetails(packageName, packageVersion)
849
850 def __showPackageDetails(self, packageName, packageVersion):
851 """
852 Private method to populate the package details dialog.
853
854 @param packageName name of the package to show details for
855 @type str
856 @param packageVersion version of the package
857 @type str
858 """
859 QApplication.setOverrideCursor(Qt.WaitCursor)
860 QApplication.processEvents(QEventLoop.ExcludeUserInputEvents)
861
808 packageData = self.__pip.getPackageDetails(packageName, packageVersion) 862 packageData = self.__pip.getPackageDetails(packageName, packageVersion)
809 863
810 QApplication.restoreOverrideCursor() 864 QApplication.restoreOverrideCursor()
811 if packageData: 865 if packageData:
812 from .PipPackageDetailsDialog import PipPackageDetailsDialog 866 from .PipPackageDetailsDialog import PipPackageDetailsDialog

eric ide

mercurial