Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6132cc0503 |
@@ -0,0 +1 @@
|
||||
*.qch filter=lfs diff=lfs merge=lfs -text
|
||||
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||
ca-certificates build-essential cmake ninja-build git pkg-config \
|
||||
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 \
|
||||
xvfb openbox xdotool x11-utils
|
||||
# extra-cmake-modules and the KF6 libraries are installed rather than
|
||||
@@ -53,9 +53,7 @@ jobs:
|
||||
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DQT_VERSION_MAJOR=6 \
|
||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
|
||||
-DQET_EXPORT_PROJECT_DB=ON
|
||||
-DQT_VERSION_MAJOR=6
|
||||
|
||||
- name: Build
|
||||
run: cmake --build build --parallel $(nproc)
|
||||
|
||||
@@ -57,7 +57,6 @@ jobs:
|
||||
mingw-w64-ucrt-x86_64-nsis
|
||||
mingw-w64-ucrt-x86_64-angleproject
|
||||
mingw-w64-ucrt-x86_64-qt6-declarative
|
||||
mingw-w64-ucrt-x86_64-hidapi
|
||||
|
||||
- name: Cache ccache
|
||||
uses: actions/cache@v5
|
||||
@@ -117,12 +116,10 @@ jobs:
|
||||
-DQT_VERSION_MAJOR=6 \
|
||||
-DBUILD_WITH_KF=ON \
|
||||
-DBUILD_KF=OFF \
|
||||
-DPACKAGE_TESTS=ON \
|
||||
-DPACKAGE_TESTS=OFF \
|
||||
-DCMAKE_POLICY_DEFAULT_CMP0077=NEW \
|
||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
|
||||
-DQET_EXPORT_PROJECT_DB=ON \
|
||||
-DQET_ENABLE_SPACEMOUSE=ON \
|
||||
-DQET_SPACEMOUSE_BACKEND=hid \
|
||||
-DCMAKE_C_COMPILER_LAUNCHER=/ucrt64/bin/ccache \
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER=/ucrt64/bin/ccache \
|
||||
-DSQLite3_INCLUDE_DIR=/ucrt64/include \
|
||||
@@ -136,32 +133,6 @@ jobs:
|
||||
echo "=== ccache statistics ==="
|
||||
/ucrt64/bin/ccache -s
|
||||
|
||||
- name: Run the unit tests
|
||||
shell: msys2 {0}
|
||||
env:
|
||||
QT_QPA_PLATFORM: offscreen
|
||||
run: |
|
||||
set -euo pipefail
|
||||
cd "$GITHUB_WORKSPACE/build"
|
||||
ctest --output-on-failure --timeout 300 && exit 0
|
||||
# ctest shows no output for failed tests in this shell, so run each
|
||||
# failed test again with QtTest writing its log to a file, and print it.
|
||||
set +e
|
||||
while IFS=: read -r _ name; do
|
||||
name=${name%$'\r'}
|
||||
exe=$(find tests -name "$name.exe" | head -1)
|
||||
echo "::group::$name"
|
||||
if [ -n "$exe" ]; then
|
||||
QT_QPA_PLATFORM=offscreen "$exe" -o "$name.txt,txt"
|
||||
echo "exit code $?"
|
||||
cat "$name.txt" 2>/dev/null
|
||||
else
|
||||
echo "no executable for $name"
|
||||
fi
|
||||
echo "::endgroup::"
|
||||
done < Testing/Temporary/LastTestsFailed.log
|
||||
exit 1
|
||||
|
||||
- name: Verify exe was built
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
@@ -175,11 +146,6 @@ jobs:
|
||||
SIZE=$(stat -c%s "$EXE")
|
||||
echo "Exe found: $EXE ($SIZE bytes)"
|
||||
[ "$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
|
||||
shell: msys2 {0}
|
||||
@@ -225,8 +191,6 @@ jobs:
|
||||
echo "=== $DLL_COUNT DLLs present after scan ==="
|
||||
ls -lh "$BIN/QElectroTech.exe" || { echo "ERROR: exe missing from bin/"; 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"
|
||||
|
||||
cp /ucrt64/bin/libgcc_s_seh-1.dll "$BIN/"
|
||||
@@ -253,23 +217,6 @@ jobs:
|
||||
cp -r "$GITHUB_WORKSPACE/titleblocks" "$FILES/titleblocks" || true
|
||||
cp -r "$GITHUB_WORKSPACE/examples" "$FILES/examples" || 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 ---
|
||||
# Since PR #751 the .qm files are no longer tracked in git: lrelease
|
||||
@@ -348,7 +295,7 @@ jobs:
|
||||
&& echo " OK : $f" \
|
||||
|| echo " MISSING: $f"
|
||||
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" ] \
|
||||
&& echo " OK : $d/" \
|
||||
|| echo " MISSING: $d/"
|
||||
@@ -399,15 +346,6 @@ jobs:
|
||||
echo "=== Contents of nsis_root/files/ ==="
|
||||
ls "$GITHUB_WORKSPACE/nsis_root/files/"
|
||||
|
||||
- name: Diagnose NSIS plugins
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
pacman -Q mingw-w64-ucrt-x86_64-nsis || true
|
||||
echo "=== nsDialogs.dll ==="
|
||||
find "$MSYSTEM_PREFIX/share/nsis" -iname 'nsDialogs.dll' || true
|
||||
echo "=== Plugins tree ==="
|
||||
find "$MSYSTEM_PREFIX/share/nsis/Plugins" -maxdepth 2 | head -60 || true
|
||||
|
||||
- name: Build NSIS installer
|
||||
shell: msys2 {0}
|
||||
run: |
|
||||
@@ -415,28 +353,8 @@ jobs:
|
||||
NSIS_ROOT="$GITHUB_WORKSPACE/nsis_root"
|
||||
cd "$NSIS_ROOT"
|
||||
echo "=== CWD : $(pwd) ==="
|
||||
echo "=== Unicode/Target directives in QET64.nsi ==="
|
||||
grep -niE '^[[:space:]]*(unicode|target)[[:space:]]' QET64.nsi || echo "(none)"
|
||||
|
||||
# Fallback: if makensis does not register its plugin dir, point it
|
||||
# at the folder that actually contains nsDialogs.dll.
|
||||
EXTRA=()
|
||||
DLL=$(find "$MSYSTEM_PREFIX/share/nsis" -iname 'nsDialogs.dll' | head -1 || true)
|
||||
if [ -n "$DLL" ]; then
|
||||
PLUGDIR_WIN=$(cygpath -w "$(dirname "$DLL")")
|
||||
echo "nsDialogs.dll found in: $PLUGDIR_WIN"
|
||||
# Plugin dirs are per target in NSIS: declare it for all of them so
|
||||
# it applies whatever Unicode/Target directive QET64.nsi uses.
|
||||
EXTRA=(-X"!addplugindir /x86-ansi $PLUGDIR_WIN"
|
||||
-X"!addplugindir /x86-unicode $PLUGDIR_WIN"
|
||||
-X"!addplugindir /amd64-unicode $PLUGDIR_WIN")
|
||||
else
|
||||
echo "::error::nsDialogs.dll not found in the MSYS2 NSIS package"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RC=0
|
||||
MSYS2_ARG_CONV_EXCL="*" makensis /V4 "${EXTRA[@]}" QET64.nsi || RC=$?
|
||||
MSYS2_ARG_CONV_EXCL="*" makensis /V4 QET64.nsi
|
||||
RC=$?
|
||||
echo "=== Contents of nsis_root after makensis ==="
|
||||
ls "$NSIS_ROOT/"
|
||||
[ $RC -eq 0 ] || { echo "ERROR: makensis failed (exit $RC)"; exit 1; }
|
||||
@@ -462,7 +380,6 @@ jobs:
|
||||
name: build-logs-qt6
|
||||
path: |
|
||||
build/CMakeFiles/*.log
|
||||
build/Testing/Temporary/LastTest*.log
|
||||
nsis_root/files/bin/
|
||||
if-no-files-found: warn
|
||||
|
||||
|
||||
@@ -59,41 +59,17 @@ jobs:
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# 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
|
||||
uses: nick-fields/retry@v3
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
timeout_minutes: 10
|
||||
max_attempts: 3
|
||||
retry_wait_seconds: 30
|
||||
shell: pwsh
|
||||
command: |
|
||||
if (Test-Path "artifact\files") { Remove-Item -Recurse -Force "artifact\files" }
|
||||
New-Item -ItemType Directory -Force -Path "artifact\files" | Out-Null
|
||||
|
||||
$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 }}
|
||||
name: ${{ matrix.portable_artifact }}
|
||||
path: artifact\files
|
||||
# workflow_run => use the triggering run's ID
|
||||
# workflow_dispatch => use input run_id if provided, otherwise current run
|
||||
run-id: ${{ github.event.workflow_run.id || github.event.inputs.run_id || github.run_id }}
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
repository: ${{ github.repository }}
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# 3. Extract version
|
||||
@@ -360,13 +336,7 @@ jobs:
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Delete old nightly .msi asset
|
||||
# Only run if a new MSI actually exists in dist/ — otherwise the old
|
||||
# (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') != ''
|
||||
if: always()
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
REPO: ${{ github.repository }}
|
||||
@@ -411,20 +381,7 @@ jobs:
|
||||
deploy-pages:
|
||||
needs: build-msi
|
||||
runs-on: ubuntu-latest
|
||||
# Regenerate the page whenever the MSI job actually ran (success OR
|
||||
# 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'
|
||||
if: always() && needs.build-msi.result == 'success'
|
||||
permissions:
|
||||
contents: write
|
||||
pages: write
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
*.snap
|
||||
.flatpak-builder
|
||||
__pycache__/
|
||||
*.pyc
|
||||
# Qt build output
|
||||
*.user
|
||||
# doxygen Doxyfile output
|
||||
@@ -9,4 +7,12 @@ doc/*
|
||||
!doc/QElectroTech.qch
|
||||
QElectroTech.tag
|
||||
!doc/doc-utils
|
||||
ui_*.h
|
||||
lang/*.qm
|
||||
|
||||
# -- IDE settings/intermediate files --
|
||||
# zed
|
||||
.zed
|
||||
.cache
|
||||
|
||||
# VS Code
|
||||
.vscode
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2006-2026 The QElectroTech Team
|
||||
# Copyright 2006 The QElectroTech Team
|
||||
# This file is part of QElectroTech.
|
||||
#
|
||||
# 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/fetch_singleapplication.cmake)
|
||||
include(cmake/fetch_pugixml.cmake)
|
||||
include(cmake/find_spacemouse.cmake)
|
||||
include(cmake/qet_compilation_vars.cmake)
|
||||
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
@@ -80,7 +79,7 @@ set(QET_HAS_QTPDF FALSE)
|
||||
find_package(Qt6 QUIET COMPONENTS Pdf)
|
||||
if(TARGET Qt6::Pdf AND NOT Qt6_VERSION VERSION_LESS 6.4.0)
|
||||
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)
|
||||
else()
|
||||
message(STATUS "QtPdf module not available (or Qt < 6.4): PDF page import feature disabled")
|
||||
@@ -93,22 +92,15 @@ endif()
|
||||
# the application depends on. When it's missing the feature is silently
|
||||
# disabled - see the QET_HAS_SCRIPTING guard in qetscripting.*.
|
||||
set(QET_HAS_SCRIPTING FALSE)
|
||||
find_package(Qt6 QUIET COMPONENTS Qml)
|
||||
if(TARGET Qt6::Qml)
|
||||
find_package(Qt${QT_VERSION_MAJOR} QUIET COMPONENTS Qml)
|
||||
if(TARGET Qt${QT_VERSION_MAJOR}::Qml)
|
||||
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)
|
||||
else()
|
||||
message(STATUS "Qt Qml module not available: JavaScript scripting (--run) disabled")
|
||||
endif()
|
||||
|
||||
# The zip container of a .qetz project is read and written with the bundled
|
||||
# miniz (sources/container/miniz): in memory only, and without timestamps so
|
||||
# that saving the same project twice gives the same bytes. The names must not
|
||||
# clash with the zlib Qt links. Every target including miniz.h needs the same
|
||||
# three, hence directory-wide.
|
||||
add_compile_definitions(MINIZ_NO_TIME MINIZ_NO_STDIO MINIZ_NO_ZLIB_COMPATIBLE_NAMES)
|
||||
|
||||
# The crash handler writes a backtrace into the dump. Detecting this with
|
||||
# __has_include(<execinfo.h>) is not enough: the header is present on FreeBSD
|
||||
# too, but backtrace() lives in a separate libexecinfo there, so the compile
|
||||
@@ -153,25 +145,6 @@ endif()
|
||||
# als laatse
|
||||
include(cmake/define_definitions.cmake)
|
||||
|
||||
# The application's code, compiled once, as an object library: the
|
||||
# executable is main.cpp linked with it, and tests that need the real
|
||||
# classes (a folio, its view, the editor window) link it too.
|
||||
set(QET_MAIN_FILE ${QET_DIR}/sources/main.cpp)
|
||||
list(REMOVE_ITEM QET_SRC_FILES ${QET_MAIN_FILE})
|
||||
add_library(
|
||||
${PROJECT_NAME}_objects
|
||||
OBJECT
|
||||
${QET_RES_FILES}
|
||||
${QET_SRC_FILES}
|
||||
${QET_DIR}/qelectrotech.qrc
|
||||
${QET_DIR}/ico/icon-themes.qrc
|
||||
)
|
||||
# The definitions above are set for this whole directory; a test target
|
||||
# lives in tests/ and gets them from here, through the library.
|
||||
get_directory_property(QET_DIRECTORY_DEFINITIONS COMPILE_DEFINITIONS)
|
||||
target_compile_definitions(${PROJECT_NAME}_objects
|
||||
INTERFACE ${QET_DIRECTORY_DEFINITIONS})
|
||||
|
||||
# On Windows, WIN32 sets /SUBSYSTEM:WINDOWS to suppress the console window.
|
||||
# Qt automatically links qtmain.lib which provides the WinMain entry point,
|
||||
# so no source code change is needed.
|
||||
@@ -179,36 +152,22 @@ if(WIN32)
|
||||
add_executable(
|
||||
${PROJECT_NAME}
|
||||
WIN32
|
||||
${QET_MAIN_FILE}
|
||||
${QET_RES_FILES}
|
||||
${QET_SRC_FILES}
|
||||
${QM_FILES}
|
||||
${QET_DIR}/qelectrotech.qrc
|
||||
${QET_DIR}/ico/icon-themes.qrc
|
||||
)
|
||||
# Our own manifest (it declares longPathAware). MSVC merges a .manifest
|
||||
# listed as a source; MinGW needs it embedded through a resource file,
|
||||
# and ld then keeps it ahead of the toolchain's default manifest.
|
||||
set(QET_MANIFEST_FILE ${QET_DIR}/build-aux/windows/qelectrotech.exe.manifest)
|
||||
if(MSVC)
|
||||
target_sources(${PROJECT_NAME} PRIVATE ${QET_MANIFEST_FILE})
|
||||
else()
|
||||
configure_file(${QET_DIR}/build-aux/windows/qelectrotech-manifest.rc.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/qelectrotech-manifest.rc @ONLY)
|
||||
target_sources(${PROJECT_NAME} PRIVATE
|
||||
${CMAKE_CURRENT_BINARY_DIR}/qelectrotech-manifest.rc)
|
||||
endif()
|
||||
else()
|
||||
add_executable(
|
||||
${PROJECT_NAME}
|
||||
${QET_MAIN_FILE}
|
||||
${QET_RES_FILES}
|
||||
${QET_SRC_FILES}
|
||||
${QM_FILES}
|
||||
${QET_DIR}/qelectrotech.qrc
|
||||
${QET_DIR}/ico/icon-themes.qrc
|
||||
)
|
||||
endif()
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_objects)
|
||||
|
||||
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)
|
||||
# CFBundleIdentifier must not be empty. CMake's default Info.plist
|
||||
@@ -270,7 +229,7 @@ elseif(Qt6_VERSION VERSION_LESS "6.7")
|
||||
|
||||
# Automatically creates the update_translations umbrella target.
|
||||
qt_add_lupdate(
|
||||
${PROJECT_NAME}_objects
|
||||
${PROJECT_NAME}
|
||||
TS_FILES ${TS_FILES}
|
||||
)
|
||||
|
||||
@@ -283,7 +242,7 @@ else()
|
||||
)
|
||||
|
||||
qt_add_lupdate(
|
||||
SOURCE_TARGETS ${PROJECT_NAME}_objects
|
||||
SOURCE_TARGETS ${PROJECT_NAME}
|
||||
TS_FILES ${TS_FILES}
|
||||
LUPDATE_TARGET update_translations
|
||||
NO_GLOBAL_TARGET
|
||||
@@ -309,7 +268,7 @@ if(QET_ENABLE_PCH)
|
||||
"QET_ENABLE_PCH needs CMake 3.16 or newer (found ${CMAKE_VERSION}); "
|
||||
"building without precompiled headers.")
|
||||
else()
|
||||
target_precompile_headers(${PROJECT_NAME}_objects PRIVATE
|
||||
target_precompile_headers(${PROJECT_NAME} PRIVATE
|
||||
"$<$<COMPILE_LANGUAGE:CXX>:<QtCore/QtCore$<ANGLE-R>>"
|
||||
"$<$<COMPILE_LANGUAGE:CXX>:<QtGui/QtGui$<ANGLE-R>>"
|
||||
"$<$<COMPILE_LANGUAGE:CXX>:<QtWidgets/QtWidgets$<ANGLE-R>>"
|
||||
@@ -320,19 +279,19 @@ if(QET_ENABLE_PCH)
|
||||
endif()
|
||||
|
||||
target_link_libraries(
|
||||
${PROJECT_NAME}_objects
|
||||
${PROJECT_NAME}
|
||||
PUBLIC
|
||||
PRIVATE
|
||||
pugixml::pugixml
|
||||
SingleApplication::SingleApplication
|
||||
SQLite3::SQLite3
|
||||
${KF_PRIVATE_LIBRARIES}
|
||||
${QET_PRIVATE_LIBRARIES}
|
||||
${QET_SPACEMOUSE_LIBRARIES}
|
||||
)
|
||||
|
||||
target_include_directories(
|
||||
${PROJECT_NAME}_objects
|
||||
PUBLIC
|
||||
${PROJECT_NAME}
|
||||
PRIVATE
|
||||
${QET_DIR}/sources/titleblock
|
||||
${QET_DIR}/sources/ui
|
||||
${QET_DIR}/sources/qetgraphicsitem
|
||||
@@ -359,19 +318,18 @@ target_include_directories(
|
||||
${QET_DIR}/sources/NameList
|
||||
${QET_DIR}/sources/NameList/ui
|
||||
${QET_DIR}/sources/utils
|
||||
${QET_DIR}/pugixml/src
|
||||
${QET_DIR}/sources/dataBase
|
||||
${QET_DIR}/sources/dataBase/ui
|
||||
${QET_DIR}/sources/factory/ui
|
||||
${QET_DIR}/sources/print
|
||||
${QET_DIR}/sources/svg
|
||||
${QET_DIR}/sources/materiallist
|
||||
${QET_DIR}/sources/cablelist
|
||||
)
|
||||
|
||||
if(NOT BUILD_WITH_KF)
|
||||
target_include_directories(
|
||||
${PROJECT_NAME}_objects
|
||||
PUBLIC
|
||||
${PROJECT_NAME}
|
||||
PRIVATE
|
||||
${QET_DIR}/sources/ui/nokde
|
||||
)
|
||||
endif()
|
||||
@@ -391,10 +349,6 @@ if (NOT MINGW)
|
||||
install(DIRECTORY elements DESTINATION share/qelectrotech)
|
||||
install(DIRECTORY examples 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)
|
||||
if(UNIX AND NOT APPLE)
|
||||
install(FILES misc/org.qelectrotech.qelectrotech.desktop DESTINATION share/applications)
|
||||
|
||||
@@ -12,157 +12,6 @@ Here are some important resources:
|
||||
|
||||
## Testing
|
||||
|
||||
### Build the tests
|
||||
|
||||
Start with the dependencies and platform-specific setup in
|
||||
[INSTALL.md](INSTALL.md). Tests additionally require the Qt6 Test module.
|
||||
The commands below use CMake/CTest 3.20 or newer (`--test-dir` needs 3.20),
|
||||
a C++17 compiler, and the Qt6 development packages, including GuiPrivate,
|
||||
Svg and LinguistTools. Configuration may download dependencies with
|
||||
FetchContent, including Catch2, so an initial build needs network access.
|
||||
|
||||
Run the following commands from the repository root. Keep build products in
|
||||
a separate directory and use Debug for the regression tests:
|
||||
|
||||
```sh
|
||||
git submodule update --init --recursive
|
||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DPACKAGE_TESTS=ON
|
||||
cmake --build build --config Debug --parallel
|
||||
```
|
||||
|
||||
`PACKAGE_TESTS` defaults to `ON`; specify it explicitly when reusing a build
|
||||
directory that previously disabled tests. `BUILD_WITH_KF` defaults to `ON`.
|
||||
If KDE Frameworks are unavailable, add `-DBUILD_WITH_KF=OFF` to the configure
|
||||
command, as described in INSTALL.md. Use a separate build directory when
|
||||
changing compiler, Qt kit, or generator.
|
||||
|
||||
### Run the tests with CTest
|
||||
|
||||
After a successful build, list the registered tests, run them, or select a
|
||||
test by name with `-R`:
|
||||
|
||||
```sh
|
||||
ctest --test-dir build -C Debug -N
|
||||
ctest --test-dir build -C Debug --output-on-failure
|
||||
ctest --test-dir build -C Debug -R '^tst_qetstrings$' --output-on-failure
|
||||
```
|
||||
|
||||
`-N` only lists tests; it does not execute them. `-C Debug` selects the
|
||||
configuration for multi-configuration generators such as Visual Studio.
|
||||
For single-configuration generators such as Ninja and Unix Makefiles,
|
||||
`CMAKE_BUILD_TYPE=Debug` selects it at configure time. CTest runs the tests
|
||||
registered by CMake; it does not build their executables.
|
||||
|
||||
Some tests create Qt widgets and need a graphical environment. On a Linux
|
||||
machine without a display, use Xvfb as the Linux CI does:
|
||||
|
||||
```sh
|
||||
xvfb-run -a ctest --test-dir build -C Debug --output-on-failure
|
||||
```
|
||||
|
||||
Tests that depend on optional features may not be registered. In particular,
|
||||
several scripting tests require the Qt6 Qml module at configure time.
|
||||
Review the test list and any skipped tests before reporting what was covered.
|
||||
|
||||
### Windows
|
||||
|
||||
Follow INSTALL.md for SQLite3 and the MSVC or MinGW toolchain. The compiler
|
||||
and Qt kit must match. For MSVC, use a Visual Studio developer PowerShell;
|
||||
the example below assumes Visual Studio 2022 and a 64-bit MSVC Qt kit.
|
||||
Replace the example Qt path with your installation, and supply any SQLite3
|
||||
paths or toolchain file required by your setup:
|
||||
|
||||
```powershell
|
||||
$qtPrefix = 'C:/Qt/6.x.x/msvc2022_64'
|
||||
cmake -S . -B build-msvc -G 'Visual Studio 17 2022' -A x64 `
|
||||
"-DCMAKE_PREFIX_PATH=$qtPrefix" -DBUILD_WITH_KF=OFF -DPACKAGE_TESTS=ON
|
||||
cmake --build build-msvc --config Debug --parallel
|
||||
$env:Path = "$qtPrefix/bin;$env:Path"
|
||||
ctest --test-dir build-msvc -C Debug --output-on-failure
|
||||
```
|
||||
|
||||
Putting the matching Qt `bin` directory on `PATH` lets test executables find
|
||||
Qt DLLs. Other shared dependencies must also be available on `PATH`.
|
||||
For MinGW with Ninja, use the matching MinGW Qt kit and compiler environment,
|
||||
omit `-A x64`, select `-G Ninja`, and set `-DCMAKE_BUILD_TYPE=Debug`.
|
||||
The Linux shell regression scripts below do not run natively on Windows.
|
||||
|
||||
### Tests outside the CTest suite
|
||||
|
||||
The Catch2 executable `C_unittests` is built with `PACKAGE_TESTS=ON`, but is
|
||||
currently not registered with CTest. Run it separately from the repository
|
||||
root after building:
|
||||
|
||||
```sh
|
||||
./build/tests/catch/C_unittests
|
||||
```
|
||||
|
||||
This executable creates a Qt GUI application too. On headless Linux, use:
|
||||
|
||||
```sh
|
||||
xvfb-run -a ./build/tests/catch/C_unittests
|
||||
```
|
||||
|
||||
For the Visual Studio example above, use this PowerShell command after
|
||||
setting up `PATH`:
|
||||
|
||||
```powershell
|
||||
& ./build-msvc/tests/catch/Debug/C_unittests.exe
|
||||
```
|
||||
|
||||
The Python MCP suite is also separate from CTest. Its unit and protocol
|
||||
tests can be run without a QElectroTech binary. Some fixtures launch POSIX
|
||||
shell scripts, so use a Unix-like environment for this suite:
|
||||
|
||||
```sh
|
||||
python3 misc/qet-mcp/test_qet_mcp.py
|
||||
```
|
||||
|
||||
Use `python` instead of `python3` if that is your interpreter's command.
|
||||
Integration tests need a built QElectroTech and the environment variables
|
||||
documented in [the MCP testing guide](misc/qet-mcp/README.md#testing),
|
||||
including `QET_ENABLE_SCRIPTING=1` for script-driven tests. Missing integration
|
||||
prerequisites cause tests to be skipped, so a successful unit run alone does
|
||||
not establish integration coverage.
|
||||
|
||||
### Linux regression prerequisites
|
||||
|
||||
In addition to the build dependencies in INSTALL.md, headless widget tests
|
||||
need `xvfb-run`, Xvfb and `xauth`. The existing
|
||||
[Linux workflow](.github/workflows/linux-build.yml) lists the packages used
|
||||
by CI, including the QtSvg development package and SQLite driver for QtSql.
|
||||
Package names vary by distribution.
|
||||
|
||||
The IPC open-forwarding regression requires Bash, Xvfb, Openbox and xdotool.
|
||||
Use a Qt6 Debug build; the documented reproduction used Qt 6.10.2. It uses
|
||||
`examples/industrial.qet` by default and starts its own display, so run it
|
||||
directly rather than wrapping it in `xvfb-run`:
|
||||
|
||||
```sh
|
||||
tests/ipc-regression/run.sh --binary build/qelectrotech
|
||||
```
|
||||
|
||||
This test is separate from CTest. Exit code `0` means the scenario survived,
|
||||
`1` means a crash, and `2` means inconclusive or unusable input. An inconclusive
|
||||
run is not a pass. See [the IPC guide](tests/ipc-regression/README.md).
|
||||
|
||||
The quit-during-modal regression needs gdb with Python support and a binary
|
||||
with the symbols used by the test (use an unstripped Debug build). It uses
|
||||
Qt's offscreen platform and needs no X server. It is registered with CTest
|
||||
on Linux and can be selected with:
|
||||
|
||||
```sh
|
||||
ctest --test-dir build -C Debug -R '^modal_quit_regression$' --output-on-failure
|
||||
```
|
||||
|
||||
Missing gdb, missing Python support in gdb, or a stripped binary can result
|
||||
in exit code `77`, which CTest treats as skipped. See
|
||||
[the modal-quit guide](tests/modal-quit-regression/README.md).
|
||||
|
||||
When submitting changes, state the build configuration, commands actually
|
||||
run, results, and any skipped or unavailable tests. If commands were only
|
||||
checked against the build files or documentation, say so explicitly.
|
||||
|
||||
## Submitting changes
|
||||
|
||||
Always write a clear log message for your commits.
|
||||
|
||||
@@ -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 Mrbit for ebuild Gentoo packaging.
|
||||
|
||||
[de]
|
||||
Dank an Qt Software für die Qt-Bibliothek (http://www.qtsoftware.com/), lizenziert unter der GNU/GPL.
|
||||
Dank an das KDE-Projekt (http://www.kde.org/).
|
||||
Dank an Loic für seine mathematischen Erläuterungen.
|
||||
Dank an Remi Collet für die Fedora-Paketierung.
|
||||
Dank an Laurent Trinques für die Debian-Paketierung.
|
||||
Dank an „trem“ für die Mandriva-Paketierung.
|
||||
Dank an TuxFamily (http://tuxfamily.org/) für das Hosting des Projekts.
|
||||
Dank an „Nishiki“ für seine Elemente und seine Unterstützung.
|
||||
Dank an qtcentre.org für die „SingleApplication“-Klasse.
|
||||
Dank an Alfredo Carreto für seine spanischen Übersetzungen und die Korrektur der spanischen Übersetzungen (http://electronicosmx.net)
|
||||
Dank an „Dr.Slump“ und Sivio für ihre Übersetzungen ins Italienische.
|
||||
Dank an Jose Carlos Martins für seine Übersetzungen ins Portugiesische.
|
||||
Dank an Pavel Fric für seine Übersetzungen ins Tschechische.
|
||||
Dank an Pawel Smiech für seine polnischen Übersetzungen.
|
||||
Dank an Yuriy Litkevich für seine Übersetzungen ins Russische.
|
||||
Dank an Youssef Ouamalkran für seine Übersetzungen ins Katalanische.
|
||||
Dank an Gabi Mandoc für seine Übersetzungen ins Rumänische.
|
||||
Dank an Markus Budde, Jonas Stein und Noah Braden für ihre Übersetzungen ins Deutsche.
|
||||
Dank an Mohamed Souabni für seine Übersetzungen ins Arabische.
|
||||
Dank an Uroš Platiše für seine Übersetzungen ins Slowenische.
|
||||
Dank an Antun Marakovic für seine Übersetzungen ins Kroatische.
|
||||
Dank an Nikos Papadopoylos und Yannis Gyftomitros für ihre griechischen Übersetzungen.
|
||||
Dank an Markos Chandras für die Gentoo-Paketierung.
|
||||
Dank an David für die Paketierung von Slackware.
|
||||
Dank an Chipsterjulien für die Paketierung der Archlinux-AUR-Pakete.
|
||||
Dank an Elbert aus den Niederlanden für die Paketierung von OS/2.
|
||||
Dank an zloidemon für die Paketierung von FreeBSD (GCC-Port).
|
||||
Dank an Mrbit für die ebuild-Paketierung für Gentoo.
|
||||
|
||||
[fr]
|
||||
Merci à Qt Software pour la bibliothèque Qt ( http://www.qtsoftware.com/ ), sous licence GNU/GPL.
|
||||
Merci au projet KDE ( http://www.kde.org/ ).
|
||||
|
||||
@@ -363,22 +363,3 @@ and running it concurrently with the normal `lrelease` compilation step (as
|
||||
would happen under `-j`/parallel builds) can corrupt a `.ts` file mid-write,
|
||||
causing `lrelease` to fail with "Premature end of document". Run it on its
|
||||
own, review the diff, and commit the updated `.ts` files separately.
|
||||
|
||||
The strings in the code are English, so `lang/qet_en.ts` is the source
|
||||
language's own file. After `update_translations`, run
|
||||
|
||||
```sh
|
||||
python3 misc/i18n/mirror_source_language.py lang/qet_en.ts
|
||||
```
|
||||
|
||||
before committing: it copies every new English source string into its own
|
||||
translation, so `qet_en.qm` stays complete and English wording can later be
|
||||
corrected in the `.ts` alone, without changing the key that the other
|
||||
languages are attached to. Forgetting it breaks nothing (an empty entry
|
||||
falls back to the code text); `--check` reports whether a run is needed.
|
||||
The script refuses any other language's file, such as `qet_fr.ts`, where it
|
||||
would copy English into a translation. An English correction typed into
|
||||
`qet_en.ts` is lost like any other translation when the code string is
|
||||
reworded; the vanished entry keeps the old text for recovery. Never add
|
||||
`-removeidentical` to the `lrelease` options: it would strip these entries
|
||||
again.
|
||||
|
||||
@@ -1,210 +0,0 @@
|
||||
# QElectroTech — Release notes: 0.100 → current master (0.200.1-dev)
|
||||
|
||||
*Covers the period 26 January 2026 – 9 October 2026: 2,253 commits and 669 merged pull requests. Numbers in brackets are GitHub PRs (#nnn) or bug tracker entries (bugtracker #nnn).*
|
||||
|
||||
---
|
||||
|
||||
## Highlights
|
||||
|
||||
- **Qt 6 is now the platform.** The Qt 6 migration is complete, Qt 5 support has been removed, and Windows, macOS, Flatpak and Snap packages are built on Qt 6 / KF6.
|
||||
- **Rewritten auto-numbering.** Renumbering of existing elements, new numbering parts (alphabetic, cyclic/modulo, zero-padded formats), undo/redo for counters, global rules in the settings, and importing rules from another project.
|
||||
- **Many more drawing and editing tools.** Editable resize/rotate/skew handles for shapes and pictures, an Arc tool and a fillet tool, Group/Ungroup, Align and Snap to grid, mirroring symbols, rotating groups, text-box width handles, and dropping pictures onto a sheet.
|
||||
- **Productivity UI.** Command search, Ctrl+G jump to element or cell, an element picker and shortcut bar at the cursor, a context command bar, mouse gestures, repeat-last-command, configurable shortcuts, toolbars and gestures (Customise window), and paste under the cursor.
|
||||
- **Wiring, BOM and PLC.** A from-to wiring list export, a PLC Manager, slave contact groups and a full contact comb, terminal potential grouping, a material list lookup, smart-device BOM metadata, a generic device wizard, and drag and drop onto terminal strips.
|
||||
- **Import and export.** EPLAN Data Portal (.edz) import, PDF page import, and much better DXF export (layers, symbols as blocks with attributes). PDF export gains clickable cross-reference links and can be made reproducible.
|
||||
- **Command line, scripting and AI assistants.** Headless export and verification from the command line, a JavaScript scripting API (off by default), script buttons and a script manager, a macro recorder, and an MCP server (`qet-mcp`) with a "live mode" so an AI assistant can work on an open project.
|
||||
- **Dark themes and icons.** All toolbar and menu icons are now SVG, there are "qet" and "qet-dark" icon themes, an optional dark folio canvas, and many dark-theme fixes.
|
||||
- **English is the source language.** The interface text is now written in English (previously French), "folio" is renamed "sheet" in the English UI, and Korean has been added as a new language.
|
||||
- **Stability.** A large number of crash, use-after-free and memory-leak fixes, rotating crash-recovery snapshots, a hardened crash reporter, diagnostic logging, and reproducible project saving.
|
||||
|
||||
---
|
||||
|
||||
## New features
|
||||
|
||||
### Auto-numbering
|
||||
- Renumber elements that are already placed [#704]; a broad overhaul of the formulas for elements, conductors and sheets [#1282]
|
||||
- Alphabetic numbering (a, b … z, aa, ab …) [#594]; wrap-and-carry (cyclic/modulo) numbering [#593]
|
||||
- A display format (zero mask) you can set for each numbering part [#634]
|
||||
- Quick reset buttons [#626]; edit the increment and preview the next number in the dock [#697, bugtracker #331]
|
||||
- Undo/redo now covers auto-numbering counter changes [#645]
|
||||
- Global auto-numbering rules in the application settings, applied to new projects [#924]
|
||||
- Reuse the numbering rules from another project [#851]
|
||||
|
||||
### Drawing, shapes, pictures and text
|
||||
- Editable resize, rotate and skew handles for shapes and pictures, plus picture transparency and faster image handling [#809, #810, #817, #1024]
|
||||
- Arc tool with a handle to pull a half arc in or out [#1202, #1211]; fillet tool to round the corner between two lines [#1212]
|
||||
- Group and Ungroup items on a sheet [#1074]; click a member of a selected group to select it alone [#1110]; rotate a group as one piece [#660, #1111]
|
||||
- Align left/centre/right/top/middle/bottom, with icons [#1087, #1153]; Snap to grid for selected symbols, pictures, texts and shapes [#1073, #1152, #1154]
|
||||
- Mirror symbols horizontally and vertically on a sheet [#1354]; an option to keep the texts of rotated symbols horizontal [#1355]
|
||||
- Free texts can keep a width they wrap to, set in their properties or by dragging a corner handle [#1320, #1321, #1341, #1342]
|
||||
- Drag-to-resize the width of dynamic element texts [#591, #977]; a centre rotation point for dynamic text fields [#694]
|
||||
- Labels on pictures [#1068]; drop picture files onto a sheet to add them [#1416]; the crop, colours and original of a picture undo together [#1310]
|
||||
- Import a PDF page as an image [#772, #811]
|
||||
- Remember the last-used shape and text style for the session [#656]
|
||||
- Custom guides [#509]; a finer snap grid for dragged texts [#1040]
|
||||
- View > Show to hide texts, shapes and pictures [#1268, bugtracker #301]
|
||||
- Sheet background colour picker with adaptive border and title block, remembered between runs [#968, #1011]; a custom application colour picker [#979]
|
||||
- A permanent ID for shapes, texts, pictures and symbol parts [#1065]; lasting UUIDs for projects, sheets, symbols, wires and terminals, including those in older files [#883, #884, #1105, #1107, #1118, #1122]
|
||||
|
||||
### Element (symbol) editor
|
||||
- Live cursor-coordinate readout [#589, #761]
|
||||
- Export a symbol to SVG [#637]
|
||||
- Optional alignment for static texts [#569]; `anchor="alignment"` for static texts in element files [#1404]
|
||||
- Show terminal names [#536]; check terminal names when saving [#1159]
|
||||
- Scale element, keeping terminals on the grid [#1378]
|
||||
- An adjustable background frame [#1164]
|
||||
- Mirror and flip the selection in place instead of across the origin [#813]
|
||||
- The Information tab is available for Slave and Terminal types, and auto_num_locked, potential_isolating and exclude_from_bom can be edited [#721, #765, #767, #1399]
|
||||
- New element type: line definition [#464]
|
||||
|
||||
### Sheets and navigation
|
||||
- Duplicate sheets with all their metadata [#473]; undo/redo for adding, deleting and reordering sheets [#590]; insert a sheet above or below [#658]
|
||||
- Paper sizes A0–A5 [#1362]
|
||||
- Keep the row and column headers visible, and optionally show the cell limits across the drawing [#1038, #1048]
|
||||
- Ctrl+G jumps to an element or to a sheet cell such as B13 [#586, #1036]
|
||||
- Centre on cursor [#1190]; the search view scrolls to the selected hit [#706]
|
||||
- Auto-select the active sheet in the elements panel tree [#443]; a newly added sheet is selected in the project tree [#805]
|
||||
- The main window title shows unsaved changes (macOS modified dot) [#624]
|
||||
- 3D mouse (SpaceMouse/SpacePilot) support on Linux, Windows and macOS, with speed, direction and twist-to-zoom settings [#635, #1022, #1023, #1025, #1026, #1028, #1032]
|
||||
|
||||
### Productivity and customisation
|
||||
- Command search: type part of a command's name and press Enter [#1049]
|
||||
- Element picker at the cursor (Insert) [#1052]; shortcut bar at the cursor (S), customisable in place and with pinned elements [#1053, #1054, #1060]
|
||||
- A command bar beside the selection [#1055]; repeat the last drawing or placing command with Enter [#1056]; right-drag mouse gestures [#1057, #1364]
|
||||
- Place elements by double-clicking in the collection, and repeat with A [#1042]; placement and sheet references in the right-click menu [#1041, #1050]
|
||||
- Configurable shortcuts with a dedicated preferences page (grouped, searchable, icons, menu locations) [#587, #760, #821, #1325, #1326]
|
||||
- Toolbars settings page (icon size, text with icons, lock) and a combined Customise window [#1327, #1365]
|
||||
- Paste under the cursor; Ctrl+Shift+V pastes at the origin [#878, #917, #1208]; Ctrl+D duplicates with a configurable offset [#993]
|
||||
- Tab cycles through the selection; select all conductors or text fields [#874]
|
||||
- Keyboard accessibility: F10 opens the menu bar, the drawing tools are in a menu, and the context-menu key opens the sheet menu [#875, #876, #877]
|
||||
- Save and load the configuration, in full or in part, to a file [#1166, #1410]
|
||||
- Dialog sizes are remembered [#1165]; QColorDialog custom colours are kept across restarts [#918, #1370]
|
||||
- Edit several wires at once in the Selection properties panel [#502, #1205]
|
||||
- One-click conductor colour on the toolbar; F2 remembers the colour for the session; double-click to choose a wire colour [#888, #929, #1172]
|
||||
- Paste element information from one symbol onto others [#1376]
|
||||
- Element information suggests values already used in the project [#1021, bugtracker #217]
|
||||
- A position-lock checkbox for elements [#803]
|
||||
- The Edit menu is split into submenus [#1346]
|
||||
- Settings for the folder prefixes of the user collection [#1168]
|
||||
- A local tracker for the time spent on each project [#583]
|
||||
|
||||
### Conductors and wiring
|
||||
- Auto-break conductors [#639, #700]
|
||||
- Optional hops where wires cross [#1200]
|
||||
- An optional limit on the number of wires per terminal, wiring terminals in a chain rather than a star [#1272, #1273]
|
||||
- Wire routing around symbols (scripting/MCP) [#1245, #1256, #1258]
|
||||
- Linked cross-references inherit the conductor line style [#967]
|
||||
|
||||
### Wiring list, BOM and reports
|
||||
- A from-to wiring list built on new terminal/conductor tables in the project database, with a dialog, export, Cable column, terminal index/UUID and numeric wire order [#447, #462, #628, #629, #630, #835, #1197, #1248]
|
||||
- Exclude specific elements from the BOM [#472]; options to leave junctions and contact blocks out of the parts list [#1318]
|
||||
- Smart device metadata in the BOM export [#830]
|
||||
- A material list (CSV) lookup for the element article fields [#1088, #1119]
|
||||
- Custom SQL reports with read-only enforcement, preview and import/export [#896, #983]
|
||||
|
||||
### Master/slave, PLC and terminals
|
||||
- PLC Manager [#562, #588, #623, #669, #703, #774, #1001]; PLC terminal names and cross-references [#766, #796]; "Hide linked elements" and "Hide full masters" filters [#858, #881]
|
||||
- Slave contact groups (label transfer, terminal assignment) [#545]; a full contact comb that shows every slave defined by the master [#1010]
|
||||
- Contact usage counting (NO/NC/SW breakdown, used vs. declared capacity) and an advisory slave limit [#444, #825, #826, #827, #828, #831]
|
||||
- Terminal names in cross-references, with an option to hide them; terminal names shown in export [#673]
|
||||
- Configurable distance between the label and the slave cross-reference [#771]; an option for stacking cross-references at the sheet bottom [#1311]
|
||||
- Automatic terminal numbering tool, with letter numbering and strip selection [#449, #741]
|
||||
- Terminal potential grouping [#1396]; a potential isolation option for terminals [#471]
|
||||
- Drag and drop free terminals onto a terminal strip [#1199]; natural sort for terminal ordering
|
||||
- Width/height/depth properties for elements [#723]; cabinet thumbnails generated from the manufacturer and reference [#1170]
|
||||
- Generic device wizard: a box symbol with terminals on any side, for devices too rare to draw a symbol for [#1418]
|
||||
|
||||
### Templates (macros)
|
||||
- A User Templates collection with its own tab [#451, #455]
|
||||
|
||||
### Import and export
|
||||
- **EPLAN Data Portal (.edz)** parts import into element collections [#513, #555]
|
||||
- **DXF:** named layers, deterministic entity order, symbols as blocks with attributes and hidden part data, slave/master cross-references, and wrapped text [#740, #750, #1075, #1076, #1079, #1324, #1350, #1351, #1352, #1353]
|
||||
- **PDF:** clickable cross-reference links [#490], component info as invisible annotations [#739], and repeatable output when SOURCE_DATE_EPOCH is set [#1257, #1286, #1317]
|
||||
- Folio properties automatically add a title block's custom variables [#495]
|
||||
|
||||
### Command line, scripting and AI assistants
|
||||
- **Headless CLI:** export to PDF, PNG, SVG, DXF, cable list and wire list; info, BOM, nets, links, check-elements, resave; `--set-titleblock`; `--show-terminals` [#483, #485, #489, #493, #731, #1078]
|
||||
- **JavaScript scripting API:** read, export, edit, draw, cross-reference and query a project, with UUID lookups. It is **off by default** and asks before enabling [#891, #970, #980, #984, #1098, #1106, #1114, #1125, #1219, #1264]
|
||||
- Script buttons, a script manager and a macro recorder [#1220, #1221, #1227]
|
||||
- **`misc/qet-mcp`:** a Model Context Protocol server over QET projects, installed with QElectroTech (and with Python offered by the Windows installer). Help → Connect an AI assistant, and live mode (ask-first, an Assistant panel, and project create/open/print/save), plus a shared house style [#969, #1128, #1136, #1137, #1138, #1222–#1225, #1228, #1265, #1266, #1312–#1316]
|
||||
|
||||
### Diagnostics and robustness features
|
||||
- Diagnostic logging rework with rotation, a ring buffer, crash-time flush and an export UI [#646, #647]; an event-loop watchdog [#665]
|
||||
- Three rotating crash-recovery snapshots [#1167]; a hardened crash reporter that keeps every dump [#905, #1181]
|
||||
- A backup dialog when opening an existing project [#534]
|
||||
- Project load timing in the log [#560]
|
||||
- Reload element drawings to refresh placed elements [#889]
|
||||
|
||||
---
|
||||
|
||||
## Bug fixes (selection)
|
||||
|
||||
### Crashes and memory safety
|
||||
- Use-after-free and teardown crashes: backup threads [#512], restore of backups [#711, #1031], project/diagram teardown [#789], IPC file forwarding [#868], the terminal strip dock [#1162], closing without saving [#1231], and the template editor [#1407]
|
||||
- Crashes when opening a project without a sheet [#797], with an unlinked contact [#1234], or with invalid corner layout [#670]
|
||||
- Element editor zoom crash [#799]; huge symbol sizes [#1232]; NaN and infinite coordinates rejected on load [#792, #996, #1161, #1194]
|
||||
- Dynamic text colour [#693]; cancelling collection load [#743, #995]; templates tree on Qt 6 [#795]; online-installer Qt SQLite handle [#1046]
|
||||
- Memory leaks found by AddressSanitizer and Valgrind [#515, #518, #519, #1360]; uninitialised members [#1358, #1359, #1387, #1388]
|
||||
- Thread-safety fixes for data paths and the elements panel [#514, #1163]
|
||||
|
||||
### Saving, loading and file format
|
||||
- Saving is now reproducible: deterministic element, conductor, title block and XML ordering, and a second save changes nothing [#779, #814, #844, #846, #1030, #1109]
|
||||
- QDom serialization hardened against invalid data (CVE-2026-15037) [#568]
|
||||
- Font descriptions are written in a version-stable format, and salvaged fonts are reported [#582, #592]
|
||||
- The read-only state is cleared after Save As [#497]; Save As on Snap adds the .qet extension [#716]
|
||||
- Older parts lists keep their rows [#1077]; legacy sequential attributes are read correctly [#1385, #1386]
|
||||
- Wires no longer move to another symbol after saving an older project [#1417]; replacing a symbol keeps its wires [#1116]
|
||||
- Text position stays stable after a font-size change [#501]; wire text rotation is preserved [#707]
|
||||
|
||||
### Editing and the diagram editor
|
||||
- Several copy/paste fixes: broken conductors, alignment, PLC data, master/slave links and underscore labels [#746, #770, #899, #909, #910, #911, #982, #997, #1188]
|
||||
- Undo stack fixes [#925, #1039, #1192]; group rotation [#921]; the first click in the element editor no longer moves elements [#520]
|
||||
- Junction dots on wide conductors and on shared lines [#862, #1299]; straight wires drawn diagonally [#1127]; unnecessary bridge routing [#890]
|
||||
- Duplicating sheets renews UUIDs and keeps text positions [#477, #544, #856, #895]
|
||||
- Multi-line symbol text alignment [#1155, #1160, #1176, #1302, #1357]
|
||||
- Cross-reference overlap and positioning fixes [#712, #1263, #1287]
|
||||
|
||||
### Title blocks, reports and BOM
|
||||
- Title block variables: empty page-level overrides, bare %name variables, unset variables, names with a slash, and file names cut at the first dot [#572, #717, #719, #725, #989, #1121, #1140]
|
||||
- The summary table is ordered by sheet [#864]; custom summary SQL is kept [#887]; queries return all their rows [#1066] and are capped [#985]
|
||||
- Terminal and contact blocks appear in the parts list [#849]; the wire-name export no longer double-counts [#724]
|
||||
- Sheet dates are correct in the project database [#1134]; the database is rebuilt only once per load [#840]
|
||||
|
||||
### UI, theming and platform
|
||||
- Dark theme: element icons [#620, #695, #744, #1092], slave cross-references [#718], the search field, and imported image colours [#1349]
|
||||
- Locale and translation loading: regional locales, the lang/ path, double-click on Windows, and an English fallback [#496, #498, #559]
|
||||
- Windows: Unicode and long paths in collections [#524, #1243, #1244], file association without admin rights [#1149], and MS Shell Dlg fonts in PDF [#1012, #1029]
|
||||
- macOS: bundle identifier and file dialogs [#829], Fusion dark palette [#894], properties dialog placement [#715], file-open events, arm64 bundle on Sequoia, and the black screen after PDF export
|
||||
- Snap: libxcb-cursor crash on Ubuntu 24.04 [#517]
|
||||
- Recent files menu updates during the session [#863]; cancelling the potential selector [#584]; dock layout restored on Qt 6 [#769]
|
||||
|
||||
### Performance
|
||||
- Fixed the Qt 6 load-time regression in XmlElementCollection [#570]; removed the pugixml pass from ElementFactory [#567]
|
||||
- Faster saving of projects with pictures [#1067]; the element style regex is compiled once [#841]; picture cache fixes [#842]
|
||||
|
||||
---
|
||||
|
||||
## Translations
|
||||
- **New language: Korean** [#419–#431]
|
||||
- **English is now the source language** of the interface [#1390]; "folio" is renamed "sheet" in the English UI [#1216]; hundreds of untranslated or broken English strings are fixed [#1124, #1261, #1389]
|
||||
- Updated: German, Polish, French (with real plural forms), Brazilian Portuguese, Spanish (complete), Russian, Chinese (zh-CN), Czech, Turkish, Hungarian, Dutch (Belgium) and Catalan
|
||||
- Translation suggestions for 29 phrase books [#1006]; singular/plural fixes [#938, #971]
|
||||
|
||||
---
|
||||
|
||||
## Build, packaging and infrastructure
|
||||
- **Qt 6 migration completed and Qt 5 removed** [#540, #541, #546, #547, #698, #705, #709, #880]; C++20 [#1123]
|
||||
- qmake `.pro`/`.pri` files removed; CMake only [#1374]
|
||||
- Optional precompiled headers (`QET_ENABLE_PCH`) [#680]; builds without KF5/KF6 [#533, #557, #1086]; Qt < 6.5 [#1085]; QtPdf optional
|
||||
- SQLite kept for the project database; the export can be enabled via a CMake option
|
||||
- FetchContent dependencies pinned [#958]; PugiXML and GoogleTest are no longer installed [#838]; SingleApplication updated to v3.5.6
|
||||
- **CI:** Linux build and unit tests [#872]; Windows build and tests [#1361, #1425]; Windows MSI with WiX and signing (SignPath); monthly nightly builds
|
||||
- **Packaging:** Flatpak and Snap moved to Qt 6/KF6 (Flatpak runtime 6.11, Snap core24); the macOS arm64 bundle uses CMake; the NSIS installer is on 3.x with fonts and more installer languages; `publiccode.yml` added
|
||||
- New example project: Shelly single-phase and three-phase designs
|
||||
|
||||
---
|
||||
|
||||
## Contributors
|
||||
|
||||
Thanks to everyone who contributed to this release, including: ispyisail, Laurent Trinques (scorpio810), Kellermorph, Andre Rummler, Beat Hangartner, Shane Ringrose, Jeff Patterson, jp2images, plc-user, Dieter Mayer, Levi Jetzer (IBSYSLevi), Magnus Hellströmer (elevatormind), ChuckNr11, Gerhard Schwanzer, saschbe, enesgursoy6110, philippeagray, Kyle-Code-CA and jkh (정광호), zi-mozhuang, jindongjie, neitri, Alfmat01, cezlom, Vinícius Santos, zakb120, pafri, geri1701, achim and joshua, and to the translators Gábor (hu), Ronny (nl-BE), Pawel (pl) and Antoni (ca).
|
||||
@@ -43,8 +43,8 @@ Here are the technical choices made for the software development:
|
||||
* Libraries: Qt 6.x
|
||||
* [KF6 Framework](https://github.com/KDE)
|
||||
[Cmake](https://cmake.org/install/)
|
||||
[kcoreaddons](https://invent.kde.org/frameworks/kcoreaddons)
|
||||
[kwidgetsaddons](https://invent.kde.org/frameworks/kwidgetsaddons).
|
||||
[kcoreaddons](https://github.com/KDE/kcoreaddons/tree/kf6)
|
||||
[kwidgetsaddons](https://github.com/KDE/kwidgetsaddons/tree/kf6).
|
||||
* Coding language: [C++](https://en.wikipedia.org/wiki/C%2B%2B)
|
||||
* GUI translations: [Qt Linguist](http://doc.qt.io/qt-6/qtlinguist-index.html)
|
||||
* Version control: [GIT](https://github.com/qelectrotech/qelectrotech-source-mirror.git)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"finish-args": [
|
||||
"--socket=wayland",
|
||||
"--socket=fallback-x11",
|
||||
"--device=all",
|
||||
"--device=dri",
|
||||
"--share=ipc",
|
||||
"--share=network",
|
||||
"--socket=cups",
|
||||
@@ -33,23 +33,6 @@
|
||||
"modules": [
|
||||
"tkinter.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",
|
||||
"buildsystem": "cmake",
|
||||
@@ -62,9 +45,7 @@
|
||||
"-DBUILD_PUGIXML=ON",
|
||||
"-DFETCHCONTENT_FULLY_DISCONNECTED=ON",
|
||||
"-DFETCHCONTENT_SOURCE_DIR_PUGIXML=/run/build/qelectrotech/pugixml",
|
||||
"-DQET_EXPORT_PROJECT_DB=ON",
|
||||
"-DQET_ENABLE_SPACEMOUSE=ON",
|
||||
"-DQET_SPACEMOUSE_BACKEND=hid"
|
||||
"-DQET_EXPORT_PROJECT_DB=ON"
|
||||
],
|
||||
"post-install": [
|
||||
"mv ${FLATPAK_DEST}/share/mime/packages/qelectrotech.xml ${FLATPAK_DEST}/share/mime/packages/org.qelectrotech.QElectroTech.xml"
|
||||
|
||||
@@ -50,7 +50,6 @@ parts:
|
||||
- python3-lxml
|
||||
- python3-tk
|
||||
- libtk8.6
|
||||
- libspnav0
|
||||
|
||||
kde-sdk-setup:
|
||||
plugin: nil
|
||||
@@ -93,7 +92,6 @@ parts:
|
||||
# runs FindCups at configure time and fails without the CUPS headers.
|
||||
# Build-time only: nothing from it is staged into the snap.
|
||||
- libcups2-dev
|
||||
- libspnav-dev
|
||||
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')
|
||||
snap_version="${displayed_version}-g$(git rev-parse --short=8 HEAD)"
|
||||
@@ -108,8 +106,7 @@ parts:
|
||||
-DBUILD_KF=OFF \
|
||||
-DPACKAGE_TESTS=OFF \
|
||||
-DBUILD_PUGIXML=ON \
|
||||
-DQET_EXPORT_PROJECT_DB=ON \
|
||||
-DQET_ENABLE_SPACEMOUSE=ON
|
||||
-DQET_EXPORT_PROJECT_DB=ON
|
||||
ninja -C build -j${CRAFT_PARALLEL_BUILD_COUNT}
|
||||
DESTDIR="$CRAFT_PART_INSTALL" ninja -C build install
|
||||
override-stage: |
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
; this file is part of installer for QElectroTech
|
||||
; this file is part of installer for QElectroTech
|
||||
; Copyright (C)2015 QElectroTech Team <scorpio@qelectrotech.org>
|
||||
;
|
||||
; This program is free software; you can redistribute it and/or
|
||||
@@ -34,7 +34,7 @@
|
||||
;--------------------------------
|
||||
; NSIS 3 requires SetCompressor BEFORE any Section or Function
|
||||
SetCompressor /FINAL /SOLID lzma
|
||||
Unicode true
|
||||
|
||||
;--------------------------------
|
||||
; Includes
|
||||
!include x64.nsh
|
||||
@@ -274,21 +274,6 @@ Section "$(Fonts)" SEC05
|
||||
File /nonfatal /r "./files/fonts"
|
||||
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
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||
@@ -297,8 +282,6 @@ SectionEnd
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $(var3)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $(var4)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $(var5)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC06} $(var6)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC07} $(var7)
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||
|
||||
;--------------------------------
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
LangString installed ${LANG_ENGLISH} "${SOFT_NAME} is already installed. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
|
||||
LangString installed ${LANG_ENGLISH} "${SOFT_NAME} is already installed. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
|
||||
LangString wrongArch ${LANG_ENGLISH} "This distribution is for 64 bits computers only."
|
||||
LangString Elements ${LANG_ENGLISH} "Elements"
|
||||
LangString Electric ${LANG_ENGLISH} "Electric"
|
||||
@@ -19,10 +19,6 @@
|
||||
LangString var3 ${LANG_ENGLISH} "Examples of cartridges"
|
||||
LangString var4 ${LANG_ENGLISH} "Examples of diagrams"
|
||||
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."
|
||||
|
||||
|
||||
@@ -47,10 +43,6 @@
|
||||
LangString var3 ${LANG_KOREAN} "표제란 예제"
|
||||
LangString var4 ${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}을(를) 수동으로 제거해 주세요."
|
||||
|
||||
|
||||
@@ -75,10 +67,6 @@
|
||||
LangString var3 ${LANG_POLISH} "Przykłady tabliczek rysunkowych"
|
||||
LangString var4 ${LANG_POLISH} "Przykłady schematów"
|
||||
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}."
|
||||
|
||||
|
||||
@@ -103,10 +91,6 @@
|
||||
LangString var3 ${LANG_GREEK} "Παραδείγματα πινακίδων"
|
||||
LangString var4 ${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} πριν συνεχίσετε."
|
||||
|
||||
|
||||
@@ -131,10 +115,6 @@
|
||||
LangString var3 ${LANG_CZECH} "Příklady popisových polí"
|
||||
LangString var4 ${LANG_CZECH} "Příklady schémat"
|
||||
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ě."
|
||||
|
||||
|
||||
@@ -159,10 +139,6 @@
|
||||
LangString var3 ${LANG_SPANISH} "Ejemplos de cartelas"
|
||||
LangString var4 ${LANG_SPANISH} "Ejemplos de esquemas"
|
||||
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."
|
||||
|
||||
|
||||
@@ -187,10 +163,6 @@
|
||||
LangString var3 ${LANG_GERMAN} "Schriftfeld-Beispiele"
|
||||
LangString var4 ${LANG_GERMAN} "Schaltplan-Beispiele"
|
||||
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."
|
||||
|
||||
|
||||
@@ -215,10 +187,6 @@
|
||||
LangString var3 ${LANG_RUSSIAN} "Примеры штампов"
|
||||
LangString var4 ${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} вручную перед продолжением."
|
||||
|
||||
|
||||
@@ -243,10 +211,6 @@
|
||||
LangString var3 ${LANG_ARABIC} "أمثلة على كتل العنوان"
|
||||
LangString var4 ${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} يدويًا قبل المتابعة."
|
||||
|
||||
|
||||
@@ -271,10 +235,6 @@
|
||||
LangString var3 ${LANG_CATALAN} "Exemples de cartutxos"
|
||||
LangString var4 ${LANG_CATALAN} "Exemples d'esquemes"
|
||||
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."
|
||||
|
||||
|
||||
@@ -299,10 +259,6 @@
|
||||
LangString var3 ${LANG_ITALIAN} "Cartigli di esempio"
|
||||
LangString var4 ${LANG_ITALIAN} "Schemi di esempio"
|
||||
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."
|
||||
|
||||
|
||||
@@ -327,10 +283,6 @@
|
||||
LangString var3 ${LANG_PORTUGUESE} "Exemplos de legendas"
|
||||
LangString var4 ${LANG_PORTUGUESE} "Exemplos de esquemas"
|
||||
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."
|
||||
|
||||
|
||||
@@ -355,10 +307,6 @@
|
||||
LangString var3 ${LANG_ROMANIAN} "Exemple de cartușe"
|
||||
LangString var4 ${LANG_ROMANIAN} "Exemple de scheme"
|
||||
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."
|
||||
|
||||
|
||||
@@ -383,10 +331,6 @@
|
||||
LangString var3 ${LANG_CROATIAN} "Primjeri zaglavlja"
|
||||
LangString var4 ${LANG_CROATIAN} "Primjeri shema"
|
||||
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."
|
||||
|
||||
|
||||
@@ -411,10 +355,6 @@
|
||||
LangString var3 ${LANG_DUTCH} "Voorbeelden van titelblokken"
|
||||
LangString var4 ${LANG_DUTCH} "Voorbeelden van schema's"
|
||||
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."
|
||||
|
||||
|
||||
@@ -439,10 +379,6 @@
|
||||
LangString var3 ${LANG_DANISH} "Titel blokke eksempler"
|
||||
LangString var4 ${LANG_DANISH} "Diagram eksempler"
|
||||
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."
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
LangString wrongArch ${LANG_FRENCH} "Ce programme est pour Windows 64 bits seulement."
|
||||
LangString wrongArch ${LANG_FRENCH} "Ce programme est pour Windows 64 bits seulement."
|
||||
LangString installed ${LANG_FRENCH} "${SOFT_NAME} est déja installé. $\n$\nCliquer sur `OK` pour désinstaller l'ancienne version `Annuler` pour annuler cet upgrade."
|
||||
LangString Elements ${LANG_FRENCH} "Eléments"
|
||||
LangString Electric ${LANG_FRENCH} "Electrique"
|
||||
@@ -19,8 +19,4 @@
|
||||
LangString var3 ${LANG_FRENCH} "Exemples de cartouches"
|
||||
LangString var4 ${LANG_FRENCH} "Exemples de schémas"
|
||||
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."
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
; Missing language translations for QElectroTech installer
|
||||
; Missing language translations for QElectroTech installer
|
||||
; Languages added: hu, ja, mn, nb, nl_BE, nl_NL, pt_BR, rs/sr, sk, sl, sv, tr, uk, zh
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
@@ -25,10 +25,6 @@
|
||||
LangString var3 ${LANG_HUNGARIAN} "Rajzfejléc-példák"
|
||||
LangString var4 ${LANG_HUNGARIAN} "Kapcsolási rajz példák"
|
||||
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á."
|
||||
|
||||
|
||||
@@ -56,10 +52,6 @@
|
||||
LangString var3 ${LANG_JAPANESE} "表題欄の例"
|
||||
LangString var4 ${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} を手動でアンインストールしてください。"
|
||||
|
||||
|
||||
@@ -87,10 +79,6 @@
|
||||
LangString var3 ${LANG_MONGOLIAN} "Гарчгийн блокын жишээнүүд"
|
||||
LangString var4 ${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}-г гараар устгана уу."
|
||||
|
||||
|
||||
@@ -118,10 +106,6 @@
|
||||
LangString var3 ${LANG_NORWEGIAN} "Eksempler på titelblokker"
|
||||
LangString var4 ${LANG_NORWEGIAN} "Eksempler på skjemaer"
|
||||
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."
|
||||
|
||||
|
||||
@@ -159,10 +143,6 @@
|
||||
LangString var3 ${LANG_PORTUGUESEBR} "Exemplos de legendas"
|
||||
LangString var4 ${LANG_PORTUGUESEBR} "Exemplos de esquemas"
|
||||
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."
|
||||
|
||||
|
||||
@@ -190,10 +170,6 @@
|
||||
LangString var3 ${LANG_SERBIAN} "Примери заглавља"
|
||||
LangString var4 ${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} ручно пре наставка."
|
||||
|
||||
|
||||
@@ -221,10 +197,6 @@
|
||||
LangString var3 ${LANG_SLOVAK} "Príklady popisových polí"
|
||||
LangString var4 ${LANG_SLOVAK} "Príklady schém"
|
||||
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."
|
||||
|
||||
|
||||
@@ -252,10 +224,6 @@
|
||||
LangString var3 ${LANG_SLOVENIAN} "Primeri glav risb"
|
||||
LangString var4 ${LANG_SLOVENIAN} "Primeri shem"
|
||||
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}."
|
||||
|
||||
|
||||
@@ -283,10 +251,6 @@
|
||||
LangString var3 ${LANG_SWEDISH} "Exempel på ritningshuvuden"
|
||||
LangString var4 ${LANG_SWEDISH} "Exempel på scheman"
|
||||
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."
|
||||
|
||||
|
||||
@@ -314,10 +278,6 @@
|
||||
LangString var3 ${LANG_TURKISH} "Başlık bloğu örnekleri"
|
||||
LangString var4 ${LANG_TURKISH} "Şema örnekleri"
|
||||
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."
|
||||
|
||||
|
||||
@@ -345,10 +305,6 @@
|
||||
LangString var3 ${LANG_UKRAINIAN} "Приклади штампів"
|
||||
LangString var4 ${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} вручну перед продовженням."
|
||||
|
||||
|
||||
@@ -376,8 +332,4 @@
|
||||
LangString var3 ${LANG_SIMPCHINESE} "标题栏示例"
|
||||
LangString var4 ${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}。"
|
||||
|
||||
@@ -1,12 +1,5 @@
|
||||
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\.qet]
|
||||
[-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
|
||||
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_qt6.bat
|
||||
if not exist "%expected_qet_exe%" set expected_qet_exe=%current_dir%Lancer QET.bat
|
||||
set expected_qet_exe=%current_dir%Lancer QET.bat
|
||||
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_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:\=\\%
|
||||
|
||||
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
|
||||
(
|
||||
echo Windows Registry Editor Version 5.00
|
||||
echo.
|
||||
|
||||
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\""
|
||||
|
||||
rem association de fichier *.qet
|
||||
echo [HKEY_CURRENT_USER\Software\Classes\.qet]
|
||||
echo [HKEY_CLASSES_ROOT\.qet]
|
||||
echo @="qet_diagram_file"
|
||||
echo [HKEY_CURRENT_USER\Software\Classes\qet_diagram_file]
|
||||
echo [HKEY_CLASSES_ROOT\qet_diagram_file]
|
||||
echo @="QET diagram"
|
||||
echo "EditFlags"=dword:00000000
|
||||
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 [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\""
|
||||
|
||||
rem association de fichier *.elmt
|
||||
echo [HKEY_CURRENT_USER\Software\Classes\.elmt]
|
||||
echo [HKEY_CLASSES_ROOT\.elmt]
|
||||
echo @="qet_element_file"
|
||||
echo [HKEY_CURRENT_USER\Software\Classes\qet_element_file]
|
||||
echo [HKEY_CLASSES_ROOT\qet_element_file]
|
||||
echo @="QET element"
|
||||
echo "EditFlags"=dword:00000000
|
||||
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 [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\""
|
||||
|
||||
rem association de fichier *.titleblock
|
||||
echo [HKEY_CURRENT_USER\Software\Classes\.titleblock]
|
||||
echo [HKEY_CLASSES_ROOT\.titleblock]
|
||||
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 "EditFlags"=dword:00000000
|
||||
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 [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\""
|
||||
) > %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>
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2006-2026 The QElectroTech Team
|
||||
# Copyright 2006 The QElectroTech Team
|
||||
# This file is part of QElectroTech.
|
||||
#
|
||||
# QElectroTech is free software: you can redistribute it and/or modify
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
message(
|
||||
"_____________________________________________________________________"
|
||||
"\nCopyright 2006-2026 The QElectroTech Team"
|
||||
"\nCopyright 2006 The QElectroTech Team"
|
||||
"\nThis file is part of QElectroTech."
|
||||
|
||||
"\n\nQElectroTech is free software: you can redistribute it and/or modify"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2006-2026 The QElectroTech Team
|
||||
# Copyright 2006 The QElectroTech Team
|
||||
# This file is part of QElectroTech.
|
||||
#
|
||||
# QElectroTech is free software: you can redistribute it and/or modify
|
||||
@@ -63,7 +63,7 @@ message("QET_DIR :" ${QET_DIR})
|
||||
message("GIT_COMMIT_SHA :" ${GIT_COMMIT_SHA})
|
||||
|
||||
if(BUILD_WITH_KF)
|
||||
message("KF_GIT_TAG :" ${KF_GIT_TAG})
|
||||
message("KF_GIT_TAG :" ${KF_GIT_TAG})
|
||||
else()
|
||||
add_definitions(-DBUILD_WITHOUT_KF)
|
||||
endif()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2006-2026 The QElectroTech Team
|
||||
# Copyright 2006 The QElectroTech Team
|
||||
# This file is part of QElectroTech.
|
||||
#
|
||||
# QElectroTech is free software: you can redistribute it and/or modify
|
||||
@@ -31,7 +31,7 @@ add_definitions(-DQT_MESSAGELOGCONTEXT)
|
||||
# In order to do so, uncomment the following line.
|
||||
#add_definitions(-DTODO_LIST)
|
||||
|
||||
# Build with KDE Frameworks.
|
||||
# Build with KDE Frameworks.
|
||||
option(BUILD_WITH_KF "Build with KDE Frameworks" ON)
|
||||
|
||||
# Precompiled headers for the Qt umbrella headers.
|
||||
@@ -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
|
||||
# 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)
|
||||
|
||||
# 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,4 +1,4 @@
|
||||
# Copyright 2006-2026 The QElectroTech Team
|
||||
# Copyright 2006 The QElectroTech Team
|
||||
# This file is part of QElectroTech.
|
||||
#
|
||||
# QElectroTech is free software: you can redistribute it and/or modify
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2006-2026 The QElectroTech Team
|
||||
# Copyright 2006 The QElectroTech Team
|
||||
# This file is part of QElectroTech.
|
||||
#
|
||||
# QElectroTech is free software: you can redistribute it and/or modify
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2006-2026 The QElectroTech Team
|
||||
# Copyright 2006 The QElectroTech Team
|
||||
# This file is part of QElectroTech.
|
||||
#
|
||||
# QElectroTech is free software: you can redistribute it and/or modify
|
||||
|
||||
@@ -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,4 +1,4 @@
|
||||
# Copyright 2006-2026 The QElectroTech Team
|
||||
# Copyright 2006 The QElectroTech Team
|
||||
# This file is part of QElectroTech.
|
||||
#
|
||||
# QElectroTech is free software: you can redistribute it and/or modify
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2006-2026 The QElectroTech Team
|
||||
# Copyright 2006 The QElectroTech Team
|
||||
# This file is part of QElectroTech.
|
||||
#
|
||||
# QElectroTech is free software: you can redistribute it and/or modify
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2006-2026 The QElectroTech Team
|
||||
# Copyright 2006 The QElectroTech Team
|
||||
# This file is part of QElectroTech.
|
||||
#
|
||||
# QElectroTech is free software: you can redistribute it and/or modify
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2006-2026 The QElectroTech Team
|
||||
# Copyright 2006 The QElectroTech Team
|
||||
# This file is part of QElectroTech.
|
||||
#
|
||||
# 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
|
||||
# windows-build workflow), and what the shortcuts pass as --lang-dir.
|
||||
set(QET_LANG_PATH "lang/")
|
||||
set(QET_EXAMPLES_PATH "examples/")
|
||||
set(QET_LICENSE_PATH "./")
|
||||
set(QET_ICONS_PATH "icons/hicolor/")
|
||||
# Liste des ressources Windows
|
||||
#RC_FILE = qelectrotech.rc
|
||||
endif()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2006-2026 The QElectroTech Team
|
||||
# Copyright 2006 The QElectroTech Team
|
||||
# This file is part of QElectroTech.
|
||||
#
|
||||
# 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/ElementsCollection/ui/renamedialog.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/namelistwidget.ui
|
||||
${QET_DIR}/sources/print/projectprintwindow.ui
|
||||
@@ -165,32 +164,15 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/import/edz/lzma/LzmaDec.c
|
||||
${QET_DIR}/sources/import/edz/lzma/Ppmd7.c
|
||||
${QET_DIR}/sources/import/edz/lzma/Ppmd7Dec.c
|
||||
${QET_DIR}/sources/container/miniz/miniz.c
|
||||
${QET_DIR}/sources/container/miniz/miniz.h
|
||||
${QET_DIR}/sources/container/qetcontainer.cpp
|
||||
${QET_DIR}/sources/container/qetcontainerdb.cpp
|
||||
${QET_DIR}/sources/container/qetcontainerdb.h
|
||||
${QET_DIR}/sources/container/qetcontainer.h
|
||||
${QET_DIR}/sources/container/qetzip.cpp
|
||||
${QET_DIR}/sources/container/qetzip.h
|
||||
${QET_DIR}/sources/borderproperties.cpp
|
||||
${QET_DIR}/sources/borderproperties.h
|
||||
${QET_DIR}/sources/bordertitleblock.cpp
|
||||
${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.h
|
||||
${QET_DIR}/sources/conductornumexport.cpp
|
||||
${QET_DIR}/sources/wiringlistexport.h
|
||||
${QET_DIR}/sources/wiringlistexport.cpp
|
||||
${QET_DIR}/sources/wirehops.h
|
||||
${QET_DIR}/sources/wirehops.cpp
|
||||
${QET_DIR}/sources/wiringrules.h
|
||||
${QET_DIR}/sources/wiringrules.cpp
|
||||
${QET_DIR}/sources/conductorrouter.h
|
||||
${QET_DIR}/sources/conductorrouter.cpp
|
||||
${QET_DIR}/sources/ui/wiringlistdialog.h
|
||||
${QET_DIR}/sources/ui/wiringlistdialog.cpp
|
||||
${QET_DIR}/sources/conductornumexport.h
|
||||
@@ -200,7 +182,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/conductorprofile.h
|
||||
${QET_DIR}/sources/conductorproperties.cpp
|
||||
${QET_DIR}/sources/conductorproperties.h
|
||||
${QET_DIR}/sources/conductormultiedit.h
|
||||
${QET_DIR}/sources/conductorsegment.cpp
|
||||
${QET_DIR}/sources/conductorsegment.h
|
||||
${QET_DIR}/sources/conductorsegmentprofile.h
|
||||
@@ -208,8 +189,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/configdialog.h
|
||||
${QET_DIR}/sources/createdxf.cpp
|
||||
${QET_DIR}/sources/createdxf.h
|
||||
${QET_DIR}/sources/dxfexport.cpp
|
||||
${QET_DIR}/sources/dxfexport.h
|
||||
${QET_DIR}/sources/dxfpaintdevice.cpp
|
||||
${QET_DIR}/sources/dxfpaintdevice.h
|
||||
${QET_DIR}/sources/diagramcommands.cpp
|
||||
@@ -224,8 +203,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/diagramposition.h
|
||||
${QET_DIR}/sources/diagramview.cpp
|
||||
${QET_DIR}/sources/diagramview.h
|
||||
${QET_DIR}/sources/imagedrop.cpp
|
||||
${QET_DIR}/sources/imagedrop.h
|
||||
${QET_DIR}/sources/elementdialog.cpp
|
||||
${QET_DIR}/sources/elementdialog.h
|
||||
${QET_DIR}/sources/elementprovider.cpp
|
||||
@@ -252,14 +229,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/exportpropertieswidget.h
|
||||
${QET_DIR}/sources/genericpanel.cpp
|
||||
${QET_DIR}/sources/genericpanel.h
|
||||
${QET_DIR}/sources/genericdevice/genericdevice.cpp
|
||||
${QET_DIR}/sources/genericdevice/genericdevice.h
|
||||
${QET_DIR}/sources/genericdevice/genericdevicewizard.cpp
|
||||
${QET_DIR}/sources/genericdevice/genericdevicewizard.h
|
||||
${QET_DIR}/sources/itemgroups.cpp
|
||||
${QET_DIR}/sources/itemgroups.h
|
||||
${QET_DIR}/sources/shownkinds.cpp
|
||||
${QET_DIR}/sources/shownkinds.h
|
||||
${QET_DIR}/sources/lastusedstyle.cpp
|
||||
${QET_DIR}/sources/lastusedstyle.h
|
||||
${QET_DIR}/sources/machine_info.cpp
|
||||
@@ -313,20 +282,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/recentfiles.h
|
||||
${QET_DIR}/sources/shortcutmanager.cpp
|
||||
${QET_DIR}/sources/shortcutmanager.h
|
||||
${QET_DIR}/sources/shortcutbarsettings.cpp
|
||||
${QET_DIR}/sources/shortcutbarsettings.h
|
||||
${QET_DIR}/sources/diagramtoolbarsettings.cpp
|
||||
${QET_DIR}/sources/diagramtoolbarsettings.h
|
||||
${QET_DIR}/sources/toolbarsettings.cpp
|
||||
${QET_DIR}/sources/toolbarsettings.h
|
||||
${QET_DIR}/sources/diagramcontexttoolbar.cpp
|
||||
${QET_DIR}/sources/diagramcontexttoolbar.h
|
||||
${QET_DIR}/sources/diagramgestureoverlay.cpp
|
||||
${QET_DIR}/sources/diagramgestureoverlay.h
|
||||
${QET_DIR}/sources/gesturesettings.cpp
|
||||
${QET_DIR}/sources/gesturesettings.h
|
||||
${QET_DIR}/sources/commandsearchpopup.cpp
|
||||
${QET_DIR}/sources/commandsearchpopup.h
|
||||
${QET_DIR}/sources/titleblockcell.cpp
|
||||
${QET_DIR}/sources/titleblockcell.h
|
||||
${QET_DIR}/sources/titleblockproperties.cpp
|
||||
@@ -342,20 +297,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/autoNum/numerotationcontextcommands.h
|
||||
${QET_DIR}/sources/autoNum/numerotationcontext.cpp
|
||||
${QET_DIR}/sources/autoNum/numerotationcontext.h
|
||||
${QET_DIR}/sources/autoNum/renumberelementscommand.cpp
|
||||
${QET_DIR}/sources/autoNum/renumberelementscommand.h
|
||||
${QET_DIR}/sources/autoNum/autonumschemecommand.cpp
|
||||
${QET_DIR}/sources/autoNum/autonumschemecommand.h
|
||||
${QET_DIR}/sources/autoNum/elementautonumschemecommand.cpp
|
||||
${QET_DIR}/sources/autoNum/elementautonumschemecommand.h
|
||||
${QET_DIR}/sources/autoNum/ui/counterwarning.cpp
|
||||
${QET_DIR}/sources/autoNum/ui/counterwarning.h
|
||||
${QET_DIR}/sources/autoNum/ui/pastenumberingimport.cpp
|
||||
${QET_DIR}/sources/autoNum/ui/pastenumberingimport.h
|
||||
${QET_DIR}/sources/autoNum/ui/renumberpreviewdialog.cpp
|
||||
${QET_DIR}/sources/autoNum/ui/renumberpreviewdialog.h
|
||||
${QET_DIR}/sources/undocommand/freezeelementlabelcommand.cpp
|
||||
${QET_DIR}/sources/undocommand/freezeelementlabelcommand.h
|
||||
${QET_DIR}/sources/autoNum/ui/autonumberingdockwidget.cpp
|
||||
${QET_DIR}/sources/autoNum/ui/autonumberingdockwidget.h
|
||||
${QET_DIR}/sources/autoNum/ui/autonumberingmanagementw.cpp
|
||||
@@ -366,16 +307,11 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/autoNum/ui/formulaautonumberingw.h
|
||||
${QET_DIR}/sources/autoNum/ui/numparteditorw.cpp
|
||||
${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.h
|
||||
|
||||
${QET_DIR}/sources/dataBase/legacyelementtypes.h
|
||||
${QET_DIR}/sources/dataBase/projectdatabase.cpp
|
||||
${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.h
|
||||
@@ -391,12 +327,8 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddimage.h
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddshape.cpp
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddshape.h
|
||||
${QET_DIR}/sources/diagramevent/diagrameventfillet.cpp
|
||||
${QET_DIR}/sources/diagramevent/diagrameventfillet.h
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddpath.cpp
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddpath.h
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddcable.cpp
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddcable.h
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddtext.cpp
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddtext.h
|
||||
${QET_DIR}/sources/diagramevent/diagrameventinterface.cpp
|
||||
@@ -486,8 +418,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/editor/ui/polygoneditor.h
|
||||
${QET_DIR}/sources/editor/ui/rectangleeditor.cpp
|
||||
${QET_DIR}/sources/editor/ui/rectangleeditor.h
|
||||
${QET_DIR}/sources/editor/ui/scaleelementdialog.cpp
|
||||
${QET_DIR}/sources/editor/ui/scaleelementdialog.h
|
||||
${QET_DIR}/sources/editor/ui/terminaleditor.cpp
|
||||
${QET_DIR}/sources/editor/ui/terminaleditor.h
|
||||
${QET_DIR}/sources/editor/ui/texteditor.cpp
|
||||
@@ -512,8 +442,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/ElementsCollection/elementpreviewdelegate.h
|
||||
${QET_DIR}/sources/ElementsCollection/elementscollectionmodel.cpp
|
||||
${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.h
|
||||
${QET_DIR}/sources/ElementsCollection/elementslocation.cpp
|
||||
@@ -522,10 +450,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/ElementsCollection/elementstreeview.h
|
||||
${QET_DIR}/sources/ElementsCollection/fileelementcollectionitem.cpp
|
||||
${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.h
|
||||
${QET_DIR}/sources/ElementsCollection/xmlprojectelementcollectionitem.cpp
|
||||
@@ -583,6 +507,10 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/PropertiesEditor/propertieseditorwidget.cpp
|
||||
${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.h
|
||||
${QET_DIR}/sources/qetgraphicsitem/conductortextitem.cpp
|
||||
@@ -591,7 +519,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/qetgraphicsitem/crossrefitem.h
|
||||
${QET_DIR}/sources/qetgraphicsitem/diagramimageitem.cpp
|
||||
${QET_DIR}/sources/qetgraphicsitem/diagramimageitem.h
|
||||
${QET_DIR}/sources/qetgraphicsitem/cropgeometry.h
|
||||
${QET_DIR}/sources/qetgraphicsitem/diagramtextitem.cpp
|
||||
${QET_DIR}/sources/qetgraphicsitem/diagramtextitem.h
|
||||
${QET_DIR}/sources/qetgraphicsitem/dynamicelementtextitem.cpp
|
||||
@@ -639,8 +566,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h
|
||||
${QET_DIR}/sources/QetGraphicsItemModeler/qetgraphicshandlerutility.cpp
|
||||
${QET_DIR}/sources/QetGraphicsItemModeler/qetgraphicshandlerutility.h
|
||||
${QET_DIR}/sources/QetGraphicsItemModeler/textresizehandles.cpp
|
||||
${QET_DIR}/sources/QetGraphicsItemModeler/textresizehandles.h
|
||||
|
||||
${QET_DIR}/sources/QPropertyUndoCommand/qpropertyundocommand.cpp
|
||||
${QET_DIR}/sources/QPropertyUndoCommand/qpropertyundocommand.h
|
||||
@@ -766,10 +691,6 @@ set(QET_SRC_FILES
|
||||
|
||||
${QET_DIR}/sources/ui/aboutqetdialog.cpp
|
||||
${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.h
|
||||
${QET_DIR}/sources/ui/alignmenttextdialog.cpp
|
||||
@@ -780,8 +701,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/ui/borderpropertieswidget.h
|
||||
${QET_DIR}/sources/ui/compositetexteditdialog.cpp
|
||||
${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.h
|
||||
${QET_DIR}/sources/ui/conductorpropertiesdialog.cpp
|
||||
@@ -804,12 +723,8 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/ui/diagrampropertieseditordockwidget.h
|
||||
${QET_DIR}/sources/ui/backupdialog.cpp
|
||||
${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.h
|
||||
${QET_DIR}/sources/ui/duplicateoffsetdialog.cpp
|
||||
${QET_DIR}/sources/ui/duplicateoffsetdialog.h
|
||||
${QET_DIR}/sources/ui/dynamicelementtextitemeditor.cpp
|
||||
${QET_DIR}/sources/ui/dynamicelementtextitemeditor.h
|
||||
${QET_DIR}/sources/ui/dynamicelementtextmodel.cpp
|
||||
@@ -822,8 +737,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/ui/elementinfowidget.h
|
||||
${QET_DIR}/sources/ui/terminalnumberingdialog.cpp
|
||||
${QET_DIR}/sources/ui/terminalnumberingdialog.h
|
||||
${QET_DIR}/sources/ui/cablenumberingdialog.cpp
|
||||
${QET_DIR}/sources/ui/cablenumberingdialog.h
|
||||
${QET_DIR}/sources/ui/elementpropertieswidget.cpp
|
||||
${QET_DIR}/sources/ui/elementpropertieswidget.h
|
||||
${QET_DIR}/sources/ui/formulaassistantdialog.cpp
|
||||
@@ -840,8 +753,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/ui/importelementtextpatterndialog.h
|
||||
${QET_DIR}/sources/ui/jumptoelementdialog.cpp
|
||||
${QET_DIR}/sources/ui/jumptoelementdialog.h
|
||||
${QET_DIR}/sources/ui/wiringruleswarning.cpp
|
||||
${QET_DIR}/sources/ui/wiringruleswarning.h
|
||||
${QET_DIR}/sources/ui/inditextpropertieswidget.cpp
|
||||
${QET_DIR}/sources/ui/inditextpropertieswidget.h
|
||||
${QET_DIR}/sources/ui/linksingleelementwidget.cpp
|
||||
@@ -856,8 +767,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/ui/multipastedialog.h
|
||||
${QET_DIR}/sources/ui/potentialselectordialog.cpp
|
||||
${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.h
|
||||
${QET_DIR}/sources/ui/reportpropertiewidget.cpp
|
||||
@@ -881,16 +790,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/ui/configpage/guidespropertieswidget.h
|
||||
${QET_DIR}/sources/ui/configpage/shortcutsconfigpage.cpp
|
||||
${QET_DIR}/sources/ui/configpage/shortcutsconfigpage.h
|
||||
${QET_DIR}/sources/ui/configpage/shortcutbarconfigpage.cpp
|
||||
${QET_DIR}/sources/ui/configpage/shortcutbarconfigpage.h
|
||||
${QET_DIR}/sources/ui/customizedialog.cpp
|
||||
${QET_DIR}/sources/ui/customizedialog.h
|
||||
${QET_DIR}/sources/ui/configpage/toolbarcommandsconfigpage.cpp
|
||||
${QET_DIR}/sources/ui/configpage/toolbarcommandsconfigpage.h
|
||||
${QET_DIR}/sources/ui/configpage/toolbarsconfigpage.cpp
|
||||
${QET_DIR}/sources/ui/configpage/toolbarsconfigpage.h
|
||||
${QET_DIR}/sources/ui/configpage/gesturesconfigpage.cpp
|
||||
${QET_DIR}/sources/ui/configpage/gesturesconfigpage.h
|
||||
|
||||
${QET_DIR}/sources/undocommand/addelementtextcommand.cpp
|
||||
${QET_DIR}/sources/undocommand/addelementtextcommand.h
|
||||
@@ -916,12 +815,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/undocommand/removediagramcommand.h
|
||||
${QET_DIR}/sources/undocommand/setautonumcontextcommand.cpp
|
||||
${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/mirrorselectioncommand.cpp
|
||||
${QET_DIR}/sources/undocommand/mirrorselectioncommand.h
|
||||
${QET_DIR}/sources/undocommand/rotateselectioncommand.cpp
|
||||
${QET_DIR}/sources/undocommand/rotateselectioncommand.h
|
||||
${QET_DIR}/sources/undocommand/promoteshapecommand.cpp
|
||||
@@ -933,8 +826,6 @@ set(QET_SRC_FILES
|
||||
|
||||
${QET_DIR}/sources/utils/conductorcreator.cpp
|
||||
${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.h
|
||||
${QET_DIR}/sources/utils/qetsettings.cpp
|
||||
@@ -942,51 +833,6 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/utils/qetutils.cpp
|
||||
${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/cablelist/cabletypelist.cpp
|
||||
${QET_DIR}/sources/cablelist/cabletypelist.h
|
||||
${QET_DIR}/sources/cablelist/cableexportdialog.cpp
|
||||
${QET_DIR}/sources/cablelist/cableexportdialog.h
|
||||
${QET_DIR}/sources/cablelist/cablelistmodel.cpp
|
||||
${QET_DIR}/sources/cablelist/cablelistmodel.h
|
||||
${QET_DIR}/sources/cablelist/cablelistmodelpropertieswidget.cpp
|
||||
${QET_DIR}/sources/cablelist/cablelistmodelpropertieswidget.h
|
||||
${QET_DIR}/sources/cablelist/cablelistrows.cpp
|
||||
${QET_DIR}/sources/cablelist/cablelistrows.h
|
||||
${QET_DIR}/sources/cablelist/cablequerywidget.cpp
|
||||
${QET_DIR}/sources/cablelist/cablequerywidget.h
|
||||
|
||||
${QET_DIR}/sources/cable/addcablecommand.cpp
|
||||
${QET_DIR}/sources/cable/addcablecommand.h
|
||||
${QET_DIR}/sources/cable/cable.cpp
|
||||
${QET_DIR}/sources/cable/cable.h
|
||||
${QET_DIR}/sources/cable/cablecopy.cpp
|
||||
${QET_DIR}/sources/cable/cablecopy.h
|
||||
${QET_DIR}/sources/cable/cablecreatedialog.cpp
|
||||
${QET_DIR}/sources/cable/cablecreatedialog.h
|
||||
${QET_DIR}/sources/cable/cablemanager.cpp
|
||||
${QET_DIR}/sources/cable/cablemanager.h
|
||||
${QET_DIR}/sources/cable/cablepart.cpp
|
||||
${QET_DIR}/sources/cable/cablepart.h
|
||||
${QET_DIR}/sources/cable/cablepropertiesdialog.cpp
|
||||
${QET_DIR}/sources/cable/cablepropertiesdialog.h
|
||||
${QET_DIR}/sources/cable/cablepropertieseditorwidget.cpp
|
||||
${QET_DIR}/sources/cable/cablepropertieseditorwidget.h
|
||||
${QET_DIR}/sources/cable/cablepropertieswidget.cpp
|
||||
${QET_DIR}/sources/cable/cablepropertieswidget.h
|
||||
${QET_DIR}/sources/cable/cablerenumber.cpp
|
||||
${QET_DIR}/sources/cable/cablerenumber.h
|
||||
${QET_DIR}/sources/cable/cabletextformatdialog.cpp
|
||||
${QET_DIR}/sources/cable/cabletextformatdialog.h
|
||||
${QET_DIR}/sources/cable/editcablecommand.cpp
|
||||
${QET_DIR}/sources/cable/editcablecommand.h
|
||||
|
||||
${QET_DIR}/sources/xml/terminalstripitemxml.cpp
|
||||
${QET_DIR}/sources/xml/terminalstripitemxml.h
|
||||
${QET_DIR}/sources/xml/terminalstriplayoutpatternxml.cpp
|
||||
@@ -1023,56 +869,8 @@ list(APPEND QET_SRC_FILES
|
||||
${QET_DIR}/sources/scripting/qetscriptapi.h
|
||||
${QET_DIR}/sources/scripting/qetscripting.cpp
|
||||
${QET_DIR}/sources/scripting/qetscripting.h
|
||||
${QET_DIR}/sources/scripting/scriptheader.h
|
||||
${QET_DIR}/sources/scripting/scriptlibrary.cpp
|
||||
${QET_DIR}/sources/scripting/scriptlibrary.h
|
||||
${QET_DIR}/sources/scripting/scriptmanagerdialog.cpp
|
||||
${QET_DIR}/sources/scripting/scriptmanagerdialog.h
|
||||
${QET_DIR}/sources/scripting/liveserver.cpp
|
||||
${QET_DIR}/sources/scripting/liveserver.h
|
||||
${QET_DIR}/sources/scripting/macrorecorder.cpp
|
||||
${QET_DIR}/sources/scripting/macrorecorder.h
|
||||
${QET_DIR}/sources/scripting/assistantinfo.cpp
|
||||
${QET_DIR}/sources/scripting/assistantinfo.h
|
||||
)
|
||||
|
||||
if(QET_SPACEMOUSE_ENABLED)
|
||||
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
|
||||
${QET_DIR}/lang/qet_ar.ts
|
||||
${QET_DIR}/lang/qet_ca.ts
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2006-2026 The QElectroTech Team
|
||||
# Copyright 2006 The QElectroTech Team
|
||||
# This file is part of QElectroTech.
|
||||
#
|
||||
# QElectroTech is free software: you can redistribute it and/or modify
|
||||
|
||||
@@ -42,18 +42,10 @@ unit conventions and decimal quantities are not changed implicitly.
|
||||
|
||||
## BOM Policy
|
||||
|
||||
The default BOM query exports one row per Simple, Master, Slave or Terminal
|
||||
element: an auxiliary contact block and a terminal block are parts of their
|
||||
own (discussion #847). Reports, thumbnails and conductor definitions are
|
||||
excluded. A Master device is counted once and PLC I/O entries are not
|
||||
expanded.
|
||||
|
||||
Two options leave rows out (#1178). Contact blocks: uncheck **Contacts
|
||||
esclaves** in the dialog, or pass `--no-slaves`. Junctions, the
|
||||
terminal-type symbols drawn where wires branch (`114_connections`), which
|
||||
have no label, designation, manufacturer or manufacturer reference: check
|
||||
**Laisser de côté les jonctions**, or pass `--no-junctions`. A terminal block
|
||||
with a label or a part number is kept. The existing `exclude_from_bom` property is honored by the
|
||||
The default BOM query exports one row per Simple or Master element. Slave
|
||||
contacts, terminal-strip elements, reports, thumbnails, and conductor
|
||||
definitions are excluded. A Master device is counted once and PLC I/O entries
|
||||
are not expanded. The existing `exclude_from_bom` property is honored by the
|
||||
SQL view, including common true representations (`true`, `1`, `yes`, `on`).
|
||||
|
||||
The default columns are:
|
||||
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
@@ -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 |
|
After Width: | Height: | Size: 199 B |
|
After Width: | Height: | Size: 340 B |
|
After Width: | Height: | Size: 362 B |
|
After Width: | Height: | Size: 338 B |
|
After Width: | Height: | Size: 368 B |
|
After Width: | Height: | Size: 425 B |
|
After Width: | Height: | Size: 309 B |
|
After Width: | Height: | Size: 393 B |
|
After Width: | Height: | Size: 197 B |
|
After Width: | Height: | Size: 212 B |
|
After Width: | Height: | Size: 296 B |
|
After Width: | Height: | Size: 198 B |
|
After Width: | Height: | Size: 447 B |
|
After Width: | Height: | Size: 375 B |
|
After Width: | Height: | Size: 296 B |
|
After Width: | Height: | Size: 274 B |
|
After Width: | Height: | Size: 277 B |
|
After Width: | Height: | Size: 207 B |
|
After Width: | Height: | Size: 365 B |
|
After Width: | Height: | Size: 243 B |
|
After Width: | Height: | Size: 219 B |
|
After Width: | Height: | Size: 219 B |
|
After Width: | Height: | Size: 299 B |
|
After Width: | Height: | Size: 358 B |
|
After Width: | Height: | Size: 275 B |
|
After Width: | Height: | Size: 178 B |
|
After Width: | Height: | Size: 316 B |
|
After Width: | Height: | Size: 325 B |
|
After Width: | Height: | Size: 373 B |
|
After Width: | Height: | Size: 227 B |
|
After Width: | Height: | Size: 410 B |
|
After Width: | Height: | Size: 195 B |
|
After Width: | Height: | Size: 339 B |
|
After Width: | Height: | Size: 201 B |
|
After Width: | Height: | Size: 397 B |
|
After Width: | Height: | Size: 401 B |
|
After Width: | Height: | Size: 210 B |
|
After Width: | Height: | Size: 336 B |
|
After Width: | Height: | Size: 328 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 300 B |
|
After Width: | Height: | Size: 320 B |
|
After Width: | Height: | Size: 268 B |
|
After Width: | Height: | Size: 314 B |
|
After Width: | Height: | Size: 289 B |
|
After Width: | Height: | Size: 293 B |
|
After Width: | Height: | Size: 289 B |
|
After Width: | Height: | Size: 404 B |
|
After Width: | Height: | Size: 490 B |
|
After Width: | Height: | Size: 523 B |
|
After Width: | Height: | Size: 312 B |
|
After Width: | Height: | Size: 472 B |
|
After Width: | Height: | Size: 296 B |