69 """<b>Project Translations Browser</b>""" |
69 """<b>Project Translations Browser</b>""" |
70 """<p>This allows to easily see all translations contained in the current""" |
70 """<p>This allows to easily see all translations contained in the current""" |
71 """ project. Several actions can be executed via the context menu.</p>""" |
71 """ project. Several actions can be executed via the context menu.</p>""" |
72 )) |
72 )) |
73 |
73 |
74 self.lreleaseProc = None |
74 self.__lreleaseProcesses = [] |
|
75 self.__pylupdateProcesses = [] |
75 self.lreleaseProcRunning = False |
76 self.lreleaseProcRunning = False |
76 self.pylupdateProcRunning = False |
77 self.pylupdateProcRunning = False |
77 self.__tmpProjects = [] |
78 self.__tmpProjects = [] |
78 self.__pylupdateProcesses = [] |
|
79 |
79 |
80 def _createPopupMenus(self): |
80 def _createPopupMenus(self): |
81 """ |
81 """ |
82 Protected overloaded method to generate the popup menu. |
82 Protected overloaded method to generate the popup menu. |
83 """ |
83 """ |
1061 shutil.move(qmFile, target) |
1063 shutil.move(qmFile, target) |
1062 else: |
1064 else: |
1063 E5MessageBox.critical(self, |
1065 E5MessageBox.critical(self, |
1064 self.trUtf8("Translation file release"), |
1066 self.trUtf8("Translation file release"), |
1065 self.trUtf8("The release of the translation files (*.qm) has failed.")) |
1067 self.trUtf8("The release of the translation files (*.qm) has failed.")) |
1066 self.lreleaseProc = None |
1068 |
1067 try: |
1069 proc = self.sender() |
1068 os.remove(self.tmpProject) |
1070 for index in range(len(self.__lreleaseProcesses)): |
1069 except EnvironmentError: |
1071 if proc == self.__lreleaseProcesses[index][0]: |
1070 pass |
1072 try: |
1071 self.tmpProject = None |
1073 os.remove(self.__lreleaseProcesses[index][1]) |
1072 self.project.checkLanguageFiles() |
1074 except EnvironmentError: |
|
1075 pass |
|
1076 del self.__lreleaseProcesses[index] |
|
1077 break |
|
1078 if not self.__lreleaseProcesses: |
|
1079 # all done |
|
1080 self.lreleaseProcRunning = False |
|
1081 self.project.checkLanguageFiles() |
1073 |
1082 |
1074 def __releaseTSFile(self, generateAll=False): |
1083 def __releaseTSFile(self, generateAll=False): |
1075 """ |
1084 """ |
1076 Private method to run lrelease to release the translation files (.qm). |
1085 Private method to run lrelease to release the translation files (.qm). |
1077 |
1086 |
1101 else: |
1110 else: |
1102 ok = False |
1111 ok = False |
1103 if not ok: |
1112 if not ok: |
1104 return |
1113 return |
1105 |
1114 |
1106 self.lreleaseProc = QProcess() |
|
1107 args = [] |
|
1108 |
|
1109 if self.project.getProjectType() in \ |
1115 if self.project.getProjectType() in \ |
1110 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E4Plugin", "PySide", "PySideC"]: |
1116 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E4Plugin", "PySide", "PySideC"]: |
1111 lrelease = os.path.join( |
1117 lrelease = os.path.join( |
1112 Utilities.getQtBinariesPath(), |
1118 Utilities.getQtBinariesPath(), |
1113 Utilities.generateQtToolName("lrelease")) |
1119 Utilities.generateQtToolName("lrelease")) |
1114 else: |
1120 else: |
1115 return |
1121 return |
1116 if Utilities.isWindowsPlatform(): |
1122 if Utilities.isWindowsPlatform(): |
1117 lrelease = lrelease + '.exe' |
1123 lrelease = lrelease + '.exe' |
1118 |
1124 |
1119 args.append('-verbose') |
1125 self.__lreleaseProcesses = [] |
1120 args.append(self.tmpProject) |
1126 for tempProjectFile in self.__tmpProjects[:]: |
1121 self.lreleaseProc.setWorkingDirectory(self.project.ppath) |
1127 proc = QProcess() |
1122 self.lreleaseProc.finished.connect(self.__releaseTSFileDone) |
1128 args = [] |
1123 self.lreleaseProc.readyReadStandardOutput.connect(self.__readStdoutLrelease) |
1129 |
1124 self.lreleaseProc.readyReadStandardError.connect(self.__readStderrLrelease) |
1130 args.append('-verbose') |
1125 |
1131 path, filename = os.path.split(tempProjectFile) |
1126 self.lreleaseProc.start(lrelease, args) |
1132 args.append(filename) |
1127 procStarted = self.lreleaseProc.waitForStarted(5000) |
1133 proc.setWorkingDirectory(os.path.join(self.project.ppath, path)) |
1128 if procStarted: |
1134 proc.finished.connect(self.__releaseTSFileDone) |
1129 self.lreleaseProcRunning = True |
1135 proc.readyReadStandardOutput.connect(self.__readStdoutLrelease) |
1130 else: |
1136 proc.readyReadStandardError.connect(self.__readStderrLrelease) |
1131 E5MessageBox.critical(self, |
1137 |
1132 self.trUtf8('Process Generation Error'), |
1138 proc.start(lrelease, args) |
1133 self.trUtf8( |
1139 procStarted = proc.waitForStarted() |
1134 '<p>Could not start lrelease.<br>' |
1140 if procStarted: |
1135 'Ensure that it is available as <b>{0}</b>.</p>' |
1141 self.lreleaseProcRunning = True |
1136 ).format(lrelease)) |
1142 self.__lreleaseProcesses.append((proc, tempProjectFile)) |
|
1143 else: |
|
1144 E5MessageBox.critical(self, |
|
1145 self.trUtf8('Process Generation Error'), |
|
1146 self.trUtf8( |
|
1147 '<p>Could not start lrelease.<br>' |
|
1148 'Ensure that it is available as <b>{0}</b>.</p>' |
|
1149 ).format(lrelease)) |
|
1150 |
|
1151 # cleanup |
|
1152 try: |
|
1153 self.__tmpProjects.remove(tempProjectFile) |
|
1154 os.remove(tempProjectFile) |
|
1155 except EnvironmentError: |
|
1156 pass |
1137 |
1157 |
1138 def __releaseSelected(self): |
1158 def __releaseSelected(self): |
1139 """ |
1159 """ |
1140 Private method to release the translation files (.qm). |
1160 Private method to release the translation files (.qm). |
1141 """ |
1161 """ |