PluginPySide2PyQt.py

changeset 43
25977715166f
parent 42
53379f82956b
child 46
be59c09708a8
diff -r 53379f82956b -r 25977715166f PluginPySide2PyQt.py
--- a/PluginPySide2PyQt.py	Sun Dec 31 16:59:13 2017 +0100
+++ b/PluginPySide2PyQt.py	Sun May 20 16:13:48 2018 +0200
@@ -21,12 +21,12 @@
 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
 autoactivate = True
 deactivateable = True
-version = "2.1.1"
+version = "2.2.0"
 className = "PySide2PyQtPlugin"
 packageName = "PySide2PyQt"
 shortDescription = "Convert PySide file to PyQt and vice versa"
 longDescription = \
-    """This plug-in implements a tool to convert a PySide file""" \
+    """This plug-in implements a tool to convert a PySide/PySide2 file""" \
     """ to PyQt4 or PyQt5 and vice versa. It works with the text of the""" \
     """ current editor."""
 needsRestart = False
@@ -137,14 +137,19 @@
         Private method to initialize the menu.
         """
         self.__menu = QMenu(self.tr("PySide to/from PyQt"))
-        self.__menu.addAction(self.tr("PySide to PyQt4"), self.__pyside2Pyqt)\
-            .setData("pyqt4")
-        self.__menu.addAction(self.tr("PySide to PyQt5"), self.__pyside2Pyqt)\
-            .setData("pyqt5")
-        self.__menu.addAction(self.tr("PyQt4 to PySide"), self.__pyqt2Pyside)\
-            .setData("pyqt4")
-        self.__menu.addAction(self.tr("PyQt5 to PySide"), self.__pyqt2Pyside)\
-            .setData("pyqt5")
+        self.__menu.addAction(self.tr("PySide to PyQt4"),
+                              lambda: self.__pyside2Pyqt("pyside", "pyqt4"))
+        self.__menu.addAction(self.tr("PySide to PyQt5"),
+                              lambda: self.__pyside2Pyqt("pyside", "pyqt5"))
+        self.__menu.addAction(self.tr("PySide2 to PyQt5"),
+                              lambda: self.__pyside2Pyqt("pyside2", "pyqt5"))
+        self.__menu.addSeparator()
+        self.__menu.addAction(self.tr("PyQt4 to PySide"),
+                              lambda: self.__pyqt2Pyside("pyqt4", "pyside"))
+        self.__menu.addAction(self.tr("PyQt5 to PySide2"),
+                              lambda: self.__pyqt2Pyside("pyqt5", "pyside2"))
+        self.__menu.addAction(self.tr("PyQt5 to PySide"),
+                              lambda: self.__pyqt2Pyside("pyqt5", "pyside"))
         self.__menu.setEnabled(False)
     
     def __populateMenu(self, name, menu):
@@ -216,21 +221,21 @@
                 act = menu.addMenu(self.__menu)
                 self.__editors[editor].append(act)
     
-    def __pyside2Pyqt(self):
+    def __pyside2Pyqt(self, pyside, pyqt):
         """
         Private slot to convert the code of the current editor from PySide
         to PyQt.
+        
+        @param pyside PySide variant (pyside or pyside2)
+        @type str
+        @param pyqt PyQt variant (pyqt4 or pyqt5)
+        @type str
         """
         editor = e5App().getObject("ViewManager").activeWindow()
         if editor is None:
             return
         
-        act = self.sender()
-        if act is None:
-            return
-        
         text = editor.text()
-        pyqt = act.data()
         if pyqt == "pyqt4":
             newText = (text
                        .replace("PySide", "PyQt4")
@@ -242,12 +247,15 @@
                        .replace("pyside-lupdate", "pylupdate4")
                        )
         elif pyqt == "pyqt5":
-            # Note: this code does no Qt4 to Qt5 conversion
             newText = (text
-                       .replace("PySide", "PyQt5")
                        .replace("Signal", "pyqtSignal")
                        .replace("Slot", "pyqtSlot")
                        .replace("Property", "pyqtProperty")
+                       .replace("PySide2", "PyQt5")
+                       .replace("pyside2-uic", "pyuic5")
+                       .replace("pyside2-rcc", "pyrcc5")
+                       .replace("pyside2-lupdate", "pylupdate5")
+                       .replace("PySide", "PyQt5")
                        .replace("pyside-uic", "pyuic5")
                        .replace("pyside-rcc", "pyrcc5")
                        .replace("pyside-lupdate", "pylupdate5")
@@ -261,21 +269,21 @@
             editor.replaceSelectedText(newText)
             editor.endUndoAction()
     
-    def __pyqt2Pyside(self):
+    def __pyqt2Pyside(self, pyqt, pyside):
         """
         Private slot to convert the code of the current editor from PyQt
         to PySide.
+        
+        @param pyqt PyQt variant (pyqt4 or pyqt5)
+        @type str
+        @param pyside PySide variant (pyside or pyside2)
+        @type str
         """
         editor = e5App().getObject("ViewManager").activeWindow()
         if editor is None:
             return
         
-        act = self.sender()
-        if act is None:
-            return
-        
         text = editor.text()
-        pyqt = act.data()
         if pyqt == "pyqt4":
             newText = (text
                        .replace("PyQt4", "PySide")
@@ -286,8 +294,7 @@
                        .replace("pyrcc4", "pyside-rcc")
                        .replace("pylupdate4", "pyside-lupdate")
                        )
-        elif pyqt == "pyqt5":
-            # Note: this code does no Qt4 to Qt5 conversion
+        elif pyqt == "pyqt5" and pyside == "pyside":
             newText = (text
                        .replace("PyQt5", "PySide")
                        .replace("pyqtSignal", "Signal")
@@ -297,6 +304,16 @@
                        .replace("pyrcc5", "pyside-rcc")
                        .replace("pylupdate5", "pyside-lupdate")
                        )
+        elif pyqt == "pyqt5" and pyside == "pyside2":
+            newText = (text
+                       .replace("PyQt5", "PySide2")
+                       .replace("pyqtSignal", "Signal")
+                       .replace("pyqtSlot", "Slot")
+                       .replace("pyqtProperty", "Property")
+                       .replace("pyuic5", "pyside2-uic")
+                       .replace("pyrcc5", "pyside2-rcc")
+                       .replace("pylupdate5", "pyside2-lupdate")
+                       )
         else:
             return
         

eric ide

mercurial