819 itmList = self.getSelectedItems() |
819 itmList = self.getSelectedItems() |
820 if itmList and not previewAll: |
820 if itmList and not previewAll: |
821 for itm in itmList: |
821 for itm in itmList: |
822 if isinstance(itm, ProjectBrowserSimpleDirectoryItem): |
822 if isinstance(itm, ProjectBrowserSimpleDirectoryItem): |
823 dname = self.project.getRelativePath(itm.dirName()) |
823 dname = self.project.getRelativePath(itm.dirName()) |
824 trfiles = sorted(self.project.pdata["TRANSLATIONS"][:]) |
824 trfiles = sorted( |
|
825 self.project.getProjectData(dataKey="TRANSLATIONS")[:] |
|
826 ) |
825 for trfile in trfiles: |
827 for trfile in trfiles: |
826 if trfile.startswith(dname) and trfile not in fileNames: |
828 if trfile.startswith(dname) and trfile not in fileNames: |
827 fileNames.append(os.path.join(self.project.ppath, trfile)) |
829 fileNames.append(os.path.join(self.project.ppath, trfile)) |
828 else: |
830 else: |
829 fn = itm.fileName() |
831 fn = itm.fileName() |
830 if fn not in fileNames: |
832 if fn not in fileNames: |
831 fileNames.append(os.path.join(self.project.ppath, fn)) |
833 fileNames.append(os.path.join(self.project.ppath, fn)) |
832 else: |
834 else: |
833 trfiles = sorted(self.project.pdata["TRANSLATIONS"][:]) |
835 trfiles = sorted(self.project.getProjectData(dataKey="TRANSLATIONS")[:]) |
834 fileNames.extend( |
836 fileNames.extend( |
835 [ |
837 [ |
836 os.path.join(self.project.ppath, trfile) |
838 os.path.join(self.project.ppath, trfile) |
837 for trfile in trfiles |
839 for trfile in trfiles |
838 if trfile.endswith(".qm") |
840 if trfile.endswith(".qm") |
866 pfile = "{0}_e4x.pro".format(path) |
868 pfile = "{0}_e4x.pro".format(path) |
867 |
869 |
868 # only consider files satisfying the filter criteria |
870 # only consider files satisfying the filter criteria |
869 _sources = [ |
871 _sources = [ |
870 s |
872 s |
871 for s in self.project.pdata["SOURCES"] |
873 for s in self.project.getProjectData(dataKey="SOURCES") |
872 if os.path.splitext(s)[1] in filterList |
874 if os.path.splitext(s)[1] in filterList |
873 ] |
875 ] |
874 sources = [] |
876 sources = [] |
875 for s in _sources: |
877 for s in _sources: |
876 addIt = True |
878 addIt = True |
877 for transExcept in self.project.pdata["TRANSLATIONEXCEPTIONS"]: |
879 for transExcept in self.project.getProjectData( |
|
880 dataKey="TRANSLATIONEXCEPTIONS" |
|
881 ): |
878 if s.startswith(transExcept): |
882 if s.startswith(transExcept): |
879 addIt = False |
883 addIt = False |
880 break |
884 break |
881 if addIt: |
885 if addIt: |
882 sources.append(s) |
886 sources.append(s) |
883 |
887 |
884 _forms = [f for f in self.project.pdata["FORMS"] if f.endswith(".ui")] |
888 _forms = [ |
|
889 f for f in self.project.getProjectData(dataKey="FORMS") if f.endswith(".ui") |
|
890 ] |
885 forms = [] |
891 forms = [] |
886 for f in _forms: |
892 for f in _forms: |
887 addIt = True |
893 addIt = True |
888 for transExcept in self.project.pdata["TRANSLATIONEXCEPTIONS"]: |
894 for transExcept in self.project.getProjectData( |
|
895 dataKey="TRANSLATIONEXCEPTIONS" |
|
896 ): |
889 if f.startswith(transExcept): |
897 if f.startswith(transExcept): |
890 addIt = False |
898 addIt = False |
891 break |
899 break |
892 if addIt: |
900 if addIt: |
893 forms.append(f) |
901 forms.append(f) |
898 for lang in langs |
906 for lang in langs |
899 if lang.fileName().endswith(".ts") |
907 if lang.fileName().endswith(".ts") |
900 ] |
908 ] |
901 else: |
909 else: |
902 try: |
910 try: |
903 pattern = self.project.pdata["TRANSLATIONPATTERN"].replace( |
911 pattern = self.project.getProjectData( |
904 "%language%", "*" |
912 dataKey="TRANSLATIONPATTERN" |
905 ) |
913 ).replace("%language%", "*") |
906 langs = [ |
914 langs = [ |
907 lang |
915 lang |
908 for lang in self.project.pdata["TRANSLATIONS"] |
916 for lang in self.project.getProjectData(dataKey="TRANSLATIONS") |
909 if fnmatch.fnmatch(lang, pattern) |
917 if fnmatch.fnmatch(lang, pattern) |
910 ] |
918 ] |
911 except IndexError: |
919 except IndexError: |
912 langs = [] |
920 langs = [] |
913 if not langs: |
921 if not langs: |
1116 |
1124 |
1117 # Hook support |
1125 # Hook support |
1118 if generateAll: |
1126 if generateAll: |
1119 if noobsolete: |
1127 if noobsolete: |
1120 if self.hooks["generateAll"] is not None: |
1128 if self.hooks["generateAll"] is not None: |
1121 self.hooks["generateAll"](self.project.pdata["TRANSLATIONS"]) |
1129 self.hooks["generateAll"]( |
|
1130 self.project.getProjectData(dataKey="TRANSLATIONS") |
|
1131 ) |
1122 return |
1132 return |
1123 else: |
1133 else: |
1124 if self.hooks["generateAllWithObsolete"] is not None: |
1134 if self.hooks["generateAllWithObsolete"] is not None: |
1125 self.hooks["generateAllWithObsolete"]( |
1135 self.hooks["generateAllWithObsolete"]( |
1126 self.project.pdata["TRANSLATIONS"] |
1136 self.project.getProjectData(dataKey="TRANSLATIONS") |
1127 ) |
1137 ) |
1128 return |
1138 return |
1129 else: |
1139 else: |
1130 if noobsolete: |
1140 if noobsolete: |
1131 if self.hooks["generateSelected"] is not None: |
1141 if self.hooks["generateSelected"] is not None: |
1175 for lang in langs |
1185 for lang in langs |
1176 if lang.fileName().endswith(".ts") |
1186 if lang.fileName().endswith(".ts") |
1177 ] |
1187 ] |
1178 else: |
1188 else: |
1179 try: |
1189 try: |
1180 pattern = self.project.pdata["TRANSLATIONPATTERN"].replace( |
1190 pattern = self.project.getProjectData( |
1181 "%language%", "*" |
1191 dataKey="TRANSLATIONPATTERN" |
1182 ) |
1192 ).replace("%language%", "*") |
1183 langs = [ |
1193 langs = [ |
1184 lang |
1194 lang |
1185 for lang in self.project.pdata["TRANSLATIONS"] |
1195 for lang in self.project.getProjectData(dataKey="TRANSLATIONS") |
1186 if fnmatch.fnmatch(lang, pattern) |
1196 if fnmatch.fnmatch(lang, pattern) |
1187 ] |
1197 ] |
1188 except IndexError: |
1198 except IndexError: |
1189 langs = [] |
1199 langs = [] |
1190 if not langs: |
1200 if not langs: |
1216 if noobsolete: |
1226 if noobsolete: |
1217 args.append("--no-obsolete") |
1227 args.append("--no-obsolete") |
1218 |
1228 |
1219 args += ["--ts", lang] |
1229 args += ["--ts", lang] |
1220 |
1230 |
1221 startPath = self.project.pdata.get("TRANSLATIONSOURCESTARTPATH", "") |
1231 startPath = self.project.getProjectData( |
|
1232 dataKey="TRANSLATIONSOURCESTARTPATH", |
|
1233 default="", |
|
1234 ) |
1222 args.append(startPath if bool(startPath) else ".") |
1235 args.append(startPath if bool(startPath) else ".") |
1223 |
1236 |
1224 proc.setWorkingDirectory(self.project.ppath) |
1237 proc.setWorkingDirectory(self.project.ppath) |
1225 proc.finished.connect( |
1238 proc.finished.connect( |
1226 functools.partial(self.__generateTSFileDone, proc) |
1239 functools.partial(self.__generateTSFileDone, proc) |
1357 self.tr("Translation file release"), |
1370 self.tr("Translation file release"), |
1358 self.tr( |
1371 self.tr( |
1359 "The release of the translation files (*.qm)" " was successful." |
1372 "The release of the translation files (*.qm)" " was successful." |
1360 ), |
1373 ), |
1361 ) |
1374 ) |
1362 if self.project.pdata["TRANSLATIONSBINPATH"]: |
1375 if self.project.getProjectData(dataKey="TRANSLATIONSBINPATH"): |
1363 target = os.path.join( |
1376 target = os.path.join( |
1364 self.project.ppath, self.project.pdata["TRANSLATIONSBINPATH"] |
1377 self.project.ppath, |
1365 ) |
1378 self.project.getProjectData(dataKey="TRANSLATIONSBINPATH"), |
1366 for langFile in self.project.pdata["TRANSLATIONS"][:]: |
1379 ) |
|
1380 for langFile in self.project.getProjectData(dataKey="TRANSLATIONS")[:]: |
1367 if langFile.endswith(".ts"): |
1381 if langFile.endswith(".ts"): |
1368 qmFile = os.path.join( |
1382 qmFile = os.path.join( |
1369 self.project.ppath, langFile.replace(".ts", ".qm") |
1383 self.project.ppath, langFile.replace(".ts", ".qm") |
1370 ) |
1384 ) |
1371 if os.path.exists(qmFile): |
1385 if os.path.exists(qmFile): |
1398 langs = [] if generateAll else self.getSelectedItems() |
1412 langs = [] if generateAll else self.getSelectedItems() |
1399 |
1413 |
1400 # Hooks support |
1414 # Hooks support |
1401 if generateAll: |
1415 if generateAll: |
1402 if self.hooks["releaseAll"] is not None: |
1416 if self.hooks["releaseAll"] is not None: |
1403 self.hooks["releaseAll"](self.project.pdata["TRANSLATIONS"]) |
1417 self.hooks["releaseAll"]( |
|
1418 self.project.getProjectData(dataKey="TRANSLATIONS") |
|
1419 ) |
1404 return |
1420 return |
1405 else: |
1421 else: |
1406 if self.hooks["releaseSelected"] is not None: |
1422 if self.hooks["releaseSelected"] is not None: |
1407 li = [self.project.getRelativePath(lang.fileName()) for lang in langs] |
1423 li = [self.project.getRelativePath(lang.fileName()) for lang in langs] |
1408 self.hooks["releaseSelected"](li) |
1424 self.hooks["releaseSelected"](li) |
1433 for lang in langs |
1449 for lang in langs |
1434 if lang.fileName().endswith(".ts") |
1450 if lang.fileName().endswith(".ts") |
1435 ] |
1451 ] |
1436 else: |
1452 else: |
1437 try: |
1453 try: |
1438 pattern = self.project.pdata["TRANSLATIONPATTERN"].replace( |
1454 pattern = self.project.getProjectData( |
1439 "%language%", "*" |
1455 dataKey="TRANSLATIONPATTERN" |
1440 ) |
1456 ).replace("%language%", "*") |
1441 langs = [ |
1457 langs = [ |
1442 lang |
1458 lang |
1443 for lang in self.project.pdata["TRANSLATIONS"] |
1459 for lang in self.project.getProjectData(dataKey="TRANSLATIONS") |
1444 if fnmatch.fnmatch(lang, pattern) |
1460 if fnmatch.fnmatch(lang, pattern) |
1445 ] |
1461 ] |
1446 except IndexError: |
1462 except IndexError: |
1447 langs = [] |
1463 langs = [] |
1448 if not langs: |
1464 if not langs: |