Merge remote-tracking branch 'upstream/master' into wiring-manager

Conflicts resolved in 24 files. Notable decisions:

- ico/icon-themes.qrc: upstream's icon folder restructure kept; the 36
  cable icon entries re-added under the new qet/qet-dark path scheme
  (XML valid, every referenced file exists).
- Toolbar system: upstream's DiagramToolbarSettings now owns the
  toolbar filling. The cable tool is registered as
  diagrameditor.add_cable (generic group loop) and listed on the
  "diagram" toolbar right after the auto-break conductor action,
  separated by a divider, exactly like before the merge.
- Paste: the cable lines of a copy are handed to
  PasteNumberingImport::push() as extra commands, so paste + cable
  lines + the numbering question stay ONE undo step on both paste
  paths (DiagramView::paste and DiagramEventAddPaste::commit).
- PDF links: upstream's deterministic link sorting kept together with
  the cable cross-reference injector (injectLinkTo -> links list).
- Element renumbering: upstream's ElementAutoNumSchemeCommand::renumber
  replaces the old formula-based body of
  QETProject::renumberElementsBySchemeTitle; the cable numbering rule
  API (cableAutoNum, axis priority, rule name) is kept in full.
- Auto-numbering pages: upstream's scheme management kept, the Câbles
  tab added as index 4 (changeToCableTab), both entry points
  changeToCable() and changeToElement() kept side by side.
- SelectAutonumW: dirty tracking and the contextEdited signal moved
  into upstream's insertPartRow() row API, so single-rule mode, the
  rule-removable button and "confirm without change leaves the project
  alone" keep working.
- xrefpropertieswidget: upstream's offset clamping kept; the cable
  branch (Texte field, Police button, hidden display options) kept;
  the stack-overlapping checkbox is hidden for cables.

Verified after the merge: build green (515/515, no errors), ctest
85/86 (only the pre-existing headless tst_menubarkeyboard failure),
offscreen smoke exit 124.
This commit is contained in:
Kellermorph
2026-10-09 14:09:08 +02:00
1767 changed files with 194544 additions and 72846 deletions
+58 -2
View File
@@ -136,6 +136,32 @@ jobs:
echo "=== ccache statistics ==="
/ucrt64/bin/ccache -s
- name: Run the unit tests
shell: msys2 {0}
env:
QT_QPA_PLATFORM: offscreen
run: |
set -euo pipefail
cd "$GITHUB_WORKSPACE/build"
ctest --output-on-failure --timeout 300 && exit 0
# ctest shows no output for failed tests in this shell, so run each
# failed test again with QtTest writing its log to a file, and print it.
set +e
while IFS=: read -r _ name; do
name=${name%$'\r'}
exe=$(find tests -name "$name.exe" | head -1)
echo "::group::$name"
if [ -n "$exe" ]; then
QT_QPA_PLATFORM=offscreen "$exe" -o "$name.txt,txt"
echo "exit code $?"
cat "$name.txt" 2>/dev/null
else
echo "no executable for $name"
fi
echo "::endgroup::"
done < Testing/Temporary/LastTestsFailed.log
exit 1
- name: Verify exe was built
shell: msys2 {0}
run: |
@@ -373,6 +399,15 @@ jobs:
echo "=== Contents of nsis_root/files/ ==="
ls "$GITHUB_WORKSPACE/nsis_root/files/"
- name: Diagnose NSIS plugins
shell: msys2 {0}
run: |
pacman -Q mingw-w64-ucrt-x86_64-nsis || true
echo "=== nsDialogs.dll ==="
find "$MSYSTEM_PREFIX/share/nsis" -iname 'nsDialogs.dll' || true
echo "=== Plugins tree ==="
find "$MSYSTEM_PREFIX/share/nsis/Plugins" -maxdepth 2 | head -60 || true
- name: Build NSIS installer
shell: msys2 {0}
run: |
@@ -380,8 +415,28 @@ jobs:
NSIS_ROOT="$GITHUB_WORKSPACE/nsis_root"
cd "$NSIS_ROOT"
echo "=== CWD : $(pwd) ==="
MSYS2_ARG_CONV_EXCL="*" makensis /V4 QET64.nsi
RC=$?
echo "=== Unicode/Target directives in QET64.nsi ==="
grep -niE '^[[:space:]]*(unicode|target)[[:space:]]' QET64.nsi || echo "(none)"
# Fallback: if makensis does not register its plugin dir, point it
# at the folder that actually contains nsDialogs.dll.
EXTRA=()
DLL=$(find "$MSYSTEM_PREFIX/share/nsis" -iname 'nsDialogs.dll' | head -1 || true)
if [ -n "$DLL" ]; then
PLUGDIR_WIN=$(cygpath -w "$(dirname "$DLL")")
echo "nsDialogs.dll found in: $PLUGDIR_WIN"
# Plugin dirs are per target in NSIS: declare it for all of them so
# it applies whatever Unicode/Target directive QET64.nsi uses.
EXTRA=(-X"!addplugindir /x86-ansi $PLUGDIR_WIN"
-X"!addplugindir /x86-unicode $PLUGDIR_WIN"
-X"!addplugindir /amd64-unicode $PLUGDIR_WIN")
else
echo "::error::nsDialogs.dll not found in the MSYS2 NSIS package"
exit 1
fi
RC=0
MSYS2_ARG_CONV_EXCL="*" makensis /V4 "${EXTRA[@]}" QET64.nsi || RC=$?
echo "=== Contents of nsis_root after makensis ==="
ls "$NSIS_ROOT/"
[ $RC -eq 0 ] || { echo "ERROR: makensis failed (exit $RC)"; exit 1; }
@@ -407,6 +462,7 @@ jobs:
name: build-logs-qt6
path: |
build/CMakeFiles/*.log
build/Testing/Temporary/LastTest*.log
nsis_root/files/bin/
if-no-files-found: warn
+13 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
@@ -159,6 +159,18 @@ if(WIN32)
${QET_DIR}/qelectrotech.qrc
${QET_DIR}/ico/icon-themes.qrc
)
# Our own manifest (it declares longPathAware). MSVC merges a .manifest
# listed as a source; MinGW needs it embedded through a resource file,
# and ld then keeps it ahead of the toolchain's default manifest.
set(QET_MANIFEST_FILE ${QET_DIR}/build-aux/windows/qelectrotech.exe.manifest)
if(MSVC)
target_sources(${PROJECT_NAME} PRIVATE ${QET_MANIFEST_FILE})
else()
configure_file(${QET_DIR}/build-aux/windows/qelectrotech-manifest.rc.in
${CMAKE_CURRENT_BINARY_DIR}/qelectrotech-manifest.rc @ONLY)
target_sources(${PROJECT_NAME} PRIVATE
${CMAKE_CURRENT_BINARY_DIR}/qelectrotech-manifest.rc)
endif()
else()
add_executable(
${PROJECT_NAME}
+151
View File
@@ -12,6 +12,157 @@ Here are some important resources:
## Testing
### Build the tests
Start with the dependencies and platform-specific setup in
[INSTALL.md](INSTALL.md). Tests additionally require the Qt6 Test module.
The commands below use CMake/CTest 3.20 or newer (`--test-dir` needs 3.20),
a C++17 compiler, and the Qt6 development packages, including GuiPrivate,
Svg and LinguistTools. Configuration may download dependencies with
FetchContent, including Catch2, so an initial build needs network access.
Run the following commands from the repository root. Keep build products in
a separate directory and use Debug for the regression tests:
```sh
git submodule update --init --recursive
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DPACKAGE_TESTS=ON
cmake --build build --config Debug --parallel
```
`PACKAGE_TESTS` defaults to `ON`; specify it explicitly when reusing a build
directory that previously disabled tests. `BUILD_WITH_KF` defaults to `ON`.
If KDE Frameworks are unavailable, add `-DBUILD_WITH_KF=OFF` to the configure
command, as described in INSTALL.md. Use a separate build directory when
changing compiler, Qt kit, or generator.
### Run the tests with CTest
After a successful build, list the registered tests, run them, or select a
test by name with `-R`:
```sh
ctest --test-dir build -C Debug -N
ctest --test-dir build -C Debug --output-on-failure
ctest --test-dir build -C Debug -R '^tst_qetstrings$' --output-on-failure
```
`-N` only lists tests; it does not execute them. `-C Debug` selects the
configuration for multi-configuration generators such as Visual Studio.
For single-configuration generators such as Ninja and Unix Makefiles,
`CMAKE_BUILD_TYPE=Debug` selects it at configure time. CTest runs the tests
registered by CMake; it does not build their executables.
Some tests create Qt widgets and need a graphical environment. On a Linux
machine without a display, use Xvfb as the Linux CI does:
```sh
xvfb-run -a ctest --test-dir build -C Debug --output-on-failure
```
Tests that depend on optional features may not be registered. In particular,
several scripting tests require the Qt6 Qml module at configure time.
Review the test list and any skipped tests before reporting what was covered.
### Windows
Follow INSTALL.md for SQLite3 and the MSVC or MinGW toolchain. The compiler
and Qt kit must match. For MSVC, use a Visual Studio developer PowerShell;
the example below assumes Visual Studio 2022 and a 64-bit MSVC Qt kit.
Replace the example Qt path with your installation, and supply any SQLite3
paths or toolchain file required by your setup:
```powershell
$qtPrefix = 'C:/Qt/6.x.x/msvc2022_64'
cmake -S . -B build-msvc -G 'Visual Studio 17 2022' -A x64 `
"-DCMAKE_PREFIX_PATH=$qtPrefix" -DBUILD_WITH_KF=OFF -DPACKAGE_TESTS=ON
cmake --build build-msvc --config Debug --parallel
$env:Path = "$qtPrefix/bin;$env:Path"
ctest --test-dir build-msvc -C Debug --output-on-failure
```
Putting the matching Qt `bin` directory on `PATH` lets test executables find
Qt DLLs. Other shared dependencies must also be available on `PATH`.
For MinGW with Ninja, use the matching MinGW Qt kit and compiler environment,
omit `-A x64`, select `-G Ninja`, and set `-DCMAKE_BUILD_TYPE=Debug`.
The Linux shell regression scripts below do not run natively on Windows.
### Tests outside the CTest suite
The Catch2 executable `C_unittests` is built with `PACKAGE_TESTS=ON`, but is
currently not registered with CTest. Run it separately from the repository
root after building:
```sh
./build/tests/catch/C_unittests
```
This executable creates a Qt GUI application too. On headless Linux, use:
```sh
xvfb-run -a ./build/tests/catch/C_unittests
```
For the Visual Studio example above, use this PowerShell command after
setting up `PATH`:
```powershell
& ./build-msvc/tests/catch/Debug/C_unittests.exe
```
The Python MCP suite is also separate from CTest. Its unit and protocol
tests can be run without a QElectroTech binary. Some fixtures launch POSIX
shell scripts, so use a Unix-like environment for this suite:
```sh
python3 misc/qet-mcp/test_qet_mcp.py
```
Use `python` instead of `python3` if that is your interpreter's command.
Integration tests need a built QElectroTech and the environment variables
documented in [the MCP testing guide](misc/qet-mcp/README.md#testing),
including `QET_ENABLE_SCRIPTING=1` for script-driven tests. Missing integration
prerequisites cause tests to be skipped, so a successful unit run alone does
not establish integration coverage.
### Linux regression prerequisites
In addition to the build dependencies in INSTALL.md, headless widget tests
need `xvfb-run`, Xvfb and `xauth`. The existing
[Linux workflow](.github/workflows/linux-build.yml) lists the packages used
by CI, including the QtSvg development package and SQLite driver for QtSql.
Package names vary by distribution.
The IPC open-forwarding regression requires Bash, Xvfb, Openbox and xdotool.
Use a Qt6 Debug build; the documented reproduction used Qt 6.10.2. It uses
`examples/industrial.qet` by default and starts its own display, so run it
directly rather than wrapping it in `xvfb-run`:
```sh
tests/ipc-regression/run.sh --binary build/qelectrotech
```
This test is separate from CTest. Exit code `0` means the scenario survived,
`1` means a crash, and `2` means inconclusive or unusable input. An inconclusive
run is not a pass. See [the IPC guide](tests/ipc-regression/README.md).
The quit-during-modal regression needs gdb with Python support and a binary
with the symbols used by the test (use an unstripped Debug build). It uses
Qt's offscreen platform and needs no X server. It is registered with CTest
on Linux and can be selected with:
```sh
ctest --test-dir build -C Debug -R '^modal_quit_regression$' --output-on-failure
```
Missing gdb, missing Python support in gdb, or a stripped binary can result
in exit code `77`, which CTest treats as skipped. See
[the modal-quit guide](tests/modal-quit-regression/README.md).
When submitting changes, state the build configuration, commands actually
run, results, and any skipped or unavailable tests. If commands were only
checked against the build files or documentation, say so explicitly.
## Submitting changes
Always write a clear log message for your commits.
+30
View File
@@ -58,6 +58,36 @@ Thanks to Elbert from the NL for packaging OS/2
Thanks to zloidemon from for packaging FreeBsd (port GCC)
Thanks to Mrbit for ebuild Gentoo packaging.
[de]
Dank an Qt Software für die Qt-Bibliothek (http://www.qtsoftware.com/), lizenziert unter der GNU/GPL.
Dank an das KDE-Projekt (http://www.kde.org/).
Dank an Loic für seine mathematischen Erläuterungen.
Dank an Remi Collet für die Fedora-Paketierung.
Dank an Laurent Trinques für die Debian-Paketierung.
Dank an „trem“ für die Mandriva-Paketierung.
Dank an TuxFamily (http://tuxfamily.org/) für das Hosting des Projekts.
Dank an „Nishiki“ für seine Elemente und seine Unterstützung.
Dank an qtcentre.org für die „SingleApplication“-Klasse.
Dank an Alfredo Carreto für seine spanischen Übersetzungen und die Korrektur der spanischen Übersetzungen (http://electronicosmx.net)
Dank an „Dr.Slump“ und Sivio für ihre Übersetzungen ins Italienische.
Dank an Jose Carlos Martins für seine Übersetzungen ins Portugiesische.
Dank an Pavel Fric für seine Übersetzungen ins Tschechische.
Dank an Pawel Smiech für seine polnischen Übersetzungen.
Dank an Yuriy Litkevich für seine Übersetzungen ins Russische.
Dank an Youssef Ouamalkran für seine Übersetzungen ins Katalanische.
Dank an Gabi Mandoc für seine Übersetzungen ins Rumänische.
Dank an Markus Budde, Jonas Stein und Noah Braden für ihre Übersetzungen ins Deutsche.
Dank an Mohamed Souabni für seine Übersetzungen ins Arabische.
Dank an Uroš Platiše für seine Übersetzungen ins Slowenische.
Dank an Antun Marakovic für seine Übersetzungen ins Kroatische.
Dank an Nikos Papadopoylos und Yannis Gyftomitros für ihre griechischen Übersetzungen.
Dank an Markos Chandras für die Gentoo-Paketierung.
Dank an David für die Paketierung von Slackware.
Dank an Chipsterjulien für die Paketierung der Archlinux-AUR-Pakete.
Dank an Elbert aus den Niederlanden für die Paketierung von OS/2.
Dank an zloidemon für die Paketierung von FreeBSD (GCC-Port).
Dank an Mrbit für die ebuild-Paketierung für Gentoo.
[fr]
Merci à Qt Software pour la bibliothèque Qt ( http://www.qtsoftware.com/ ), sous licence GNU/GPL.
Merci au projet KDE ( http://www.kde.org/ ).
+17
View File
@@ -363,3 +363,20 @@ and running it concurrently with the normal `lrelease` compilation step (as
would happen under `-j`/parallel builds) can corrupt a `.ts` file mid-write,
causing `lrelease` to fail with "Premature end of document". Run it on its
own, review the diff, and commit the updated `.ts` files separately.
The strings in the code are French, so `lang/qet_fr.ts` is the source
language's own file. After `update_translations`, run
```sh
python3 misc/i18n/mirror_source_language.py lang/qet_fr.ts
```
before committing: it copies every new French source string into its own
translation, so `qet_fr.qm` stays complete and French wording can later be
corrected in the `.ts` alone, without changing the key that the other
languages are attached to. Forgetting it breaks nothing (an empty entry
falls back to the code text); `--check` reports whether a run is needed.
A French correction typed into `qet_fr.ts` is lost like any other
translation when the code string is reworded; the vanished entry keeps the
old text for recovery. Never add `-removeidentical` to the `lrelease`
options: it would strip these entries again.
+2 -2
View File
@@ -43,8 +43,8 @@ Here are the technical choices made for the software development:
* Libraries: Qt 6.x
* [KF6 Framework](https://github.com/KDE)
[Cmake](https://cmake.org/install/)
[kcoreaddons](https://github.com/KDE/kcoreaddons/tree/kf6)
[kwidgetsaddons](https://github.com/KDE/kwidgetsaddons/tree/kf6).
[kcoreaddons](https://invent.kde.org/frameworks/kcoreaddons)
[kwidgetsaddons](https://invent.kde.org/frameworks/kwidgetsaddons).
* Coding language: [C++](https://en.wikipedia.org/wiki/C%2B%2B)
* GUI translations: [Qt Linguist](http://doc.qt.io/qt-6/qtlinguist-index.html)
* Version control: [GIT](https://github.com/qelectrotech/qelectrotech-source-mirror.git)
+2 -2
View File
@@ -1,4 +1,4 @@
; this file is part of installer for QElectroTech
; this file is part of installer for QElectroTech
; Copyright (C)2015 QElectroTech Team <scorpio@qelectrotech.org>
;
; This program is free software; you can redistribute it and/or
@@ -34,7 +34,7 @@
;--------------------------------
; NSIS 3 requires SetCompressor BEFORE any Section or Function
SetCompressor /FINAL /SOLID lzma
Unicode true
;--------------------------------
; Includes
!include x64.nsh
+1 -1
View File
@@ -1,4 +1,4 @@
LangString installed ${LANG_ENGLISH} "${SOFT_NAME} is already installed. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
LangString installed ${LANG_ENGLISH} "${SOFT_NAME} is already installed. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
LangString wrongArch ${LANG_ENGLISH} "This distribution is for 64 bits computers only."
LangString Elements ${LANG_ENGLISH} "Elements"
LangString Electric ${LANG_ENGLISH} "Electric"
+1 -1
View File
@@ -1,4 +1,4 @@
LangString wrongArch ${LANG_FRENCH} "Ce programme est pour Windows 64 bits seulement."
LangString wrongArch ${LANG_FRENCH} "Ce programme est pour Windows 64 bits seulement."
LangString installed ${LANG_FRENCH} "${SOFT_NAME} est déja installé. $\n$\nCliquer sur `OK` pour désinstaller l'ancienne version `Annuler` pour annuler cet upgrade."
LangString Elements ${LANG_FRENCH} "Eléments"
LangString Electric ${LANG_FRENCH} "Electrique"
+1 -1
View File
@@ -1,4 +1,4 @@
; Missing language translations for QElectroTech installer
; Missing language translations for QElectroTech installer
; Languages added: hu, ja, mn, nb, nl_BE, nl_NL, pt_BR, rs/sr, sk, sl, sv, tr, uk, zh
; ----------------------------------------------------------------
@@ -0,0 +1,4 @@
// SPDX-License-Identifier: GPL-2.0-or-later
// Embeds qelectrotech.exe.manifest as the program's manifest
// (resource id 1 = CREATEPROCESS_MANIFEST_RESOURCE_ID, type 24 = RT_MANIFEST).
1 24 "@QET_MANIFEST_FILE@"
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- SPDX-License-Identifier: GPL-2.0-or-later -->
<!--
Application manifest for QElectroTech.exe, embedded by CMake on Windows.
It replaces the toolchain's default manifest, so it repeats what that one
declares (supported Windows versions, run as the invoking user) and adds
longPathAware: with LongPathsEnabled set in the registry, Windows then
lets the program open files whose full path is 260 characters or more.
-->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 and 11 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
</assembly>
+2 -2
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
message(
"_____________________________________________________________________"
"\nCopyright 2006 The QElectroTech Team"
"\nCopyright 2006-2026 The QElectroTech Team"
"\nThis file is part of QElectroTech."
"\n\nQElectroTech is free software: you can redistribute it and/or modify"
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
+55 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
@@ -179,6 +179,10 @@ set(QET_SRC_FILES
${QET_DIR}/sources/wiringlistexport.cpp
${QET_DIR}/sources/wirehops.h
${QET_DIR}/sources/wirehops.cpp
${QET_DIR}/sources/wiringrules.h
${QET_DIR}/sources/wiringrules.cpp
${QET_DIR}/sources/conductorrouter.h
${QET_DIR}/sources/conductorrouter.cpp
${QET_DIR}/sources/ui/wiringlistdialog.h
${QET_DIR}/sources/ui/wiringlistdialog.cpp
${QET_DIR}/sources/conductornumexport.h
@@ -188,6 +192,7 @@ set(QET_SRC_FILES
${QET_DIR}/sources/conductorprofile.h
${QET_DIR}/sources/conductorproperties.cpp
${QET_DIR}/sources/conductorproperties.h
${QET_DIR}/sources/conductormultiedit.h
${QET_DIR}/sources/conductorsegment.cpp
${QET_DIR}/sources/conductorsegment.h
${QET_DIR}/sources/conductorsegmentprofile.h
@@ -239,6 +244,8 @@ set(QET_SRC_FILES
${QET_DIR}/sources/genericpanel.h
${QET_DIR}/sources/itemgroups.cpp
${QET_DIR}/sources/itemgroups.h
${QET_DIR}/sources/shownkinds.cpp
${QET_DIR}/sources/shownkinds.h
${QET_DIR}/sources/lastusedstyle.cpp
${QET_DIR}/sources/lastusedstyle.h
${QET_DIR}/sources/machine_info.cpp
@@ -294,10 +301,16 @@ set(QET_SRC_FILES
${QET_DIR}/sources/shortcutmanager.h
${QET_DIR}/sources/shortcutbarsettings.cpp
${QET_DIR}/sources/shortcutbarsettings.h
${QET_DIR}/sources/diagramtoolbarsettings.cpp
${QET_DIR}/sources/diagramtoolbarsettings.h
${QET_DIR}/sources/toolbarsettings.cpp
${QET_DIR}/sources/toolbarsettings.h
${QET_DIR}/sources/diagramcontexttoolbar.cpp
${QET_DIR}/sources/diagramcontexttoolbar.h
${QET_DIR}/sources/diagramgestureoverlay.cpp
${QET_DIR}/sources/diagramgestureoverlay.h
${QET_DIR}/sources/gesturesettings.cpp
${QET_DIR}/sources/gesturesettings.h
${QET_DIR}/sources/commandsearchpopup.cpp
${QET_DIR}/sources/commandsearchpopup.h
${QET_DIR}/sources/titleblockcell.cpp
@@ -317,6 +330,18 @@ set(QET_SRC_FILES
${QET_DIR}/sources/autoNum/numerotationcontext.h
${QET_DIR}/sources/autoNum/renumberelementscommand.cpp
${QET_DIR}/sources/autoNum/renumberelementscommand.h
${QET_DIR}/sources/autoNum/autonumschemecommand.cpp
${QET_DIR}/sources/autoNum/autonumschemecommand.h
${QET_DIR}/sources/autoNum/elementautonumschemecommand.cpp
${QET_DIR}/sources/autoNum/elementautonumschemecommand.h
${QET_DIR}/sources/autoNum/ui/counterwarning.cpp
${QET_DIR}/sources/autoNum/ui/counterwarning.h
${QET_DIR}/sources/autoNum/ui/pastenumberingimport.cpp
${QET_DIR}/sources/autoNum/ui/pastenumberingimport.h
${QET_DIR}/sources/autoNum/ui/renumberpreviewdialog.cpp
${QET_DIR}/sources/autoNum/ui/renumberpreviewdialog.h
${QET_DIR}/sources/undocommand/freezeelementlabelcommand.cpp
${QET_DIR}/sources/undocommand/freezeelementlabelcommand.h
${QET_DIR}/sources/autoNum/ui/autonumberingdockwidget.cpp
${QET_DIR}/sources/autoNum/ui/autonumberingdockwidget.h
${QET_DIR}/sources/autoNum/ui/autonumberingmanagementw.cpp
@@ -352,6 +377,8 @@ set(QET_SRC_FILES
${QET_DIR}/sources/diagramevent/diagrameventaddimage.h
${QET_DIR}/sources/diagramevent/diagrameventaddshape.cpp
${QET_DIR}/sources/diagramevent/diagrameventaddshape.h
${QET_DIR}/sources/diagramevent/diagrameventfillet.cpp
${QET_DIR}/sources/diagramevent/diagrameventfillet.h
${QET_DIR}/sources/diagramevent/diagrameventaddpath.cpp
${QET_DIR}/sources/diagramevent/diagrameventaddpath.h
${QET_DIR}/sources/diagramevent/diagrameventaddcable.cpp
@@ -445,6 +472,8 @@ set(QET_SRC_FILES
${QET_DIR}/sources/editor/ui/polygoneditor.h
${QET_DIR}/sources/editor/ui/rectangleeditor.cpp
${QET_DIR}/sources/editor/ui/rectangleeditor.h
${QET_DIR}/sources/editor/ui/scaleelementdialog.cpp
${QET_DIR}/sources/editor/ui/scaleelementdialog.h
${QET_DIR}/sources/editor/ui/terminaleditor.cpp
${QET_DIR}/sources/editor/ui/terminaleditor.h
${QET_DIR}/sources/editor/ui/texteditor.cpp
@@ -595,6 +624,8 @@ set(QET_SRC_FILES
${QET_DIR}/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h
${QET_DIR}/sources/QetGraphicsItemModeler/qetgraphicshandlerutility.cpp
${QET_DIR}/sources/QetGraphicsItemModeler/qetgraphicshandlerutility.h
${QET_DIR}/sources/QetGraphicsItemModeler/textresizehandles.cpp
${QET_DIR}/sources/QetGraphicsItemModeler/textresizehandles.h
${QET_DIR}/sources/QPropertyUndoCommand/qpropertyundocommand.cpp
${QET_DIR}/sources/QPropertyUndoCommand/qpropertyundocommand.h
@@ -794,6 +825,8 @@ set(QET_SRC_FILES
${QET_DIR}/sources/ui/importelementtextpatterndialog.h
${QET_DIR}/sources/ui/jumptoelementdialog.cpp
${QET_DIR}/sources/ui/jumptoelementdialog.h
${QET_DIR}/sources/ui/wiringruleswarning.cpp
${QET_DIR}/sources/ui/wiringruleswarning.h
${QET_DIR}/sources/ui/inditextpropertieswidget.cpp
${QET_DIR}/sources/ui/inditextpropertieswidget.h
${QET_DIR}/sources/ui/linksingleelementwidget.cpp
@@ -835,6 +868,14 @@ set(QET_SRC_FILES
${QET_DIR}/sources/ui/configpage/shortcutsconfigpage.h
${QET_DIR}/sources/ui/configpage/shortcutbarconfigpage.cpp
${QET_DIR}/sources/ui/configpage/shortcutbarconfigpage.h
${QET_DIR}/sources/ui/customizedialog.cpp
${QET_DIR}/sources/ui/customizedialog.h
${QET_DIR}/sources/ui/configpage/toolbarcommandsconfigpage.cpp
${QET_DIR}/sources/ui/configpage/toolbarcommandsconfigpage.h
${QET_DIR}/sources/ui/configpage/toolbarsconfigpage.cpp
${QET_DIR}/sources/ui/configpage/toolbarsconfigpage.h
${QET_DIR}/sources/ui/configpage/gesturesconfigpage.cpp
${QET_DIR}/sources/ui/configpage/gesturesconfigpage.h
${QET_DIR}/sources/undocommand/addelementtextcommand.cpp
${QET_DIR}/sources/undocommand/addelementtextcommand.h
@@ -864,6 +905,8 @@ set(QET_SRC_FILES
${QET_DIR}/sources/undocommand/groupitemscommand.h
${QET_DIR}/sources/undocommand/alignselectioncommand.cpp
${QET_DIR}/sources/undocommand/alignselectioncommand.h
${QET_DIR}/sources/undocommand/mirrorselectioncommand.cpp
${QET_DIR}/sources/undocommand/mirrorselectioncommand.h
${QET_DIR}/sources/undocommand/rotateselectioncommand.cpp
${QET_DIR}/sources/undocommand/rotateselectioncommand.h
${QET_DIR}/sources/undocommand/promoteshapecommand.cpp
@@ -965,6 +1008,17 @@ list(APPEND QET_SRC_FILES
${QET_DIR}/sources/scripting/qetscriptapi.h
${QET_DIR}/sources/scripting/qetscripting.cpp
${QET_DIR}/sources/scripting/qetscripting.h
${QET_DIR}/sources/scripting/scriptheader.h
${QET_DIR}/sources/scripting/scriptlibrary.cpp
${QET_DIR}/sources/scripting/scriptlibrary.h
${QET_DIR}/sources/scripting/scriptmanagerdialog.cpp
${QET_DIR}/sources/scripting/scriptmanagerdialog.h
${QET_DIR}/sources/scripting/liveserver.cpp
${QET_DIR}/sources/scripting/liveserver.h
${QET_DIR}/sources/scripting/macrorecorder.cpp
${QET_DIR}/sources/scripting/macrorecorder.h
${QET_DIR}/sources/scripting/assistantinfo.cpp
${QET_DIR}/sources/scripting/assistantinfo.h
)
if(QET_SPACEMOUSE_ENABLED)
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006 The QElectroTech Team
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
+12 -4
View File
@@ -42,10 +42,18 @@ unit conventions and decimal quantities are not changed implicitly.
## BOM Policy
The default BOM query exports one row per Simple or Master element. Slave
contacts, terminal-strip elements, reports, thumbnails, and conductor
definitions are excluded. A Master device is counted once and PLC I/O entries
are not expanded. The existing `exclude_from_bom` property is honored by the
The default BOM query exports one row per Simple, Master, Slave or Terminal
element: an auxiliary contact block and a terminal block are parts of their
own (discussion #847). Reports, thumbnails and conductor definitions are
excluded. A Master device is counted once and PLC I/O entries are not
expanded.
Two options leave rows out (#1178). Contact blocks: uncheck **Contacts
esclaves** in the dialog, or pass `--no-slaves`. Junctions, the
terminal-type symbols drawn where wires branch (`114_connections`), which
have no label, designation, manufacturer or manufacturer reference: check
**Laisser de côté les jonctions**, or pass `--no-junctions`. A terminal block
with a label or a part number is kept. The existing `exclude_from_bom` property is honored by the
SQL view, including common true representations (`true`, `1`, `yes`, `on`).
The default columns are:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

-48
View File
@@ -1,48 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" width="128" height="128">
<!-- DIN rail -->
<rect x="6" y="86" width="116" height="18" rx="3" fill="#7f8c8d"/>
<rect x="6" y="92" width="116" height="6" fill="#4d4d4d"/>
<!-- six terminal blocks: L, L, N, PE, L, spare -->
<g fill="#eff0f1">
<rect x="12" y="26" width="16" height="66" rx="2"/>
<rect x="30" y="26" width="16" height="66" rx="2"/>
<rect x="48" y="26" width="16" height="66" rx="2"/>
<rect x="66" y="26" width="16" height="66" rx="2"/>
<rect x="84" y="26" width="16" height="66" rx="2"/>
<rect x="102" y="26" width="16" height="66" rx="2"/>
</g>
<!-- right-hand shading of each block -->
<g fill="#bdc3c7">
<rect x="24" y="28" width="4" height="62"/>
<rect x="42" y="28" width="4" height="62"/>
<rect x="60" y="28" width="4" height="62"/>
<rect x="78" y="28" width="4" height="62"/>
<rect x="96" y="28" width="4" height="62"/>
<rect x="114" y="28" width="4" height="62"/>
</g>
<!-- colored marker bands -->
<rect x="12" y="26" width="16" height="10" rx="2" fill="#7f8c8d"/>
<rect x="30" y="26" width="16" height="10" rx="2" fill="#7f8c8d"/>
<rect x="48" y="26" width="16" height="10" rx="2" fill="#3daee9"/>
<rect x="66" y="26" width="16" height="10" rx="2" fill="#27ae60"/>
<rect x="70" y="26" width="8" height="10" fill="#fdbc4b"/>
<rect x="84" y="26" width="16" height="10" rx="2" fill="#7f8c8d"/>
<rect x="102" y="26" width="16" height="10" rx="2" fill="#da4453"/>
<!-- screws -->
<g fill="#31363b">
<circle cx="20" cy="50" r="4.5"/><circle cx="20" cy="74" r="4.5"/>
<circle cx="38" cy="50" r="4.5"/><circle cx="38" cy="74" r="4.5"/>
<circle cx="56" cy="50" r="4.5"/><circle cx="56" cy="74" r="4.5"/>
<circle cx="74" cy="50" r="4.5"/><circle cx="74" cy="74" r="4.5"/>
<circle cx="92" cy="50" r="4.5"/><circle cx="92" cy="74" r="4.5"/>
<circle cx="110" cy="50" r="4.5"/><circle cx="110" cy="74" r="4.5"/>
</g>
<g fill="#eff0f1">
<rect x="16" y="49" width="8" height="2"/><rect x="16" y="73" width="8" height="2"/>
<rect x="34" y="49" width="8" height="2"/><rect x="34" y="73" width="8" height="2"/>
<rect x="52" y="49" width="8" height="2"/><rect x="52" y="73" width="8" height="2"/>
<rect x="70" y="49" width="8" height="2"/><rect x="70" y="73" width="8" height="2"/>
<rect x="88" y="49" width="8" height="2"/><rect x="88" y="73" width="8" height="2"/>
<rect x="106" y="49" width="8" height="2"/><rect x="106" y="73" width="8" height="2"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 325 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 516 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 429 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 371 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 356 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 542 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 418 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 B

Some files were not shown because too many files have changed in this diff Show More