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/3] =?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/3] 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/3] 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(