From a450680f6e033468de96b64d12a0553e4cbbacdf Mon Sep 17 00:00:00 2001 From: plc-user <74435298+plc-user@users.noreply.github.com> Date: Wed, 29 Jan 2025 21:57:38 +0100 Subject: [PATCH 1/6] =?UTF-8?q?rewrite=20code=20for=20executing=20?= =?UTF-8?q?=E2=80=9Cqet=5Ftb=5Fgenerator=E2=80=9D=20plugin=20Now=20it's=20?= =?UTF-8?q?better=20readable=20and=20maintainable=20up=20to=20the=20moment?= =?UTF-8?q?=20we=20have=20our=20own=20internal=20Terminal-Manager=20for=20?= =?UTF-8?q?productive=20use.=20Additionally=20added=20the=20storage=20loca?= =?UTF-8?q?tion=20=E2=80=9CdataDir()/binary=E2=80=9D,=20so=20that=20the=20?= =?UTF-8?q?new=20structure=20for=20the=20separation=20of=20configuration?= =?UTF-8?q?=20and=20data=20can=20be=20properly=20kept?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/qetdiagrameditor.cpp | 77 +++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 36 deletions(-) diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 3d072853f..2a68c51a6 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -2353,7 +2353,7 @@ void QETDiagramEditor::generateTerminalBlock() # pragma message("https://github.com/qelectrotech/qet_tb_generator") #endif - bool success; + bool success = false; QProcess *process = new QProcess(qApp); // If launched under control: @@ -2361,47 +2361,52 @@ void QETDiagramEditor::generateTerminalBlock() //process->start("qet_tb_generator"); #if defined(Q_OS_WIN32) || defined(Q_OS_WIN64) - if (openedProjects().count()){ - success = process->startDetached("qet_tb_generator", {(QETDiagramEditor::currentProjectView()->project()->filePath())}); + if (openedProjects().count()) { + QList exeList; + exeList << QStandardPaths::findExecutable("qet_tb_generator.exe") + << "qet_tb_generator" + << (QDir::homePath() + "/Application Data/qet/qet_tb_generator.exe") + << (QETApp::dataDir() + "/binary/qet_tb_generator.exe"); + foreach(QString exe, exeList) { + qInfo() << " success so far: " << success << " - now searching for " << exe; + if ((success == false) && exe.length() && QFile::exists(exe)) { + success = process->startDetached(exe, {(QETDiagramEditor::currentProjectView()->project()->filePath())}); + } + } } - else { - success = process->startDetached("qet_tb_generator", {("")}); - } - if (openedProjects().count()){ - success = process->startDetached(QDir::homePath() + "/Application Data/qet/qet_tb_generator.exe", {(QETDiagramEditor::currentProjectView()->project()->filePath())}); - } - else { - success = process->startDetached(QDir::homePath() + "/Application Data/qet/qet_tb_generator.exe", {("")}); - } - if (openedProjects().count()){ - success = process->startDetached(QDir::homePath() + "/qet_tb_generator.exe", {(QETDiagramEditor::currentProjectView()->project()->filePath())}); - } - else { - success = process->startDetached(QDir::homePath() + "/qet_tb_generator.exe", {("")}); - } - - - #elif defined(Q_OS_MACOS) - if (openedProjects().count()){ - success = process->startDetached("/Library/Frameworks/Python.framework/Versions/3.11/bin/qet_tb_generator", {(QETDiagramEditor::currentProjectView()->project()->filePath())}); + if (openedProjects().count()) { + QList exeList; + exeList << QStandardPaths::findExecutable("qet_tb_generator") + << "/Library/Frameworks/Python.framework/Versions/3.11/bin/qet_tb_generator" + << (QDir::homePath() + "/.qet/qet_tb_generator.app") + << (QETApp::dataDir() + "/binary/qet_tb_generator"); + foreach(QString exe, exeList) { + qInfo() << " success so far: " << success << " - now searching for " << exe; + if ((success == false) && exe.length() && QFile::exists(exe)) { + success = process->startDetached(exe, {(QETDiagramEditor::currentProjectView()->project()->filePath())}); + } + } } - else { - success = process->startDetached(QDir::homePath() + "/.qet/qet_tb_generator.app", {(QETDiagramEditor::currentProjectView()->project()->filePath())}); - } - - #else - if (openedProjects().count()){ - success = process->startDetached("qet_tb_generator", {(QETDiagramEditor::currentProjectView()->project()->filePath())}); + if (openedProjects().count()) { + QList exeList; + exeList << QStandardPaths::findExecutable("qet_tb_generator") + << (QETApp::dataDir() + "/binary/qet_tb_generator") + << (QDir::homePath() + "/.qet/qet_tb_generator") + << "qet_tb_generator"; + foreach(QString exe, exeList) { + qInfo() << " success so far: " << success << " - now searching for " << exe; + if ((success == false) && exe.length() && QFile::exists(exe)) { + success = process->startDetached(exe, {(QETDiagramEditor::currentProjectView()->project()->filePath())}); + } + } + } else { + process->close(); + qInfo() << "Did not find binary of \"qet_tb_generator\""; } - - else { - success = process->startDetached(QDir::homePath() + "/.qet/qet_tb_generator", {(QETDiagramEditor::currentProjectView()->project()->filePath())}); - } - - #endif + #if defined(Q_OS_WIN32) || defined(Q_OS_WIN64) QString message=QObject::tr( "To install the plugin qet_tb_generator" From 9be2ed604eb953cab20b5ff61be2291589b85abe Mon Sep 17 00:00:00 2001 From: plc-user <74435298+plc-user@users.noreply.github.com> Date: Wed, 29 Jan 2025 22:15:36 +0100 Subject: [PATCH 2/6] moved "#endif" to always close process and adjusted qInfo-Text --- sources/qetdiagrameditor.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 2a68c51a6..5f7684e8d 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -2401,11 +2401,12 @@ void QETDiagramEditor::generateTerminalBlock() success = process->startDetached(exe, {(QETDiagramEditor::currentProjectView()->project()->filePath())}); } } - } else { - process->close(); - qInfo() << "Did not find binary of \"qet_tb_generator\""; } #endif + else { + process->close(); + qInfo() << "No project loaded - no need to start \"qet_tb_generator\""; + } #if defined(Q_OS_WIN32) || defined(Q_OS_WIN64) QString message=QObject::tr( From 9dda9f890f94c852f279b7b6f2a1c90bc158d3fe Mon Sep 17 00:00:00 2001 From: plc-user <74435298+plc-user@users.noreply.github.com> Date: Wed, 29 Jan 2025 22:27:56 +0100 Subject: [PATCH 3/6] close the process in any case --- sources/qetdiagrameditor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 5f7684e8d..7c0a2b00b 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -2404,9 +2404,9 @@ void QETDiagramEditor::generateTerminalBlock() } #endif else { - process->close(); qInfo() << "No project loaded - no need to start \"qet_tb_generator\""; } + process->close(); #if defined(Q_OS_WIN32) || defined(Q_OS_WIN64) QString message=QObject::tr( From a459029f0d4daa39aef7a1e9ad99f52f4a5bd9ed Mon Sep 17 00:00:00 2001 From: plc-user <74435298+plc-user@users.noreply.github.com> Date: Thu, 30 Jan 2025 00:15:09 +0100 Subject: [PATCH 4/6] simplify code even more... --- sources/qetdiagrameditor.cpp | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 7c0a2b00b..abea81b43 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -2360,50 +2360,31 @@ void QETDiagramEditor::generateTerminalBlock() //connect(process, SIGNAL(errorOcurred(int error)), this, SLOT(slot_generateTerminalBlock_error())); //process->start("qet_tb_generator"); -#if defined(Q_OS_WIN32) || defined(Q_OS_WIN64) if (openedProjects().count()) { QList exeList; +#if defined(Q_OS_WIN32) || defined(Q_OS_WIN64) exeList << QStandardPaths::findExecutable("qet_tb_generator.exe") << "qet_tb_generator" << (QDir::homePath() + "/Application Data/qet/qet_tb_generator.exe") << (QETApp::dataDir() + "/binary/qet_tb_generator.exe"); - foreach(QString exe, exeList) { - qInfo() << " success so far: " << success << " - now searching for " << exe; - if ((success == false) && exe.length() && QFile::exists(exe)) { - success = process->startDetached(exe, {(QETDiagramEditor::currentProjectView()->project()->filePath())}); - } - } - } #elif defined(Q_OS_MACOS) - if (openedProjects().count()) { - QList exeList; exeList << QStandardPaths::findExecutable("qet_tb_generator") << "/Library/Frameworks/Python.framework/Versions/3.11/bin/qet_tb_generator" << (QDir::homePath() + "/.qet/qet_tb_generator.app") << (QETApp::dataDir() + "/binary/qet_tb_generator"); - foreach(QString exe, exeList) { - qInfo() << " success so far: " << success << " - now searching for " << exe; - if ((success == false) && exe.length() && QFile::exists(exe)) { - success = process->startDetached(exe, {(QETDiagramEditor::currentProjectView()->project()->filePath())}); - } - } - } #else - if (openedProjects().count()) { - QList exeList; exeList << QStandardPaths::findExecutable("qet_tb_generator") << (QETApp::dataDir() + "/binary/qet_tb_generator") << (QDir::homePath() + "/.qet/qet_tb_generator") << "qet_tb_generator"; +#endif foreach(QString exe, exeList) { qInfo() << " success so far: " << success << " - now searching for " << exe; if ((success == false) && exe.length() && QFile::exists(exe)) { success = process->startDetached(exe, {(QETDiagramEditor::currentProjectView()->project()->filePath())}); } } - } -#endif - else { + } else { qInfo() << "No project loaded - no need to start \"qet_tb_generator\""; } process->close(); From 3cadc9275eab850c6a97833162403d158b1e880b Mon Sep 17 00:00:00 2001 From: plc-user <74435298+plc-user@users.noreply.github.com> Date: Thu, 30 Jan 2025 07:25:30 +0100 Subject: [PATCH 5/6] improve readability --- sources/qetdiagrameditor.cpp | 38 ++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index abea81b43..bc8f3a96e 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -2354,30 +2354,34 @@ void QETDiagramEditor::generateTerminalBlock() #endif bool success = false; + QList exeList; QProcess *process = new QProcess(qApp); +#if defined(Q_OS_WIN32) || defined(Q_OS_WIN64) + exeList << QStandardPaths::findExecutable("qet_tb_generator.exe") + << "qet_tb_generator" + << (QDir::homePath() + "/Application Data/qet/qet_tb_generator.exe") + << (QETApp::dataDir() + "/binary/qet_tb_generator.exe"); +#elif defined(Q_OS_MACOS) + exeList << QStandardPaths::findExecutable("qet_tb_generator") + << "/Library/Frameworks/Python.framework/Versions/3.11/bin/qet_tb_generator" + << (QDir::homePath() + "/.qet/qet_tb_generator.app") + << (QETApp::dataDir() + "/binary/qet_tb_generator"); +#else + exeList << QStandardPaths::findExecutable("qet_tb_generator") + << (QETApp::dataDir() + "/binary/qet_tb_generator") + << (QDir::homePath() + "/.qet/qet_tb_generator") + << "qet_tb_generator"; +#endif + // If launched under control: //connect(process, SIGNAL(errorOcurred(int error)), this, SLOT(slot_generateTerminalBlock_error())); //process->start("qet_tb_generator"); + qInfo() << " project to use for qet_tb_generator: " + << (QETDiagramEditor::currentProjectView()->project()->filePath()); + if (openedProjects().count()) { - QList exeList; -#if defined(Q_OS_WIN32) || defined(Q_OS_WIN64) - exeList << QStandardPaths::findExecutable("qet_tb_generator.exe") - << "qet_tb_generator" - << (QDir::homePath() + "/Application Data/qet/qet_tb_generator.exe") - << (QETApp::dataDir() + "/binary/qet_tb_generator.exe"); -#elif defined(Q_OS_MACOS) - exeList << QStandardPaths::findExecutable("qet_tb_generator") - << "/Library/Frameworks/Python.framework/Versions/3.11/bin/qet_tb_generator" - << (QDir::homePath() + "/.qet/qet_tb_generator.app") - << (QETApp::dataDir() + "/binary/qet_tb_generator"); -#else - exeList << QStandardPaths::findExecutable("qet_tb_generator") - << (QETApp::dataDir() + "/binary/qet_tb_generator") - << (QDir::homePath() + "/.qet/qet_tb_generator") - << "qet_tb_generator"; -#endif foreach(QString exe, exeList) { qInfo() << " success so far: " << success << " - now searching for " << exe; if ((success == false) && exe.length() && QFile::exists(exe)) { From 8162da15150a7e4cdcff6428634665e21176a985 Mon Sep 17 00:00:00 2001 From: plc-user <74435298+plc-user@users.noreply.github.com> Date: Thu, 30 Jan 2025 08:30:11 +0100 Subject: [PATCH 6/6] reorder search-paths and added currentPath() --- sources/qetdiagrameditor.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index bc8f3a96e..1763aa7d5 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -2358,19 +2358,23 @@ void QETDiagramEditor::generateTerminalBlock() QProcess *process = new QProcess(qApp); #if defined(Q_OS_WIN32) || defined(Q_OS_WIN64) - exeList << QStandardPaths::findExecutable("qet_tb_generator.exe") - << "qet_tb_generator" + exeList << (QETApp::dataDir() + "/binary/qet_tb_generator.exe") + << (QDir::currentPath() + "/qet_tb_generator.exe") + << QStandardPaths::findExecutable("qet_tb_generator.exe") << (QDir::homePath() + "/Application Data/qet/qet_tb_generator.exe") - << (QETApp::dataDir() + "/binary/qet_tb_generator.exe"); + << "qet_tb_generator.exe" + << "qet_tb_generator"; // from original code: missing ".exe" ??? #elif defined(Q_OS_MACOS) - exeList << QStandardPaths::findExecutable("qet_tb_generator") - << "/Library/Frameworks/Python.framework/Versions/3.11/bin/qet_tb_generator" + exeList << (QETApp::dataDir() + "/binary/qet_tb_generator") + << (QDir::currentPath() + "/qet_tb_generator") + << QStandardPaths::findExecutable("qet_tb_generator") << (QDir::homePath() + "/.qet/qet_tb_generator.app") - << (QETApp::dataDir() + "/binary/qet_tb_generator"); + << "/Library/Frameworks/Python.framework/Versions/3.11/bin/qet_tb_generator"; #else - exeList << QStandardPaths::findExecutable("qet_tb_generator") - << (QETApp::dataDir() + "/binary/qet_tb_generator") + exeList << (QETApp::dataDir() + "/binary/qet_tb_generator") + << (QDir::currentPath() + "/qet_tb_generator") << (QDir::homePath() + "/.qet/qet_tb_generator") + << QStandardPaths::findExecutable("qet_tb_generator") << "qet_tb_generator"; #endif