PluginPySide2PyQt.py

changeset 16
051e29b6bdd6
parent 13
ba4283ccf93c
child 18
ea533653d9b2
diff -r 23324a7a0aa2 -r 051e29b6bdd6 PluginPySide2PyQt.py
--- 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

eric ide

mercurial