Sun, 04 Dec 2022 14:20:53 +0100
Changed the communication with the generator client in CreateDialogCodeDialog.py to use sys.stderr and surround the data with a guard string (see issue462).
--- a/src/eric7/Project/CreateDialogCodeDialog.py Sun Dec 04 11:58:37 2022 +0100 +++ b/src/eric7/Project/CreateDialogCodeDialog.py Sun Dec 04 14:20:53 2022 +0100 @@ -215,8 +215,11 @@ started = proc.waitForStarted(5000) finished = proc.waitForFinished(30000) if started and finished: - output = proc.readAllStandardOutput() + output = proc.readAllStandardError() outText = str(output, "utf-8", "replace") + if "@@eric_start@@" in outText and "@@eric_end@@" in outText: + # it is something we sent via UicLoadUi[56].py + outText = outText.split("@@eric_start@@")[1].split("@@eric_end@@")[0] if proc.exitCode() == 0: ok = True uicText = outText.strip()
--- a/src/eric7/Project/UicLoadUi5.py Sun Dec 04 11:58:37 2022 +0100 +++ b/src/eric7/Project/UicLoadUi5.py Sun Dec 04 14:20:53 2022 +0100 @@ -12,15 +12,25 @@ import sys import xml.etree.ElementTree # secok + +def _printout(dataString): + """ + Function to print the given string to sys.stdout with a guard string. + + @param dataString string to be printed + @type str + """ + print("@@eric_start@@{0}@@eric_end@@".format(dataString), file=sys.stderr) + try: from PyQt5 import uic from PyQt5.QtCore import QByteArray, QMetaMethod from PyQt5.QtWidgets import QAction, QApplication, QWidget except ModuleNotFoundError: - print("PyQt5 could not be found.") + _printout("PyQt5 could not be found.") sys.exit(1) except ImportError as err: - print("PyQt5 could not be imported. Issue: {0}".format(str(err))) + _printout("PyQt5 could not be imported. Issue: {0}".format(str(err))) sys.exit(1) with contextlib.suppress(ImportError): @@ -41,10 +51,10 @@ app = QApplication([]) # __IGNORE_WARNING__ try: dlg = uic.loadUi(formFile, package=projectPath) - print(dlg.objectName()) + _printout(dlg.objectName()) sys.exit(0) except (AttributeError, ImportError, xml.etree.ElementTree.ParseError) as err: - print(str(err)) + _printout(str(err)) sys.exit(1) @@ -62,10 +72,10 @@ app = QApplication([]) # __IGNORE_WARNING__ try: dlg = uic.loadUi(formFile, package=projectPath) - print(dlg.metaObject().className()) + _printout(dlg.metaObject().className()) sys.exit(0) except (AttributeError, ImportError, xml.etree.ElementTree.ParseError) as err: - print(str(err)) + _printout(str(err)) sys.exit(1) @@ -190,16 +200,16 @@ objectsList.append(objectDict) - print(json.dumps(objectsList)) + _printout(json.dumps(objectsList)) sys.exit(0) except (AttributeError, ImportError, xml.etree.ElementTree.ParseError) as err: - print(str(err)) + _printout(str(err)) sys.exit(1) if __name__ == "__main__": if len(sys.argv) != 4: - print("Wrong number of arguments.") + _printout("Wrong number of arguments.") sys.exit(1) if sys.argv[1] == "object_name": @@ -209,7 +219,7 @@ elif sys.argv[1] == "signatures": signatures(sys.argv[2], sys.argv[3]) else: - print("Unknow operation given.") + _printout("Unknow operation given.") sys.exit(1) #
--- a/src/eric7/Project/UicLoadUi6.py Sun Dec 04 11:58:37 2022 +0100 +++ b/src/eric7/Project/UicLoadUi6.py Sun Dec 04 14:20:53 2022 +0100 @@ -13,16 +13,26 @@ import sys import xml.etree.ElementTree # secok + +def _printout(dataString): + """ + Function to print the given string to sys.stdout with a guard string. + + @param dataString string to be printed + @type str + """ + print("@@eric_start@@{0}@@eric_end@@".format(dataString), file=sys.stderr) + try: from PyQt6 import uic from PyQt6.QtCore import QByteArray, QMetaMethod from PyQt6.QtGui import QAction from PyQt6.QtWidgets import QApplication, QWidget except ModuleNotFoundError: - print("PyQt6 could not be found.") + _printout("PyQt6 could not be found.") sys.exit(1) except ImportError as err: - print("PyQt6 could not be imported. Issue: {0}".format(str(err))) + _printout("PyQt6 could not be imported. Issue: {0}".format(str(err))) sys.exit(1) with contextlib.suppress(ImportError): @@ -46,10 +56,10 @@ app = QApplication([]) # __IGNORE_WARNING__ try: dlg = uic.loadUi(formFile, package=projectPath) - print(dlg.objectName()) + _printout(dlg.objectName()) sys.exit(0) except (AttributeError, ImportError, xml.etree.ElementTree.ParseError) as err: - print(str(err)) + _printout(str(err)) sys.exit(1) @@ -67,10 +77,10 @@ app = QApplication([]) # __IGNORE_WARNING__ try: dlg = uic.loadUi(formFile, package=projectPath) - print(dlg.metaObject().className()) + _printout(dlg.metaObject().className()) sys.exit(0) except (AttributeError, ImportError, xml.etree.ElementTree.ParseError) as err: - print(str(err)) + _printout(str(err)) sys.exit(1) @@ -195,16 +205,16 @@ objectsList.append(objectDict) - print(json.dumps(objectsList)) + _printout(json.dumps(objectsList)) sys.exit(0) except (AttributeError, ImportError, xml.etree.ElementTree.ParseError) as err: - print(str(err)) + _printout(str(err)) sys.exit(1) if __name__ == "__main__": if len(sys.argv) != 4: - print("Wrong number of arguments.") + _printout("Wrong number of arguments.") sys.exit(1) if sys.argv[1] == "object_name": @@ -214,7 +224,7 @@ elif sys.argv[1] == "signatures": signatures(sys.argv[2], sys.argv[3]) else: - print("Unknow operation given.") + _printout("Unknow operation given.") sys.exit(1) #