108 self.tsprocBackMenuActions = [] |
108 self.tsprocBackMenuActions = [] |
109 self.qmprocBackMenuActions = [] |
109 self.qmprocBackMenuActions = [] |
110 |
110 |
111 self.menu = QMenu(self) |
111 self.menu = QMenu(self) |
112 if self.project.getProjectType() in \ |
112 if self.project.getProjectType() in \ |
113 ["Qt4", "Qt4C", "E4Plugin", "PySide", "PySideC"]: |
113 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E4Plugin", "PySide", "PySideC"]: |
114 act = self.menu.addAction(self.trUtf8('Generate translation'), |
114 act = self.menu.addAction(self.trUtf8('Generate translation'), |
115 self.__generateSelected) |
115 self.__generateSelected) |
116 self.tsMenuActions.append(act) |
116 self.tsMenuActions.append(act) |
117 self.tsprocMenuActions.append(act) |
117 self.tsprocMenuActions.append(act) |
118 act = self.menu.addAction( |
118 act = self.menu.addAction( |
182 self.hooksMenuEntries.get("generateAllWithObsolete", |
182 self.hooksMenuEntries.get("generateAllWithObsolete", |
183 self.trUtf8('Generate all translations (with obsolete)')), |
183 self.trUtf8('Generate all translations (with obsolete)')), |
184 self.__generateObsoleteAll) |
184 self.__generateObsoleteAll) |
185 self.tsprocMenuActions.append(act) |
185 self.tsprocMenuActions.append(act) |
186 self.menu.addSeparator() |
186 self.menu.addSeparator() |
|
187 if self.hooks["open"] is not None: |
|
188 act = self.menu.addAction( |
|
189 self.hooksMenuEntries.get("open", |
|
190 self.trUtf8('Open')), |
|
191 self._openItem) |
|
192 self.tsMenuActions.append(act) |
187 act = self.menu.addAction(self.trUtf8('Open in Editor'), |
193 act = self.menu.addAction(self.trUtf8('Open in Editor'), |
188 self.__openFileInEditor) |
194 self.__openFileInEditor) |
189 self.tsMenuActions.append(act) |
195 self.tsMenuActions.append(act) |
190 self.menu.addSeparator() |
196 self.menu.addSeparator() |
191 if self.hooks["releaseSelected"] is not None: |
197 if self.hooks["releaseSelected"] is not None: |
218 self.menu.addSeparator() |
224 self.menu.addSeparator() |
219 self.menu.addAction(self.trUtf8('Configure...'), self._configure) |
225 self.menu.addAction(self.trUtf8('Configure...'), self._configure) |
220 |
226 |
221 self.backMenu = QMenu(self) |
227 self.backMenu = QMenu(self) |
222 if self.project.getProjectType() in \ |
228 if self.project.getProjectType() in \ |
223 ["Qt4", "Qt4C", "E4Plugin", "PySide", "PySideC"]: |
229 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E4Plugin", "PySide", "PySideC"]: |
224 act = self.backMenu.addAction(self.trUtf8('Generate all translations'), |
230 act = self.backMenu.addAction(self.trUtf8('Generate all translations'), |
225 self.__generateAll) |
231 self.__generateAll) |
226 self.tsprocBackMenuActions.append(act) |
232 self.tsprocBackMenuActions.append(act) |
227 act = self.backMenu.addAction( |
233 act = self.backMenu.addAction( |
228 self.trUtf8('Generate all translations (with obsolete)'), |
234 self.trUtf8('Generate all translations (with obsolete)'), |
269 self.backMenu.setEnabled(False) |
275 self.backMenu.setEnabled(False) |
270 |
276 |
271 # create the menu for multiple selected files |
277 # create the menu for multiple selected files |
272 self.multiMenu = QMenu(self) |
278 self.multiMenu = QMenu(self) |
273 if self.project.getProjectType() in \ |
279 if self.project.getProjectType() in \ |
274 ["Qt4", "Qt4C", "E4Plugin", "PySide", "PySideC"]: |
280 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E4Plugin", "PySide", "PySideC"]: |
275 act = self.multiMenu.addAction(self.trUtf8('Generate translations'), |
281 act = self.multiMenu.addAction(self.trUtf8('Generate translations'), |
276 self.__generateSelected) |
282 self.__generateSelected) |
277 self.tsMultiMenuActions.append(act) |
283 self.tsMultiMenuActions.append(act) |
278 self.tsprocMultiMenuActions.append(act) |
284 self.tsprocMultiMenuActions.append(act) |
279 act = self.multiMenu.addAction( |
285 act = self.multiMenu.addAction( |
318 self.trUtf8('Generate translations (with obsolete)')), |
324 self.trUtf8('Generate translations (with obsolete)')), |
319 self.__generateObsoleteSelected) |
325 self.__generateObsoleteSelected) |
320 self.tsMultiMenuActions.append(act) |
326 self.tsMultiMenuActions.append(act) |
321 self.tsprocMultiMenuActions.append(act) |
327 self.tsprocMultiMenuActions.append(act) |
322 self.multiMenu.addSeparator() |
328 self.multiMenu.addSeparator() |
|
329 if self.hooks["open"] is not None: |
|
330 act = self.multiMenu.addAction( |
|
331 self.hooksMenuEntries.get("open", |
|
332 self.trUtf8('Open')), |
|
333 self._openItem) |
|
334 self.tsMultiMenuActions.append(act) |
323 act = self.multiMenu.addAction(self.trUtf8('Open in Editor'), |
335 act = self.multiMenu.addAction(self.trUtf8('Open in Editor'), |
324 self.__openFileInEditor) |
336 self.__openFileInEditor) |
325 self.tsMultiMenuActions.append(act) |
337 self.tsMultiMenuActions.append(act) |
326 self.multiMenu.addSeparator() |
338 self.multiMenu.addSeparator() |
327 if self.hooks["releaseSelected"] is not None: |
339 if self.hooks["releaseSelected"] is not None: |
340 self.multiMenu.addSeparator() |
352 self.multiMenu.addSeparator() |
341 self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure) |
353 self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure) |
342 |
354 |
343 self.dirMenu = QMenu(self) |
355 self.dirMenu = QMenu(self) |
344 if self.project.getProjectType() in \ |
356 if self.project.getProjectType() in \ |
345 ["Qt4", "Qt4C", "E4Plugin", "PySide", "PySideC"]: |
357 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E4Plugin", "PySide", "PySideC"]: |
346 act = self.dirMenu.addAction(self.trUtf8('Generate all translations'), |
358 act = self.dirMenu.addAction(self.trUtf8('Generate all translations'), |
347 self.__generateAll) |
359 self.__generateAll) |
348 self.tsprocDirMenuActions.append(act) |
360 self.tsprocDirMenuActions.append(act) |
349 act = self.dirMenu.addAction( |
361 act = self.dirMenu.addAction( |
350 self.trUtf8('Generate all translations (with obsolete)'), |
362 self.trUtf8('Generate all translations (with obsolete)'), |
446 def __showContextMenu(self): |
458 def __showContextMenu(self): |
447 """ |
459 """ |
448 Private slot called by the menu aboutToShow signal. |
460 Private slot called by the menu aboutToShow signal. |
449 """ |
461 """ |
450 if self.project.getProjectType() in \ |
462 if self.project.getProjectType() in \ |
451 ["Qt4", "Qt4C", "E4Plugin", "PySide", "PySideC"]: |
463 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E4Plugin", "PySide", "PySideC"]: |
452 tsFiles = 0 |
464 tsFiles = 0 |
453 qmFiles = 0 |
465 qmFiles = 0 |
454 itmList = self.getSelectedItems() |
466 itmList = self.getSelectedItems() |
455 for itm in itmList[:]: |
467 for itm in itmList[:]: |
456 if itm.fileName().endswith('.ts'): |
468 if itm.fileName().endswith('.ts'): |
486 def __showContextMenuMulti(self): |
498 def __showContextMenuMulti(self): |
487 """ |
499 """ |
488 Private slot called by the multiMenu aboutToShow signal. |
500 Private slot called by the multiMenu aboutToShow signal. |
489 """ |
501 """ |
490 if self.project.getProjectType() in \ |
502 if self.project.getProjectType() in \ |
491 ["Qt4", "Qt4C", "E4Plugin", "PySide", "PySideC"]: |
503 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E4Plugin", "PySide", "PySideC"]: |
492 tsFiles = 0 |
504 tsFiles = 0 |
493 qmFiles = 0 |
505 qmFiles = 0 |
494 itmList = self.getSelectedItems() |
506 itmList = self.getSelectedItems() |
495 for itm in itmList[:]: |
507 for itm in itmList[:]: |
496 if itm.fileName().endswith('.ts'): |
508 if itm.fileName().endswith('.ts'): |
525 def __showContextMenuDir(self): |
537 def __showContextMenuDir(self): |
526 """ |
538 """ |
527 Private slot called by the dirMenu aboutToShow signal. |
539 Private slot called by the dirMenu aboutToShow signal. |
528 """ |
540 """ |
529 if self.project.getProjectType() in \ |
541 if self.project.getProjectType() in \ |
530 ["Qt4", "Qt4C", "E4Plugin", "PySide", "PySideC"]: |
542 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E4Plugin", "PySide", "PySideC"]: |
531 if self.pylupdateProcRunning: |
543 if self.pylupdateProcRunning: |
532 for act in self.tsprocDirMenuActions: |
544 for act in self.tsprocDirMenuActions: |
533 act.setEnabled(False) |
545 act.setEnabled(False) |
534 if self.lreleaseProcRunning: |
546 if self.lreleaseProcRunning: |
535 for act in self.qmprocDirMenuActions: |
547 for act in self.qmprocDirMenuActions: |
543 def __showContextMenuBack(self): |
555 def __showContextMenuBack(self): |
544 """ |
556 """ |
545 Private slot called by the backMenu aboutToShow signal. |
557 Private slot called by the backMenu aboutToShow signal. |
546 """ |
558 """ |
547 if self.project.getProjectType() in \ |
559 if self.project.getProjectType() in \ |
548 ["Qt4", "Qt4C", "E4Plugin", "PySide", "PySideC"]: |
560 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E4Plugin", "PySide", "PySideC"]: |
549 if self.pylupdateProcRunning: |
561 if self.pylupdateProcRunning: |
550 for act in self.tsprocBackMenuActions: |
562 for act in self.tsprocBackMenuActions: |
551 act.setEnabled(False) |
563 act.setEnabled(False) |
552 if self.lreleaseProcRunning: |
564 if self.lreleaseProcRunning: |
553 for act in self.qmprocBackMenuActions: |
565 for act in self.qmprocBackMenuActions: |
576 Protected slot to handle the open popup menu entry. |
588 Protected slot to handle the open popup menu entry. |
577 """ |
589 """ |
578 itmList = self.getSelectedItems() |
590 itmList = self.getSelectedItems() |
579 for itm in itmList: |
591 for itm in itmList: |
580 if isinstance(itm, ProjectBrowserFileItem): |
592 if isinstance(itm, ProjectBrowserFileItem): |
581 if itm.isLinguistFile(): |
593 # hook support |
|
594 if self.hooks["open"] is not None: |
|
595 self.hooks["open"](itm.fileName()) |
|
596 elif itm.isLinguistFile(): |
582 if itm.fileExt() == '.ts': |
597 if itm.fileExt() == '.ts': |
583 self.linguistFile.emit(itm.fileName()) |
598 self.linguistFile.emit(itm.fileName()) |
584 else: |
599 else: |
585 self.trpreview.emit([itm.fileName()]) |
600 self.trpreview.emit([itm.fileName()]) |
586 else: |
601 else: |
927 |
942 |
928 if self.project.getProjectType() in ["Qt4", "Qt4C", "E4Plugin"]: |
943 if self.project.getProjectType() in ["Qt4", "Qt4C", "E4Plugin"]: |
929 self.pylupdate = 'pylupdate4' |
944 self.pylupdate = 'pylupdate4' |
930 if Utilities.isWindowsPlatform(): |
945 if Utilities.isWindowsPlatform(): |
931 self.pylupdate = self.pylupdate + '.exe' |
946 self.pylupdate = self.pylupdate + '.exe' |
|
947 elif self.project.getProjectType() in ["PyQt5", "PyQt5C"]: |
|
948 self.pylupdate = 'pylupdate5' |
|
949 if Utilities.isWindowsPlatform(): |
|
950 self.pylupdate = self.pylupdate + '.exe' |
932 elif self.project.getProjectType() in ["PySide", "PySideC"]: |
951 elif self.project.getProjectType() in ["PySide", "PySideC"]: |
933 self.pylupdate = Utilities.generatePySideToolPath('pyside-lupdate') |
952 self.pylupdate = Utilities.generatePySideToolPath('pyside-lupdate') |
934 else: |
953 else: |
935 return |
954 return |
936 |
955 |
948 self.pylupdateProc.finished.connect(self.__generateTSFileDone) |
967 self.pylupdateProc.finished.connect(self.__generateTSFileDone) |
949 self.pylupdateProc.readyReadStandardOutput.connect(self.__readStdoutLupdate) |
968 self.pylupdateProc.readyReadStandardOutput.connect(self.__readStdoutLupdate) |
950 self.pylupdateProc.readyReadStandardError.connect(self.__readStderrLupdate) |
969 self.pylupdateProc.readyReadStandardError.connect(self.__readStderrLupdate) |
951 |
970 |
952 self.pylupdateProc.start(self.pylupdate, args) |
971 self.pylupdateProc.start(self.pylupdate, args) |
953 procStarted = self.pylupdateProc.waitForStarted() |
972 procStarted = self.pylupdateProc.waitForStarted(5000) |
954 if procStarted: |
973 if procStarted: |
955 self.pylupdateProcRunning = True |
974 self.pylupdateProcRunning = True |
956 self.pylupdateProc.waitForFinished(10000) |
975 self.pylupdateProc.waitForFinished(10000) |
957 else: |
976 else: |
958 E5MessageBox.critical(self, |
977 E5MessageBox.critical(self, |
1077 |
1096 |
1078 self.lreleaseProc = QProcess() |
1097 self.lreleaseProc = QProcess() |
1079 args = [] |
1098 args = [] |
1080 |
1099 |
1081 if self.project.getProjectType() in \ |
1100 if self.project.getProjectType() in \ |
1082 ["Qt4", "Qt4C", "E4Plugin", "PySide", "PySideC"]: |
1101 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E4Plugin", "PySide", "PySideC"]: |
1083 lrelease = os.path.join( |
1102 lrelease = os.path.join( |
1084 Utilities.getQtBinariesPath(), |
1103 Utilities.getQtBinariesPath(), |
1085 Utilities.generateQtToolName("lrelease")) |
1104 Utilities.generateQtToolName("lrelease")) |
1086 else: |
1105 else: |
1087 return |
1106 return |
1094 self.lreleaseProc.finished.connect(self.__releaseTSFileDone) |
1113 self.lreleaseProc.finished.connect(self.__releaseTSFileDone) |
1095 self.lreleaseProc.readyReadStandardOutput.connect(self.__readStdoutLrelease) |
1114 self.lreleaseProc.readyReadStandardOutput.connect(self.__readStdoutLrelease) |
1096 self.lreleaseProc.readyReadStandardError.connect(self.__readStderrLrelease) |
1115 self.lreleaseProc.readyReadStandardError.connect(self.__readStderrLrelease) |
1097 |
1116 |
1098 self.lreleaseProc.start(lrelease, args) |
1117 self.lreleaseProc.start(lrelease, args) |
1099 procStarted = self.lreleaseProc.waitForStarted() |
1118 procStarted = self.lreleaseProc.waitForStarted(5000) |
1100 if procStarted: |
1119 if procStarted: |
1101 self.lreleaseProcRunning = True |
1120 self.lreleaseProcRunning = True |
1102 else: |
1121 else: |
1103 E5MessageBox.critical(self, |
1122 E5MessageBox.critical(self, |
1104 self.trUtf8('Process Generation Error'), |
1123 self.trUtf8('Process Generation Error'), |
1134 <li>generateAllWithObsolete: takes list of filenames as parameter</li> |
1153 <li>generateAllWithObsolete: takes list of filenames as parameter</li> |
1135 <li>generateSelected: takes list of filenames as parameter</li> |
1154 <li>generateSelected: takes list of filenames as parameter</li> |
1136 <li>generateSelectedWithObsolete: takes list of filenames as parameter</li> |
1155 <li>generateSelectedWithObsolete: takes list of filenames as parameter</li> |
1137 <li>releaseAll: takes list of filenames as parameter</li> |
1156 <li>releaseAll: takes list of filenames as parameter</li> |
1138 <li>releaseSelected: takes list of filenames as parameter</li> |
1157 <li>releaseSelected: takes list of filenames as parameter</li> |
|
1158 <li>open: takes a filename as parameter</li> |
1139 </ul> |
1159 </ul> |
1140 |
1160 |
1141 <b>Note</b>: Filenames are relative to the project directory. |
1161 <b>Note</b>: Filenames are relative to the project directory. |
1142 """ |
1162 """ |
1143 self.hooks = { |
1163 self.hooks = { |
1146 "generateAllWithObsolete": None, |
1166 "generateAllWithObsolete": None, |
1147 "generateSelected": None, |
1167 "generateSelected": None, |
1148 "generateSelectedWithObsolete": None, |
1168 "generateSelectedWithObsolete": None, |
1149 "releaseAll": None, |
1169 "releaseAll": None, |
1150 "releaseSelected": None, |
1170 "releaseSelected": None, |
|
1171 "open": None, |
1151 } |
1172 } |