eric6/PipInterface/PipPackagesWidget.py

changeset 7771
787a6b3f8c9f
parent 7759
51aa6c6b66f7
child 7775
4a1db75550bd
--- a/eric6/PipInterface/PipPackagesWidget.py	Fri Oct 09 17:19:29 2020 +0200
+++ b/eric6/PipInterface/PipPackagesWidget.py	Sat Oct 10 12:20:51 2020 +0200
@@ -11,8 +11,7 @@
 import textwrap
 import os
 
-from PyQt5.QtCore import pyqtSlot, Qt, QEventLoop, QRegExp
-from PyQt5.QtGui import QCursor
+from PyQt5.QtCore import pyqtSlot, Qt, QRegExp
 from PyQt5.QtWidgets import (
     QWidget, QToolButton, QApplication, QHeaderView, QTreeWidgetItem,
     QInputDialog, QMenu, QDialog
@@ -20,6 +19,7 @@
 
 from E5Gui.E5Application import e5App
 from E5Gui import E5MessageBox
+from E5Gui.E5OverrideCursor import E5OverrideCursor
 
 from E5Network.E5XmlRpcClient import E5XmlRpcClient
 
@@ -237,47 +237,45 @@
         if venvName:
             interpreter = self.__pip.getVirtualenvInterpreter(venvName)
             if interpreter:
-                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.__pip.getInstalledPackages(
-                    venvName,
-                    localPackages=self.localCheckBox.isChecked(),
-                    notRequired=self.notRequiredCheckBox.isChecked(),
-                    usersite=self.userCheckBox.isChecked(),
-                )
-                for package, version in installedPackages:
-                    QTreeWidgetItem(self.packagesList, [package, version])
-                self.packagesList.setUpdatesEnabled(True)
-                self.statusLabel.setText(
-                    self.tr("Getting outdated packages..."))
-                QApplication.processEvents()
-                
-                # 2. update with update information
-                self.packagesList.setUpdatesEnabled(False)
-                outdatedPackages = self.__pip.getOutdatedPackages(
-                    venvName,
-                    localPackages=self.localCheckBox.isChecked(),
-                    notRequired=self.notRequiredCheckBox.isChecked(),
-                    usersite=self.userCheckBox.isChecked(),
-                )
-                for package, _version, latest in outdatedPackages:
-                    items = self.packagesList.findItems(
-                        package, Qt.MatchExactly | Qt.MatchCaseSensitive)
-                    if items:
-                        itm = items[0]
-                        itm.setText(2, latest)
-                
-                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.__pip.getInstalledPackages(
+                        venvName,
+                        localPackages=self.localCheckBox.isChecked(),
+                        notRequired=self.notRequiredCheckBox.isChecked(),
+                        usersite=self.userCheckBox.isChecked(),
+                    )
+                    for package, version in installedPackages:
+                        QTreeWidgetItem(self.packagesList, [package, version])
+                    self.packagesList.setUpdatesEnabled(True)
+                    self.statusLabel.setText(
+                        self.tr("Getting outdated packages..."))
+                    QApplication.processEvents()
+                    
+                    # 2. update with update information
+                    self.packagesList.setUpdatesEnabled(False)
+                    outdatedPackages = self.__pip.getOutdatedPackages(
+                        venvName,
+                        localPackages=self.localCheckBox.isChecked(),
+                        notRequired=self.notRequiredCheckBox.isChecked(),
+                        usersite=self.userCheckBox.isChecked(),
+                    )
+                    for package, _version, latest in outdatedPackages:
+                        items = self.packagesList.findItems(
+                            package, Qt.MatchExactly | Qt.MatchCaseSensitive)
+                        if items:
+                            itm = items[0]
+                            itm.setText(2, latest)
+                    
+                    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()
@@ -339,54 +337,55 @@
             if not interpreter:
                 return
             
-            QApplication.setOverrideCursor(Qt.WaitCursor)
-            
             args = ["-m", "pip", "show"]
             if self.verboseCheckBox.isChecked():
                 args.append("--verbose")
             if self.installedFilesCheckBox.isChecked():
                 args.append("--files")
             args.append(itm.text(0))
-            success, output = self.__pip.runProcess(args, interpreter)
             
-            if success and output:
-                mode = self.ShowProcessGeneralMode
-                for line in output.splitlines():
-                    line = line.rstrip()
-                    if line != "---":
-                        if mode != self.ShowProcessGeneralMode:
-                            if line[0] == " ":
-                                QTreeWidgetItem(
-                                    self.infoWidget,
-                                    [" ", line.strip()])
-                            else:
-                                mode = self.ShowProcessGeneralMode
-                        if mode == self.ShowProcessGeneralMode:
-                            try:
-                                label, info = line.split(": ", 1)
-                            except ValueError:
-                                label = line[:-1]
-                                info = ""
-                            label = label.lower()
-                            if label in self.__infoLabels:
-                                QTreeWidgetItem(
-                                    self.infoWidget,
-                                    [self.__infoLabels[label], info])
-                            if label == "files":
-                                mode = self.ShowProcessFilesListMode
-                            elif label == "classifiers":
-                                mode = self.ShowProcessClassifiersMode
-                            elif label == "entry-points":
-                                mode = self.ShowProcessEntryPointsMode
-                self.infoWidget.scrollToTop()
-            
-            header = self.infoWidget.header()
-            header.setStretchLastSection(False)
-            header.resizeSections(QHeaderView.ResizeToContents)
-            if header.sectionSize(0) + header.sectionSize(1) < header.width():
-                header.setStretchLastSection(True)
-            
-            QApplication.restoreOverrideCursor()
+            with E5OverrideCursor():
+                success, output = self.__pip.runProcess(args, interpreter)
+                
+                if success and output:
+                    mode = self.ShowProcessGeneralMode
+                    for line in output.splitlines():
+                        line = line.rstrip()
+                        if line != "---":
+                            if mode != self.ShowProcessGeneralMode:
+                                if line[0] == " ":
+                                    QTreeWidgetItem(
+                                        self.infoWidget,
+                                        [" ", line.strip()])
+                                else:
+                                    mode = self.ShowProcessGeneralMode
+                            if mode == self.ShowProcessGeneralMode:
+                                try:
+                                    label, info = line.split(": ", 1)
+                                except ValueError:
+                                    label = line[:-1]
+                                    info = ""
+                                label = label.lower()
+                                if label in self.__infoLabels:
+                                    QTreeWidgetItem(
+                                        self.infoWidget,
+                                        [self.__infoLabels[label], info])
+                                if label == "files":
+                                    mode = self.ShowProcessFilesListMode
+                                elif label == "classifiers":
+                                    mode = self.ShowProcessClassifiersMode
+                                elif label == "entry-points":
+                                    mode = self.ShowProcessEntryPointsMode
+                    self.infoWidget.scrollToTop()
+                
+                header = self.infoWidget.header()
+                header.setStretchLastSection(False)
+                header.resizeSections(QHeaderView.ResizeToContents)
+                if (
+                    header.sectionSize(0) + header.sectionSize(1) <
+                    header.width()
+                ):
+                    header.setStretchLastSection(True)
         
         self.__updateActionButtons()
     
@@ -444,17 +443,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()
@@ -636,8 +632,6 @@
         self.searchInfoLabel.clear()
         
         self.searchButton.setEnabled(False)
-        QApplication.setOverrideCursor(Qt.WaitCursor)
-        QApplication.processEvents(QEventLoop.ExcludeUserInputEvents)
         
         self.__queryName = [
             term for term in self.searchEditName.text().strip().split()
@@ -688,7 +682,6 @@
                         count = 0
                         QApplication.processEvents()
             else:
-                QApplication.restoreOverrideCursor()
                 E5MessageBox.warning(
                     self,
                     self.tr("Search PyPI"),
@@ -698,7 +691,6 @@
                     self.tr("""<p>The package search did not return"""
                             """ anything.</p>"""))
         else:
-            QApplication.restoreOverrideCursor()
             E5MessageBox.warning(
                 self,
                 self.tr("Search PyPI"),
@@ -724,8 +716,6 @@
         """
         Private slot performing the search finishing actions.
         """
-        QApplication.restoreOverrideCursor()
-        
         self.__updateSearchActionButtons()
         self.__updateSearchButton()
         
@@ -900,12 +890,10 @@
         @param packageVersion version of the package
         @type str
         """
-        QApplication.setOverrideCursor(Qt.WaitCursor)
-        QApplication.processEvents(QEventLoop.ExcludeUserInputEvents)
+        with E5OverrideCursor():
+            packageData = self.__pip.getPackageDetails(
+                packageName, packageVersion)
         
-        packageData = self.__pip.getPackageDetails(packageName, packageVersion)
-        
-        QApplication.restoreOverrideCursor()
         if packageData:
             from .PipPackageDetailsDialog import PipPackageDetailsDialog
             

eric ide

mercurial