eric6/CondaInterface/CondaPackagesWidget.py

changeset 7771
787a6b3f8c9f
parent 7759
51aa6c6b66f7
child 7780
41420f82c0ac
--- 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):
         """

eric ide

mercurial