eric6/Preferences/ProgramsDialog.py

changeset 7771
787a6b3f8c9f
parent 7635
0cdead130a81
child 7780
41420f82c0ac
diff -r 49f3377aebf1 -r 787a6b3f8c9f eric6/Preferences/ProgramsDialog.py
--- a/eric6/Preferences/ProgramsDialog.py	Fri Oct 09 17:19:29 2020 +0200
+++ b/eric6/Preferences/ProgramsDialog.py	Sat Oct 10 12:20:51 2020 +0200
@@ -13,12 +13,12 @@
 import sys
 
 from PyQt5.QtCore import pyqtSlot, Qt, QProcess
-from PyQt5.QtGui import QCursor
 from PyQt5.QtWidgets import (
     QApplication, QTreeWidgetItem, QHeaderView, QDialog, QDialogButtonBox
 )
 
 from E5Gui.E5Application import e5App
+from E5Gui.E5OverrideCursor import E5OverrideCursor
 
 from .Ui_ProgramsDialog import Ui_ProgramsDialog
 
@@ -81,224 +81,224 @@
         """
         Private slot to search for all supported/required programs.
         """
-        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
-        QApplication.processEvents()
-        
         self.programsList.clear()
         header = self.programsList.header()
         header.setSortIndicator(0, Qt.AscendingOrder)
         header.setSortIndicatorShown(False)
         
-        # 1. do the Qt5 programs
-        # 1a. Translation Converter
-        exe = (
-            Utilities.isWindowsPlatform() and
-            "{0}.exe".format(Utilities.generateQtToolName("lrelease")) or
-            Utilities.generateQtToolName("lrelease")
-        )
-        exe = os.path.join(Utilities.getQtBinariesPath(), exe)
-        version = self.__createProgramEntry(
-            self.tr("Translation Converter (Qt)"), exe, '-version',
-            'lrelease', -1)
-        # 1b. Qt Designer
-        if Utilities.isWindowsPlatform():
-            exe = os.path.join(
-                Utilities.getQtBinariesPath(),
-                "{0}.exe".format(Utilities.generateQtToolName("designer")))
-        elif Utilities.isMacPlatform():
-            exe = Utilities.getQtMacBundle("designer")
-        else:
-            exe = os.path.join(
-                Utilities.getQtBinariesPath(),
-                Utilities.generateQtToolName("designer"))
-        self.__createProgramEntry(
-            self.tr("Qt Designer"), exe, version=version)
-        # 1c. Qt Linguist
-        if Utilities.isWindowsPlatform():
-            exe = os.path.join(
-                Utilities.getQtBinariesPath(),
-                "{0}.exe".format(Utilities.generateQtToolName("linguist")))
-        elif Utilities.isMacPlatform():
-            exe = Utilities.getQtMacBundle("linguist")
-        else:
-            exe = os.path.join(
-                Utilities.getQtBinariesPath(),
-                Utilities.generateQtToolName("linguist"))
-        self.__createProgramEntry(
-            self.tr("Qt Linguist"), exe, version=version)
-        # 1d. Qt Assistant
-        if Utilities.isWindowsPlatform():
-            exe = os.path.join(
-                Utilities.getQtBinariesPath(),
-                "{0}.exe".format(Utilities.generateQtToolName("assistant")))
-        elif Utilities.isMacPlatform():
-            exe = Utilities.getQtMacBundle("assistant")
-        else:
-            exe = os.path.join(
-                Utilities.getQtBinariesPath(),
-                Utilities.generateQtToolName("assistant"))
-        self.__createProgramEntry(
-            self.tr("Qt Assistant"), exe, version=version)
-        
-        # 2. do the PyQt programs
-        # 2.1 do the PyQt5 programs
-        # 2.1a. Translation Extractor PyQt5
-        self.__createProgramEntry(
-            self.tr("Translation Extractor (Python, PyQt5)"),
-            Utilities.generatePyQtToolPath("pylupdate5"),
-            '-version', 'pylupdate', -1)
-        # 2.1b. Forms Compiler PyQt5
-        self.__createProgramEntry(
-            self.tr("Forms Compiler (Python, PyQt5)"),
-            Utilities.generatePyQtToolPath("pyuic5", ["py3uic5"]),
-            '--version', 'Python User', 4)
-        # 2.1c. Resource Compiler PyQt5
-        self.__createProgramEntry(
-            self.tr("Resource Compiler (Python, PyQt5)"),
-            Utilities.generatePyQtToolPath("pyrcc5"),
-            '-version', '', -1, versionRe='Resource Compiler|pyrcc5')
-        
-        # 3. do the PySide programs
-        # 3.1 do the PySide2 programs
-        # 3.1a. Translation Extractor PySide2
-        self.__createProgramEntry(
-            self.tr("Translation Extractor (Python, PySide2)"),
-            Utilities.generatePySideToolPath("pyside2-lupdate"),
-            '-version', '', -1, versionRe='lupdate')
-        # 3.1b. Forms Compiler PySide2
-        self.__createProgramEntry(
-            self.tr("Forms Compiler (Python, PySide2)"),
-            Utilities.generatePySideToolPath("pyside2-uic"),
-            '--version', '', -1, versionRe='uic')
-        # 3.1c Resource Compiler PySide2
-        self.__createProgramEntry(
-            self.tr("Resource Compiler (Python, PySide2)"),
-            Utilities.generatePySideToolPath("pyside2-rcc"),
-            '-version', '', -1, versionRe='rcc')
-        
-        # 4. do the Conda program(s)
-        exe = Preferences.getConda("CondaExecutable")
-        if not exe:
-            exe = "conda"
+        with E5OverrideCursor():
+            # 1. do the Qt5 programs
+            # 1a. Translation Converter
+            exe = (
+                Utilities.isWindowsPlatform() and
+                "{0}.exe".format(Utilities.generateQtToolName("lrelease")) or
+                Utilities.generateQtToolName("lrelease")
+            )
+            exe = os.path.join(Utilities.getQtBinariesPath(), exe)
+            version = self.__createProgramEntry(
+                self.tr("Translation Converter (Qt)"), exe, '-version',
+                'lrelease', -1)
+            # 1b. Qt Designer
+            if Utilities.isWindowsPlatform():
+                exe = os.path.join(
+                    Utilities.getQtBinariesPath(),
+                    "{0}.exe".format(Utilities.generateQtToolName("designer")))
+            elif Utilities.isMacPlatform():
+                exe = Utilities.getQtMacBundle("designer")
+            else:
+                exe = os.path.join(
+                    Utilities.getQtBinariesPath(),
+                    Utilities.generateQtToolName("designer"))
+            self.__createProgramEntry(
+                self.tr("Qt Designer"), exe, version=version)
+            # 1c. Qt Linguist
+            if Utilities.isWindowsPlatform():
+                exe = os.path.join(
+                    Utilities.getQtBinariesPath(),
+                    "{0}.exe".format(Utilities.generateQtToolName("linguist")))
+            elif Utilities.isMacPlatform():
+                exe = Utilities.getQtMacBundle("linguist")
+            else:
+                exe = os.path.join(
+                    Utilities.getQtBinariesPath(),
+                    Utilities.generateQtToolName("linguist"))
+            self.__createProgramEntry(
+                self.tr("Qt Linguist"), exe, version=version)
+            # 1d. Qt Assistant
             if Utilities.isWindowsPlatform():
-                exe += ".exe"
-        self.__createProgramEntry(
-            self.tr("conda Manager"), exe, '--version', 'conda', -1)
-        
-        # 5. do the pip program(s)
-        virtualenvManager = e5App().getObject("VirtualEnvManager")
-        for venvName in virtualenvManager.getVirtualenvNames():
-            interpreter = virtualenvManager.getVirtualenvInterpreter(venvName)
+                exe = os.path.join(
+                    Utilities.getQtBinariesPath(),
+                    "{0}.exe".format(
+                        Utilities.generateQtToolName("assistant")))
+            elif Utilities.isMacPlatform():
+                exe = Utilities.getQtMacBundle("assistant")
+            else:
+                exe = os.path.join(
+                    Utilities.getQtBinariesPath(),
+                    Utilities.generateQtToolName("assistant"))
+            self.__createProgramEntry(
+                self.tr("Qt Assistant"), exe, version=version)
+            
+            # 2. do the PyQt programs
+            # 2.1 do the PyQt5 programs
+            # 2.1a. Translation Extractor PyQt5
+            self.__createProgramEntry(
+                self.tr("Translation Extractor (Python, PyQt5)"),
+                Utilities.generatePyQtToolPath("pylupdate5"),
+                '-version', 'pylupdate', -1)
+            # 2.1b. Forms Compiler PyQt5
+            self.__createProgramEntry(
+                self.tr("Forms Compiler (Python, PyQt5)"),
+                Utilities.generatePyQtToolPath("pyuic5", ["py3uic5"]),
+                '--version', 'Python User', 4)
+            # 2.1c. Resource Compiler PyQt5
+            self.__createProgramEntry(
+                self.tr("Resource Compiler (Python, PyQt5)"),
+                Utilities.generatePyQtToolPath("pyrcc5"),
+                '-version', '', -1, versionRe='Resource Compiler|pyrcc5')
+            
+            # 3. do the PySide programs
+            # 3.1 do the PySide2 programs
+            # 3.1a. Translation Extractor PySide2
+            self.__createProgramEntry(
+                self.tr("Translation Extractor (Python, PySide2)"),
+                Utilities.generatePySideToolPath("pyside2-lupdate"),
+                '-version', '', -1, versionRe='lupdate')
+            # 3.1b. Forms Compiler PySide2
+            self.__createProgramEntry(
+                self.tr("Forms Compiler (Python, PySide2)"),
+                Utilities.generatePySideToolPath("pyside2-uic"),
+                '--version', '', -1, versionRe='uic')
+            # 3.1c Resource Compiler PySide2
+            self.__createProgramEntry(
+                self.tr("Resource Compiler (Python, PySide2)"),
+                Utilities.generatePySideToolPath("pyside2-rcc"),
+                '-version', '', -1, versionRe='rcc')
+            
+            # 4. do the Conda program(s)
+            exe = Preferences.getConda("CondaExecutable")
+            if not exe:
+                exe = "conda"
+                if Utilities.isWindowsPlatform():
+                    exe += ".exe"
             self.__createProgramEntry(
-                self.tr("PyPI Package Management"), interpreter, '--version',
-                'pip', 1, exeModule=["-m", "pip"])
-        
-        # 6. do the CORBA and Protobuf programs
-        # 6a. omniORB
-        exe = Preferences.getCorba("omniidl")
-        if not exe:
-            exe = "omniidl"
-            if Utilities.isWindowsPlatform():
-                exe += ".exe"
-        self.__createProgramEntry(
-            self.tr("CORBA IDL Compiler"), exe, '-V', 'omniidl', -1)
-        # 6b. protobuf
-        exe = Preferences.getProtobuf("protoc")
-        if not exe:
-            exe = "protoc"
-            if Utilities.isWindowsPlatform():
-                exe += ".exe"
-        self.__createProgramEntry(
-            self.tr("Protobuf Compiler"), exe, '--version', 'libprotoc', -1)
-        # 6c. grpc
-        exe = Preferences.getProtobuf("grpcPython")
-        if not exe:
-            exe = sys.executable
-        self.__createProgramEntry(
-            self.tr("gRPC Compiler"), exe, '--version', 'libprotoc', -1,
-            exeModule=['-m', 'grpc_tools.protoc'])
-        
-        # 7. do the spell checking entry
-        try:
-            import enchant
+                self.tr("conda Manager"), exe, '--version', 'conda', -1)
+            
+            # 5. do the pip program(s)
+            virtualenvManager = e5App().getObject("VirtualEnvManager")
+            for venvName in virtualenvManager.getVirtualenvNames():
+                interpreter = virtualenvManager.getVirtualenvInterpreter(
+                    venvName)
+                self.__createProgramEntry(
+                    self.tr("PyPI Package Management"), interpreter,
+                    '--version', 'pip', 1, exeModule=["-m", "pip"])
+            
+            # 6. do the CORBA and Protobuf programs
+            # 6a. omniORB
+            exe = Preferences.getCorba("omniidl")
+            if not exe:
+                exe = "omniidl"
+                if Utilities.isWindowsPlatform():
+                    exe += ".exe"
+            self.__createProgramEntry(
+                self.tr("CORBA IDL Compiler"), exe, '-V', 'omniidl', -1)
+            # 6b. protobuf
+            exe = Preferences.getProtobuf("protoc")
+            if not exe:
+                exe = "protoc"
+                if Utilities.isWindowsPlatform():
+                    exe += ".exe"
+            self.__createProgramEntry(
+                self.tr("Protobuf Compiler"), exe, '--version', 'libprotoc',
+                -1)
+            # 6c. grpc
+            exe = Preferences.getProtobuf("grpcPython")
+            if not exe:
+                exe = sys.executable
+            self.__createProgramEntry(
+                self.tr("gRPC Compiler"), exe, '--version', 'libprotoc', -1,
+                exeModule=['-m', 'grpc_tools.protoc'])
+            
+            # 7. do the spell checking entry
             try:
-                text = os.path.dirname(enchant.__file__)
-            except AttributeError:
+                import enchant
+                try:
+                    text = os.path.dirname(enchant.__file__)
+                except AttributeError:
+                    text = "enchant"
+                try:
+                    version = enchant.__version__
+                except AttributeError:
+                    version = self.tr("(unknown)")
+            except (ImportError, AttributeError, OSError):
                 text = "enchant"
-            try:
-                version = enchant.__version__
-            except AttributeError:
-                version = self.tr("(unknown)")
-        except (ImportError, AttributeError, OSError):
-            text = "enchant"
-            version = ""
-        self.__createEntry(
-            self.tr("Spell Checker - PyEnchant"), text, version)
-        
-        # 8. do the pygments entry
-        try:
-            import pygments
-            try:
-                text = os.path.dirname(pygments.__file__)
-            except AttributeError:
-                text = "pygments"
+                version = ""
+            self.__createEntry(
+                self.tr("Spell Checker - PyEnchant"), text, version)
+            
+            # 8. do the pygments entry
             try:
-                version = pygments.__version__
-            except AttributeError:
-                version = self.tr("(unknown)")
-        except (ImportError, AttributeError, OSError):
-            text = "pygments"
-            version = ""
-        self.__createEntry(
-            self.tr("Source Highlighter - Pygments"), text, version)
-        
-        # 9. do the MicroPython related entries
-        exe = Preferences.getMicroPython("MpyCrossCompiler")
-        if not exe:
-            exe = "mpy-cross"
-        self.__createProgramEntry(
-            self.tr("MicroPython - MPY Cross Compiler"), exe, '--version',
-            'MicroPython', 1)
-        self.__createProgramEntry(
-            self.tr("MicroPython - ESP Tool"), sys.executable, 'version',
-            'esptool', -1, exeModule=['-m', 'esptool'])
-        exe = Preferences.getMicroPython("DfuUtilPath")
-        if not exe:
-            exe = "dfu-util"
-        self.__createProgramEntry(
-            self.tr("MicroPython - PyBoard Flasher"), exe, '--version',
-            'dfu-util', -1)
-        
-        # 10. do the plugin related programs
-        pm = e5App().getObject("PluginManager")
-        for info in pm.getPluginExeDisplayData():
-            if info["programEntry"]:
-                if "exeModule" not in info:
-                    info["exeModule"] = None
-                if "versionRe" not in info:
-                    info["versionRe"] = None
-                self.__createProgramEntry(
-                    info["header"],
-                    info["exe"],
-                    versionCommand=info["versionCommand"],
-                    versionStartsWith=info["versionStartsWith"],
-                    versionPosition=info["versionPosition"],
-                    version=info["version"],
-                    versionCleanup=info["versionCleanup"],
-                    versionRe=info["versionRe"],
-                    exeModule=info["exeModule"],
-                )
-            else:
-                self.__createEntry(
-                    info["header"],
-                    info["text"],
-                    info["version"]
-                )
-        
-        self.programsList.sortByColumn(0, Qt.AscendingOrder)
-        self.on_showComboBox_currentIndexChanged(
-            self.showComboBox.currentIndex())
-        QApplication.restoreOverrideCursor()
+                import pygments
+                try:
+                    text = os.path.dirname(pygments.__file__)
+                except AttributeError:
+                    text = "pygments"
+                try:
+                    version = pygments.__version__
+                except AttributeError:
+                    version = self.tr("(unknown)")
+            except (ImportError, AttributeError, OSError):
+                text = "pygments"
+                version = ""
+            self.__createEntry(
+                self.tr("Source Highlighter - Pygments"), text, version)
+            
+            # 9. do the MicroPython related entries
+            exe = Preferences.getMicroPython("MpyCrossCompiler")
+            if not exe:
+                exe = "mpy-cross"
+            self.__createProgramEntry(
+                self.tr("MicroPython - MPY Cross Compiler"), exe, '--version',
+                'MicroPython', 1)
+            self.__createProgramEntry(
+                self.tr("MicroPython - ESP Tool"), sys.executable, 'version',
+                'esptool', -1, exeModule=['-m', 'esptool'])
+            exe = Preferences.getMicroPython("DfuUtilPath")
+            if not exe:
+                exe = "dfu-util"
+            self.__createProgramEntry(
+                self.tr("MicroPython - PyBoard Flasher"), exe, '--version',
+                'dfu-util', -1)
+            
+            # 10. do the plugin related programs
+            pm = e5App().getObject("PluginManager")
+            for info in pm.getPluginExeDisplayData():
+                if info["programEntry"]:
+                    if "exeModule" not in info:
+                        info["exeModule"] = None
+                    if "versionRe" not in info:
+                        info["versionRe"] = None
+                    self.__createProgramEntry(
+                        info["header"],
+                        info["exe"],
+                        versionCommand=info["versionCommand"],
+                        versionStartsWith=info["versionStartsWith"],
+                        versionPosition=info["versionPosition"],
+                        version=info["version"],
+                        versionCleanup=info["versionCleanup"],
+                        versionRe=info["versionRe"],
+                        exeModule=info["exeModule"],
+                    )
+                else:
+                    self.__createEntry(
+                        info["header"],
+                        info["text"],
+                        info["version"]
+                    )
+            
+            self.programsList.sortByColumn(0, Qt.AscendingOrder)
+            self.on_showComboBox_currentIndexChanged(
+                self.showComboBox.currentIndex())
         
         self.__hasSearched = True
 

eric ide

mercurial