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] =?UTF-8?q?rewrite=20code=20for=20executing=20=E2=80=9Cqet?= =?UTF-8?q?=5Ftb=5Fgenerator=E2=80=9D=20plugin=20Now=20it's=20better=20rea?= =?UTF-8?q?dable=20and=20maintainable=20up=20to=20the=20moment=20we=20have?= =?UTF-8?q?=20our=20own=20internal=20Terminal-Manager=20for=20productive?= =?UTF-8?q?=20use.=20Additionally=20added=20the=20storage=20location=20?= =?UTF-8?q?=E2=80=9CdataDir()/binary=E2=80=9D,=20so=20that=20the=20new=20s?= =?UTF-8?q?tructure=20for=20the=20separation=20of=20configuration=20and=20?= =?UTF-8?q?data=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"