Compare commits

..

1 Commits

Author SHA1 Message Date
scorpio810 6132cc0503 ci: remove auto-doxygen workflow
Le workflow régénérait un fichier doc/QElectroTech.qch de ~500 Mo à
chaque push de tag (y compris le tag nightly), ce qui a fait grimper
la conso mensuelle de bande passante Git LFS de l'organisation
qelectrotech à 90% du quota.
2026-09-21 16:25:31 +02:00
2944 changed files with 78551 additions and 417948 deletions
+1
View File
@@ -0,0 +1 @@
*.qch filter=lfs diff=lfs merge=lfs -text
+2 -4
View File
@@ -28,7 +28,7 @@ jobs:
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
ca-certificates build-essential cmake ninja-build git pkg-config \ ca-certificates build-essential cmake ninja-build git pkg-config \
qt6-base-dev qt6-base-private-dev qt6-tools-dev qt6-tools-dev-tools \ qt6-base-dev qt6-base-private-dev qt6-tools-dev qt6-tools-dev-tools \
libqt6svg6-dev libqt6sql6-sqlite libcups2-dev libsqlite3-dev \ libqt6svg6-dev libqt6sql6-sqlite libsqlite3-dev libcups2-dev \
libxkbcommon-x11-0 \ libxkbcommon-x11-0 \
xvfb openbox xdotool x11-utils xvfb openbox xdotool x11-utils
# extra-cmake-modules and the KF6 libraries are installed rather than # extra-cmake-modules and the KF6 libraries are installed rather than
@@ -53,9 +53,7 @@ jobs:
git config --global --add safe.directory "$GITHUB_WORKSPACE" git config --global --add safe.directory "$GITHUB_WORKSPACE"
cmake -B build -G Ninja \ cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_BUILD_TYPE=Debug \
-DQT_VERSION_MAJOR=6 \ -DQT_VERSION_MAJOR=6
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DQET_EXPORT_PROJECT_DB=ON
- name: Build - name: Build
run: cmake --build build --parallel $(nproc) run: cmake --build build --parallel $(nproc)
+1 -28
View File
@@ -57,7 +57,6 @@ jobs:
mingw-w64-ucrt-x86_64-nsis mingw-w64-ucrt-x86_64-nsis
mingw-w64-ucrt-x86_64-angleproject mingw-w64-ucrt-x86_64-angleproject
mingw-w64-ucrt-x86_64-qt6-declarative mingw-w64-ucrt-x86_64-qt6-declarative
mingw-w64-ucrt-x86_64-hidapi
- name: Cache ccache - name: Cache ccache
uses: actions/cache@v5 uses: actions/cache@v5
@@ -121,8 +120,6 @@ jobs:
-DCMAKE_POLICY_DEFAULT_CMP0077=NEW \ -DCMAKE_POLICY_DEFAULT_CMP0077=NEW \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DQET_EXPORT_PROJECT_DB=ON \ -DQET_EXPORT_PROJECT_DB=ON \
-DQET_ENABLE_SPACEMOUSE=ON \
-DQET_SPACEMOUSE_BACKEND=hid \
-DCMAKE_C_COMPILER_LAUNCHER=/ucrt64/bin/ccache \ -DCMAKE_C_COMPILER_LAUNCHER=/ucrt64/bin/ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=/ucrt64/bin/ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=/ucrt64/bin/ccache \
-DSQLite3_INCLUDE_DIR=/ucrt64/include \ -DSQLite3_INCLUDE_DIR=/ucrt64/include \
@@ -149,11 +146,6 @@ jobs:
SIZE=$(stat -c%s "$EXE") SIZE=$(stat -c%s "$EXE")
echo "Exe found: $EXE ($SIZE bytes)" echo "Exe found: $EXE ($SIZE bytes)"
[ "$SIZE" -gt 100000 ] || { echo "ERROR: exe too small"; exit 1; } [ "$SIZE" -gt 100000 ] || { echo "ERROR: exe too small"; exit 1; }
# 3D mouse support (discussion #599): CMake only warns when hidapi
# is missing, which would ship a package without it -- fail here.
ldd "$EXE" | grep -qi 'libhidapi' \
|| { echo "ERROR: exe not linked against hidapi -- 3D mouse support missing"; exit 1; }
echo "3D mouse support: linked against $(ldd "$EXE" | grep -io 'libhidapi[^ ]*' | head -1)"
- name: Deploy — copy exe + windeployqt + DLLs - name: Deploy — copy exe + windeployqt + DLLs
shell: msys2 {0} shell: msys2 {0}
@@ -199,8 +191,6 @@ jobs:
echo "=== $DLL_COUNT DLLs present after scan ===" echo "=== $DLL_COUNT DLLs present after scan ==="
ls -lh "$BIN/QElectroTech.exe" || { echo "ERROR: exe missing from bin/"; exit 1; } ls -lh "$BIN/QElectroTech.exe" || { echo "ERROR: exe missing from bin/"; exit 1; }
[ "$DLL_COUNT" -gt 5 ] || { echo "ERROR: too few DLLs"; exit 1; } [ "$DLL_COUNT" -gt 5 ] || { echo "ERROR: too few DLLs"; exit 1; }
# Without it QElectroTech.exe would not start at all.
[ -f "$BIN/libhidapi-0.dll" ] || { echo "ERROR: libhidapi-0.dll not deployed"; exit 1; }
cd "$GITHUB_WORKSPACE" cd "$GITHUB_WORKSPACE"
cp /ucrt64/bin/libgcc_s_seh-1.dll "$BIN/" cp /ucrt64/bin/libgcc_s_seh-1.dll "$BIN/"
@@ -227,23 +217,6 @@ jobs:
cp -r "$GITHUB_WORKSPACE/titleblocks" "$FILES/titleblocks" || true cp -r "$GITHUB_WORKSPACE/titleblocks" "$FILES/titleblocks" || true
cp -r "$GITHUB_WORKSPACE/examples" "$FILES/examples" || true cp -r "$GITHUB_WORKSPACE/examples" "$FILES/examples" || true
cp -r "$GITHUB_WORKSPACE/fonts" "$FILES/fonts" || true cp -r "$GITHUB_WORKSPACE/fonts" "$FILES/fonts" || true
# The MCP server finds bin/QElectroTech.exe and elements/ from mcp/.
mkdir -p "$FILES/mcp"
cp "$GITHUB_WORKSPACE/misc/qet-mcp/qet_mcp.py" "$GITHUB_WORKSPACE/misc/qet-mcp/README.md" "$FILES/mcp/"
# Python for it, so Windows users need not install one: the official
# embeddable package, pinned by version and checksum (python.org's
# own sha256 for this file). The installer offers it unticked; the
# portable folder and the MSI carry it.
PY_EMBED_VERSION=3.14.7
PY_EMBED_SHA256=d297e5ff019966817ad8502465176139f2d3d840fa4ed84b13bed399a6ab1f15
PY_ZIP="$GITHUB_WORKSPACE/python-embed.zip"
curl -fsSL -o "$PY_ZIP" \
"https://www.python.org/ftp/python/$PY_EMBED_VERSION/python-$PY_EMBED_VERSION-embed-amd64.zip"
echo "$PY_EMBED_SHA256 $PY_ZIP" | sha256sum -c - \
|| { echo "ERROR: embeddable Python checksum mismatch"; exit 1; }
python3 -m zipfile -e "$PY_ZIP" "$FILES/mcp/python"
[ -f "$FILES/mcp/python/python.exe" ] \
|| { echo "ERROR: python.exe missing from the embeddable package"; exit 1; }
# --- Translations --- # --- Translations ---
# Since PR #751 the .qm files are no longer tracked in git: lrelease # Since PR #751 the .qm files are no longer tracked in git: lrelease
@@ -322,7 +295,7 @@ jobs:
&& echo " OK : $f" \ && echo " OK : $f" \
|| echo " MISSING: $f" || echo " MISSING: $f"
done done
for d in ico elements lang titleblocks fonts examples bin mcp; do for d in ico elements lang titleblocks fonts examples bin; do
[ -d "$FILES/$d" ] \ [ -d "$FILES/$d" ] \
&& echo " OK : $d/" \ && echo " OK : $d/" \
|| echo " MISSING: $d/" || echo " MISSING: $d/"
+10 -53
View File
@@ -59,41 +59,17 @@ jobs:
# ---------------------------------------------------------------- # ----------------------------------------------------------------
# 2. Download the portable artifact for this flavor # 2. Download the portable artifact for this flavor
#
# Wrapped in nick-fields/retry: actions/download-artifact@v8 has
# shown repeated "Artifact download failed after 5 retries"
# failures on this cross-workflow download (via run-id) — not a
# real content/digest problem, just flaky Azure blob delivery.
# Two separate occurrences observed within days of each other
# (different artifact IDs/digests, same failure signature), each
# one enough to fail build-msi outright and block the rest of the
# pipeline. Retrying the whole download 3x is cheap insurance.
# Switched to `gh run download` here because nick-fields/retry
# can only retry a shell command, not re-invoke a `uses:` step.
# ---------------------------------------------------------------- # ----------------------------------------------------------------
- name: Download portable artifact - name: Download portable artifact
uses: nick-fields/retry@v3 uses: actions/download-artifact@v8
with: with:
timeout_minutes: 10 name: ${{ matrix.portable_artifact }}
max_attempts: 3 path: artifact\files
retry_wait_seconds: 30 # workflow_run => use the triggering run's ID
shell: pwsh # workflow_dispatch => use input run_id if provided, otherwise current run
command: | run-id: ${{ github.event.workflow_run.id || github.event.inputs.run_id || github.run_id }}
if (Test-Path "artifact\files") { Remove-Item -Recurse -Force "artifact\files" } github-token: ${{ secrets.GITHUB_TOKEN }}
New-Item -ItemType Directory -Force -Path "artifact\files" | Out-Null repository: ${{ github.repository }}
$runId = "${{ github.event.workflow_run.id || github.event.inputs.run_id || github.run_id }}"
gh run download $runId `
--repo "${{ github.repository }}" `
--name "${{ matrix.portable_artifact }}" `
--dir "artifact\files"
if ($LASTEXITCODE -ne 0) {
Write-Error "gh run download failed (exit $LASTEXITCODE)"
exit $LASTEXITCODE
}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# ---------------------------------------------------------------- # ----------------------------------------------------------------
# 3. Extract version # 3. Extract version
@@ -360,13 +336,7 @@ jobs:
if-no-files-found: error if-no-files-found: error
- name: Delete old nightly .msi asset - name: Delete old nightly .msi asset
# Only run if a new MSI actually exists in dist/ — otherwise the old if: always()
# (still working) nightly .msi would be deleted without anything to
# replace it, leaving the nightly release with no MSI at all until
# the next successful build (see windows-msi-pipeline notes,
# run 35694391567: an upstream artifact-download failure meant
# dist\*.msi never existed for that run).
if: always() && hashFiles('dist/*.msi') != ''
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }} REPO: ${{ github.repository }}
@@ -411,20 +381,7 @@ jobs:
deploy-pages: deploy-pages:
needs: build-msi needs: build-msi
runs-on: ubuntu-latest runs-on: ubuntu-latest
# Regenerate the page whenever the MSI job actually ran (success OR if: always() && needs.build-msi.result == 'success'
# packaging/signing failure) — not only on full success.
# generate-page.py queries the published assets on the "nightly"
# release itself (line 407: `gh release view nightly --json assets`),
# so it already handles a missing MSI natively (empty MSI_NAME -> no
# MSI button on the page). The page only needs the exe/zip already
# published by windows-build.yml, independent of the MSI's fate.
# Only "skipped"/"cancelled" are excluded: if build-msi never ran at
# all (e.g. Windows Build itself failed), there is nothing new to
# publish and regenerating the page would be pointless.
if: >
always() &&
needs.build-msi.result != 'skipped' &&
needs.build-msi.result != 'cancelled'
permissions: permissions:
contents: write contents: write
pages: write pages: write
+9 -3
View File
@@ -1,7 +1,5 @@
*.snap *.snap
.flatpak-builder .flatpak-builder
__pycache__/
*.pyc
# Qt build output # Qt build output
*.user *.user
# doxygen Doxyfile output # doxygen Doxyfile output
@@ -9,4 +7,12 @@ doc/*
!doc/QElectroTech.qch !doc/QElectroTech.qch
QElectroTech.tag QElectroTech.tag
!doc/doc-utils !doc/doc-utils
ui_*.h lang/*.qm
# -- IDE settings/intermediate files --
# zed
.zed
.cache
# VS Code
.vscode
+6 -31
View File
@@ -1,4 +1,4 @@
# Copyright 2006-2026 The QElectroTech Team # Copyright 2006 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
@@ -36,7 +36,6 @@ include(cmake/git_update_submodules.cmake)
include(cmake/git_last_commit_sha.cmake) include(cmake/git_last_commit_sha.cmake)
include(cmake/fetch_singleapplication.cmake) include(cmake/fetch_singleapplication.cmake)
include(cmake/fetch_pugixml.cmake) include(cmake/fetch_pugixml.cmake)
include(cmake/find_spacemouse.cmake)
include(cmake/qet_compilation_vars.cmake) include(cmake/qet_compilation_vars.cmake)
set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -80,7 +79,7 @@ set(QET_HAS_QTPDF FALSE)
find_package(Qt6 QUIET COMPONENTS Pdf) find_package(Qt6 QUIET COMPONENTS Pdf)
if(TARGET Qt6::Pdf AND NOT Qt6_VERSION VERSION_LESS 6.4.0) if(TARGET Qt6::Pdf AND NOT Qt6_VERSION VERSION_LESS 6.4.0)
set(QET_HAS_QTPDF TRUE) set(QET_HAS_QTPDF TRUE)
list(APPEND QET_PRIVATE_LIBRARIES Qt6::Pdf) list(APPEND QET_PRIVATE_LIBRARIES Qt::Pdf)
add_compile_definitions(QET_HAS_QTPDF) add_compile_definitions(QET_HAS_QTPDF)
else() else()
message(STATUS "QtPdf module not available (or Qt < 6.4): PDF page import feature disabled") message(STATUS "QtPdf module not available (or Qt < 6.4): PDF page import feature disabled")
@@ -93,10 +92,10 @@ endif()
# the application depends on. When it's missing the feature is silently # the application depends on. When it's missing the feature is silently
# disabled - see the QET_HAS_SCRIPTING guard in qetscripting.*. # disabled - see the QET_HAS_SCRIPTING guard in qetscripting.*.
set(QET_HAS_SCRIPTING FALSE) set(QET_HAS_SCRIPTING FALSE)
find_package(Qt6 QUIET COMPONENTS Qml) find_package(Qt${QT_VERSION_MAJOR} QUIET COMPONENTS Qml)
if(TARGET Qt6::Qml) if(TARGET Qt${QT_VERSION_MAJOR}::Qml)
set(QET_HAS_SCRIPTING TRUE) set(QET_HAS_SCRIPTING TRUE)
list(APPEND QET_PRIVATE_LIBRARIES Qt6::Qml) list(APPEND QET_PRIVATE_LIBRARIES Qt::Qml)
add_compile_definitions(QET_HAS_SCRIPTING) add_compile_definitions(QET_HAS_SCRIPTING)
else() else()
message(STATUS "Qt Qml module not available: JavaScript scripting (--run) disabled") message(STATUS "Qt Qml module not available: JavaScript scripting (--run) disabled")
@@ -159,18 +158,6 @@ if(WIN32)
${QET_DIR}/qelectrotech.qrc ${QET_DIR}/qelectrotech.qrc
${QET_DIR}/ico/icon-themes.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() else()
add_executable( add_executable(
${PROJECT_NAME} ${PROJECT_NAME}
@@ -182,13 +169,6 @@ else()
) )
endif() endif()
if(QET_SPACEMOUSE_BACKEND_SPNAV_ENABLED)
list(APPEND QET_SPACEMOUSE_LIBRARIES PkgConfig::SPNAV)
endif()
if(QET_SPACEMOUSE_BACKEND_HID_ENABLED)
list(APPEND QET_SPACEMOUSE_LIBRARIES PkgConfig::HIDAPI)
endif()
if(APPLE) if(APPLE)
# CFBundleIdentifier must not be empty. CMake's default Info.plist # CFBundleIdentifier must not be empty. CMake's default Info.plist
# template fills it from MACOSX_BUNDLE_GUI_IDENTIFIER; with that unset # template fills it from MACOSX_BUNDLE_GUI_IDENTIFIER; with that unset
@@ -307,7 +287,6 @@ target_link_libraries(
SQLite3::SQLite3 SQLite3::SQLite3
${KF_PRIVATE_LIBRARIES} ${KF_PRIVATE_LIBRARIES}
${QET_PRIVATE_LIBRARIES} ${QET_PRIVATE_LIBRARIES}
${QET_SPACEMOUSE_LIBRARIES}
) )
target_include_directories( target_include_directories(
@@ -339,12 +318,12 @@ target_include_directories(
${QET_DIR}/sources/NameList ${QET_DIR}/sources/NameList
${QET_DIR}/sources/NameList/ui ${QET_DIR}/sources/NameList/ui
${QET_DIR}/sources/utils ${QET_DIR}/sources/utils
${QET_DIR}/pugixml/src
${QET_DIR}/sources/dataBase ${QET_DIR}/sources/dataBase
${QET_DIR}/sources/dataBase/ui ${QET_DIR}/sources/dataBase/ui
${QET_DIR}/sources/factory/ui ${QET_DIR}/sources/factory/ui
${QET_DIR}/sources/print ${QET_DIR}/sources/print
${QET_DIR}/sources/svg ${QET_DIR}/sources/svg
${QET_DIR}/sources/materiallist
) )
if(NOT BUILD_WITH_KF) if(NOT BUILD_WITH_KF)
@@ -370,10 +349,6 @@ if (NOT MINGW)
install(DIRECTORY elements DESTINATION share/qelectrotech) install(DIRECTORY elements DESTINATION share/qelectrotech)
install(DIRECTORY examples DESTINATION share/qelectrotech) install(DIRECTORY examples DESTINATION share/qelectrotech)
install(DIRECTORY titleblocks DESTINATION share/qelectrotech) install(DIRECTORY titleblocks DESTINATION share/qelectrotech)
# The MCP server (misc/qet-mcp) finds this QElectroTech and its elements
# from here: <prefix>/share/qelectrotech/mcp -> <prefix>/bin.
install(PROGRAMS misc/qet-mcp/qet_mcp.py DESTINATION share/qelectrotech/mcp)
install(FILES misc/qet-mcp/README.md DESTINATION share/qelectrotech/mcp)
install(FILES LICENSE ELEMENTS.LICENSE CREDIT README ChangeLog DESTINATION share/doc/qelectrotech) install(FILES LICENSE ELEMENTS.LICENSE CREDIT README ChangeLog DESTINATION share/doc/qelectrotech)
if(UNIX AND NOT APPLE) if(UNIX AND NOT APPLE)
install(FILES misc/org.qelectrotech.qelectrotech.desktop DESTINATION share/applications) install(FILES misc/org.qelectrotech.qelectrotech.desktop DESTINATION share/applications)
-151
View File
@@ -12,157 +12,6 @@ Here are some important resources:
## Testing ## 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 ## Submitting changes
Always write a clear log message for your commits. Always write a clear log message for your commits.
-30
View File
@@ -58,36 +58,6 @@ Thanks to Elbert from the NL for packaging OS/2
Thanks to zloidemon from for packaging FreeBsd (port GCC) Thanks to zloidemon from for packaging FreeBsd (port GCC)
Thanks to Mrbit for ebuild Gentoo packaging. 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] [fr]
Merci à Qt Software pour la bibliothèque Qt ( http://www.qtsoftware.com/ ), sous licence GNU/GPL. Merci à Qt Software pour la bibliothèque Qt ( http://www.qtsoftware.com/ ), sous licence GNU/GPL.
Merci au projet KDE ( http://www.kde.org/ ). Merci au projet KDE ( http://www.kde.org/ ).
@@ -13,7 +13,7 @@
"finish-args": [ "finish-args": [
"--socket=wayland", "--socket=wayland",
"--socket=fallback-x11", "--socket=fallback-x11",
"--device=all", "--device=dri",
"--share=ipc", "--share=ipc",
"--share=network", "--share=network",
"--socket=cups", "--socket=cups",
@@ -33,23 +33,6 @@
"modules": [ "modules": [
"tkinter.json", "tkinter.json",
"pypi-dependencies.json", "pypi-dependencies.json",
{
"name": "hidapi",
"buildsystem": "cmake-ninja",
"config-opts": [
"-DCMAKE_INSTALL_PREFIX=/app",
"-DCMAKE_BUILD_TYPE=Release",
"-DHIDAPI_BUILD_HIDTEST=OFF",
"-DHIDAPI_WITH_TESTS=OFF"
],
"sources": [
{
"type": "git",
"url": "https://github.com/libusb/hidapi.git",
"tag": "hidapi-0.15.0"
}
]
},
{ {
"name": "qelectrotech", "name": "qelectrotech",
"buildsystem": "cmake", "buildsystem": "cmake",
@@ -62,9 +45,7 @@
"-DBUILD_PUGIXML=ON", "-DBUILD_PUGIXML=ON",
"-DFETCHCONTENT_FULLY_DISCONNECTED=ON", "-DFETCHCONTENT_FULLY_DISCONNECTED=ON",
"-DFETCHCONTENT_SOURCE_DIR_PUGIXML=/run/build/qelectrotech/pugixml", "-DFETCHCONTENT_SOURCE_DIR_PUGIXML=/run/build/qelectrotech/pugixml",
"-DQET_EXPORT_PROJECT_DB=ON", "-DQET_EXPORT_PROJECT_DB=ON"
"-DQET_ENABLE_SPACEMOUSE=ON",
"-DQET_SPACEMOUSE_BACKEND=hid"
], ],
"post-install": [ "post-install": [
"mv ${FLATPAK_DEST}/share/mime/packages/qelectrotech.xml ${FLATPAK_DEST}/share/mime/packages/org.qelectrotech.QElectroTech.xml" "mv ${FLATPAK_DEST}/share/mime/packages/qelectrotech.xml ${FLATPAK_DEST}/share/mime/packages/org.qelectrotech.QElectroTech.xml"
+1 -4
View File
@@ -50,7 +50,6 @@ parts:
- python3-lxml - python3-lxml
- python3-tk - python3-tk
- libtk8.6 - libtk8.6
- libspnav0
kde-sdk-setup: kde-sdk-setup:
plugin: nil plugin: nil
@@ -93,7 +92,6 @@ parts:
# runs FindCups at configure time and fails without the CUPS headers. # runs FindCups at configure time and fails without the CUPS headers.
# Build-time only: nothing from it is staged into the snap. # Build-time only: nothing from it is staged into the snap.
- libcups2-dev - libcups2-dev
- libspnav-dev
override-build: | override-build: |
displayed_version=$(cat sources/qetversion.cpp | grep "return QVersionNumber{"| head -n 1| awk -F "{" '{ print $2 }' | awk -F "}" '{ print $1 }' | sed -e 's/,/./g' -e 's/ //g') displayed_version=$(cat sources/qetversion.cpp | grep "return QVersionNumber{"| head -n 1| awk -F "{" '{ print $2 }' | awk -F "}" '{ print $1 }' | sed -e 's/,/./g' -e 's/ //g')
snap_version="${displayed_version}-g$(git rev-parse --short=8 HEAD)" snap_version="${displayed_version}-g$(git rev-parse --short=8 HEAD)"
@@ -108,8 +106,7 @@ parts:
-DBUILD_KF=OFF \ -DBUILD_KF=OFF \
-DPACKAGE_TESTS=OFF \ -DPACKAGE_TESTS=OFF \
-DBUILD_PUGIXML=ON \ -DBUILD_PUGIXML=ON \
-DQET_EXPORT_PROJECT_DB=ON \ -DQET_EXPORT_PROJECT_DB=ON
-DQET_ENABLE_SPACEMOUSE=ON
ninja -C build -j${CRAFT_PARALLEL_BUILD_COUNT} ninja -C build -j${CRAFT_PARALLEL_BUILD_COUNT}
DESTDIR="$CRAFT_PART_INSTALL" ninja -C build install DESTDIR="$CRAFT_PART_INSTALL" ninja -C build install
override-stage: | override-stage: |
-17
View File
@@ -274,21 +274,6 @@ Section "$(Fonts)" SEC05
File /nonfatal /r "./files/fonts" File /nonfatal /r "./files/fonts"
SectionEnd SectionEnd
; The MCP server lets an AI assistant open, check and edit drawings. It does
; nothing until a user sets up an assistant to start it.
Section "$(Mcp)" SEC06
SetOutPath "$INSTDIR\mcp"
File /nonfatal "./files/mcp/*"
SectionEnd
; Python for the MCP server, from python.org (about 12 MB). Unticked by
; default: only someone setting up an AI assistant needs it, and then only
; without a Python of their own. Uninstall removes it with $INSTDIR.
Section /o "$(McpPython)" SEC07
SetOutPath "$INSTDIR\mcp\python"
File /nonfatal /r "./files/mcp/python/*"
SectionEnd
;-------------------------------- ;--------------------------------
; Component descriptions ; Component descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
@@ -297,8 +282,6 @@ SectionEnd
!insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $(var3) !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $(var3)
!insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $(var4) !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $(var4)
!insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $(var5) !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $(var5)
!insertmacro MUI_DESCRIPTION_TEXT ${SEC06} $(var6)
!insertmacro MUI_DESCRIPTION_TEXT ${SEC07} $(var7)
!insertmacro MUI_FUNCTION_DESCRIPTION_END !insertmacro MUI_FUNCTION_DESCRIPTION_END
;-------------------------------- ;--------------------------------
-64
View File
@@ -19,10 +19,6 @@
LangString var3 ${LANG_ENGLISH} "Examples of cartridges" LangString var3 ${LANG_ENGLISH} "Examples of cartridges"
LangString var4 ${LANG_ENGLISH} "Examples of diagrams" LangString var4 ${LANG_ENGLISH} "Examples of diagrams"
LangString var5 ${LANG_ENGLISH} "Fonts" LangString var5 ${LANG_ENGLISH} "Fonts"
LangString Mcp ${LANG_ENGLISH} "AI assistant (MCP)"
LangString var6 ${LANG_ENGLISH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_ENGLISH} "Python for the AI assistant"
LangString var7 ${LANG_ENGLISH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_ENGLISH} "Uninstallation of the previous version failed.$\nPlease uninstall ${SOFT_NAME} manually before continuing." LangString uninstFailed ${LANG_ENGLISH} "Uninstallation of the previous version failed.$\nPlease uninstall ${SOFT_NAME} manually before continuing."
@@ -47,10 +43,6 @@
LangString var3 ${LANG_KOREAN} "표제란 예제" LangString var3 ${LANG_KOREAN} "표제란 예제"
LangString var4 ${LANG_KOREAN} "도면 예제" LangString var4 ${LANG_KOREAN} "도면 예제"
LangString var5 ${LANG_KOREAN} "글꼴" LangString var5 ${LANG_KOREAN} "글꼴"
LangString Mcp ${LANG_KOREAN} "AI assistant (MCP)"
LangString var6 ${LANG_KOREAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_KOREAN} "Python for the AI assistant"
LangString var7 ${LANG_KOREAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_KOREAN} "이전 버전을 제거하지 못했습니다.$\n계속하기 전에 ${SOFT_NAME}을(를) 수동으로 제거해 주세요." LangString uninstFailed ${LANG_KOREAN} "이전 버전을 제거하지 못했습니다.$\n계속하기 전에 ${SOFT_NAME}을(를) 수동으로 제거해 주세요."
@@ -75,10 +67,6 @@
LangString var3 ${LANG_POLISH} "Przykłady tabliczek rysunkowych" LangString var3 ${LANG_POLISH} "Przykłady tabliczek rysunkowych"
LangString var4 ${LANG_POLISH} "Przykłady schematów" LangString var4 ${LANG_POLISH} "Przykłady schematów"
LangString var5 ${LANG_POLISH} "Czcionki" LangString var5 ${LANG_POLISH} "Czcionki"
LangString Mcp ${LANG_POLISH} "AI assistant (MCP)"
LangString var6 ${LANG_POLISH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_POLISH} "Python for the AI assistant"
LangString var7 ${LANG_POLISH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_POLISH} "Odinstalowanie poprzedniej wersji nie powiodło się.$\nPrzed kontynuowaniem odinstaluj ręcznie program ${SOFT_NAME}." LangString uninstFailed ${LANG_POLISH} "Odinstalowanie poprzedniej wersji nie powiodło się.$\nPrzed kontynuowaniem odinstaluj ręcznie program ${SOFT_NAME}."
@@ -103,10 +91,6 @@
LangString var3 ${LANG_GREEK} "Παραδείγματα πινακίδων" LangString var3 ${LANG_GREEK} "Παραδείγματα πινακίδων"
LangString var4 ${LANG_GREEK} "Παραδείγματα διαγραμμάτων" LangString var4 ${LANG_GREEK} "Παραδείγματα διαγραμμάτων"
LangString var5 ${LANG_GREEK} "Γραμματοσειρές" LangString var5 ${LANG_GREEK} "Γραμματοσειρές"
LangString Mcp ${LANG_GREEK} "AI assistant (MCP)"
LangString var6 ${LANG_GREEK} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_GREEK} "Python for the AI assistant"
LangString var7 ${LANG_GREEK} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_GREEK} "Η απεγκατάσταση της προηγούμενης έκδοσης απέτυχε.$\nΠαρακαλώ απεγκαταστήστε χειροκίνητα το ${SOFT_NAME} πριν συνεχίσετε." LangString uninstFailed ${LANG_GREEK} "Η απεγκατάσταση της προηγούμενης έκδοσης απέτυχε.$\nΠαρακαλώ απεγκαταστήστε χειροκίνητα το ${SOFT_NAME} πριν συνεχίσετε."
@@ -131,10 +115,6 @@
LangString var3 ${LANG_CZECH} "Příklady popisových polí" LangString var3 ${LANG_CZECH} "Příklady popisových polí"
LangString var4 ${LANG_CZECH} "Příklady schémat" LangString var4 ${LANG_CZECH} "Příklady schémat"
LangString var5 ${LANG_CZECH} "Písma" LangString var5 ${LANG_CZECH} "Písma"
LangString Mcp ${LANG_CZECH} "AI assistant (MCP)"
LangString var6 ${LANG_CZECH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_CZECH} "Python for the AI assistant"
LangString var7 ${LANG_CZECH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_CZECH} "Odinstalování předchozí verze se nezdařilo.$\nPřed pokračováním prosím odinstalujte ${SOFT_NAME} ručně." LangString uninstFailed ${LANG_CZECH} "Odinstalování předchozí verze se nezdařilo.$\nPřed pokračováním prosím odinstalujte ${SOFT_NAME} ručně."
@@ -159,10 +139,6 @@
LangString var3 ${LANG_SPANISH} "Ejemplos de cartelas" LangString var3 ${LANG_SPANISH} "Ejemplos de cartelas"
LangString var4 ${LANG_SPANISH} "Ejemplos de esquemas" LangString var4 ${LANG_SPANISH} "Ejemplos de esquemas"
LangString var5 ${LANG_SPANISH} "Fuentes" LangString var5 ${LANG_SPANISH} "Fuentes"
LangString Mcp ${LANG_SPANISH} "AI assistant (MCP)"
LangString var6 ${LANG_SPANISH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_SPANISH} "Python for the AI assistant"
LangString var7 ${LANG_SPANISH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_SPANISH} "La desinstalación de la versión anterior ha fallado.$\nPor favor, desinstale ${SOFT_NAME} manualmente antes de continuar." LangString uninstFailed ${LANG_SPANISH} "La desinstalación de la versión anterior ha fallado.$\nPor favor, desinstale ${SOFT_NAME} manualmente antes de continuar."
@@ -187,10 +163,6 @@
LangString var3 ${LANG_GERMAN} "Schriftfeld-Beispiele" LangString var3 ${LANG_GERMAN} "Schriftfeld-Beispiele"
LangString var4 ${LANG_GERMAN} "Schaltplan-Beispiele" LangString var4 ${LANG_GERMAN} "Schaltplan-Beispiele"
LangString var5 ${LANG_GERMAN} "Schriften" LangString var5 ${LANG_GERMAN} "Schriften"
LangString Mcp ${LANG_GERMAN} "AI assistant (MCP)"
LangString var6 ${LANG_GERMAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_GERMAN} "Python for the AI assistant"
LangString var7 ${LANG_GERMAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_GERMAN} "Die Deinstallation der vorherigen Version ist fehlgeschlagen.$\nBitte deinstallieren Sie ${SOFT_NAME} manuell, bevor Sie fortfahren." LangString uninstFailed ${LANG_GERMAN} "Die Deinstallation der vorherigen Version ist fehlgeschlagen.$\nBitte deinstallieren Sie ${SOFT_NAME} manuell, bevor Sie fortfahren."
@@ -215,10 +187,6 @@
LangString var3 ${LANG_RUSSIAN} "Примеры штампов" LangString var3 ${LANG_RUSSIAN} "Примеры штампов"
LangString var4 ${LANG_RUSSIAN} "Примеры схем" LangString var4 ${LANG_RUSSIAN} "Примеры схем"
LangString var5 ${LANG_RUSSIAN} "Шрифты" LangString var5 ${LANG_RUSSIAN} "Шрифты"
LangString Mcp ${LANG_RUSSIAN} "AI assistant (MCP)"
LangString var6 ${LANG_RUSSIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_RUSSIAN} "Python for the AI assistant"
LangString var7 ${LANG_RUSSIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_RUSSIAN} "Удаление предыдущей версии завершилось с ошибкой.$\nПожалуйста, удалите ${SOFT_NAME} вручную перед продолжением." LangString uninstFailed ${LANG_RUSSIAN} "Удаление предыдущей версии завершилось с ошибкой.$\nПожалуйста, удалите ${SOFT_NAME} вручную перед продолжением."
@@ -243,10 +211,6 @@
LangString var3 ${LANG_ARABIC} "أمثلة على كتل العنوان" LangString var3 ${LANG_ARABIC} "أمثلة على كتل العنوان"
LangString var4 ${LANG_ARABIC} "أمثلة على المخططات" LangString var4 ${LANG_ARABIC} "أمثلة على المخططات"
LangString var5 ${LANG_ARABIC} "الخطوط" LangString var5 ${LANG_ARABIC} "الخطوط"
LangString Mcp ${LANG_ARABIC} "AI assistant (MCP)"
LangString var6 ${LANG_ARABIC} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_ARABIC} "Python for the AI assistant"
LangString var7 ${LANG_ARABIC} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_ARABIC} "فشل إلغاء تثبيت الإصدار السابق. يرجى إلغاء تثبيت ${SOFT_NAME} يدويًا قبل المتابعة." LangString uninstFailed ${LANG_ARABIC} "فشل إلغاء تثبيت الإصدار السابق. يرجى إلغاء تثبيت ${SOFT_NAME} يدويًا قبل المتابعة."
@@ -271,10 +235,6 @@
LangString var3 ${LANG_CATALAN} "Exemples de cartutxos" LangString var3 ${LANG_CATALAN} "Exemples de cartutxos"
LangString var4 ${LANG_CATALAN} "Exemples d'esquemes" LangString var4 ${LANG_CATALAN} "Exemples d'esquemes"
LangString var5 ${LANG_CATALAN} "Tipus de lletra" LangString var5 ${LANG_CATALAN} "Tipus de lletra"
LangString Mcp ${LANG_CATALAN} "AI assistant (MCP)"
LangString var6 ${LANG_CATALAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_CATALAN} "Python for the AI assistant"
LangString var7 ${LANG_CATALAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_CATALAN} "La desinstal·lació de la versió anterior ha fallat.$\nSi us plau, desinstal·leu ${SOFT_NAME} manualment abans de continuar." LangString uninstFailed ${LANG_CATALAN} "La desinstal·lació de la versió anterior ha fallat.$\nSi us plau, desinstal·leu ${SOFT_NAME} manualment abans de continuar."
@@ -299,10 +259,6 @@
LangString var3 ${LANG_ITALIAN} "Cartigli di esempio" LangString var3 ${LANG_ITALIAN} "Cartigli di esempio"
LangString var4 ${LANG_ITALIAN} "Schemi di esempio" LangString var4 ${LANG_ITALIAN} "Schemi di esempio"
LangString var5 ${LANG_ITALIAN} "Caratteri" LangString var5 ${LANG_ITALIAN} "Caratteri"
LangString Mcp ${LANG_ITALIAN} "AI assistant (MCP)"
LangString var6 ${LANG_ITALIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_ITALIAN} "Python for the AI assistant"
LangString var7 ${LANG_ITALIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_ITALIAN} "La disinstallazione della versione precedente non è riuscita.$\nSi prega di disinstallare ${SOFT_NAME} manualmente prima di continuare." LangString uninstFailed ${LANG_ITALIAN} "La disinstallazione della versione precedente non è riuscita.$\nSi prega di disinstallare ${SOFT_NAME} manualmente prima di continuare."
@@ -327,10 +283,6 @@
LangString var3 ${LANG_PORTUGUESE} "Exemplos de legendas" LangString var3 ${LANG_PORTUGUESE} "Exemplos de legendas"
LangString var4 ${LANG_PORTUGUESE} "Exemplos de esquemas" LangString var4 ${LANG_PORTUGUESE} "Exemplos de esquemas"
LangString var5 ${LANG_PORTUGUESE} "Fontes" LangString var5 ${LANG_PORTUGUESE} "Fontes"
LangString Mcp ${LANG_PORTUGUESE} "AI assistant (MCP)"
LangString var6 ${LANG_PORTUGUESE} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_PORTUGUESE} "Python for the AI assistant"
LangString var7 ${LANG_PORTUGUESE} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_PORTUGUESE} "A desinstalação da versão anterior falhou.$\nPor favor, desinstale ${SOFT_NAME} manualmente antes de continuar." LangString uninstFailed ${LANG_PORTUGUESE} "A desinstalação da versão anterior falhou.$\nPor favor, desinstale ${SOFT_NAME} manualmente antes de continuar."
@@ -355,10 +307,6 @@
LangString var3 ${LANG_ROMANIAN} "Exemple de cartușe" LangString var3 ${LANG_ROMANIAN} "Exemple de cartușe"
LangString var4 ${LANG_ROMANIAN} "Exemple de scheme" LangString var4 ${LANG_ROMANIAN} "Exemple de scheme"
LangString var5 ${LANG_ROMANIAN} "Fonturi" LangString var5 ${LANG_ROMANIAN} "Fonturi"
LangString Mcp ${LANG_ROMANIAN} "AI assistant (MCP)"
LangString var6 ${LANG_ROMANIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_ROMANIAN} "Python for the AI assistant"
LangString var7 ${LANG_ROMANIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_ROMANIAN} "Dezinstalarea versiunii anterioare a eșuat.$\nVă rugăm să dezinstalați ${SOFT_NAME} manual înainte de a continua." LangString uninstFailed ${LANG_ROMANIAN} "Dezinstalarea versiunii anterioare a eșuat.$\nVă rugăm să dezinstalați ${SOFT_NAME} manual înainte de a continua."
@@ -383,10 +331,6 @@
LangString var3 ${LANG_CROATIAN} "Primjeri zaglavlja" LangString var3 ${LANG_CROATIAN} "Primjeri zaglavlja"
LangString var4 ${LANG_CROATIAN} "Primjeri shema" LangString var4 ${LANG_CROATIAN} "Primjeri shema"
LangString var5 ${LANG_CROATIAN} "Fontovi" LangString var5 ${LANG_CROATIAN} "Fontovi"
LangString Mcp ${LANG_CROATIAN} "AI assistant (MCP)"
LangString var6 ${LANG_CROATIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_CROATIAN} "Python for the AI assistant"
LangString var7 ${LANG_CROATIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_CROATIAN} "Deinstalacija prethodne verzije nije uspjela.$\nMolimo deinstalirajte ${SOFT_NAME} ručno prije nastavka." LangString uninstFailed ${LANG_CROATIAN} "Deinstalacija prethodne verzije nije uspjela.$\nMolimo deinstalirajte ${SOFT_NAME} ručno prije nastavka."
@@ -411,10 +355,6 @@
LangString var3 ${LANG_DUTCH} "Voorbeelden van titelblokken" LangString var3 ${LANG_DUTCH} "Voorbeelden van titelblokken"
LangString var4 ${LANG_DUTCH} "Voorbeelden van schema's" LangString var4 ${LANG_DUTCH} "Voorbeelden van schema's"
LangString var5 ${LANG_DUTCH} "Lettertypen" LangString var5 ${LANG_DUTCH} "Lettertypen"
LangString Mcp ${LANG_DUTCH} "AI assistant (MCP)"
LangString var6 ${LANG_DUTCH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_DUTCH} "Python for the AI assistant"
LangString var7 ${LANG_DUTCH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_DUTCH} "Het verwijderen van de vorige versie is mislukt.$\nVerwijder ${SOFT_NAME} handmatig voordat u verdergaat." LangString uninstFailed ${LANG_DUTCH} "Het verwijderen van de vorige versie is mislukt.$\nVerwijder ${SOFT_NAME} handmatig voordat u verdergaat."
@@ -439,10 +379,6 @@
LangString var3 ${LANG_DANISH} "Titel blokke eksempler" LangString var3 ${LANG_DANISH} "Titel blokke eksempler"
LangString var4 ${LANG_DANISH} "Diagram eksempler" LangString var4 ${LANG_DANISH} "Diagram eksempler"
LangString var5 ${LANG_DANISH} "Skrifttyper" LangString var5 ${LANG_DANISH} "Skrifttyper"
LangString Mcp ${LANG_DANISH} "AI assistant (MCP)"
LangString var6 ${LANG_DANISH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_DANISH} "Python for the AI assistant"
LangString var7 ${LANG_DANISH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_DANISH} "Afinstallation af den tidligere version mislykkedes.$\nAfinstaller venligst ${SOFT_NAME} manuelt, inden du fortsætter." LangString uninstFailed ${LANG_DANISH} "Afinstallation af den tidligere version mislykkedes.$\nAfinstaller venligst ${SOFT_NAME} manuelt, inden du fortsætter."
-4
View File
@@ -19,8 +19,4 @@
LangString var3 ${LANG_FRENCH} "Exemples de cartouches" LangString var3 ${LANG_FRENCH} "Exemples de cartouches"
LangString var4 ${LANG_FRENCH} "Exemples de schémas" LangString var4 ${LANG_FRENCH} "Exemples de schémas"
LangString var5 ${LANG_FRENCH} "Polices" LangString var5 ${LANG_FRENCH} "Polices"
LangString Mcp ${LANG_FRENCH} "Assistant IA (MCP)"
LangString var6 ${LANG_FRENCH} "Permet à un assistant IA d'ouvrir, vérifier et modifier vos schémas. Nécessite Python : le vôtre, ou celui proposé ci-dessous"
LangString McpPython ${LANG_FRENCH} "Python pour l'assistant IA"
LangString var7 ${LANG_FRENCH} "Python de python.org, utilisé uniquement par le composant Assistant IA. Inutile si Python est déjà installé (environ 12 Mo)"
LangString uninstFailed ${LANG_FRENCH} "La désinstallation de la version précédente a échoué.$\nVeuillez désinstaller ${SOFT_NAME} manuellement avant de continuer." LangString uninstFailed ${LANG_FRENCH} "La désinstallation de la version précédente a échoué.$\nVeuillez désinstaller ${SOFT_NAME} manuellement avant de continuer."
-48
View File
@@ -25,10 +25,6 @@
LangString var3 ${LANG_HUNGARIAN} "Rajzfejléc-példák" LangString var3 ${LANG_HUNGARIAN} "Rajzfejléc-példák"
LangString var4 ${LANG_HUNGARIAN} "Kapcsolási rajz példák" LangString var4 ${LANG_HUNGARIAN} "Kapcsolási rajz példák"
LangString var5 ${LANG_HUNGARIAN} "Betűtípusok" LangString var5 ${LANG_HUNGARIAN} "Betűtípusok"
LangString Mcp ${LANG_HUNGARIAN} "AI assistant (MCP)"
LangString var6 ${LANG_HUNGARIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_HUNGARIAN} "Python for the AI assistant"
LangString var7 ${LANG_HUNGARIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_HUNGARIAN} "Az előző verzió eltávolítása nem sikerült.$\nKérjük, távolítsa el manuálisan a ${SOFT_NAME} programot, mielőtt folytatná." LangString uninstFailed ${LANG_HUNGARIAN} "Az előző verzió eltávolítása nem sikerült.$\nKérjük, távolítsa el manuálisan a ${SOFT_NAME} programot, mielőtt folytatná."
@@ -56,10 +52,6 @@
LangString var3 ${LANG_JAPANESE} "表題欄の例" LangString var3 ${LANG_JAPANESE} "表題欄の例"
LangString var4 ${LANG_JAPANESE} "回路図の例" LangString var4 ${LANG_JAPANESE} "回路図の例"
LangString var5 ${LANG_JAPANESE} "フォント" LangString var5 ${LANG_JAPANESE} "フォント"
LangString Mcp ${LANG_JAPANESE} "AI assistant (MCP)"
LangString var6 ${LANG_JAPANESE} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_JAPANESE} "Python for the AI assistant"
LangString var7 ${LANG_JAPANESE} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_JAPANESE} "前のバージョンのアンインストールに失敗しました。$\n続行する前に、${SOFT_NAME} を手動でアンインストールしてください。" LangString uninstFailed ${LANG_JAPANESE} "前のバージョンのアンインストールに失敗しました。$\n続行する前に、${SOFT_NAME} を手動でアンインストールしてください。"
@@ -87,10 +79,6 @@
LangString var3 ${LANG_MONGOLIAN} "Гарчгийн блокын жишээнүүд" LangString var3 ${LANG_MONGOLIAN} "Гарчгийн блокын жишээнүүд"
LangString var4 ${LANG_MONGOLIAN} "Схемийн жишээнүүд" LangString var4 ${LANG_MONGOLIAN} "Схемийн жишээнүүд"
LangString var5 ${LANG_MONGOLIAN} "Фонт" LangString var5 ${LANG_MONGOLIAN} "Фонт"
LangString Mcp ${LANG_MONGOLIAN} "AI assistant (MCP)"
LangString var6 ${LANG_MONGOLIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_MONGOLIAN} "Python for the AI assistant"
LangString var7 ${LANG_MONGOLIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_MONGOLIAN} "Өмнөх хувилбарыг устгаж чадсангүй.$\nҮргэлжлүүлэхийн өмнө ${SOFT_NAME}-г гараар устгана уу." LangString uninstFailed ${LANG_MONGOLIAN} "Өмнөх хувилбарыг устгаж чадсангүй.$\nҮргэлжлүүлэхийн өмнө ${SOFT_NAME}-г гараар устгана уу."
@@ -118,10 +106,6 @@
LangString var3 ${LANG_NORWEGIAN} "Eksempler på titelblokker" LangString var3 ${LANG_NORWEGIAN} "Eksempler på titelblokker"
LangString var4 ${LANG_NORWEGIAN} "Eksempler på skjemaer" LangString var4 ${LANG_NORWEGIAN} "Eksempler på skjemaer"
LangString var5 ${LANG_NORWEGIAN} "Skrifttyper" LangString var5 ${LANG_NORWEGIAN} "Skrifttyper"
LangString Mcp ${LANG_NORWEGIAN} "AI assistant (MCP)"
LangString var6 ${LANG_NORWEGIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_NORWEGIAN} "Python for the AI assistant"
LangString var7 ${LANG_NORWEGIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_NORWEGIAN} "Avinstallasjon av forrige versjon mislyktes.$\nVennligst avinstaller ${SOFT_NAME} manuelt før du fortsetter." LangString uninstFailed ${LANG_NORWEGIAN} "Avinstallasjon av forrige versjon mislyktes.$\nVennligst avinstaller ${SOFT_NAME} manuelt før du fortsetter."
@@ -159,10 +143,6 @@
LangString var3 ${LANG_PORTUGUESEBR} "Exemplos de legendas" LangString var3 ${LANG_PORTUGUESEBR} "Exemplos de legendas"
LangString var4 ${LANG_PORTUGUESEBR} "Exemplos de esquemas" LangString var4 ${LANG_PORTUGUESEBR} "Exemplos de esquemas"
LangString var5 ${LANG_PORTUGUESEBR} "Fontes" LangString var5 ${LANG_PORTUGUESEBR} "Fontes"
LangString Mcp ${LANG_PORTUGUESEBR} "AI assistant (MCP)"
LangString var6 ${LANG_PORTUGUESEBR} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_PORTUGUESEBR} "Python for the AI assistant"
LangString var7 ${LANG_PORTUGUESEBR} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_PORTUGUESEBR} "A desinstalação da versão anterior falhou.$\nPor favor, desinstale ${SOFT_NAME} manualmente antes de continuar." LangString uninstFailed ${LANG_PORTUGUESEBR} "A desinstalação da versão anterior falhou.$\nPor favor, desinstale ${SOFT_NAME} manualmente antes de continuar."
@@ -190,10 +170,6 @@
LangString var3 ${LANG_SERBIAN} "Примери заглавља" LangString var3 ${LANG_SERBIAN} "Примери заглавља"
LangString var4 ${LANG_SERBIAN} "Примери шема" LangString var4 ${LANG_SERBIAN} "Примери шема"
LangString var5 ${LANG_SERBIAN} "Фонтови" LangString var5 ${LANG_SERBIAN} "Фонтови"
LangString Mcp ${LANG_SERBIAN} "AI assistant (MCP)"
LangString var6 ${LANG_SERBIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_SERBIAN} "Python for the AI assistant"
LangString var7 ${LANG_SERBIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_SERBIAN} "Деинсталација претходне верзије није успела.$\nМолимо деинсталирајте ${SOFT_NAME} ручно пре наставка." LangString uninstFailed ${LANG_SERBIAN} "Деинсталација претходне верзије није успела.$\nМолимо деинсталирајте ${SOFT_NAME} ручно пре наставка."
@@ -221,10 +197,6 @@
LangString var3 ${LANG_SLOVAK} "Príklady popisových polí" LangString var3 ${LANG_SLOVAK} "Príklady popisových polí"
LangString var4 ${LANG_SLOVAK} "Príklady schém" LangString var4 ${LANG_SLOVAK} "Príklady schém"
LangString var5 ${LANG_SLOVAK} "Písma" LangString var5 ${LANG_SLOVAK} "Písma"
LangString Mcp ${LANG_SLOVAK} "AI assistant (MCP)"
LangString var6 ${LANG_SLOVAK} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_SLOVAK} "Python for the AI assistant"
LangString var7 ${LANG_SLOVAK} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_SLOVAK} "Odinštalovanie predchádzajúcej verzie zlyhalo.$\nPred pokračovaním odinštalujte ${SOFT_NAME} ručne." LangString uninstFailed ${LANG_SLOVAK} "Odinštalovanie predchádzajúcej verzie zlyhalo.$\nPred pokračovaním odinštalujte ${SOFT_NAME} ručne."
@@ -252,10 +224,6 @@
LangString var3 ${LANG_SLOVENIAN} "Primeri glav risb" LangString var3 ${LANG_SLOVENIAN} "Primeri glav risb"
LangString var4 ${LANG_SLOVENIAN} "Primeri shem" LangString var4 ${LANG_SLOVENIAN} "Primeri shem"
LangString var5 ${LANG_SLOVENIAN} "Pisave" LangString var5 ${LANG_SLOVENIAN} "Pisave"
LangString Mcp ${LANG_SLOVENIAN} "AI assistant (MCP)"
LangString var6 ${LANG_SLOVENIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_SLOVENIAN} "Python for the AI assistant"
LangString var7 ${LANG_SLOVENIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_SLOVENIAN} "Odstranitev prejšnje različice ni uspela.$\nPred nadaljevanjem ročno odstranite ${SOFT_NAME}." LangString uninstFailed ${LANG_SLOVENIAN} "Odstranitev prejšnje različice ni uspela.$\nPred nadaljevanjem ročno odstranite ${SOFT_NAME}."
@@ -283,10 +251,6 @@
LangString var3 ${LANG_SWEDISH} "Exempel på ritningshuvuden" LangString var3 ${LANG_SWEDISH} "Exempel på ritningshuvuden"
LangString var4 ${LANG_SWEDISH} "Exempel på scheman" LangString var4 ${LANG_SWEDISH} "Exempel på scheman"
LangString var5 ${LANG_SWEDISH} "Teckensnitt" LangString var5 ${LANG_SWEDISH} "Teckensnitt"
LangString Mcp ${LANG_SWEDISH} "AI assistant (MCP)"
LangString var6 ${LANG_SWEDISH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_SWEDISH} "Python for the AI assistant"
LangString var7 ${LANG_SWEDISH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_SWEDISH} "Avinstallationen av den föregående versionen misslyckades.$\nAvinstallera ${SOFT_NAME} manuellt innan du fortsätter." LangString uninstFailed ${LANG_SWEDISH} "Avinstallationen av den föregående versionen misslyckades.$\nAvinstallera ${SOFT_NAME} manuellt innan du fortsätter."
@@ -314,10 +278,6 @@
LangString var3 ${LANG_TURKISH} "Başlık bloğu örnekleri" LangString var3 ${LANG_TURKISH} "Başlık bloğu örnekleri"
LangString var4 ${LANG_TURKISH} "Şema örnekleri" LangString var4 ${LANG_TURKISH} "Şema örnekleri"
LangString var5 ${LANG_TURKISH} "Yazı Tipleri" LangString var5 ${LANG_TURKISH} "Yazı Tipleri"
LangString Mcp ${LANG_TURKISH} "AI assistant (MCP)"
LangString var6 ${LANG_TURKISH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_TURKISH} "Python for the AI assistant"
LangString var7 ${LANG_TURKISH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_TURKISH} "Önceki sürümün kaldırılması başarısız oldu.$\nDevam etmeden önce lütfen ${SOFT_NAME}'i manuel olarak kaldırın." LangString uninstFailed ${LANG_TURKISH} "Önceki sürümün kaldırılması başarısız oldu.$\nDevam etmeden önce lütfen ${SOFT_NAME}'i manuel olarak kaldırın."
@@ -345,10 +305,6 @@
LangString var3 ${LANG_UKRAINIAN} "Приклади штампів" LangString var3 ${LANG_UKRAINIAN} "Приклади штампів"
LangString var4 ${LANG_UKRAINIAN} "Приклади схем" LangString var4 ${LANG_UKRAINIAN} "Приклади схем"
LangString var5 ${LANG_UKRAINIAN} "Шрифти" LangString var5 ${LANG_UKRAINIAN} "Шрифти"
LangString Mcp ${LANG_UKRAINIAN} "AI assistant (MCP)"
LangString var6 ${LANG_UKRAINIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_UKRAINIAN} "Python for the AI assistant"
LangString var7 ${LANG_UKRAINIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_UKRAINIAN} "Видалення попередньої версії завершилося помилкою.$\nБудь ласка, видаліть ${SOFT_NAME} вручну перед продовженням." LangString uninstFailed ${LANG_UKRAINIAN} "Видалення попередньої версії завершилося помилкою.$\nБудь ласка, видаліть ${SOFT_NAME} вручну перед продовженням."
@@ -376,8 +332,4 @@
LangString var3 ${LANG_SIMPCHINESE} "标题栏示例" LangString var3 ${LANG_SIMPCHINESE} "标题栏示例"
LangString var4 ${LANG_SIMPCHINESE} "图纸示例" LangString var4 ${LANG_SIMPCHINESE} "图纸示例"
LangString var5 ${LANG_SIMPCHINESE} "字体" LangString var5 ${LANG_SIMPCHINESE} "字体"
LangString Mcp ${LANG_SIMPCHINESE} "AI assistant (MCP)"
LangString var6 ${LANG_SIMPCHINESE} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below"
LangString McpPython ${LANG_SIMPCHINESE} "Python for the AI assistant"
LangString var7 ${LANG_SIMPCHINESE} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)"
LangString uninstFailed ${LANG_SIMPCHINESE} "卸载旧版本失败。$\n请在继续之前手动卸载 ${SOFT_NAME}。" LangString uninstFailed ${LANG_SIMPCHINESE} "卸载旧版本失败。$\n请在继续之前手动卸载 ${SOFT_NAME}。"
@@ -1,12 +1,5 @@
Windows Registry Editor Version 5.00 Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USER\Software\Classes\Applications\qelectrotech.exe\shell\open\command]
[-HKEY_CURRENT_USER\Software\Classes\.qet]
[-HKEY_CURRENT_USER\Software\Classes\qet_diagram_file]
[-HKEY_CURRENT_USER\Software\Classes\.elmt]
[-HKEY_CURRENT_USER\Software\Classes\qet_element_file]
[-HKEY_CURRENT_USER\Software\Classes\.titleblock]
[-HKEY_CURRENT_USER\Software\Classes\qet_titleblock_file]
[-HKEY_CLASSES_ROOT\Applications\qelectrotech.exe\shell\open\command] [-HKEY_CLASSES_ROOT\Applications\qelectrotech.exe\shell\open\command]
[-HKEY_CLASSES_ROOT\.qet] [-HKEY_CLASSES_ROOT\.qet]
[-HKEY_CLASSES_ROOT\qet_diagram_file] [-HKEY_CLASSES_ROOT\qet_diagram_file]
@@ -5,9 +5,7 @@ rem detecte le dossier courant et suppose que celui-ci contient bin\qelectrotech
set current_dir=%~dp0 set current_dir=%~dp0
cd /d %current_dir% cd /d %current_dir%
rem l'archive portable fournit "Lancer QET_qt6.bat", l'installeur "Lancer QET.bat" set expected_qet_exe=%current_dir%Lancer QET.bat
set expected_qet_exe=%current_dir%Lancer QET_qt6.bat
if not exist "%expected_qet_exe%" set expected_qet_exe=%current_dir%Lancer QET.bat
set expected_project_ico=%current_dir%ico\application-x-qet-project.ico set expected_project_ico=%current_dir%ico\application-x-qet-project.ico
set expected_element_ico=%current_dir%ico\application-x-qet-element.ico set expected_element_ico=%current_dir%ico\application-x-qet-element.ico
set expected_titleblock_ico=%current_dir%ico\application-x-qet-titleblock.ico set expected_titleblock_ico=%current_dir%ico\application-x-qet-titleblock.ico
@@ -47,50 +45,49 @@ set final_element_ico=%expected_element_ico:\=\\%
set final_titleblock_ico=%expected_titleblock_ico:\=\\% set final_titleblock_ico=%expected_titleblock_ico:\=\\%
rem genere le fichier .reg pour enregistrer les associations de fichiers rem genere le fichier .reg pour enregistrer les associations de fichiers
rem HKEY_CURRENT_USER : ne demande pas les droits administrateur
set reg_file=qet_install_file_associations.reg set reg_file=qet_install_file_associations.reg
( (
echo Windows Registry Editor Version 5.00 echo Windows Registry Editor Version 5.00
echo. echo.
rem Declaration de l'application rem Declaration de l'application
echo [HKEY_CURRENT_USER\Software\Classes\Applications\qelectrotech.exe\shell\open\command] echo [HKEY_CLASSES_ROOT\Applications\qelectrotech.exe\shell\open\command]
echo @="\"%final_qet_exe%\" \"%%1\"" echo @="\"%final_qet_exe%\" \"%%1\""
rem association de fichier *.qet rem association de fichier *.qet
echo [HKEY_CURRENT_USER\Software\Classes\.qet] echo [HKEY_CLASSES_ROOT\.qet]
echo @="qet_diagram_file" echo @="qet_diagram_file"
echo [HKEY_CURRENT_USER\Software\Classes\qet_diagram_file] echo [HKEY_CLASSES_ROOT\qet_diagram_file]
echo @="QET diagram" echo @="QET diagram"
echo "EditFlags"=dword:00000000 echo "EditFlags"=dword:00000000
echo "BrowserFlags"=dword:00000008 echo "BrowserFlags"=dword:00000008
echo [HKEY_CURRENT_USER\Software\Classes\qet_diagram_file\DefaultIcon] echo [HKEY_CLASSES_ROOT\qet_diagram_file\DefaultIcon]
echo @="%final_project_ico%,0" echo @="%final_project_ico%,0"
echo [HKEY_CURRENT_USER\Software\Classes\qet_diagram_file\shell\open\command] echo [HKEY_CLASSES_ROOT\qet_diagram_file\shell\open\command]
echo @="\"%final_qet_exe%\" \"%%1\"" echo @="\"%final_qet_exe%\" \"%%1\""
rem association de fichier *.elmt rem association de fichier *.elmt
echo [HKEY_CURRENT_USER\Software\Classes\.elmt] echo [HKEY_CLASSES_ROOT\.elmt]
echo @="qet_element_file" echo @="qet_element_file"
echo [HKEY_CURRENT_USER\Software\Classes\qet_element_file] echo [HKEY_CLASSES_ROOT\qet_element_file]
echo @="QET element" echo @="QET element"
echo "EditFlags"=dword:00000000 echo "EditFlags"=dword:00000000
echo "BrowserFlags"=dword:00000008 echo "BrowserFlags"=dword:00000008
echo [HKEY_CURRENT_USER\Software\Classes\qet_element_file\DefaultIcon] echo [HKEY_CLASSES_ROOT\qet_element_file\DefaultIcon]
echo @="%final_element_ico%,0" echo @="%final_element_ico%,0"
echo [HKEY_CURRENT_USER\Software\Classes\qet_element_file\shell\open\command] echo [HKEY_CLASSES_ROOT\qet_element_file\shell\open\command]
echo @="\"%final_qet_exe%\" \"%%1\"" echo @="\"%final_qet_exe%\" \"%%1\""
rem association de fichier *.titleblock rem association de fichier *.titleblock
echo [HKEY_CURRENT_USER\Software\Classes\.titleblock] echo [HKEY_CLASSES_ROOT\.titleblock]
echo @="qet_titleblock_file" echo @="qet_titleblock_file"
echo [HKEY_CURRENT_USER\Software\Classes\qet_titleblock_file] echo [HKEY_CLASSES_ROOT\qet_titleblock_file]
echo @="QET title block template" echo @="QET title block template"
echo "EditFlags"=dword:00000000 echo "EditFlags"=dword:00000000
echo "BrowserFlags"=dword:00000008 echo "BrowserFlags"=dword:00000008
echo [HKEY_CURRENT_USER\Software\Classes\qet_titleblock_file\DefaultIcon] echo [HKEY_CLASSES_ROOT\qet_titleblock_file\DefaultIcon]
echo @="%final_titleblock_ico%,0" echo @="%final_titleblock_ico%,0"
echo [HKEY_CURRENT_USER\Software\Classes\qet_titleblock_file\shell\open\command] echo [HKEY_CLASSES_ROOT\qet_titleblock_file\shell\open\command]
echo @="\"%final_qet_exe%\" \"%%1\"" echo @="\"%final_qet_exe%\" \"%%1\""
) > %reg_file% ) > %reg_file%
@@ -1,4 +0,0 @@
// 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@"
@@ -1,35 +0,0 @@
<?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-2026 The QElectroTech Team # Copyright 2006 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
message( message(
"_____________________________________________________________________" "_____________________________________________________________________"
"\nCopyright 2006-2026 The QElectroTech Team" "\nCopyright 2006 The QElectroTech Team"
"\nThis file is part of QElectroTech." "\nThis file is part of QElectroTech."
"\n\nQElectroTech is free software: you can redistribute it and/or modify" "\n\nQElectroTech is free software: you can redistribute it and/or modify"
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006-2026 The QElectroTech Team # Copyright 2006 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
+1 -6
View File
@@ -1,4 +1,4 @@
# Copyright 2006-2026 The QElectroTech Team # Copyright 2006 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
@@ -47,8 +47,3 @@ option(BUILD_WITH_KF "Build with KDE Frameworks" ON)
# compile for everyone else. Leaving it off keeps CI and contributors on the # compile for everyone else. Leaving it off keeps CI and contributors on the
# strict behaviour, and only developers who opt in trade that for the speed. # strict behaviour, and only developers who opt in trade that for the speed.
option(QET_ENABLE_PCH "Use precompiled headers (developer build speed; may mask missing #includes)" OFF) option(QET_ENABLE_PCH "Use precompiled headers (developer build speed; may mask missing #includes)" OFF)
# Discussion #599: 3Dconnexion SpaceMouse/SpacePilot pan/zoom support. Off by
# default -- see cmake/find_spacemouse.cmake for the backends and what happens
# when it is on but no library is found.
option(QET_ENABLE_SPACEMOUSE "Build with 3D mouse (3Dconnexion SpaceMouse) support for pan/zoom; needs libspnav or hidapi, see QET_SPACEMOUSE_BACKEND" OFF)
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006-2026 The QElectroTech Team # Copyright 2006 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006-2026 The QElectroTech Team # Copyright 2006 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006-2026 The QElectroTech Team # Copyright 2006 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
-95
View File
@@ -1,95 +0,0 @@
# Copyright 2006-2026 The QElectroTech Team
# This file is part of QElectroTech.
#
# QElectroTech is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# QElectroTech is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
message(" - find_spacemouse")
# QET_ENABLE_SPACEMOUSE (cmake/developer_options.cmake) is off by default,
# so none of this runs, and the default build is entirely unaffected: no new
# dependency, no new source files, no new symbols.
#
# When it is on, QET_SPACEMOUSE_BACKEND picks how the device is read -- see
# sources/spacemouse/spacemousebackend.h for what a backend is:
# spnav Linux, through the spacenavd daemon (libspnav)
# hid any platform, directly over USB (hidapi), no 3Dconnexion driver
# auto spnav on Linux when libspnav is found, hid otherwise
# On macOS the 3DxWare backend is added to whichever of these is chosen.
# A backend whose library is not found downgrades the option to off with a
# warning, rather than failing configure for an opt-in feature.
set(QET_SPACEMOUSE_BACKEND "auto" CACHE STRING "3D mouse backend: auto, spnav or hid")
set_property(CACHE QET_SPACEMOUSE_BACKEND PROPERTY STRINGS auto spnav hid)
set(QET_SPACEMOUSE_ENABLED FALSE)
set(QET_SPACEMOUSE_BACKEND_SPNAV_ENABLED FALSE)
set(QET_SPACEMOUSE_BACKEND_HID_ENABLED FALSE)
set(QET_SPACEMOUSE_BACKEND_CONNEXION_ENABLED FALSE)
if(QET_ENABLE_SPACEMOUSE)
find_package(PkgConfig)
set(_qet_spacemouse_try_spnav FALSE)
set(_qet_spacemouse_try_hid FALSE)
if(QET_SPACEMOUSE_BACKEND STREQUAL "spnav")
set(_qet_spacemouse_try_spnav TRUE)
elseif(QET_SPACEMOUSE_BACKEND STREQUAL "hid")
set(_qet_spacemouse_try_hid TRUE)
else()
if(UNIX AND NOT APPLE)
set(_qet_spacemouse_try_spnav TRUE)
endif()
set(_qet_spacemouse_try_hid TRUE)
endif()
# libspnav: Debian/Ubuntu's libspnav-dev ships spnav.pc.
if(_qet_spacemouse_try_spnav AND PkgConfig_FOUND)
pkg_check_modules(SPNAV IMPORTED_TARGET spnav)
if(SPNAV_FOUND)
set(QET_SPACEMOUSE_ENABLED TRUE)
set(QET_SPACEMOUSE_BACKEND_SPNAV_ENABLED TRUE)
add_definitions(-DQET_SPACEMOUSE_BACKEND_SPNAV)
message("QET_ENABLE_SPACEMOUSE ON (backend: libspnav ${SPNAV_VERSION})")
endif()
endif()
# hidapi: hidapi-hidraw.pc on Linux (libhidapi-dev), hidapi.pc from
# MSYS2 (mingw-w64-ucrt-x86_64-hidapi) and Homebrew (hidapi).
if(NOT QET_SPACEMOUSE_ENABLED AND _qet_spacemouse_try_hid AND PkgConfig_FOUND)
pkg_search_module(HIDAPI IMPORTED_TARGET hidapi-hidraw hidapi)
if(HIDAPI_FOUND)
set(QET_SPACEMOUSE_ENABLED TRUE)
set(QET_SPACEMOUSE_BACKEND_HID_ENABLED TRUE)
add_definitions(-DQET_SPACEMOUSE_BACKEND_HID)
message("QET_ENABLE_SPACEMOUSE ON (backend: hidapi ${HIDAPI_VERSION})")
endif()
endif()
# macOS: with 3DxWare installed the device can only be read through
# 3DxWare, so its backend comes too, whichever backend was asked for.
# It loads 3DxWare's library at run time and needs nothing to build.
if(APPLE)
set(QET_SPACEMOUSE_ENABLED TRUE)
set(QET_SPACEMOUSE_BACKEND_CONNEXION_ENABLED TRUE)
add_definitions(-DQET_SPACEMOUSE_BACKEND_CONNEXION)
message("QET_ENABLE_SPACEMOUSE ON (backend: 3DxWare when installed)")
endif()
if(QET_SPACEMOUSE_ENABLED)
add_definitions(-DQET_SPACEMOUSE_SUPPORT)
else()
message(WARNING "QET_ENABLE_SPACEMOUSE is ON but no library was found for the "
"'${QET_SPACEMOUSE_BACKEND}' backend (libspnav-dev for spnav, "
"hidapi for hid, via pkg-config) -- building WITHOUT 3D mouse support.")
endif()
endif()
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006-2026 The QElectroTech Team # Copyright 2006 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006-2026 The QElectroTech Team # Copyright 2006 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006-2026 The QElectroTech Team # Copyright 2006 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
+1 -3
View File
@@ -1,4 +1,4 @@
# Copyright 2006-2026 The QElectroTech Team # Copyright 2006 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
@@ -62,9 +62,7 @@ if(WIN32)
# puts the .qm files (see build-aux/windows/QElectroTech.wxs and the # puts the .qm files (see build-aux/windows/QElectroTech.wxs and the
# windows-build workflow), and what the shortcuts pass as --lang-dir. # windows-build workflow), and what the shortcuts pass as --lang-dir.
set(QET_LANG_PATH "lang/") set(QET_LANG_PATH "lang/")
set(QET_EXAMPLES_PATH "examples/")
set(QET_LICENSE_PATH "./") set(QET_LICENSE_PATH "./")
set(QET_ICONS_PATH "icons/hicolor/")
# Liste des ressources Windows # Liste des ressources Windows
#RC_FILE = qelectrotech.rc #RC_FILE = qelectrotech.rc
endif() endif()
+5 -130
View File
@@ -1,4 +1,4 @@
# Copyright 2006-2026 The QElectroTech Team # Copyright 2006 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
@@ -73,7 +73,6 @@ set(QET_RES_FILES
${QET_DIR}/sources/editor/ui/terminaleditor.ui ${QET_DIR}/sources/editor/ui/terminaleditor.ui
${QET_DIR}/sources/ElementsCollection/ui/renamedialog.ui ${QET_DIR}/sources/ElementsCollection/ui/renamedialog.ui
${QET_DIR}/sources/factory/ui/addtabledialog.ui ${QET_DIR}/sources/factory/ui/addtabledialog.ui
${QET_DIR}/sources/materiallist/materialselectiondialog.ui
${QET_DIR}/sources/NameList/ui/namelistdialog.ui ${QET_DIR}/sources/NameList/ui/namelistdialog.ui
${QET_DIR}/sources/NameList/ui/namelistwidget.ui ${QET_DIR}/sources/NameList/ui/namelistwidget.ui
${QET_DIR}/sources/print/projectprintwindow.ui ${QET_DIR}/sources/print/projectprintwindow.ui
@@ -169,20 +168,11 @@ set(QET_SRC_FILES
${QET_DIR}/sources/borderproperties.h ${QET_DIR}/sources/borderproperties.h
${QET_DIR}/sources/bordertitleblock.cpp ${QET_DIR}/sources/bordertitleblock.cpp
${QET_DIR}/sources/bordertitleblock.h ${QET_DIR}/sources/bordertitleblock.h
${QET_DIR}/sources/bordercelllabels.h
${QET_DIR}/sources/cellruler.cpp
${QET_DIR}/sources/cellruler.h
${QET_DIR}/sources/conductorautonumerotation.cpp ${QET_DIR}/sources/conductorautonumerotation.cpp
${QET_DIR}/sources/conductorautonumerotation.h ${QET_DIR}/sources/conductorautonumerotation.h
${QET_DIR}/sources/conductornumexport.cpp ${QET_DIR}/sources/conductornumexport.cpp
${QET_DIR}/sources/wiringlistexport.h ${QET_DIR}/sources/wiringlistexport.h
${QET_DIR}/sources/wiringlistexport.cpp ${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.h
${QET_DIR}/sources/ui/wiringlistdialog.cpp ${QET_DIR}/sources/ui/wiringlistdialog.cpp
${QET_DIR}/sources/conductornumexport.h ${QET_DIR}/sources/conductornumexport.h
@@ -192,7 +182,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/conductorprofile.h ${QET_DIR}/sources/conductorprofile.h
${QET_DIR}/sources/conductorproperties.cpp ${QET_DIR}/sources/conductorproperties.cpp
${QET_DIR}/sources/conductorproperties.h ${QET_DIR}/sources/conductorproperties.h
${QET_DIR}/sources/conductormultiedit.h
${QET_DIR}/sources/conductorsegment.cpp ${QET_DIR}/sources/conductorsegment.cpp
${QET_DIR}/sources/conductorsegment.h ${QET_DIR}/sources/conductorsegment.h
${QET_DIR}/sources/conductorsegmentprofile.h ${QET_DIR}/sources/conductorsegmentprofile.h
@@ -200,8 +189,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/configdialog.h ${QET_DIR}/sources/configdialog.h
${QET_DIR}/sources/createdxf.cpp ${QET_DIR}/sources/createdxf.cpp
${QET_DIR}/sources/createdxf.h ${QET_DIR}/sources/createdxf.h
${QET_DIR}/sources/dxfexport.cpp
${QET_DIR}/sources/dxfexport.h
${QET_DIR}/sources/dxfpaintdevice.cpp ${QET_DIR}/sources/dxfpaintdevice.cpp
${QET_DIR}/sources/dxfpaintdevice.h ${QET_DIR}/sources/dxfpaintdevice.h
${QET_DIR}/sources/diagramcommands.cpp ${QET_DIR}/sources/diagramcommands.cpp
@@ -242,10 +229,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/exportpropertieswidget.h ${QET_DIR}/sources/exportpropertieswidget.h
${QET_DIR}/sources/genericpanel.cpp ${QET_DIR}/sources/genericpanel.cpp
${QET_DIR}/sources/genericpanel.h ${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.cpp
${QET_DIR}/sources/lastusedstyle.h ${QET_DIR}/sources/lastusedstyle.h
${QET_DIR}/sources/machine_info.cpp ${QET_DIR}/sources/machine_info.cpp
@@ -299,14 +282,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/recentfiles.h ${QET_DIR}/sources/recentfiles.h
${QET_DIR}/sources/shortcutmanager.cpp ${QET_DIR}/sources/shortcutmanager.cpp
${QET_DIR}/sources/shortcutmanager.h ${QET_DIR}/sources/shortcutmanager.h
${QET_DIR}/sources/shortcutbarsettings.cpp
${QET_DIR}/sources/shortcutbarsettings.h
${QET_DIR}/sources/diagramcontexttoolbar.cpp
${QET_DIR}/sources/diagramcontexttoolbar.h
${QET_DIR}/sources/diagramgestureoverlay.cpp
${QET_DIR}/sources/diagramgestureoverlay.h
${QET_DIR}/sources/commandsearchpopup.cpp
${QET_DIR}/sources/commandsearchpopup.h
${QET_DIR}/sources/titleblockcell.cpp ${QET_DIR}/sources/titleblockcell.cpp
${QET_DIR}/sources/titleblockcell.h ${QET_DIR}/sources/titleblockcell.h
${QET_DIR}/sources/titleblockproperties.cpp ${QET_DIR}/sources/titleblockproperties.cpp
@@ -322,20 +297,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/autoNum/numerotationcontextcommands.h ${QET_DIR}/sources/autoNum/numerotationcontextcommands.h
${QET_DIR}/sources/autoNum/numerotationcontext.cpp ${QET_DIR}/sources/autoNum/numerotationcontext.cpp
${QET_DIR}/sources/autoNum/numerotationcontext.h ${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.cpp
${QET_DIR}/sources/autoNum/ui/autonumberingdockwidget.h ${QET_DIR}/sources/autoNum/ui/autonumberingdockwidget.h
${QET_DIR}/sources/autoNum/ui/autonumberingmanagementw.cpp ${QET_DIR}/sources/autoNum/ui/autonumberingmanagementw.cpp
@@ -346,16 +307,11 @@ set(QET_SRC_FILES
${QET_DIR}/sources/autoNum/ui/formulaautonumberingw.h ${QET_DIR}/sources/autoNum/ui/formulaautonumberingw.h
${QET_DIR}/sources/autoNum/ui/numparteditorw.cpp ${QET_DIR}/sources/autoNum/ui/numparteditorw.cpp
${QET_DIR}/sources/autoNum/ui/numparteditorw.h ${QET_DIR}/sources/autoNum/ui/numparteditorw.h
${QET_DIR}/sources/autoNum/ui/renumberelementsdialog.cpp
${QET_DIR}/sources/autoNum/ui/renumberelementsdialog.h
${QET_DIR}/sources/autoNum/ui/selectautonumw.cpp ${QET_DIR}/sources/autoNum/ui/selectautonumw.cpp
${QET_DIR}/sources/autoNum/ui/selectautonumw.h ${QET_DIR}/sources/autoNum/ui/selectautonumw.h
${QET_DIR}/sources/dataBase/legacyelementtypes.h
${QET_DIR}/sources/dataBase/projectdatabase.cpp ${QET_DIR}/sources/dataBase/projectdatabase.cpp
${QET_DIR}/sources/dataBase/projectdatabase.h ${QET_DIR}/sources/dataBase/projectdatabase.h
${QET_DIR}/sources/dataBase/sqlreadonly.cpp
${QET_DIR}/sources/dataBase/sqlreadonly.h
${QET_DIR}/sources/dataBase/ui/elementquerywidget.cpp ${QET_DIR}/sources/dataBase/ui/elementquerywidget.cpp
${QET_DIR}/sources/dataBase/ui/elementquerywidget.h ${QET_DIR}/sources/dataBase/ui/elementquerywidget.h
@@ -371,8 +327,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/diagramevent/diagrameventaddimage.h ${QET_DIR}/sources/diagramevent/diagrameventaddimage.h
${QET_DIR}/sources/diagramevent/diagrameventaddshape.cpp ${QET_DIR}/sources/diagramevent/diagrameventaddshape.cpp
${QET_DIR}/sources/diagramevent/diagrameventaddshape.h ${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.cpp
${QET_DIR}/sources/diagramevent/diagrameventaddpath.h ${QET_DIR}/sources/diagramevent/diagrameventaddpath.h
${QET_DIR}/sources/diagramevent/diagrameventaddtext.cpp ${QET_DIR}/sources/diagramevent/diagrameventaddtext.cpp
@@ -488,8 +442,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/ElementsCollection/elementpreviewdelegate.h ${QET_DIR}/sources/ElementsCollection/elementpreviewdelegate.h
${QET_DIR}/sources/ElementsCollection/elementscollectionmodel.cpp ${QET_DIR}/sources/ElementsCollection/elementscollectionmodel.cpp
${QET_DIR}/sources/ElementsCollection/elementscollectionmodel.h ${QET_DIR}/sources/ElementsCollection/elementscollectionmodel.h
${QET_DIR}/sources/ElementsCollection/elementpickerpopup.cpp
${QET_DIR}/sources/ElementsCollection/elementpickerpopup.h
${QET_DIR}/sources/ElementsCollection/elementscollectionwidget.cpp ${QET_DIR}/sources/ElementsCollection/elementscollectionwidget.cpp
${QET_DIR}/sources/ElementsCollection/elementscollectionwidget.h ${QET_DIR}/sources/ElementsCollection/elementscollectionwidget.h
${QET_DIR}/sources/ElementsCollection/elementslocation.cpp ${QET_DIR}/sources/ElementsCollection/elementslocation.cpp
@@ -498,10 +450,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/ElementsCollection/elementstreeview.h ${QET_DIR}/sources/ElementsCollection/elementstreeview.h
${QET_DIR}/sources/ElementsCollection/fileelementcollectionitem.cpp ${QET_DIR}/sources/ElementsCollection/fileelementcollectionitem.cpp
${QET_DIR}/sources/ElementsCollection/fileelementcollectionitem.h ${QET_DIR}/sources/ElementsCollection/fileelementcollectionitem.h
${QET_DIR}/sources/ElementsCollection/qetlabelsfile.cpp
${QET_DIR}/sources/ElementsCollection/qetlabelsfile.h
${QET_DIR}/sources/ElementsCollection/terminaluuids.cpp
${QET_DIR}/sources/ElementsCollection/terminaluuids.h
${QET_DIR}/sources/ElementsCollection/xmlelementcollection.cpp ${QET_DIR}/sources/ElementsCollection/xmlelementcollection.cpp
${QET_DIR}/sources/ElementsCollection/xmlelementcollection.h ${QET_DIR}/sources/ElementsCollection/xmlelementcollection.h
${QET_DIR}/sources/ElementsCollection/xmlprojectelementcollectionitem.cpp ${QET_DIR}/sources/ElementsCollection/xmlprojectelementcollectionitem.cpp
@@ -559,6 +507,10 @@ set(QET_SRC_FILES
${QET_DIR}/sources/PropertiesEditor/propertieseditorwidget.cpp ${QET_DIR}/sources/PropertiesEditor/propertieseditorwidget.cpp
${QET_DIR}/sources/PropertiesEditor/propertieseditorwidget.h ${QET_DIR}/sources/PropertiesEditor/propertieseditorwidget.h
${QET_DIR}/pugixml/src/pugiconfig.hpp
${QET_DIR}/pugixml/src/pugixml.cpp
${QET_DIR}/pugixml/src/pugixml.hpp
${QET_DIR}/sources/qetgraphicsitem/conductor.cpp ${QET_DIR}/sources/qetgraphicsitem/conductor.cpp
${QET_DIR}/sources/qetgraphicsitem/conductor.h ${QET_DIR}/sources/qetgraphicsitem/conductor.h
${QET_DIR}/sources/qetgraphicsitem/conductortextitem.cpp ${QET_DIR}/sources/qetgraphicsitem/conductortextitem.cpp
@@ -739,10 +691,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/ui/aboutqetdialog.cpp ${QET_DIR}/sources/ui/aboutqetdialog.cpp
${QET_DIR}/sources/ui/aboutqetdialog.h ${QET_DIR}/sources/ui/aboutqetdialog.h
${QET_DIR}/sources/ui/aiassistantdialog.cpp
${QET_DIR}/sources/ui/aiassistantdialog.h
${QET_DIR}/sources/ui/aiassistantsetup.cpp
${QET_DIR}/sources/ui/aiassistantsetup.h
${QET_DIR}/sources/ui/abstractelementpropertieseditorwidget.cpp ${QET_DIR}/sources/ui/abstractelementpropertieseditorwidget.cpp
${QET_DIR}/sources/ui/abstractelementpropertieseditorwidget.h ${QET_DIR}/sources/ui/abstractelementpropertieseditorwidget.h
${QET_DIR}/sources/ui/alignmenttextdialog.cpp ${QET_DIR}/sources/ui/alignmenttextdialog.cpp
@@ -753,8 +701,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/ui/borderpropertieswidget.h ${QET_DIR}/sources/ui/borderpropertieswidget.h
${QET_DIR}/sources/ui/compositetexteditdialog.cpp ${QET_DIR}/sources/ui/compositetexteditdialog.cpp
${QET_DIR}/sources/ui/compositetexteditdialog.h ${QET_DIR}/sources/ui/compositetexteditdialog.h
${QET_DIR}/sources/ui/conductorpropertieseditorwidget.cpp
${QET_DIR}/sources/ui/conductorpropertieseditorwidget.h
${QET_DIR}/sources/ui/contactgroupselectiondialog.cpp ${QET_DIR}/sources/ui/contactgroupselectiondialog.cpp
${QET_DIR}/sources/ui/contactgroupselectiondialog.h ${QET_DIR}/sources/ui/contactgroupselectiondialog.h
${QET_DIR}/sources/ui/conductorpropertiesdialog.cpp ${QET_DIR}/sources/ui/conductorpropertiesdialog.cpp
@@ -777,12 +723,8 @@ set(QET_SRC_FILES
${QET_DIR}/sources/ui/diagrampropertieseditordockwidget.h ${QET_DIR}/sources/ui/diagrampropertieseditordockwidget.h
${QET_DIR}/sources/ui/backupdialog.cpp ${QET_DIR}/sources/ui/backupdialog.cpp
${QET_DIR}/sources/ui/backupdialog.h ${QET_DIR}/sources/ui/backupdialog.h
${QET_DIR}/sources/ui/backuprestoredialog.cpp
${QET_DIR}/sources/ui/backuprestoredialog.h
${QET_DIR}/sources/ui/dialogwaiting.cpp ${QET_DIR}/sources/ui/dialogwaiting.cpp
${QET_DIR}/sources/ui/dialogwaiting.h ${QET_DIR}/sources/ui/dialogwaiting.h
${QET_DIR}/sources/ui/duplicateoffsetdialog.cpp
${QET_DIR}/sources/ui/duplicateoffsetdialog.h
${QET_DIR}/sources/ui/dynamicelementtextitemeditor.cpp ${QET_DIR}/sources/ui/dynamicelementtextitemeditor.cpp
${QET_DIR}/sources/ui/dynamicelementtextitemeditor.h ${QET_DIR}/sources/ui/dynamicelementtextitemeditor.h
${QET_DIR}/sources/ui/dynamicelementtextmodel.cpp ${QET_DIR}/sources/ui/dynamicelementtextmodel.cpp
@@ -811,8 +753,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/ui/importelementtextpatterndialog.h ${QET_DIR}/sources/ui/importelementtextpatterndialog.h
${QET_DIR}/sources/ui/jumptoelementdialog.cpp ${QET_DIR}/sources/ui/jumptoelementdialog.cpp
${QET_DIR}/sources/ui/jumptoelementdialog.h ${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.cpp
${QET_DIR}/sources/ui/inditextpropertieswidget.h ${QET_DIR}/sources/ui/inditextpropertieswidget.h
${QET_DIR}/sources/ui/linksingleelementwidget.cpp ${QET_DIR}/sources/ui/linksingleelementwidget.cpp
@@ -827,8 +767,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/ui/multipastedialog.h ${QET_DIR}/sources/ui/multipastedialog.h
${QET_DIR}/sources/ui/potentialselectordialog.cpp ${QET_DIR}/sources/ui/potentialselectordialog.cpp
${QET_DIR}/sources/ui/potentialselectordialog.h ${QET_DIR}/sources/ui/potentialselectordialog.h
${QET_DIR}/sources/ui/prefixconfigurationdialog.cpp
${QET_DIR}/sources/ui/prefixconfigurationdialog.h
${QET_DIR}/sources/ui/projectpropertiesdialog.cpp ${QET_DIR}/sources/ui/projectpropertiesdialog.cpp
${QET_DIR}/sources/ui/projectpropertiesdialog.h ${QET_DIR}/sources/ui/projectpropertiesdialog.h
${QET_DIR}/sources/ui/reportpropertiewidget.cpp ${QET_DIR}/sources/ui/reportpropertiewidget.cpp
@@ -852,8 +790,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/ui/configpage/guidespropertieswidget.h ${QET_DIR}/sources/ui/configpage/guidespropertieswidget.h
${QET_DIR}/sources/ui/configpage/shortcutsconfigpage.cpp ${QET_DIR}/sources/ui/configpage/shortcutsconfigpage.cpp
${QET_DIR}/sources/ui/configpage/shortcutsconfigpage.h ${QET_DIR}/sources/ui/configpage/shortcutsconfigpage.h
${QET_DIR}/sources/ui/configpage/shortcutbarconfigpage.cpp
${QET_DIR}/sources/ui/configpage/shortcutbarconfigpage.h
${QET_DIR}/sources/undocommand/addelementtextcommand.cpp ${QET_DIR}/sources/undocommand/addelementtextcommand.cpp
${QET_DIR}/sources/undocommand/addelementtextcommand.h ${QET_DIR}/sources/undocommand/addelementtextcommand.h
@@ -879,10 +815,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/undocommand/removediagramcommand.h ${QET_DIR}/sources/undocommand/removediagramcommand.h
${QET_DIR}/sources/undocommand/setautonumcontextcommand.cpp ${QET_DIR}/sources/undocommand/setautonumcontextcommand.cpp
${QET_DIR}/sources/undocommand/setautonumcontextcommand.h ${QET_DIR}/sources/undocommand/setautonumcontextcommand.h
${QET_DIR}/sources/undocommand/groupitemscommand.cpp
${QET_DIR}/sources/undocommand/groupitemscommand.h
${QET_DIR}/sources/undocommand/alignselectioncommand.cpp
${QET_DIR}/sources/undocommand/alignselectioncommand.h
${QET_DIR}/sources/undocommand/rotateselectioncommand.cpp ${QET_DIR}/sources/undocommand/rotateselectioncommand.cpp
${QET_DIR}/sources/undocommand/rotateselectioncommand.h ${QET_DIR}/sources/undocommand/rotateselectioncommand.h
${QET_DIR}/sources/undocommand/promoteshapecommand.cpp ${QET_DIR}/sources/undocommand/promoteshapecommand.cpp
@@ -894,8 +826,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/utils/conductorcreator.cpp ${QET_DIR}/sources/utils/conductorcreator.cpp
${QET_DIR}/sources/utils/conductorcreator.h ${QET_DIR}/sources/utils/conductorcreator.h
${QET_DIR}/sources/utils/colordialogdoubleclick.cpp
${QET_DIR}/sources/utils/colordialogdoubleclick.h
${QET_DIR}/sources/utils/macosxopenevent.cpp ${QET_DIR}/sources/utils/macosxopenevent.cpp
${QET_DIR}/sources/utils/macosxopenevent.h ${QET_DIR}/sources/utils/macosxopenevent.h
${QET_DIR}/sources/utils/qetsettings.cpp ${QET_DIR}/sources/utils/qetsettings.cpp
@@ -903,13 +833,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/utils/qetutils.cpp ${QET_DIR}/sources/utils/qetutils.cpp
${QET_DIR}/sources/utils/qetutils.h ${QET_DIR}/sources/utils/qetutils.h
${QET_DIR}/sources/materiallist/materialentrydialog.cpp
${QET_DIR}/sources/materiallist/materialentrydialog.h
${QET_DIR}/sources/materiallist/materiallist.cpp
${QET_DIR}/sources/materiallist/materiallist.h
${QET_DIR}/sources/materiallist/materialselectiondialog.cpp
${QET_DIR}/sources/materiallist/materialselectiondialog.h
${QET_DIR}/sources/xml/terminalstripitemxml.cpp ${QET_DIR}/sources/xml/terminalstripitemxml.cpp
${QET_DIR}/sources/xml/terminalstripitemxml.h ${QET_DIR}/sources/xml/terminalstripitemxml.h
${QET_DIR}/sources/xml/terminalstriplayoutpatternxml.cpp ${QET_DIR}/sources/xml/terminalstriplayoutpatternxml.cpp
@@ -946,56 +869,8 @@ list(APPEND QET_SRC_FILES
${QET_DIR}/sources/scripting/qetscriptapi.h ${QET_DIR}/sources/scripting/qetscriptapi.h
${QET_DIR}/sources/scripting/qetscripting.cpp ${QET_DIR}/sources/scripting/qetscripting.cpp
${QET_DIR}/sources/scripting/qetscripting.h ${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)
list(APPEND QET_SRC_FILES
${QET_DIR}/sources/spacemouse/spacemousebackend.h
${QET_DIR}/sources/spacemouse/spacemousebuttonmap.cpp
${QET_DIR}/sources/spacemouse/spacemousebuttonmap.h
${QET_DIR}/sources/spacemouse/spacemouselistener.cpp
${QET_DIR}/sources/spacemouse/spacemouselistener.h
${QET_DIR}/sources/spacemouse/spacemousemotion.cpp
${QET_DIR}/sources/spacemouse/spacemousemotion.h
${QET_DIR}/sources/ui/configpage/spacemouseconfigpage.cpp
${QET_DIR}/sources/ui/configpage/spacemouseconfigpage.h
)
endif()
if(QET_SPACEMOUSE_BACKEND_SPNAV_ENABLED)
list(APPEND QET_SRC_FILES
${QET_DIR}/sources/spacemouse/spnavbackend.cpp
${QET_DIR}/sources/spacemouse/spnavbackend.h
)
endif()
if(QET_SPACEMOUSE_BACKEND_HID_ENABLED)
list(APPEND QET_SRC_FILES
${QET_DIR}/sources/spacemouse/hidbackend.cpp
${QET_DIR}/sources/spacemouse/hidbackend.h
${QET_DIR}/sources/spacemouse/spacemousehid.cpp
${QET_DIR}/sources/spacemouse/spacemousehid.h
)
endif()
if(QET_SPACEMOUSE_BACKEND_CONNEXION_ENABLED)
list(APPEND QET_SRC_FILES
${QET_DIR}/sources/spacemouse/connexionbackend.cpp
${QET_DIR}/sources/spacemouse/connexionbackend.h
)
endif()
set(TS_FILES set(TS_FILES
${QET_DIR}/lang/qet_ar.ts ${QET_DIR}/lang/qet_ar.ts
${QET_DIR}/lang/qet_ca.ts ${QET_DIR}/lang/qet_ca.ts
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2006-2026 The QElectroTech Team # Copyright 2006 The QElectroTech Team
# This file is part of QElectroTech. # This file is part of QElectroTech.
# #
# QElectroTech is free software: you can redistribute it and/or modify # QElectroTech is free software: you can redistribute it and/or modify
+902 -1559
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

+48
View File
@@ -0,0 +1,48 @@
<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>

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

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