eric7/Project/ProjectTranslationsBrowser.py

branch
eric7
changeset 8368
ee14e64c2eeb
parent 8358
144a6b854f70
child 8383
c090300126df
--- a/eric7/Project/ProjectTranslationsBrowser.py	Sun May 23 16:35:15 2021 +0200
+++ b/eric7/Project/ProjectTranslationsBrowser.py	Sun May 23 16:36:32 2021 +0200
@@ -14,9 +14,12 @@
 import functools
 import contextlib
 
-from PyQt6.QtCore import pyqtSignal, QProcess
+from PyQt6.QtCore import pyqtSignal, Qt, QProcess, QEventLoop
+from PyQt6.QtGui import QGuiApplication, QCursor
 from PyQt6.QtWidgets import QDialog, QMenu
 
+from EricGui.EricOverrideCursor import EricOverridenCursor
+
 from EricWidgets import EricMessageBox
 from EricWidgets.EricApplication import ericApp
 
@@ -971,6 +974,10 @@
         if not self.__pylupdateProcesses:
             # all done
             self.pylupdateProcRunning = False
+            
+            QGuiApplication.restoreOverrideCursor()
+            QGuiApplication.processEvents(
+                QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents)
         
     def __generateTSFile(self, noobsolete=False, generateAll=True):
         """
@@ -1015,7 +1022,9 @@
         if self.project.getProjectLanguage() in [
             "Python", "Python3"
         ]:
-            if self.project.getProjectType() not in ["PyQt6", "PyQt6C"]:
+            if self.project.getProjectType() not in [
+                "PyQt6", "PyQt6C", "E7Plugin"
+            ]:
                 ok = self.__writeTempProjectFile(langs, [".py"])
                 if not ok:
                     return
@@ -1036,7 +1045,7 @@
             return
 
         self.__pylupdateProcesses = []
-        if self.project.getProjectType() in ["PyQt6", "PyQt6C"]:
+        if self.project.getProjectType() in ["PyQt6", "PyQt6C", "E7Plugin"]:
             if langs:
                 langs = [self.project.getRelativePath(lang.fileName())
                          for lang in langs if lang.fileName().endswith('.ts')]
@@ -1056,6 +1065,12 @@
                     self.tr("Translation file generation"),
                     self.tr("""No translation files (*.ts) selected."""))
                 return
+            
+            QGuiApplication.setOverrideCursor(
+                QCursor(Qt.CursorShape.WaitCursor))
+            QGuiApplication.processEvents(
+                QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents)
+            
             for lang in langs:
                 proc = QProcess()
                 args = []
@@ -1083,14 +1098,20 @@
                     self.pylupdateProcRunning = True
                     self.__pylupdateProcesses.append((proc, ""))
                 else:
-                    EricMessageBox.critical(
-                        self,
-                        self.tr('Process Generation Error'),
-                        self.tr(
-                            'Could not start {0}.<br>'
-                            'Ensure that it is in the search path.'
-                        ).format(self.pylupdate))
+                    with EricOverridenCursor():
+                        EricMessageBox.critical(
+                            self,
+                            self.tr('Process Generation Error'),
+                            self.tr(
+                                'Could not start {0}.<br>'
+                                'Ensure that it is in the search path.'
+                            ).format(self.pylupdate))
         else:
+            QGuiApplication.setOverrideCursor(
+                QCursor(Qt.CursorShape.WaitCursor))
+            QGuiApplication.processEvents(
+                QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents)
+            
             for tempProjectFile in self.__tmpProjects[:]:
                 proc = QProcess()
                 args = []
@@ -1119,18 +1140,25 @@
                     self.pylupdateProcRunning = True
                     self.__pylupdateProcesses.append((proc, tempProjectFile))
                 else:
-                    EricMessageBox.critical(
-                        self,
-                        self.tr('Process Generation Error'),
-                        self.tr(
-                            'Could not start {0}.<br>'
-                            'Ensure that it is in the search path.'
-                        ).format(self.pylupdate))
+                    with EricOverridenCursor():
+                        EricMessageBox.critical(
+                            self,
+                            self.tr('Process Generation Error'),
+                            self.tr(
+                                'Could not start {0}.<br>'
+                                'Ensure that it is in the search path.'
+                            ).format(self.pylupdate))
                     # cleanup
                     with contextlib.suppress(OSError):
                         self.__tmpProjects.remove(tempProjectFile)
                         os.remove(tempProjectFile)
         
+        if not self.__pylupdateProcesses:
+            # no processes could be started, revert override cursor
+            QGuiApplication.restoreOverrideCursor()
+            QGuiApplication.processEvents(
+                QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents)
+        
     def __generateAll(self):
         """
         Private method to generate all translation files (.ts) for Qt Linguist.

eric ide

mercurial