From 5574b4d3e95ff9e98bf57450cc234a2a8bec3809 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Sun, 14 Jun 2026 13:58:37 +0200 Subject: [PATCH 1/6] CMake: guard Linux-only install rules with UNIX AND NOT APPLE The .desktop, MIME package, and appdata install rules are freedesktop.org conventions and only apply on Linux. Wrapping them in if(UNIX AND NOT APPLE) prevents a configure failure on macOS and Windows where QET_APPDATA_PATH and QET_MIME_PACKAGE_PATH are not defined. Also replace the hardcoded share/mime/packages path with ${QET_MIME_PACKAGE_PATH} for consistency with paths_compilation_installation.cmake. No change to Linux build behaviour. --- CMakeLists.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e931f78a..edec55380 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -162,8 +162,10 @@ if (NOT MINGW) install(DIRECTORY examples DESTINATION share/qelectrotech) install(DIRECTORY titleblocks DESTINATION share/qelectrotech) install(FILES LICENSE ELEMENTS.LICENSE CREDIT README ChangeLog DESTINATION share/doc/qelectrotech) - install(FILES misc/org.qelectrotech.qelectrotech.desktop DESTINATION share/applications) - install(FILES misc/qelectrotech.xml DESTINATION share/mime/packages) - install(FILES misc/qelectrotech.appdata.xml DESTINATION ${QET_APPDATA_PATH}) + if(UNIX AND NOT APPLE) + install(FILES misc/org.qelectrotech.qelectrotech.desktop DESTINATION share/applications) + install(FILES misc/qelectrotech.xml DESTINATION ${QET_MIME_PACKAGE_PATH}) + install(FILES misc/qelectrotech.appdata.xml DESTINATION ${QET_APPDATA_PATH}) + endif() install(FILES ${QM_FILES} DESTINATION ${QET_LANG_PATH}) endif() From 15e7d392438e137cafdf24da54cdd65f4ec65226 Mon Sep 17 00:00:00 2001 From: Shane Ringrose Date: Tue, 16 Jun 2026 10:15:09 +1200 Subject: [PATCH 2/6] snap: pin qet-tb-generator source to tag v1.31 Without a source-tag or source-commit, snapcraft pulls the latest HEAD of qet_tb_generator-plugin on every build. This makes builds non-reproducible and risks breakage whenever the upstream repo changes. Pin to the only published release tag (v1.31, commit d6ee3cf) so the snap always builds against a known-good version of the plugin. Closes #202 Co-Authored-By: Claude Sonnet 4.6 --- build-aux/snap/snapcraft.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/build-aux/snap/snapcraft.yaml b/build-aux/snap/snapcraft.yaml index f0f93168b..284c1b955 100644 --- a/build-aux/snap/snapcraft.yaml +++ b/build-aux/snap/snapcraft.yaml @@ -53,6 +53,7 @@ parts: qet-tb-generator: plugin: python source: https://github.com/raulroda/qet_tb_generator-plugin.git + source-tag: v1.31 python-packages: [PySimpleGUI] stage-packages: - python3-lxml From a666d2d0ae31f7506f98ba32a351ffb59aa36601 Mon Sep 17 00:00:00 2001 From: Shane Ringrose Date: Tue, 16 Jun 2026 22:11:22 +1200 Subject: [PATCH 3/6] qet_tb_generator: drop dead ~/Application Data/qet fallback (Windows) The Windows search list for the qet_tb_generator plugin included `~/Application Data/qet/qet_tb_generator.exe` as a fallback. That legacy junction path is the same inaccessible location the standard-directories change moved QET away from, and it never matched a pip install anyway: `pip install qet_tb_generator` puts the executable in the Python Scripts directory (`...\PythonXX\Scripts` on PATH, or `%APPDATA%\Python\PythonXX\Scripts` for --user installs), not in `QETApp::dataDir()`. Pip installs are already found via QStandardPaths::findExecutable (PATH), and manual binary drops via dataDir()/binary and the working directory. The legacy entry only matched old manual drops into the inaccessible folder, so remove it. Refs qelectrotech-source-mirror#199 Co-Authored-By: Claude Opus 4.8 --- sources/qetdiagrameditor.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 335f6cb3c..2b1d9607c 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -2474,7 +2474,6 @@ void QETDiagramEditor::generateTerminalBlock() 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") << "qet_tb_generator.exe" << "qet_tb_generator"; // from original code: missing ".exe" ??? #elif defined(Q_OS_MACOS) From 482fd32dc2a9ded919c8d8e815735dea7693ae4d Mon Sep 17 00:00:00 2001 From: plc-user <74435298+plc-user@users.noreply.github.com> Date: Tue, 16 Jun 2026 20:40:08 +0200 Subject: [PATCH 4/6] element-editor: no warning on save, when element without terminals is frontview (and fix indention) --- sources/editor/ui/qetelementeditor.cpp | 74 +++++++++++++------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/sources/editor/ui/qetelementeditor.cpp b/sources/editor/ui/qetelementeditor.cpp index 45530dc98..31ce8482d 100644 --- a/sources/editor/ui/qetelementeditor.cpp +++ b/sources/editor/ui/qetelementeditor.cpp @@ -736,11 +736,13 @@ bool QETElementEditor::checkElement() QList warnings; QList errors; - // Warning #1: Element haven't got terminal + // Warning #1: Element does not have (enough) terminals // (except for report and conductor definition, because they must have one terminal and this checking is done below) + // (another exception: "thumbnails" aka "front-views" may/should not have terminals) if (!m_elmt_scene -> containsTerminals() && !(m_elmt_scene->elementData().m_type & ElementData::AllReport) && - m_elmt_scene->elementData().m_type != ElementData::ConductorDefinition) { + m_elmt_scene->elementData().m_type != ElementData::ConductorDefinition && + m_elmt_scene->elementData().m_type != ElementData::Thumbnail) { warnings << qMakePair( tr("Absence de borne", "warning title"), tr( @@ -749,50 +751,50 @@ bool QETElementEditor::checkElement() "warning description" ) ); - } + } - // Check folio report element - if (m_elmt_scene->elementData().m_type & ElementData::AllReport) - { - int terminal =0; + // Check folio report element + if (m_elmt_scene->elementData().m_type & ElementData::AllReport) + { + int terminal =0; - for(auto qgi : m_elmt_scene -> items()) { - if (qgraphicsitem_cast(qgi)) { - terminal ++; - } - } - - //Error folio report must have only one terminal - if (terminal != 1) { - errors << qMakePair (tr("Absence de borne"), - tr("
Erreur :" - "
Les reports de folio doivent posséder une seul borne." - "
Solution :" - "
Verifier que l'élément ne possède qu'une seul borne")); + for(auto qgi : m_elmt_scene -> items()) { + if (qgraphicsitem_cast(qgi)) { + terminal ++; } } - // Check conductor definition element - if (m_elmt_scene->elementData().m_type == ElementData::ConductorDefinition) - { - int terminal =0; + //Error folio report must have only one terminal + if (terminal != 1) { + errors << qMakePair (tr("Absence de borne"), + tr("
Erreur :" + "
Les reports de folio doivent posséder une seul borne." + "
Solution :" + "
Verifier que l'élément ne possède qu'une seul borne")); + } + } - for(auto qgi : m_elmt_scene -> items()) { - if (qgraphicsitem_cast(qgi)) { - terminal ++; - } - } + // Check conductor definition element + if (m_elmt_scene->elementData().m_type == ElementData::ConductorDefinition) + { + int terminal =0; - // Error: Conductor definition must have exactly one terminal - if (terminal != 1) { - errors << qMakePair (tr("Nombre de bornes incorrect"), - tr("
Erreur :" - "
Les définitions de conducteur ne peuvent posséder qu'une seule borne." - "
Solution :" - "
Vérifier que l'élément ne possède qu'une seule borne")); + for(auto qgi : m_elmt_scene -> items()) { + if (qgraphicsitem_cast(qgi)) { + terminal ++; } } + // Error: Conductor definition must have exactly one terminal + if (terminal != 1) { + errors << qMakePair (tr("Nombre de bornes incorrect"), + tr("
Erreur :" + "
Les définitions de conducteur ne peuvent posséder qu'une seule borne." + "
Solution :" + "
Vérifier que l'élément ne possède qu'une seule borne")); + } + } + if (!errors.count() && !warnings.count()) { return(true); } From 9122f5d687aa2e353f66e49111b73f21333a4de7 Mon Sep 17 00:00:00 2001 From: plc-user <74435298+plc-user@users.noreply.github.com> Date: Tue, 16 Jun 2026 21:13:14 +0200 Subject: [PATCH 5/6] fix German translation --- lang/qet_de.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lang/qet_de.ts b/lang/qet_de.ts index 585d8178e..ac070f582 100644 --- a/lang/qet_de.ts +++ b/lang/qet_de.ts @@ -7571,7 +7571,8 @@ veuillez patienter durant l'import... L'enregistrement à échoué, les conditions requises ne sont pas valides - Speichervorgang gescheitert\nDie erforderlichen Bedingungen wurden nicht erfüllt + Speichervorgang gescheitert! +Die erforderlichen Bedingungen wurden nicht erfüllt From 342ac3626dff902ba77e1f3e821ef74cdd02f1d4 Mon Sep 17 00:00:00 2001 From: plc-user <74435298+plc-user@users.noreply.github.com> Date: Wed, 17 Jun 2026 14:11:11 +0200 Subject: [PATCH 6/6] fix also German binary-translation --- lang/qet_de.qm | Bin 326112 -> 326003 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lang/qet_de.qm b/lang/qet_de.qm index 90762310cc196bb0664e4557bd519d2483a9d436..ade2d019dc5566809bbaead2bd1b1d6eba36e7c2 100644 GIT binary patch delta 20175 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 RUgNNh