src/eric7/PipInterface/PipPackagesWidget.py

branch
eric7
changeset 10209
8bb763e85937
parent 10207
df02f650f574
child 10210
7d0e5ca7eb3e
equal deleted inserted replaced
10208:d2fb44007ed3 10209:8bb763e85937
290 290
291 @param shutdown flag indicating the IDE shutdown 291 @param shutdown flag indicating the IDE shutdown
292 @type bool 292 @type bool
293 """ 293 """
294 if not shutdown: 294 if not shutdown:
295 # the project entry is always at index 1
295 if self.environmentsComboBox.currentIndex() == 1: 296 if self.environmentsComboBox.currentIndex() == 1:
296 self.environmentsComboBox.setCurrentIndex(0) 297 self.environmentsComboBox.setCurrentIndex(0)
297 298
298 # the project entry is always at index 1
299 self.environmentsComboBox.removeItem(1) 299 self.environmentsComboBox.removeItem(1)
300 300
301 def __populateEnvironments(self): 301 def __populateEnvironments(self):
302 """ 302 """
303 Private method to get a list of environments and populate the selector. 303 Private method to get a list of environments and populate the selector.
439 self.statusLabel.show() 439 self.statusLabel.show()
440 self.statusLabel.setText(self.tr("Getting installed packages...")) 440 self.statusLabel.setText(self.tr("Getting installed packages..."))
441 441
442 with EricOverrideCursor(): 442 with EricOverrideCursor():
443 # 1. populate with installed packages 443 # 1. populate with installed packages
444 self.packagesList.setUpdatesEnabled(False)
445 installedPackages = self.__pip.getInstalledPackages( 444 installedPackages = self.__pip.getInstalledPackages(
446 venvName, 445 venvName,
447 localPackages=self.localCheckBox.isChecked(), 446 localPackages=self.localCheckBox.isChecked(),
448 notRequired=self.notRequiredCheckBox.isChecked(), 447 notRequired=self.notRequiredCheckBox.isChecked(),
449 usersite=self.userCheckBox.isChecked(), 448 usersite=self.userCheckBox.isChecked(),
450 ) 449 )
451 for package, version in installedPackages: 450 for package, version in installedPackages:
452 QTreeWidgetItem(self.packagesList, [package, version, "", ""]) 451 QTreeWidgetItem(self.packagesList, [package, version, "", ""])
453 self.packagesList.setUpdatesEnabled(True) 452 self.packagesList.sortItems(
453 PipPackagesWidget.PackageColumn, Qt.SortOrder.AscendingOrder
454 )
455 self.packagesList.resizeColumnToContents(
456 PipPackagesWidget.PackageColumn
457 )
458 self.packagesList.resizeColumnToContents(
459 PipPackagesWidget.InstalledVersionColumn
460 )
461 QApplication.processEvents()
462
463 # 2. update with vulnerability information
464 if self.vulnerabilityCheckBox.isChecked():
465 self.__updateVulnerabilityData()
466 self.packagesList.resizeColumnToContents(
467 PipPackagesWidget.VulnerabilityColumn
468 )
454 self.statusLabel.setText(self.tr("Getting outdated packages...")) 469 self.statusLabel.setText(self.tr("Getting outdated packages..."))
455 QApplication.processEvents() 470 QApplication.processEvents()
456 471
457 # 2. update with update information 472 # 3. update with update information
458 self.packagesList.setUpdatesEnabled(False) 473 self.__pip.getOutdatedPackages(
459 outdatedPackages = self.__pip.getOutdatedPackages(
460 venvName, 474 venvName,
461 localPackages=self.localCheckBox.isChecked(), 475 localPackages=self.localCheckBox.isChecked(),
462 notRequired=self.notRequiredCheckBox.isChecked(), 476 notRequired=self.notRequiredCheckBox.isChecked(),
463 usersite=self.userCheckBox.isChecked(), 477 usersite=self.userCheckBox.isChecked(),
478 callback=self.__updateOutdatedInfo,
464 ) 479 )
465 for package, _version, latest in outdatedPackages: 480
466 items = self.packagesList.findItems( 481 else:
467 package, 482 self.__updateActionButtons()
468 Qt.MatchFlag.MatchExactly | Qt.MatchFlag.MatchCaseSensitive, 483 self.__updateSearchActionButtons()
469 ) 484 self.__updateSearchButton()
470 if items: 485 self.__updateSearchMoreButton(False)
471 itm = items[0] 486
472 itm.setText( 487 def __updateOutdatedInfo(self, outdatedPackages):
473 PipPackagesWidget.AvailableVersionColumn, latest 488 """
474 ) 489 Private method to process the list of outdated packages.
475 QApplication.processEvents() 490
476 491 @param outdatedPackages list of tuples containing the package name,
477 # 3. update with vulnerability information 492 installed version and available version
478 if self.vulnerabilityCheckBox.isChecked(): 493 @type list of tuple of (str, str, str)
479 self.__updateVulnerabilityData() 494 """
480 495 for package, _version, latest in outdatedPackages:
481 self.packagesList.sortItems( 496 items = self.packagesList.findItems(
482 PipPackagesWidget.PackageColumn, Qt.SortOrder.AscendingOrder 497 package,
483 ) 498 Qt.MatchFlag.MatchExactly | Qt.MatchFlag.MatchCaseSensitive,
484 for col in range(self.packagesList.columnCount()): 499 )
485 self.packagesList.resizeColumnToContents(col) 500 if items:
486 self.packagesList.setUpdatesEnabled(True) 501 items[0].setText(PipPackagesWidget.AvailableVersionColumn, latest)
487 self.statusLabel.hide() 502 self.packagesList.resizeColumnToContents(
503 PipPackagesWidget.AvailableVersionColumn
504 )
505 self.statusLabel.hide()
488 506
489 self.__updateActionButtons() 507 self.__updateActionButtons()
490 self.__updateSearchActionButtons() 508 self.__updateSearchActionButtons()
491 self.__updateSearchButton() 509 self.__updateSearchButton()
492 self.__updateSearchMoreButton(False) 510 self.__updateSearchMoreButton(False)
609 if len(self.packagesList.selectedItems()) == 0: 627 if len(self.packagesList.selectedItems()) == 0:
610 self.packageInfoWidget.clear() 628 self.packageInfoWidget.clear()
611 self.vulnerabilitiesInfoWidget.clear() 629 self.vulnerabilitiesInfoWidget.clear()
612 self.infoWidget.tabBar().hide() 630 self.infoWidget.tabBar().hide()
613 631
632 self.__updateActionButtons()
633
614 @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem) 634 @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem)
615 def on_packagesList_currentItemChanged(self, curr, prev): 635 def on_packagesList_currentItemChanged(self, curr, prev):
616 """ 636 """
617 Private slot to handle a change of the current item. 637 Private slot to handle a change of the current item.
618 638

eric ide

mercurial