diff options
Diffstat (limited to 'sources/pyside6/PySide6/glue/qtuitools.cpp')
-rw-r--r-- | sources/pyside6/PySide6/glue/qtuitools.cpp | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/sources/pyside6/PySide6/glue/qtuitools.cpp b/sources/pyside6/PySide6/glue/qtuitools.cpp index 9e52436e7..1835ed096 100644 --- a/sources/pyside6/PySide6/glue/qtuitools.cpp +++ b/sources/pyside6/PySide6/glue/qtuitools.cpp @@ -45,7 +45,7 @@ static PyObject *QUiLoadedLoadUiFromDevice(QUiLoader *self, QIODevice *dev, QWid } if (!PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "Unable to open/read ui device"); + PyErr_Format(PyExc_RuntimeError, "Unable to open/read ui device"); return nullptr; } @@ -62,7 +62,7 @@ Q_IMPORT_PLUGIN(PyCustomWidgets); // @snippet quiloader-registercustomwidget registerCustomWidget(%PYARG_1); -%CPPSELF.addPluginPath(""); // force reload widgets +%CPPSELF.addPluginPath(QString{}); // force reload widgets // @snippet quiloader-registercustomwidget // @snippet quiloader-load-1 @@ -87,38 +87,46 @@ char *arg1 = PyBytes_AsString(strObj); QByteArray uiFileName(arg1); Py_DECREF(strObj); -QFile uiFile(uiFileName); - -if (!uiFile.exists()) { - qCritical().noquote() << "File" << uiFileName << "does not exists"; +if (uiFileName.isEmpty()) { + qCritical() << "Error converting the UI filename to QByteArray"; Py_RETURN_NONE; } -if (uiFileName.isEmpty()) { - qCritical() << "Error converting the UI filename to QByteArray"; +QFile uiFile(QString::fromUtf8(uiFileName)); + +if (!uiFile.exists()) { + qCritical().noquote() << "File" << uiFileName << "does not exist"; Py_RETURN_NONE; } // Use the 'pyside6-uic' wrapper instead of 'uic' // This approach is better than rely on 'uic' since installing // the wheels cover this case. -QString uicBin("pyside6-uic"); +QString uicBin(QStringLiteral("pyside6-uic")); QStringList uicArgs = {QString::fromUtf8(uiFileName)}; QProcess uicProcess; uicProcess.start(uicBin, uicArgs); -if (!uicProcess.waitForFinished()) { - qCritical() << "Cannot run 'pyside6-uic': " << uicProcess.errorString() << " - " - << "Exit status " << uicProcess.exitStatus() - << " (" << uicProcess.exitCode() << ")\n" - << "Check if 'pyside6-uic' is in PATH"; +if (!uicProcess.waitForStarted()) { + qCritical().noquote() << "Cannot run '" << uicBin << "': " + << uicProcess.errorString() << " - Check if 'pyside6-uic' is in PATH"; + Py_RETURN_NONE; +} + +if (!uicProcess.waitForFinished() + || uicProcess.exitStatus() != QProcess::NormalExit + || uicProcess.exitCode() != 0) { + qCritical().noquote() << '\'' << uicBin << "' failed: " + << uicProcess.errorString() << " - Exit status " << uicProcess.exitStatus() + << " (" << uicProcess.exitCode() << ")\n"; Py_RETURN_NONE; } + QByteArray uiFileContent = uicProcess.readAllStandardOutput(); QByteArray errorOutput = uicProcess.readAllStandardError(); if (!errorOutput.isEmpty()) { - qCritical().noquote() << errorOutput; + qCritical().noquote() << '\'' << uicBin << "' failed: " << errorOutput; Py_RETURN_NONE; } @@ -142,8 +150,8 @@ QXmlStreamReader reader(&uiFile); while (!reader.atEnd() && baseClassName.isEmpty() && className.isEmpty()) { auto token = reader.readNext(); if (token == QXmlStreamReader::StartElement && reader.name() == u"widget") { - baseClassName = reader.attributes().value(QLatin1String("class")).toUtf8(); - className = reader.attributes().value(QLatin1String("name")).toUtf8(); + baseClassName = reader.attributes().value(QLatin1StringView("class")).toUtf8(); + className = reader.attributes().value(QLatin1StringView("name")).toUtf8(); } } |