697 |
697 |
698 ################################################################## |
698 ################################################################## |
699 ## methods below implement the various hook related functions |
699 ## methods below implement the various hook related functions |
700 ################################################################## |
700 ################################################################## |
701 |
701 |
|
702 def registerOpenHook(self): |
|
703 """ |
|
704 Public method to register the open hook to open a translations file |
|
705 in a translations editor. |
|
706 """ |
|
707 if self.__hooksInstalled: |
|
708 editor = self.__plugin.getPreferences("TranslationsEditor") |
|
709 try: |
|
710 if editor: |
|
711 self.__translationsBrowser.addHookMethodAndMenuEntry("open", |
|
712 self.openPOEditor, |
|
713 self.trUtf8("Open with {0}").format(os.path.basename(editor))) |
|
714 else: |
|
715 self.__translationsBrowser.removeHookMethod("open") |
|
716 except KeyError: |
|
717 # ignore for older eric5 versions |
|
718 pass |
|
719 |
702 def projectOpenedHooks(self): |
720 def projectOpenedHooks(self): |
703 """ |
721 """ |
704 Public method to add our hook methods. |
722 Public method to add our hook methods. |
705 """ |
723 """ |
706 if self.__e5project.getProjectType() == "Django": |
724 if self.__e5project.getProjectType() == "Django": |
728 self.__translationsBrowser.addHookMethodAndMenuEntry("releaseSelected", |
746 self.__translationsBrowser.addHookMethodAndMenuEntry("releaseSelected", |
729 self.compileSelectedCatalogs, |
747 self.compileSelectedCatalogs, |
730 self.trUtf8("Compile selected catalogs")) |
748 self.trUtf8("Compile selected catalogs")) |
731 |
749 |
732 self.__hooksInstalled = True |
750 self.__hooksInstalled = True |
|
751 |
|
752 self.registerOpenHook() |
733 |
753 |
734 def projectClosedHooks(self): |
754 def projectClosedHooks(self): |
735 """ |
755 """ |
736 Public method to remove our hook methods. |
756 Public method to remove our hook methods. |
737 """ |
757 """ |
745 self.__translationsBrowser.removeHookMethod("generateSelected") |
765 self.__translationsBrowser.removeHookMethod("generateSelected") |
746 self.__translationsBrowser.removeHookMethod("generateAllWithObsolete") |
766 self.__translationsBrowser.removeHookMethod("generateAllWithObsolete") |
747 self.__translationsBrowser.removeHookMethod("generateSelectedWithObsolete") |
767 self.__translationsBrowser.removeHookMethod("generateSelectedWithObsolete") |
748 self.__translationsBrowser.removeHookMethod("releaseAll") |
768 self.__translationsBrowser.removeHookMethod("releaseAll") |
749 self.__translationsBrowser.removeHookMethod("releaseSelected") |
769 self.__translationsBrowser.removeHookMethod("releaseSelected") |
|
770 try: |
|
771 self.__translationsBrowser.removeHookMethod("open") |
|
772 except KeyError: |
|
773 # ignore for older eric5 versions |
|
774 pass |
750 self.__translationsBrowser = None |
775 self.__translationsBrowser = None |
751 |
776 |
752 self.__hooksInstalled = False |
777 self.__hooksInstalled = False |
753 |
778 |
754 def newForm(self, path): |
779 def newForm(self, path): |
2347 for entry in os.walk(self.__sitePath()): |
2372 for entry in os.walk(self.__sitePath()): |
2348 for fileName in entry[2]: |
2373 for fileName in entry[2]: |
2349 fullName = os.path.join(entry[0], fileName) |
2374 fullName = os.path.join(entry[0], fileName) |
2350 if fullName.endswith('.mo'): |
2375 if fullName.endswith('.mo'): |
2351 self.__e5project.appendFile(fullName) |
2376 self.__e5project.appendFile(fullName) |
|
2377 |
|
2378 def openPOEditor(self, poFile): |
|
2379 """ |
|
2380 Public method to edit the given file in an external .po editor. |
|
2381 |
|
2382 @param poFile name of the .po file (string) |
|
2383 """ |
|
2384 editor = self.__plugin.getPreferences("TranslationsEditor") |
|
2385 if poFile.endswith(".po") and editor: |
|
2386 try: |
|
2387 wd = self.__sitePath() |
|
2388 except DjangoNoSiteSelectedException: |
|
2389 wd = "" |
|
2390 started, pid = QProcess.startDetached(editor, [poFile], wd) |
|
2391 if not started: |
|
2392 E5MessageBox.critical(None, |
|
2393 self.trUtf8('Process Generation Error'), |
|
2394 self.trUtf8('The translations editor process ({0}) could not' |
|
2395 ' be started.').format(os.path.basename(editor))) |