Project/ProjectTranslationsBrowser.py

changeset 6582
d635b7e360c4
parent 6292
e08a94e1ecdd
child 6645
ad476851d7e0
equal deleted inserted replaced
6581:8eb6220f2bb7 6582:d635b7e360c4
1153 self.tr("Translation file release"), 1153 self.tr("Translation file release"),
1154 self.tr( 1154 self.tr(
1155 "The release of the translation files (*.qm) has failed.")) 1155 "The release of the translation files (*.qm) has failed."))
1156 1156
1157 for index in range(len(self.__lreleaseProcesses)): 1157 for index in range(len(self.__lreleaseProcesses)):
1158 if proc == self.__lreleaseProcesses[index][0]: 1158 if proc == self.__lreleaseProcesses[index]:
1159 try:
1160 self.__tmpProjects.remove(
1161 self.__lreleaseProcesses[index][1])
1162 os.remove(self.__lreleaseProcesses[index][1])
1163 except EnvironmentError:
1164 pass
1165 del self.__lreleaseProcesses[index] 1159 del self.__lreleaseProcesses[index]
1166 break 1160 break
1167 if not self.__lreleaseProcesses: 1161 if not self.__lreleaseProcesses:
1168 # all done 1162 # all done
1169 self.lreleaseProcRunning = False 1163 self.lreleaseProcRunning = False
1191 li = [self.project.getRelativePath(lang.fileName()) 1185 li = [self.project.getRelativePath(lang.fileName())
1192 for lang in langs] 1186 for lang in langs]
1193 self.hooks["releaseSelected"](li) 1187 self.hooks["releaseSelected"](li)
1194 return 1188 return
1195 1189
1196 # generate a minimal temporary projectfile suitable for lrelease
1197 self.__tmpProjects = []
1198 if self.project.getProjectLanguage() in \
1199 ["Python", "Python2", "Python3"]:
1200 ok = self.__writeTempProjectFile(langs, [".py"])
1201 else:
1202 ok = False
1203 if not ok:
1204 return
1205
1206 if self.project.getProjectType() in \ 1190 if self.project.getProjectType() in \
1207 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", 1191 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin",
1208 "PySide", "PySideC", "PySide2", "PySideC2"]: 1192 "PySide", "PySideC", "PySide2", "PySideC2"]:
1209 lrelease = os.path.join( 1193 lrelease = os.path.join(
1210 Utilities.getQtBinariesPath(), 1194 Utilities.getQtBinariesPath(),
1212 else: 1196 else:
1213 return 1197 return
1214 if Utilities.isWindowsPlatform(): 1198 if Utilities.isWindowsPlatform():
1215 lrelease = lrelease + '.exe' 1199 lrelease = lrelease + '.exe'
1216 1200
1201 if langs:
1202 langs = [self.project.getRelativePath(lang.fileName())
1203 for lang in langs if lang.fileName().endswith('.ts')]
1204 else:
1205 try:
1206 pattern = self.project.pdata["TRANSLATIONPATTERN"]\
1207 .replace("%language%", "*")
1208 langs = [lang for lang in self.project.pdata["TRANSLATIONS"]
1209 if fnmatch.fnmatch(lang, pattern)]
1210 except IndexError:
1211 langs = []
1212 if not langs:
1213 E5MessageBox.warning(
1214 self,
1215 self.tr("Write temporary project file"),
1216 self.tr("""No translation files (*.ts) selected."""))
1217 return
1218
1217 self.__lreleaseProcesses = [] 1219 self.__lreleaseProcesses = []
1218 for tempProjectFile in self.__tmpProjects[:]: 1220 args = []
1219 proc = QProcess() 1221 args.append('-verbose')
1220 args = [] 1222 for langFile in langs:
1221 1223 path, filename = os.path.split(langFile)
1222 args.append('-verbose')
1223 path, filename = os.path.split(tempProjectFile)
1224 args.append(filename) 1224 args.append(filename)
1225 proc.setWorkingDirectory(os.path.join(self.project.ppath, path)) 1225
1226 proc.finished.connect( 1226 proc = QProcess()
1227 lambda c, s: self.__releaseTSFileDone(c, s, proc)) 1227 proc.setWorkingDirectory(os.path.join(self.project.ppath, path))
1228 proc.readyReadStandardOutput.connect( 1228 proc.finished.connect(
1229 lambda: self.__readStdoutLrelease(proc)) 1229 lambda c, s: self.__releaseTSFileDone(c, s, proc))
1230 proc.readyReadStandardError.connect( 1230 proc.readyReadStandardOutput.connect(
1231 lambda: self.__readStderrLrelease(proc)) 1231 lambda: self.__readStdoutLrelease(proc))
1232 1232 proc.readyReadStandardError.connect(
1233 proc.start(lrelease, args) 1233 lambda: self.__readStderrLrelease(proc))
1234 procStarted = proc.waitForStarted() 1234
1235 if procStarted: 1235 proc.start(lrelease, args)
1236 self.lreleaseProcRunning = True 1236 procStarted = proc.waitForStarted()
1237 self.__lreleaseProcesses.append((proc, tempProjectFile)) 1237 if procStarted:
1238 else: 1238 self.lreleaseProcRunning = True
1239 E5MessageBox.critical( 1239 self.__lreleaseProcesses.append(proc)
1240 self, 1240 else:
1241 self.tr('Process Generation Error'), 1241 E5MessageBox.critical(
1242 self.tr( 1242 self,
1243 '<p>Could not start lrelease.<br>' 1243 self.tr('Process Generation Error'),
1244 'Ensure that it is available as <b>{0}</b>.</p>' 1244 self.tr(
1245 ).format(lrelease)) 1245 '<p>Could not start lrelease.<br>'
1246 1246 'Ensure that it is available as <b>{0}</b>.</p>'
1247 # cleanup 1247 ).format(lrelease))
1248 try:
1249 self.__tmpProjects.remove(tempProjectFile)
1250 os.remove(tempProjectFile)
1251 except EnvironmentError:
1252 pass
1253 1248
1254 def __releaseSelected(self): 1249 def __releaseSelected(self):
1255 """ 1250 """
1256 Private method to release the translation files (.qm). 1251 Private method to release the translation files (.qm).
1257 """ 1252 """

eric ide

mercurial