--- a/PluginPySide2PyQt.py Sat Dec 21 15:08:17 2013 +0100 +++ b/PluginPySide2PyQt.py Mon Dec 23 20:01:09 2013 +0100 @@ -20,7 +20,7 @@ author = "Detlev Offenbach <detlev@die-offenbachs.de>" autoactivate = True deactivateable = True -version = "0.2.0" +version = "0.3.0" className = "PySide2PyQtPlugin" packageName = "PySide2PyQt" shortDescription = "Convert PySide file to PyQt4 and vice versa" @@ -50,6 +50,8 @@ self.__translator = None self.__loadTranslator() + + self.__editors = {} def activate(self): """ @@ -62,6 +64,14 @@ self.__ui.showMenu.connect(self.__populateMenu) + e5App().getObject("ViewManager").editorOpenedEd.connect( + self.__editorOpened) + e5App().getObject("ViewManager").editorClosedEd.connect( + self.__editorClosed) + + for editor in e5App().getObject("ViewManager").getOpenEditors(): + self.__editorOpened(editor) + return None, True def deactivate(self): @@ -69,6 +79,18 @@ Public method to deactivate this plugin. """ self.__ui.showMenu.disconnect(self.__populateMenu) + + e5App().getObject("ViewManager").editorOpenedEd.disconnect( + self.__editorOpened) + e5App().getObject("ViewManager").editorClosedEd.disconnect( + self.__editorClosed) + + for editor, acts in self.__editors.items(): + menu = editor.getMenu("Tools") + if menu is not None: + for act in acts: + menu.removeAction(act) + self.__editors = {} def __loadTranslator(self): """ @@ -110,6 +132,36 @@ menu.addAction(self.tr("PySide to PyQt4"), self.__pyside2Pyqt) menu.addAction(self.tr("PyQt4 to PySide"), self.__pyqt2Pyside) + def __editorOpened(self, editor): + """ + Private slot called, when a new editor was opened. + + @param editor reference to the new editor (QScintilla.Editor) + """ + menu = editor.getMenu("Tools") + if menu is not None: + self.__editors[editor] = [] + if not menu.isEmpty(): + act = menu.addSeparator() + self.__editors[editor].append(act) + act = menu.addAction(self.tr("PySide to PyQt4"), + self.__pyside2Pyqt) + self.__editors[editor].append(act) + act = menu.addAction(self.tr("PyQt4 to PySide"), + self.__pyqt2Pyside) + self.__editors[editor].append(act) + + def __editorClosed(self, editor): + """ + Private slot called, when an editor was closed. + + @param editor reference to the editor (QScintilla.Editor) + """ + try: + del self.__editors[editor] + except KeyError: + pass + def __pyside2Pyqt(self): """ Private slot to convert the code of the current editor from PySide