Project/ProjectTranslationsBrowser.py

branch
Py2 comp.
changeset 2791
a9577f248f04
parent 2789
6593aab36403
parent 2771
281c9b30dd91
child 2847
1843ef6e2656
equal deleted inserted replaced
2790:6686a3326df8 2791:a9577f248f04
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 }

eric ide

mercurial