--- a/ProjectDjango/Project.py Sun Jun 16 14:51:36 2013 +0200 +++ b/ProjectDjango/Project.py Tue Jun 18 19:27:03 2013 +0200 @@ -699,6 +699,24 @@ ## methods below implement the various hook related functions ################################################################## + def registerOpenHook(self): + """ + Public method to register the open hook to open a translations file + in a translations editor. + """ + if self.__hooksInstalled: + editor = self.__plugin.getPreferences("TranslationsEditor") + try: + if editor: + self.__translationsBrowser.addHookMethodAndMenuEntry("open", + self.openPOEditor, + self.trUtf8("Open with {0}").format(os.path.basename(editor))) + else: + self.__translationsBrowser.removeHookMethod("open") + except KeyError: + # ignore for older eric5 versions + pass + def projectOpenedHooks(self): """ Public method to add our hook methods. @@ -730,6 +748,8 @@ self.trUtf8("Compile selected catalogs")) self.__hooksInstalled = True + + self.registerOpenHook() def projectClosedHooks(self): """ @@ -747,6 +767,11 @@ self.__translationsBrowser.removeHookMethod("generateSelectedWithObsolete") self.__translationsBrowser.removeHookMethod("releaseAll") self.__translationsBrowser.removeHookMethod("releaseSelected") + try: + self.__translationsBrowser.removeHookMethod("open") + except KeyError: + # ignore for older eric5 versions + pass self.__translationsBrowser = None self.__hooksInstalled = False @@ -2349,3 +2374,22 @@ fullName = os.path.join(entry[0], fileName) if fullName.endswith('.mo'): self.__e5project.appendFile(fullName) + + def openPOEditor(self, poFile): + """ + Public method to edit the given file in an external .po editor. + + @param poFile name of the .po file (string) + """ + editor = self.__plugin.getPreferences("TranslationsEditor") + if poFile.endswith(".po") and editor: + try: + wd = self.__sitePath() + except DjangoNoSiteSelectedException: + wd = "" + started, pid = QProcess.startDetached(editor, [poFile], wd) + if not started: + E5MessageBox.critical(None, + self.trUtf8('Process Generation Error'), + self.trUtf8('The translations editor process ({0}) could not' + ' be started.').format(os.path.basename(editor)))