--- a/eric6/CondaInterface/CondaPackagesWidget.py Fri Oct 09 17:19:29 2020 +0200 +++ b/eric6/CondaInterface/CondaPackagesWidget.py Sat Oct 10 12:20:51 2020 +0200 @@ -11,7 +11,6 @@ import os from PyQt5.QtCore import pyqtSlot, Qt -from PyQt5.QtGui import QCursor from PyQt5.QtWidgets import ( QWidget, QToolButton, QMenu, QTreeWidgetItem, QApplication, QLineEdit, QDialog @@ -19,6 +18,7 @@ from E5Gui import E5FileDialog, E5MessageBox, E5TextInputDialog from E5Gui.E5Application import e5App +from E5Gui.E5OverrideCursor import E5OverrideCursor from .Ui_CondaPackagesWidget import Ui_CondaPackagesWidget @@ -218,51 +218,51 @@ self.packagesList.clear() prefix = self.environmentsComboBox.itemData(index) if prefix: - QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) self.statusLabel.show() self.statusLabel.setText(self.tr("Getting installed packages...")) - QApplication.processEvents() - # 1. populate with installed packages - self.packagesList.setUpdatesEnabled(False) - installedPackages = self.__conda.getInstalledPackages( - prefix=prefix) - for package, version, build in installedPackages: - itm = QTreeWidgetItem(self.packagesList, [package, version]) - itm.setData(1, self.PackageVersionRole, version) - itm.setData(1, self.PackageBuildRole, build) - self.packagesList.setUpdatesEnabled(True) - self.statusLabel.setText(self.tr("Getting outdated packages...")) - QApplication.processEvents() - - # 2. update with update information - self.packagesList.setUpdatesEnabled(False) - updateablePackages = self.__conda.getUpdateablePackages( - prefix=prefix) - for package, version, build in updateablePackages: - items = self.packagesList.findItems( - package, Qt.MatchExactly | Qt.MatchCaseSensitive) - if items: - itm = items[0] - itm.setText(2, version) - itm.setData(2, self.PackageVersionRole, version) - itm.setData(2, self.PackageBuildRole, build) - if itm.data(1, self.PackageVersionRole) == version: - # build must be different, show in version display - itm.setText(1, self.tr("{0} (Build: {1})").format( - itm.data(1, self.PackageVersionRole), - itm.data(1, self.PackageBuildRole), - )) - itm.setText(2, self.tr("{0} (Build: {1})").format( - itm.data(2, self.PackageVersionRole), - itm.data(2, self.PackageBuildRole), - )) - - self.packagesList.sortItems(0, Qt.AscendingOrder) - for col in range(self.packagesList.columnCount()): - self.packagesList.resizeColumnToContents(col) - self.packagesList.setUpdatesEnabled(True) - QApplication.restoreOverrideCursor() + with E5OverrideCursor(): + # 1. populate with installed packages + self.packagesList.setUpdatesEnabled(False) + installedPackages = self.__conda.getInstalledPackages( + prefix=prefix) + for package, version, build in installedPackages: + itm = QTreeWidgetItem(self.packagesList, + [package, version]) + itm.setData(1, self.PackageVersionRole, version) + itm.setData(1, self.PackageBuildRole, build) + self.packagesList.setUpdatesEnabled(True) + self.statusLabel.setText( + self.tr("Getting outdated packages...")) + QApplication.processEvents() + + # 2. update with update information + self.packagesList.setUpdatesEnabled(False) + updateablePackages = self.__conda.getUpdateablePackages( + prefix=prefix) + for package, version, build in updateablePackages: + items = self.packagesList.findItems( + package, Qt.MatchExactly | Qt.MatchCaseSensitive) + if items: + itm = items[0] + itm.setText(2, version) + itm.setData(2, self.PackageVersionRole, version) + itm.setData(2, self.PackageBuildRole, build) + if itm.data(1, self.PackageVersionRole) == version: + # build must be different, show in version display + itm.setText(1, self.tr("{0} (Build: {1})").format( + itm.data(1, self.PackageVersionRole), + itm.data(1, self.PackageBuildRole), + )) + itm.setText(2, self.tr("{0} (Build: {1})").format( + itm.data(2, self.PackageVersionRole), + itm.data(2, self.PackageBuildRole), + )) + + self.packagesList.sortItems(0, Qt.AscendingOrder) + for col in range(self.packagesList.columnCount()): + self.packagesList.resizeColumnToContents(col) + self.packagesList.setUpdatesEnabled(True) self.statusLabel.hide() self.__updateActionButtons() @@ -284,17 +284,14 @@ self.environmentsComboBox.clear() self.packagesList.clear() - QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) - QApplication.processEvents() - - self.__populateEnvironments() + with E5OverrideCursor(): + self.__populateEnvironments() + + index = self.environmentsComboBox.findText( + currentEnvironment, Qt.MatchExactly | Qt.MatchCaseSensitive) + if index != -1: + self.environmentsComboBox.setCurrentIndex(index) - index = self.environmentsComboBox.findText( - currentEnvironment, Qt.MatchExactly | Qt.MatchCaseSensitive) - if index != -1: - self.environmentsComboBox.setCurrentIndex(index) - - QApplication.restoreOverrideCursor() self.__updateActionButtons() @pyqtSlot() @@ -355,56 +352,53 @@ self.searchResultList.clear() pattern = self.searchEdit.text() if pattern: - QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) - QApplication.processEvents() - - if CondaInterface.condaVersion() >= (4, 4, 0): - prefix = "" - else: - prefix = self.environmentsComboBox.itemData( - self.environmentsComboBox.currentIndex()) - ok, result = self.__conda.searchPackages( - pattern, - fullNameOnly=self.fullNameButton.isChecked(), - packageSpec=self.packageSpecButton.isChecked(), - platform=self.platformComboBox.currentText(), - prefix=prefix, - ) - - if result: + with E5OverrideCursor(): + if CondaInterface.condaVersion() >= (4, 4, 0): + prefix = "" + else: + prefix = self.environmentsComboBox.itemData( + self.environmentsComboBox.currentIndex()) + ok, result = self.__conda.searchPackages( + pattern, + fullNameOnly=self.fullNameButton.isChecked(), + packageSpec=self.packageSpecButton.isChecked(), + platform=self.platformComboBox.currentText(), + prefix=prefix, + ) + if ok: - self.searchResultList.setUpdatesEnabled(False) - for package in result: - itm = QTreeWidgetItem(self.searchResultList, [package]) - itm.setExpanded(False) - for detail in result[package]: - version = detail["version"] - build = detail["build"] - if "subdir" in detail: - platform = detail["subdir"] - elif "platform" in detail: - platform = detail["platform"] - else: - platform = "" - citm = QTreeWidgetItem( - itm, ["", version, build, platform]) - citm.setData(0, self.PackageDetailedDataRole, - detail) - - self.searchResultList.sortItems(0, Qt.AscendingOrder) - self.searchResultList.resizeColumnToContents(0) - self.searchResultList.setUpdatesEnabled(True) - else: - QApplication.restoreOverrideCursor() - try: - message = result["message"] - except KeyError: - message = result["error"] - E5MessageBox.warning( - self, - self.tr("Conda Search Package Error"), - message) - QApplication.restoreOverrideCursor() + if result: + self.searchResultList.setUpdatesEnabled(False) + for package in result: + itm = QTreeWidgetItem(self.searchResultList, + [package]) + itm.setExpanded(False) + for detail in result[package]: + version = detail["version"] + build = detail["build"] + if "subdir" in detail: + platform = detail["subdir"] + elif "platform" in detail: + platform = detail["platform"] + else: + platform = "" + citm = QTreeWidgetItem( + itm, ["", version, build, platform]) + citm.setData(0, self.PackageDetailedDataRole, + detail) + + self.searchResultList.sortItems(0, Qt.AscendingOrder) + self.searchResultList.resizeColumnToContents(0) + self.searchResultList.setUpdatesEnabled(True) + if not ok: + try: + message = result["message"] + except KeyError: + message = result["error"] + E5MessageBox.warning( + self, + self.tr("Conda Search Package Error"), + message) def __showDetails(self, item): """