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