Compare commits

..

166 Commits

Author SHA1 Message Date
plc-user 411fb3c4dc Fix signal for ComboBox 2025-03-28 18:57:40 +01:00
plc-user 07a07a5719 Fix signal for ColorButton 2025-03-28 18:54:57 +01:00
Laurent Trinques 3913836137 Merge pull request #385 from plc-user/qt6-cmake
FIX broken signals in export-dialog
2025-03-13 11:06:54 +01:00
plc-user 242a601984 use "%" for string-concatenation
Qt-Docs says it's less memory-usage...
2025-03-12 16:55:47 +01:00
plc-user 635bb15faf remove unneeded Qt-version-checks 2025-03-12 16:48:52 +01:00
plc-user 2deb37d351 remove unneeded Qt-version-checks 2025-03-12 16:45:16 +01:00
plc-user 1124a567aa remove unneeded comments 2025-03-12 00:43:23 +01:00
plc-user 8e7120e923 fixed broken signals
and added some English comments
2025-03-12 00:40:35 +01:00
Laurent Trinques 0a9f62126b Merge pull request #380 from plc-user/qt6-cmake
added code for Qt6 to qetelementeditor.cpp
2025-03-06 13:09:03 +01:00
plc-user c0864eced3 added code for Qt6 to qetelementeditor.cpp
and removed qDebug() - Output.
Seems to work for me but should be tested by someone else, too.
2025-03-06 09:55:21 +01:00
Laurent Trinques e01e3d7838 Merge pull request #378 from elevatormind/no-kwidgetsaddons
No kwidgetsaddons
2025-03-04 14:23:42 +01:00
Magnus Hellströmer 0e85314a84 Removed kwidgetaddons from CMake 2025-03-03 23:25:34 +01:00
Magnus Hellströmer 80e404048c Added padding variables for ColorButton and ColorComboBoxDelegate 2025-03-03 23:24:28 +01:00
Magnus Hellströmer 0e5f37503c Small fixes
- Better call of QColorDialog::getColor in ColorButton (reflects new ColorComboBox class)
  - no CamelCase for variable
  - Typo
2025-03-03 23:19:23 +01:00
Magnus Hellströmer f14f6c6a8d Replacement for KColorCombo 2025-03-03 23:11:51 +01:00
Magnus Hellströmer b815244494 Replacement for KColorButton 2025-03-03 20:45:16 +01:00
elevatormind 01d018f8cf Merge branch 'qelectrotech:qt6-cmake' into qt6-cmake 2025-03-03 19:48:57 +01:00
Laurent Trinques d7a15d6cb6 bordertitleblock: use same code for Qt5 & Qt6 for "numbering" rows 2025-03-02 10:35:16 +01:00
Laurent Trinques a53a799da5 Fix crossXref with Qt6 thanks plc-user,
see:https://qelectrotech.org/forum/viewtopic.php?pid=21168#p21168
2025-03-01 15:48:42 +01:00
Laurent Trinques d4972dc588 Merge pull request #371 from qelectrotech/master
Merge last commits on mastert to branch qt6-cmake
2025-02-28 13:46:46 +01:00
Laurent Trinques e66061fdca Merge pull request #370 from plc-user/master
some small changes for selective move
2025-02-28 09:57:41 +01:00
plc-user e2e84a56f7 limit movement to int-values to be able to re-position to original position 2025-02-28 07:40:59 +01:00
plc-user 565374f174 additional ControlModifier does not work here as expected 2025-02-28 07:36:53 +01:00
plc-user 7bdca47d8e use brackets to be more clear what is meant 2025-02-28 07:33:17 +01:00
Laurent Trinques d1ce42a148 Fixed deprecated use of QAbstractPrintDialog::setEnabledOptions 2025-02-27 12:36:58 +01:00
Laurent Trinques 6b9837b244 Fix menclature tables are growing in width, when you reload them the
width increases.
2025-02-27 11:29:29 +01:00
Laurent Trinques f0c954329f git submodule update --remote elements 2025-02-25 16:49:12 +01:00
Laurent Trinques e99ad6b424 Merge pull request #369 from prescott66/patch-1
Added slovak translation to org.qelectrotech.qelectrotech.desktop
2025-02-25 12:53:10 +01:00
Dušan Kazik 74460a6645 Added slovak translation to org.qelectrotech.qelectrotech.desktop
Added slovak translation for app name and comment.
2025-02-25 09:20:04 +01:00
Laurent Trinques 231a1c919a git submodule update --remote elements 2025-02-22 10:31:24 +01:00
Laurent Trinques 19c9d614e8 Merge pull request #367 from plc-user/master
unify calls to "setRotation" for element-primitives again
2025-02-22 10:18:14 +01:00
plc-user 43386aa14f unify calls to "setRotation" for element-primitives 2025-02-22 09:30:15 +01:00
plc-user 181680e6f1 add English comments 2025-02-22 09:20:46 +01:00
Laurent Trinques 667d25899f Merge pull request #364 from elevatormind/conductor_texts
New variables for conductor text formulas
2025-02-21 17:13:18 +01:00
Laurent Trinques c9b9165911 Merge pull request #365 from elevatormind/selective_move
Added option to only move dynamic texts
2025-02-21 17:12:54 +01:00
Laurent Trinques adbbeca905 Typo 2025-02-21 16:17:57 +01:00
Laurent Trinques f8b9edd938 Fix Symbol library panel, the texts don't show until you hover over them with the mouse.
Improve launch time
2025-02-21 15:47:18 +01:00
Laurent Trinques 99dfe6a50c Merge pull request #366 from elevatormind/qt6-cmake
Qt6 cmake
2025-02-21 15:36:54 +01:00
Magnus Hellströmer 78ee65a21b Added option to only move dynamic texts 2025-02-19 21:33:29 +01:00
Magnus Hellströmer 49ce6bc4b3 Update qet_be.ts to qet_nl_BE.ts 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 572d78912c Fix compiler warning 2025-02-19 21:32:21 +01:00
Magnus Hellströmer aa36bb35e1 Fix compiler warning 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 4e030943bc Fix compile warning 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 1c2d83d586 Fix compile error 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 1a24452e8b Bump ECM / KF6 versions 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 3f7192dc68 Rearraned and updated cmake-files 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 4ce8fcb0d4 Bump cmake minimum version 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 9fefc7aa2a Force Qt6 in cmake 2025-02-19 21:32:21 +01:00
Magnus Hellströmer c77eb98a15 Fixed broken mapped signal for RecentFiles 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 5973db00f7 Fixed deprecated use of QColor:setNamedColor() 2025-02-19 21:32:21 +01:00
Magnus Hellströmer ee06a71e6f Fixed missing include 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 25f9f14b04 Fixed deprecated qAsConst() to std::as_const() 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 4827b23116 Changed QtConcurrent::run() to QThreadPool::start() to fix compile warning 2025-02-19 21:32:21 +01:00
Magnus Hellströmer e332d3bf31 Fixed compile warnings about QVariant::canConvert() 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 3c4a0ed2b4 Fixed narrowing warning qsizetype -> int 2025-02-19 21:32:21 +01:00
Magnus Hellströmer e8f8304b60 Fixed deprecated uses of QVariant 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 07118d7a11 Updated deprecated QString::count() -> length() 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 373fcfb4ea Support for loading language .qm files as Qt resource 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 05dfd10952 Show full Qt version in cmake 2025-02-19 21:32:21 +01:00
Magnus Hellströmer a88d485051 Replaced BUILD_WITHOUT_KF5 to BUILD_WITHOUT_KF6 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 40abc3892c Fixed export project db (added SQLite3 in cmake) 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 27899c48a3 Fixed crash with db export disabled 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 4fe9687aca Added missing include 2025-02-19 21:32:21 +01:00
Magnus Hellströmer cfdad56d0e Added qsizetype cast fixing compile error 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 8ba96ac6e2 Added bool cast fixing compile error 2025-02-19 21:32:21 +01:00
Magnus Hellströmer dd521f13aa Added missing includes 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 6c5ff66067 Include correct header file for catch 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 0dc45f056e Fixed deprecated regex exactMatch() 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 0b307abf34 Corrected overloaded qHash() from earlier commit 21fcf688ec3b8b82e89d1be5424b0aa4d356e1ab 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 9127937bee Added bool cast fixing compiler crash 2025-02-19 21:32:21 +01:00
Magnus Hellströmer d3f206a387 Removed obsolete QGIManager::manage/release(QVector) 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 8a4d7c6cf2 Fixed compiler warning for overloaded qHash() 2025-02-19 21:32:21 +01:00
Magnus Hellströmer bae85624a0 Bumped git-versions in cmake for catch and googletest 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 540a248d72 Bumped git-versions in cmake for pugixml and singleapplication 2025-02-19 21:32:21 +01:00
Magnus Hellströmer d07214ab92 Migrated from Qt5(Kf5 to Qt6/Kf6 in cmake-files 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 68a2ddde18 New variables for conductor text formulas 2025-02-19 20:26:53 +01:00
Laurent Trinques 8c3343795a Merge pull request #362 from pkess/fix_typo
Fix typo widht to width
2025-02-19 15:54:59 +01:00
Peter Kessen 2097b24d37 Fix typo for variable 2025-02-18 20:14:51 +01:00
Peter Kessen 5351746dc7 Fix typo within settings entry 2025-02-18 20:13:10 +01:00
Laurent Trinques 1af3c5b852 Merge pull request #361 from plc-user/master
element-editor: add mirror and flip for "text"
2025-02-18 06:27:14 +01:00
plc-user c2a2e5f5eb minor: whitespace and comments 2025-02-17 19:45:53 +01:00
plc-user dc836248f0 element editor: add mirror and flip for “text”
Maybe not (yet) perfect, but it looks pretty good to me!

Why am I doing this to myself?
All this crap with fonts and stuff!
It's been crap for as long as I can remember.
2025-02-17 19:39:53 +01:00
Laurent Trinques a3bf2e2800 minor for Swedish translation
Add translation for Imported elements in QET project widget
2025-02-17 16:00:46 +01:00
Laurent Trinques 83f960a983 Merge pull request #360 from elevatormind/lang_sv
Add Swedish translation
2025-02-17 15:42:25 +01:00
Laurent Trinques c223121f00 git submodule update --remote elements 2025-02-17 15:30:42 +01:00
plc-user 0f647a5c38 fix: do not add "kindInformations" for thumbnail-elements 2025-02-17 09:48:51 +01:00
plc-user 67112bf8e5 fix typo in enum-entry and comments 2025-02-17 09:33:35 +01:00
Laurent Trinques 1b60f7c52a Merge pull request #359 from pkess/linux_installer
German text for launcher and debian package code style
2025-02-17 06:36:55 +01:00
Magnus Hellströmer 9a96eb914d Updated qet_sv.qm 2025-02-16 20:59:02 +01:00
Magnus Hellströmer bf8723015a Update swedish translation 2025-02-16 20:54:15 +01:00
Magnus Hellströmer 82d7bbda68 Added swedish language 2025-02-16 20:54:15 +01:00
Peter Kessen 0df3ecb5f7 Edit german translation 2025-02-16 19:57:56 +01:00
Peter Kessen 1e27cac8c5 Remove trailing whitespace 2025-02-16 19:57:07 +01:00
Laurent Trinques 16dea9f3de Update Polish translation, thanks Paweł 2025-02-16 17:49:15 +01:00
Laurent Trinques 20e852cbaf Merge pull request #358 from plc-user/master
some more rotation, mirror and flip
2025-02-16 17:24:33 +01:00
plc-user 51225d5f59 element-editor: add rotation with smaller increments for "line", "polygon", "text" and "dynamic_text" with shortcut <Ctrl>+<Space> 2025-02-16 16:31:18 +01:00
plc-user 3fc5469aee element-editor: add mirror and flip for "dynamic_text" 2025-02-16 16:15:46 +01:00
plc-user 6fdc243552 fix indention - no code-change 2025-02-16 15:43:58 +01:00
plc-user da109b1522 element-editor: add rotation-functions to "text" and "dynamic_text" 2025-02-16 15:42:33 +01:00
plc-user 2aeae1fe46 use Qt-functions to rotate lines and polygons 2025-02-16 15:28:15 +01:00
plc-user e98ce4de1d add English comments 2025-02-16 10:02:19 +01:00
plc-user da0951d5a0 fix typo in variable-name (mixture of French and English) 2025-02-15 20:36:21 +01:00
Laurent Trinques 0be9e2beae minor add qInfo-Text "SQLite version: " 2025-02-15 17:10:39 +01:00
Laurent Trinques 52946f9e3a Merge pull request #357 from plc-user/master
BugFix: Flip and Mirror of terminals
2025-02-15 09:35:10 +01:00
plc-user 007ce79cee BugFix: Flip and Mirror of terminals 2025-02-15 09:13:56 +01:00
Laurent Trinques 5aee30edee Merge pull request #356 from plc-user/master
element-editor: fix rotation and more
2025-02-15 08:21:44 +01:00
plc-user b9a8dc0918 fix typo in translation 2025-02-14 20:57:30 +01:00
plc-user bd3b39cea3 element-editor: fix rotation, add mirror, add flip for graphical primitives
Now that the problem with the translations of keyboard shortcuts has been resolved and rotation using the space bar works reliably in principle, I took a closer look at the rotation function itself in the element editor.

I noticed, for example, that arcs can be rotated at an angle of 15°. This doesn't really make sense, as the “arc” part doesn't have the “rotation” property. There is only width and height.
And somehow rotating arcs didn't work well: start- and span-angles weren't adjusted.

Lines and polygons can be rotated in 15° increments, which doesn't make much sense, if other parts that can only be rotated in 90° increments are selected at the same time.

To make a long story short:
I reworked the rotation functions of the graphical parts so that now all parts are rotated in 90° steps around the origin! This means that it is now possible to mark several parts and rotate them around the same point at the same time!

In addition, the functions for mirroring graphic parts at y-axis (shortcut "M") and flipping at x-axis (shortcut "F") have been implemented.

I have saved the text elements for later!
(or someone else)
2025-02-14 20:31:03 +01:00
plc-user fc286cca22 fix one last hardcoded shortcut-translation 2025-02-14 19:52:39 +01:00
plc-user 4d5af028be menu: move "About QElectroTech" in Help-Menu to bottom
If the version number of QElectroTech is requested in the forum in case of error messages or anomalies, the Qt version used is very often stated because the entry “About QElectroTech” does not appear very prominently in the help menu: The entry “About Qt” is used much more frequently because it appears eye-catchingly as the lowest entry. However, specifying the Qt version is often not helpful for troubleshooting: We need the QET version!
That's why I'm moving the “About QElectroTech” entry to the bottom, so that it is easier to see and find!
2025-02-14 19:47:19 +01:00
Laurent Trinques 9afc97108b Merge pull request #355 from plc-user/master
minor: mostly typos
2025-02-14 17:39:43 +01:00
plc-user a4a3733670 typos, whitespace and brackets 2025-02-14 16:59:23 +01:00
plc-user 3471140b64 fix typo in fuction-name (looked like a mixture of French and English) 2025-02-14 16:47:39 +01:00
Laurent Trinques 43f0107eb1 Revert "Try Clazy fix-its"
Segfault on old Qt versions!
This reverts commit dba7caed30.
2025-02-14 16:17:58 +01:00
Laurent Trinques dba7caed30 Try Clazy fix-its
clazy is a compiler plugin which allows clang to understand Qt
semantics. You get more than 50 Qt related compiler warnings, ranging
from unneeded memory allocations to misusage of API, including fix-its
for automatic refactoring.

https://invent.kde.org/sdk/clazy
2025-02-14 15:52:23 +01:00
Laurent Trinques adcf77e34a Replacing modules includes <QtConcurrent> with QtConcurrentRun and
QtConcurrentMap

Signed-off-by: Laurent Trinques <scorpio@qelectrotech.org>
2025-02-14 14:07:41 +01:00
Laurent Trinques 59236170b2 Merge pull request #354 from plc-user/master
a few translated shortcuts were still there ... fixed!
2025-02-13 08:14:09 +01:00
plc-user 3d82aff4e7 FIX: shortcut for rotation in element-editor was hardcoded in UI 2025-02-12 15:35:45 +01:00
plc-user 516eb9eb45 fixed English comments 2025-02-12 14:02:30 +01:00
plc-user 0b80d1b5b9 a few translated shortcuts were still there ... fixed! 2025-02-12 13:41:39 +01:00
Laurent Trinques 073e4080fd Merge pull request #353 from plc-user/master
FIX: some shortcuts do not work with language set to local
2025-02-11 18:23:32 +01:00
plc-user b512aee2bf update language-files 2025-02-11 15:55:24 +01:00
plc-user 38f5547228 use "positive logic" for conditional compiling 2025-02-11 14:43:18 +01:00
plc-user 317c90c769 do not hardcode translations for shortcuts: let the system do it for you! 2025-02-11 14:36:15 +01:00
Laurent Trinques f308ea6b93 Merge pull request #352 from plc-user/master
fix movement of element, when origin is outside of graphics
2025-02-11 12:54:37 +01:00
plc-user 4808b04a31 fix movement of element, when origin is outside of graphics
When saving an element it is checked, if the origin (0/0)
is inside the graphical parts. If outside, the element is
moved by integer values for x- and y-offset before saving.
Old calculation for offset could lead to "strange" new
values for positions.

Additionally: fix typos and English comments
2025-02-11 11:46:36 +01:00
Laurent Trinques 3a43fbfa61 Merge pull request #351 from plc-user/master
FIX copy-and-paste in element-editor: set paste-position to meaningful values
2025-02-11 06:41:40 +01:00
plc-user 29aee8e80c copy-and-paste: set paste-position to meaningful values 2025-02-10 18:33:49 +01:00
plc-user 717b257fa0 added English comments 2025-02-10 18:26:14 +01:00
plc-user 13f432571d comments: fixed typos and added English comments 2025-02-09 17:51:15 +01:00
Laurent Trinques 610f4d6dfa Merge pull request #350 from plc-user/master
some cleaning for element-file
2025-02-09 13:32:59 +01:00
plc-user a20d02f5f0 element-editor: remove leading and trailing whitespace from author-info 2025-02-09 12:43:35 +01:00
plc-user 1fc33aa1ba element-editor: limit decimal places for sizes and positions to two, when saving file 2025-02-09 12:33:24 +01:00
plc-user 706eba6612 fix typos and whitespace 2025-02-09 12:25:09 +01:00
Laurent Trinques f675ce3452 git submodule update --remote elements 2025-02-08 10:56:36 +01:00
Laurent Trinques 3ae47a714d Merge pull request #348 from plc-user/master
fix: properties in project-file
2025-02-08 10:33:37 +01:00
plc-user 58aae63616 sorted translations \“imported elements\” in sourcecode and added some for Qt6 2025-02-08 07:45:48 +01:00
plc-user b8e4fca09f fix: remove empty elementInformation, but keep empty properties 2025-02-08 07:39:21 +01:00
Laurent Trinques 075289797a Merge pull request #347 from plc-user/master
translation: update German and English
2025-02-08 07:11:13 +01:00
plc-user f26733f34e translation: update German and English 2025-02-07 20:47:16 +01:00
Laurent Trinques ba9fea3fd1 Merge pull request #346 from plc-user/master
export: set maximum width / height according limitations in QPainter
2025-02-07 15:16:40 +01:00
plc-user bbbf77597a export: set maximum width / height according limitations in QPainter 2025-02-07 11:34:05 +01:00
Laurent Trinques 1cf156c47a Merge pull request #345 from plc-user/master
export: set maximum width / height according specifications of export-type
2025-02-06 16:11:36 +01:00
plc-user 924d1c1b05 use "static const" - variables instead of multiple times values in source-code
use multiplication-sign "×" instead of asterisk "*" between widht and height
2025-02-06 15:16:19 +01:00
plc-user 33570ffceb export: set maximum width / height according specifications of export-type 2025-02-06 12:58:32 +01:00
Laurent Trinques 40b7aa999f git submodule update --remote elements 2025-02-06 07:18:42 +01:00
Laurent Trinques c9ba7bee6c ExportDialog increase spinBox limit 10 000px to 100 000px
See: https://qelectrotech.org/forum/viewtopic.php?pid=21002#p21002
2025-02-06 07:12:56 +01:00
Laurent Trinques 7466793e71 Merge pull request #344 from plc-user/master
some clean-up for element-file and in code
2025-02-05 19:26:24 +01:00
plc-user 408481a023 some clean-up for "elementInformations" in element-file
- for some time now and for whatever reason, element-editor
  sometimes adds element-information without content –> do not
  save info-lines without any content
- sort element-information alphabetically by name in element-file
- use trimmed strings for element-information to remove leading
  and trailing whitestpace
2025-02-05 13:11:37 +01:00
plc-user b0324bd6e8 fix typo 2025-02-05 12:58:49 +01:00
plc-user 812ac83ab6 NamesList: move while-loop into "else"-clause, to be more precise and added english text to comments 2025-02-05 12:57:50 +01:00
Laurent Trinques d1c6fb7e3c Merge pull request #343 from plc-user/master
minor: typos, comments, whitespace, translation
2025-02-04 18:15:26 +01:00
plc-user 9dad6963cb minor: typos, comments, whitespace, translation 2025-02-04 13:48:35 +01:00
Laurent Trinques 28df44d1ba Merge pull request #342 from plc-user/master
Sort names in element-file by language-code
2025-02-04 12:56:03 +01:00
plc-user 25a81f24fa NamesList: Use ‘Qmap’ instead of ‘Qhash’
to automatically sort the names of an element by
language code before saving the element-file.
Added English comment in header-file.
2025-02-03 13:23:32 +01:00
plc-user 7a39e69a32 element-name: if no name is set, set to "en" / "NoName" (also adjusted comment) 2025-02-03 13:03:55 +01:00
Laurent Trinques af33719995 Merge pull request #341 from plc-user/master
more precise Log-Text for search of "qet_tb_generator"
2025-02-02 15:48:48 +01:00
Laurent Trinques 4c12b3c679 Flatpak upgrade tkinter git to update to python 3.11 2025-02-02 15:16:53 +01:00
plc-user e1dc978f97 more precise Log-Text for search of "qet_tb_generator" to avoid misunderstandings 2025-02-02 14:48:38 +01:00
Laurent Trinques 1b2d8061a5 Merge pull request #340 from plc-user/master
machine_info: add entry for QETApp::configDir() also for win
2025-02-02 13:34:42 +01:00
plc-user b0f0a56a88 machine_info: add entry for QETApp::configDir() also for win
We use QETApp::configDir() to save configuration-files (*.json)
for creating BOM, nomenclature, etc. during runtime.
So it's interesting for win-users, too, which configDir is used.
2025-02-02 12:49:59 +01:00
Laurent Trinques d6d38141c9 Merge pull request #339 from plc-user/master
remove dead code (local variables that were never used)
2025-02-02 12:24:19 +01:00
plc-user 331cecc05c remove dead code (local variables that were never used) 2025-02-02 12:16:28 +01:00
Laurent Trinques de0fa1fa20 Merge pull request #338 from plc-user/master
minor changes
2025-02-01 12:49:43 +01:00
plc-user 1698e062ab remove dead code (local variables that were never used) 2025-02-01 08:52:07 +01:00
plc-user 3051c225bb minor: typos, witespace, comments 2025-02-01 08:49:12 +01:00
203 changed files with 26399 additions and 16209 deletions
+24 -30
View File
@@ -16,7 +16,7 @@
include(cmake/hoto_update_cmake_message.cmake)
cmake_minimum_required(VERSION 3.14...3.19 FATAL_ERROR)
cmake_minimum_required(VERSION 3.21.1 FATAL_ERROR)
project(qelectrotech
VERSION 0.9.0
@@ -27,6 +27,13 @@ project(qelectrotech
include(cmake/copyright_message.cmake)
set(QET_DIR ${PROJECT_SOURCE_DIR})
include(cmake/qet_compilation_vars.cmake)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 REQUIRED COMPONENTS ${QET_COMPONENTS})
qt_standard_project_setup()
# Add sub directories
option(PACKAGE_TESTS "Build the tests" ON)
@@ -43,42 +50,17 @@ include(cmake/git_last_commit_sha.cmake)
include(cmake/fetch_kdeaddons.cmake)
include(cmake/fetch_singleapplication.cmake)
include(cmake/fetch_pugixml.cmake)
include(cmake/qet_compilation_vars.cmake)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
SET(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(
QT
NAMES
Qt6
Qt5
COMPONENTS
${QET_COMPONENTS}
REQUIRED
)
find_package(
Qt${QT_VERSION_MAJOR}
COMPONENTS
${QET_COMPONENTS}
REQUIRED)
set(CMAKE_AUTOUIC_SEARCH_PATHS ${QET_DIR}/sources/ui)
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "${QET_DIR}/lang")
qt5_add_translation(QM_FILES ${TS_FILES})
# als laatse
include(cmake/define_definitions.cmake)
add_executable(
qt_add_executable(
${PROJECT_NAME}
${QET_RES_FILES}
${QET_SRC_FILES}
@@ -86,13 +68,24 @@ add_executable(
${QET_DIR}/qelectrotech.qrc
)
if(QMFILES_AS_RESOURCE)
qt_add_translations(${PROJECT_NAME} TS_FILES ${TS_FILES} RESOURCE_PREFIX "/lang")
else()
qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "${QET_DIR}/lang")
qt_add_translation(QM_FILES ${TS_FILES})
endif()
find_package(SQLite3 REQUIRED)
target_link_libraries(
${PROJECT_NAME}
PUBLIC
PRIVATE
pugixml::pugixml
SingleApplication::SingleApplication
${KF5_PRIVATE_LIBRARIES}
SQLite::SQLite3
${KF6_PRIVATE_LIBRARIES}
${QET_PRIVATE_LIBRARIES}
)
@@ -149,6 +142,7 @@ install(FILES LICENSE ELEMENTS.LICENSE CREDIT README ChangeLog DESTINATION share
install(FILES misc/org.qelectrotech.qelectrotech.desktop DESTINATION share/applications)
install(FILES misc/qelectrotech.xml DESTINATION share/mime/packages)
install(FILES misc/qelectrotech.appdata.xml DESTINATION ${QET_APPDATA_PATH})
install(FILES ${QM_FILES} DESTINATION ${QET_LANG_PATH})
if(NOT QMFILES_AS_RESOURCE)
install(FILES ${QM_FILES} DESTINATION ${QET_LANG_PATH})
endif()
endif()
@@ -29,7 +29,7 @@
{
"type": "git",
"url": "https://github.com/iwalton3/tkinter-standalone",
"commit": "2301112d142ebaf7532b25600c77d1a2edc9ef04"
"commit": "23c793bad2429f4a81eee9f50e2d07ae845b7785"
}
],
"modules": [
+1
View File
@@ -125,6 +125,7 @@
!insertmacro MUI_LANGUAGE "Dutch"
!insertmacro MUI_LANGUAGE "Dutch_Belgium"
!insertmacro MUI_LANGUAGE "Danish"
!insertmacro MUI_LANGUAGE "Swedish"
!insertmacro MUI_RESERVEFILE_LANGDLL
!include lang_extra.nsh
+10 -5
View File
@@ -62,10 +62,15 @@ message("PROJECT_SOURCE_DIR :" ${PROJECT_SOURCE_DIR})
message("QET_DIR :" ${QET_DIR})
message("GIT_COMMIT_SHA :" ${GIT_COMMIT_SHA})
if(BUILD_WITH_KF5)
message("KF5_GIT_TAG :" ${KF5_GIT_TAG})
else()
add_definitions(-DBUILD_WITHOUT_KF5)
if(BUILD_WITH_KF6 AND BUILD_KF6)
message("KF6_GIT_TAG :" ${KF6_GIT_TAG})
endif()
if(NOT BUILD_WITH_KF6)
add_definitions(-DBUILD_WITHOUT_KF6)
endif()
message("QET_COMPONENTS :" ${QET_COMPONENTS})
message("QT_VERSION_MAJOR :" ${QT_VERSION_MAJOR})
message("Qt version :" ${Qt6_VERSION})
if(QMFILES_AS_RESOURCE)
add_definitions(-DQMFILES_AS_RESOURCE)
endif()
+5 -2
View File
@@ -31,5 +31,8 @@ add_definitions(-DQT_MESSAGELOGCONTEXT)
# In order to do so, uncomment the following line.
#add_definitions(-DTODO_LIST)
# Build with KF5
option(BUILD_WITH_KF5 "Build with KF5" ON)
# Build with KF6
option(BUILD_WITH_KF6 "Build with KF6" ON)
# Use translations as a Qt resource
option(QMFILES_AS_RESOURCE "Use .qm files as Qt resource" ON)
+29 -36
View File
@@ -14,54 +14,47 @@
# You should have received a copy of the GNU General Public License
# along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
message(" - fetch_kdeaddons")
message(STATUS "fetch_kdeaddons")
if(DEFINED BUILD_WITH_KF5)
Include(FetchContent)
if(BUILD_WITH_KF6)
option(BUILD_KF6 "Build KF6 libraries, use system ones otherwise" OFF)
block(PROPAGATE KF6_GIT_TAG)
set(BUILD_TESTING OFF)
set(KDE_SKIP_TEST_SETTINGS ON)
set(BUILD_DESIGNERPLUGIN OFF)
set(KCOREADDONS_USE_QML OFF)
set(BUILD_QCH OFF)
set(BUILD_SHARED_LIBS OFF)
find_package(ECM 6.8.0 REQUIRED NO_MODULE)
list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
option(BUILD_KF5 "Build KF5 libraries, use system ones otherwise" YES)
if(BUILD_KF6)
Include(FetchContent)
if(BUILD_KF5)
if(NOT DEFINED KF5_GIT_TAG)
#https://qelectrotech.org/forum/viewtopic.php?pid=13924#p13924
set(KF5_GIT_TAG v5.77.0)
if(NOT DEFINED KF6_GIT_TAG)
set(KF6_GIT_TAG v6.8.0)
endif()
# Fix stop the run autotests of kcoreaddons
# see
# https://invent.kde.org/frameworks/kcoreaddons/-/blob/master/CMakeLists.txt#L98
# issue:
# CMake Error at /usr/share/ECM/modules/ECMAddTests.cmake:89 (add_executable):
# Cannot find source file:
# see
# https://qelectrotech.org/forum/viewtopic.php?pid=13929#p13929
set(KDE_SKIP_TEST_SETTINGS "TRUE")
set(BUILD_TESTING "0")
FetchContent_Declare(
ecm
GIT_REPOSITORY https://invent.kde.org/frameworks/extra-cmake-modules.git
GIT_TAG ${KF5_GIT_TAG})
FetchContent_MakeAvailable(ecm)
FetchContent_Declare(
kcoreaddons
GIT_REPOSITORY https://invent.kde.org/frameworks/kcoreaddons.git
GIT_TAG ${KF5_GIT_TAG})
GIT_TAG ${KF6_GIT_TAG})
FetchContent_MakeAvailable(kcoreaddons)
get_target_property(kca_version KF6::CoreAddons VERSION)
FetchContent_Declare(
kwidgetsaddons
GIT_REPOSITORY https://invent.kde.org/frameworks/kwidgetsaddons.git
GIT_TAG ${KF5_GIT_TAG})
FetchContent_MakeAvailable(kwidgetsaddons)
else()
find_package(KF5CoreAddons REQUIRED)
find_package(KF5WidgetsAddons REQUIRED)
find_package(KF6CoreAddons REQUIRED)
set(kca_version ${KF6CoreAddons_VERSION})
endif()
set(KF5_PRIVATE_LIBRARIES
KF5::WidgetsAddons
KF5::CoreAddons
get_target_property(kwa_type KF6::CoreAddons TYPE)
message(NOTICE "ecm version : " ${ECM_VERSION})
message(NOTICE "kcoreaddons library : " ${kca_type})
message(NOTICE "kcoreaddons version : " ${kca_version})
endblock()
set(KF6_PRIVATE_LIBRARIES
KF6::CoreAddons
)
endif()
+1 -1
View File
@@ -25,7 +25,7 @@ if(BUILD_PUGIXML)
FetchContent_Declare(
pugixml
GIT_REPOSITORY https://github.com/zeux/pugixml.git
GIT_TAG v1.11.4)
GIT_TAG v1.14)
FetchContent_MakeAvailable(pugixml)
else()
+1 -1
View File
@@ -26,6 +26,6 @@ Include(FetchContent)
FetchContent_Declare(
SingleApplication
GIT_REPOSITORY https://github.com/itay-grudev/SingleApplication.git
GIT_TAG v3.2.0)
GIT_TAG v3.5.1)
FetchContent_MakeAvailable(SingleApplication)
+10 -1
View File
@@ -17,6 +17,8 @@
message(" - qet_compilation_vars")
set(QET_COMPONENTS
Core
Gui
LinguistTools
PrintSupport
Xml
@@ -109,6 +111,12 @@ set(QET_SRC_FILES
${QET_DIR}/sources/borderproperties.h
${QET_DIR}/sources/bordertitleblock.cpp
${QET_DIR}/sources/bordertitleblock.h
${QET_DIR}/sources/colorbutton.cpp
${QET_DIR}/sources/colorbutton.h
${QET_DIR}/sources/colorcombobox.cpp
${QET_DIR}/sources/colorcombobox.h
${QET_DIR}/sources/colorcomboboxdelegate.cpp
${QET_DIR}/sources/colorcomboboxdelegate.h
${QET_DIR}/sources/conductorautonumerotation.cpp
${QET_DIR}/sources/conductorautonumerotation.h
${QET_DIR}/sources/conductornumexport.cpp
@@ -710,7 +718,6 @@ set(QET_SRC_FILES
set(TS_FILES
${QET_DIR}/lang/qet_ar.ts
${QET_DIR}/lang/qet_be.ts
${QET_DIR}/lang/qet_ca.ts
${QET_DIR}/lang/qet_cs.ts
${QET_DIR}/lang/qet_da.ts
@@ -727,6 +734,7 @@ set(TS_FILES
${QET_DIR}/lang/qet_mn.ts
${QET_DIR}/lang/qet_nb.ts
${QET_DIR}/lang/qet_nl.ts
${QET_DIR}/lang/qet_nl_BE.ts
${QET_DIR}/lang/qet_no.ts
${QET_DIR}/lang/qet_pl.ts
${QET_DIR}/lang/qet_pt.ts
@@ -736,6 +744,7 @@ set(TS_FILES
${QET_DIR}/lang/qet_sk.ts
${QET_DIR}/lang/qet_sl.ts
${QET_DIR}/lang/qet_sr.ts
${QET_DIR}/lang/qet_sv.ts
${QET_DIR}/lang/qet_tr.ts
${QET_DIR}/lang/qet_zh.ts
)
+1 -1
View File
@@ -29,4 +29,4 @@ add_definitions(-DQET_ALLOW_OVERRIDE_CD_OPTION)
add_definitions(-DQET_ALLOW_OVERRIDE_DD_OPTION)
#comment the line below to disable the project database export
#add_definitions(-DQET_EXPORT_PROJECT_DB) #error Todo
add_definitions(-DQET_EXPORT_PROJECT_DB)
Binary file not shown.

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 B

+326
View File
@@ -0,0 +1,326 @@
<!DOCTYPE QPH>
<QPH sourcelanguage="fr" language="sv">
<phrase>
<source>Texte composé</source>
<target>Sammansatt text</target>
</phrase>
<phrase>
<source>Texte utilisateur</source>
<target>Egen text</target>
</phrase>
<phrase>
<source>Gauche</source>
<target>Vänster</target>
</phrase>
<phrase>
<source>Droite</source>
<target>Höger</target>
</phrase>
<phrase>
<source>Centre</source>
<target>Centrum</target>
</phrase>
<phrase>
<source>Élément</source>
<target>Objekt</target>
<definition>Vid referens av olika typer</definition>
</phrase>
<phrase>
<source>Folio</source>
<target>Blad</target>
</phrase>
<phrase>
<source>Conducteur</source>
<target>Förbindning</target>
</phrase>
<phrase>
<source>Sans nom</source>
<target>Namnlös</target>
</phrase>
<phrase>
<source>Recharger</source>
<target>Ladda om</target>
</phrase>
<phrase>
<source>Projet sans titre</source>
<target>Namnlöst projekt</target>
</phrase>
<phrase>
<source>Folio sans titre</source>
<target>Namnlöst blad</target>
</phrase>
<phrase>
<source>Nom</source>
<target>Namn</target>
</phrase>
<phrase>
<source>Sélection</source>
<target>Urval</target>
</phrase>
<phrase>
<source>Désélectionner tout</source>
<target>Avmarkera allt</target>
</phrase>
<phrase>
<source>Sélectionner tout</source>
<target>Välj allt</target>
</phrase>
<phrase>
<source>Installation</source>
<target>Anläggning</target>
</phrase>
<phrase>
<source>Localisation</source>
<target>Placering</target>
</phrase>
<phrase>
<source>Reports de folio</source>
<target>Bladhänvisningar</target>
</phrase>
<phrase>
<source>Report de folio</source>
<target>Bladhänvisning</target>
</phrase>
<phrase>
<source>Centre</source>
<target>Mitten</target>
<definition>Vid textjustering</definition>
</phrase>
<phrase>
<source>Collage multiple</source>
<target>Klistra in flera</target>
</phrase>
<phrase>
<source>Remplacer</source>
<target>Ersätt</target>
</phrase>
<phrase>
<source>Élément</source>
<target>Symbol</target>
<definition>Vid referens av symbol</definition>
</phrase>
<phrase>
<source>À</source>
<target>Till</target>
</phrase>
<phrase>
<source>De</source>
<target>Från</target>
</phrase>
<phrase>
<source>Nomenclature</source>
<target>Förteckning</target>
</phrase>
<phrase>
<source>Position du folio</source>
<target>Bladposition</target>
</phrase>
<phrase>
<source>Polygone fermé</source>
<target>Sluten polygon</target>
</phrase>
<phrase>
<source>Dossier</source>
<target>Mapp</target>
</phrase>
<phrase>
<source>Que souhaitez-vous faire</source>
<target>Vad vill du göra</target>
</phrase>
<phrase>
<source>Collection</source>
<target>Bibliotek</target>
</phrase>
<phrase>
<source>Collection de cartouches</source>
<target>Titelblockbibliotek</target>
</phrase>
<phrase>
<source>Collection company de cartouches</source>
<target>Organisationens titelblockbibliotek</target>
</phrase>
<phrase>
<source>Champ texte</source>
<target>Textfält</target>
</phrase>
<phrase>
<source>Longueur</source>
<target>Längd</target>
</phrase>
<phrase>
<source>Suivant</source>
<target>Nästa</target>
</phrase>
<phrase>
<source>Suivant</source>
<target>Följande</target>
</phrase>
<phrase>
<source>Chiffre</source>
<target>Siffra</target>
</phrase>
<phrase>
<source>Tout cocher</source>
<target>Markera allt</target>
</phrase>
<phrase>
<source>Tout décocher</source>
<target>Avmarkera allt</target>
</phrase>
<phrase>
<source>Titre</source>
<target>Titel</target>
</phrase>
<phrase>
<source>Dimensions</source>
<target>Dimensioner</target>
</phrase>
<phrase>
<source>Dimensions</source>
<target>Mått</target>
</phrase>
<phrase>
<source>Aperçu</source>
<target>Översikt</target>
</phrase>
<phrase>
<source>Générique</source>
<target>Generisk</target>
</phrase>
<phrase>
<source>Sans</source>
<target>Utan</target>
</phrase>
<phrase>
<source>Avec</source>
<target>Med</target>
</phrase>
<phrase>
<source>Normal</source>
<target>Normal</target>
</phrase>
<phrase>
<source>Tiret</source>
<target>Streckad</target>
</phrase>
<phrase>
<source>Pointillé</source>
<target>Punktad</target>
</phrase>
<phrase>
<source>Remplissage</source>
<target>Fyllning</target>
</phrase>
<phrase>
<source>Apparence</source>
<target>Utseende</target>
</phrase>
<phrase>
<source>Contour</source>
<target>Kontur</target>
</phrase>
<phrase>
<source>Épaisseur</source>
<target>Tjocklek</target>
</phrase>
<phrase>
<source>Géométrie</source>
<target>Geometri</target>
</phrase>
<phrase>
<source>Par defaut</source>
<target>Förinställt</target>
</phrase>
<phrase>
<source>Parcourir</source>
<target>Bläddra</target>
</phrase>
<phrase>
<source>Général</source>
<target>Allmänt</target>
</phrase>
<phrase>
<source>Borne</source>
<target>Plint</target>
</phrase>
<phrase>
<source>Coller</source>
<target>Klistra in</target>
</phrase>
<phrase>
<source>Ouvrir</source>
<target>Öppna</target>
</phrase>
<phrase>
<source>Arc</source>
<target>Båge</target>
</phrase>
<phrase>
<source>Ellipse</source>
<target>Ellips</target>
</phrase>
<phrase>
<source>Ligne</source>
<target>Linje</target>
</phrase>
<phrase>
<source>Rectangle</source>
<target>Rektangel</target>
</phrase>
<phrase>
<source>Orientation</source>
<target>Orientering</target>
</phrase>
<phrase>
<source>Nord</source>
<target>Nord</target>
</phrase>
<phrase>
<source>Est</source>
<target>Öst</target>
</phrase>
<phrase>
<source>Sud</source>
<target>Syd</target>
</phrase>
<phrase>
<source>Ouest</source>
<target>Väst</target>
</phrase>
<phrase>
<source>Police</source>
<target>Typsnitt</target>
</phrase>
<phrase>
<source>Dimensions</source>
<target>Storlek</target>
</phrase>
<phrase>
<source>Sans titre</source>
<target>Namnlös</target>
</phrase>
<phrase>
<source>Borne</source>
<target>Anslutning</target>
</phrase>
<phrase>
<source>Sans titre</source>
<target>Namnlöst</target>
</phrase>
<phrase>
<source>Sans nom</source>
<target>Namnlöst</target>
</phrase>
<phrase>
<source>Décalage</source>
<target>Förkjutning</target>
</phrase>
<phrase>
<source>Afficher</source>
<target>Visa</target>
</phrase>
<phrase>
<source>Affichage</source>
<target>Visning</target>
</phrase>
</QPH>
BIN
View File
Binary file not shown.
+331 -532
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+331 -532
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+553 -586
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+332 -534
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+337 -537
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+332 -533
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+334 -535
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+331 -532
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+332 -533
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+331 -532
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+332 -534
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+332 -533
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+331 -532
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+331 -532
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+331 -532
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+332 -534
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+332 -534
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+404 -570
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+331 -532
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+332 -533
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+331 -532
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+332 -533
View File
File diff suppressed because it is too large Load Diff
+331 -532
View File
File diff suppressed because it is too large Load Diff
+331 -532
View File
File diff suppressed because it is too large Load Diff
+331 -532
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+14418
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+331 -532
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+332 -533
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+332 -533
View File
File diff suppressed because it is too large Load Diff
+4 -2
View File
@@ -1,6 +1,6 @@
[Desktop Entry]
Version=1.0
Name=QElectroTech
Name=QElectroTech
TryExec=qelectrotech
Exec=qelectrotech %F
Icon=qelectrotech
@@ -10,7 +10,7 @@ MimeType=application/x-qet-project;application/x-qet-element;application/x-qet-t
Categories=Graphics;Qt;VectorGraphics;Science;Electricity;Engineering;
Keywords=Graphics;Science;Electricity;Engineering;
Comment=Edit electrical diagrams.
Comment[de]=Schaltpläne erstellen und bearbeiten.
Comment[de]=Elektroschaltpläne erstellen und bearbeiten.
Comment[fr]=Éditer des schémas électriques.
Comment[ar]=تحرير مخططات كهربائية
Comment[es]=Editar esquemas eléctricos
@@ -26,6 +26,7 @@ Comment[nl]=Bewerken bedradingsdiagrammen.
Comment[be]=Bewerken elektrisch schema.
Comment[da]=Rediger elektriske diagrammer.
Comment[ja]=電気回路図の編集。
Comment[sk]=Úprava elektrických schém.
GenericName=Electrical diagram editor
GenericName[de]=Schaltplaneditor
GenericName[fr]=Éditeur de schémas électriques
@@ -42,3 +43,4 @@ GenericName[nl]=Elektrische schema editor
GenericName[be]=Elektrische schema editor
GenericName[da]=Elektrisk diagram redigering
GenericName[ja]=電気回路図エディタ
GenericName[sk]=Editor elektrických schém
+2
View File
@@ -49,6 +49,7 @@
<file>ico/16x16/endline-none.png</file>
<file>ico/16x16/endline-simple.png</file>
<file>ico/16x16/endline-triangle.png</file>
<file>ico/16x16/flip.png</file>
<file>ico/16x16/folder-new.png</file>
<file>ico/16x16/folder.png</file>
<file>ico/16x16/go-company.png</file>
@@ -60,6 +61,7 @@
<file>ico/16x16/list-add.png</file>
<file>ico/16x16/list-remove.png</file>
<file>ico/16x16/masquer.png</file>
<file>ico/16x16/mirror.png</file>
<file>ico/16x16/neutral.png</file>
<file>ico/16x16/north.png</file>
<file>ico/16x16/orientations.png</file>
@@ -26,7 +26,8 @@
#include "xmlprojectelementcollectionitem.h"
#include <QFutureWatcher>
#include <QtConcurrent>
#include <QtConcurrentMap>
/**
@brief ElementsCollectionModel::ElementsCollectionModel
@@ -292,15 +293,9 @@ void ElementsCollectionModel::loadCollections(bool common_collection,
&QFutureWatcher<void>::finished,
watcher,
&QFutureWatcher<void>::deleteLater);
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
m_future = QtConcurrent::map(m_items_list_to_setUp, setUpData);
#else
# if TODO_LIST
# pragma message("@TODO remove code for QT 6 or later")
# endif
qDebug() << "Help code for QT 6 or later"
<< "QtConcurrent::run its backwards now...function, object, args";
#endif
watcher->setFuture(m_future);
}
@@ -765,7 +765,7 @@ void ElementsCollectionWidget::search()
}
//start the search when text have at least 3 letters.
if (text.count() < 3) {
if (text.length() < 3) {
return;
}
@@ -805,15 +805,15 @@ bool ElementsLocation::setXml(const QDomDocument &xml_document) const
qDebug() << "Help code for QT 6 or later";
QString path_ = collectionPath(false);
QRegularExpression rx("^(.*)/(.*\\.elmt)$");
if (rx.exactMatch(path_))
QRegularExpression rx(QRegularExpression::anchoredPattern("(.*)/(.*\\.elmt)"));
QRegularExpressionMatch match = rx.match(path_);
if (match.hasMatch())
{
return project()
->embeddedElementCollection()
->addElementDefinition(
rx.cap(1),
rx.cap(2),
match.captured(1),
match.captured(2),
xml_document.documentElement());
}
else
@@ -870,7 +870,7 @@ QIcon ElementsLocation::icon() const
/**
@brief ElementLocation::name
@return The name of the represented element in the current local
@return The name of the represented element in the current locale
*/
QString ElementsLocation::name() const
{
@@ -37,7 +37,7 @@ class XmlElementCollection;
This class represents the location,
the location of an element or of a category,
even of a collection ... in a collection.
She encapsulates a virtual path.
It encapsulates a virtual path.
\~French
Cette classe represente la localisation, l'emplacement d'un element ou
d'une categorie, voire d'une collection... dans une collection.
@@ -117,46 +117,53 @@ XmlElementCollection::XmlElementCollection(QETProject *project) :
0x8981,
0x7D20};
names.addName("fr", "Éléments importés");
names.addName("en", "Imported elements");
names.addName("nl_BE","Elementen geïmporteerd");
names.addName("de", "Importierte elemente");
names.addName("es", "Elementos importados");
names.addName("ru", QString(russian_data, 24));
names.addName("cs", "Zavedené prvky");
names.addName("pl", "Elementy importowane");
names.addName("pt", "elementos importados");
names.addName("it", "Elementi importati");
names.addName("el", QString(greek_data, 18));
names.addName("nl", "Elementen geïmporteerd");
names.addName("hr", "Uvezeni elementi");
names.addName("ca", "Elements importats");
names.addName("ro", "Elemente importate");
names.addName("tr", QString(turkish_data, 12));
names.addName("da", "Importerede elementer");
names.addName("sl", "Uvoženi elementi");
names.addName("ja", QString(japanese_data, 10));
names.addName("uk", QString(ukrainian_data, 20));
names.addName("ca", "Elements importats");
names.addName("cs", "Zavedené prvky");
names.addName("da", "Importerede elementer");
names.addName("de", "Importierte elemente");
names.addName("el", QString(greek_data, 18));
names.addName("en", "Imported elements");
names.addName("es", "Elementos importados");
names.addName("fr", "Éléments importés");
names.addName("hr", "Uvezeni elementi");
names.addName("it", "Elementi importati");
names.addName("ja", QString(japanese_data, 10));
names.addName("nl_BE", "Elementen geïmporteerd");
names.addName("nl", "Elementen geïmporteerd");
names.addName("pl", "Elementy importowane");
names.addName("pt_BR", "elementos importados");
names.addName("pt", "elementos importados");
names.addName("ro", "Elemente importate");
names.addName("ru", QString(russian_data, 24));
names.addName("sl", "Uvoženi elementi");
names.addName("tr", QString(turkish_data, 12));
names.addName("uk", QString(ukrainian_data, 20));
#else
# if TODO_LIST
# pragma message("@TODO remove code for QT 6 or later")
# endif
qDebug() << "Help code for QT 6 or later";
names.addName("fr", "Éléments importés");
names.addName("en", "Imported elements");
names.addName("de", "Importierte elemente");
names.addName("es", "Elementos importados");
names.addName("cs", "Zavedené prvky");
names.addName("pl", "Elementy importowane");
names.addName("pt", "elementos importados");
names.addName("it", "Elementi importati");
names.addName("nl", "Elementen geïmporteerd");
names.addName("hr", "Uvezeni elementi");
names.addName("ca", "Elements importats");
names.addName("ro", "Elemente importate");
names.addName("da", "Importerede elementer");
names.addName("sl", "Uvoženi elementi");
names.addName("uk", "Імпортовані елементи");
names.addName("ca", "Elements importats");
names.addName("cs", "Zavedené prvky");
names.addName("da", "Importerede elementer");
names.addName("de", "Importierte elemente");
names.addName("el", "Εισηγμένα στοιχεία");
names.addName("en", "Imported elements");
names.addName("es", "Elementos importados");
names.addName("fr", "Éléments importés");
names.addName("hr", "Uvezeni elementi");
names.addName("it", "Elementi importati");
names.addName("ja", "インバートされた要素");
names.addName("nl_BE", "Elementen geïmporteerd");
names.addName("nl", "Elementen geïmporteerd");
names.addName("pl", "Elementy importowane");
names.addName("pt_BR", "elementos importados");
names.addName("pt", "elementos importados");
names.addName("ro", "Elemente importate");
names.addName("ru", "Импортированные элементы");
names.addName("sl", "Uvoženi elementi");
names.addName("tr", "İthal öğeler");
names.addName("uk", "Імпортовані елементи");
#endif
import.appendChild(names.toXml(m_dom_document));
+37 -20
View File
@@ -46,7 +46,7 @@ NamesList::~NamesList()
void NamesList::addName(const QString &lang, const QString &name) {
if ((lang.length() != 2) && (lang.length() != 5)) return;
if ((lang.length() == 5) && (lang[2] != '_')) return;
hash_names.insert(lang, name);
map_names.insert(lang, name);
}
/**
@@ -54,7 +54,7 @@ void NamesList::addName(const QString &lang, const QString &name) {
@param lang la langue pour laquelle il faut supprimer le nom
*/
void NamesList::removeName(const QString &lang) {
hash_names.remove(lang);
map_names.remove(lang);
}
/**
@@ -62,7 +62,7 @@ void NamesList::removeName(const QString &lang) {
*/
void NamesList::clearNames()
{
hash_names.clear();
map_names.clear();
}
/**
@@ -70,7 +70,7 @@ void NamesList::clearNames()
*/
QList<QString> NamesList::langs() const
{
return(hash_names.keys());
return(map_names.keys());
}
/**
@@ -78,7 +78,7 @@ QList<QString> NamesList::langs() const
*/
bool NamesList::isEmpty() const
{
return(hash_names.isEmpty());
return(map_names.isEmpty());
}
/**
@@ -86,7 +86,7 @@ bool NamesList::isEmpty() const
*/
int NamesList::count() const
{
return(hash_names.count());
return(map_names.count());
}
/**
@@ -95,7 +95,7 @@ int NamesList::count() const
defini
*/
QString &NamesList::operator[](const QString &lang) {
return(hash_names[lang]);
return(map_names[lang]);
}
/**
@@ -105,17 +105,21 @@ QString &NamesList::operator[](const QString &lang) {
*/
const QString NamesList::operator[](const QString &lang) const
{
return(hash_names.value(lang));
return(map_names.value(lang));
}
/**
Loads the list of names from an XML element. This element is assumed to be
the parent of a names element, which itself contains the names. The
names previously contained in the list are not deleted, but can be overwritten.
French:
Charge la liste de noms depuis un element XML. Cet element est sense etre
le parent d'un element "names", qui contient lui meme les "name".
Les noms precedemment contenus dans la liste ne sont pas effaces mais
peuvent etre ecrases.
@param xml_element L'element XML a analyser
@param xml_element L'element XML a analyser / The XML element to be parsed
@param xml_options A set of options related to XML parsing.
@see getXmlOptions()
*/
@@ -168,8 +172,13 @@ void NamesList::fromXml(const pugi::xml_node &xml_element, const QHash<QString,
}
/**
Exports the list of names to an XML element.
Make sure that the list of names is not empty before exporting.
If list is empty, set name to "en" / "NoName"
French:
Exporte la liste des noms vers un element XML. Veillez a verifier que la
liste de noms n'est pas vide avant de l'exporter.
Si la liste est vide, le nom sera "en" / "NoName".
@param xml_document Le document XML dans lequel l'element XML sera insere
@param xml_options A set of options related to XML parsing.
@return L'element XML correspondant a la section "names"
@@ -179,13 +188,21 @@ QDomElement NamesList::toXml(QDomDocument &xml_document, const QHash<QString, QS
{
QHash<QString, QString> xml_opt = getXmlOptions(xml_options);
QDomElement names_elmt = xml_document.createElement(xml_opt["ParentTagName"]);
QHashIterator<QString, QString> names_iterator(hash_names);
while (names_iterator.hasNext()) {
names_iterator.next();
if (map_names.isEmpty()) {
qInfo() << " NamesList of element is empty - add default: [" << "en" << "] = " << "NoName" << "";
QDomElement name_elmt = xml_document.createElement(xml_opt["TagName"]);
name_elmt.setAttribute(xml_opt["LanguageAttribute"], names_iterator.key());
name_elmt.appendChild(xml_document.createTextNode(names_iterator.value()));
name_elmt.setAttribute(xml_opt["LanguageAttribute"], "en");
name_elmt.appendChild(xml_document.createTextNode("NoName"));
names_elmt.appendChild(name_elmt);
} else {
QMapIterator<QString, QString> names_iterator(map_names);
while (names_iterator.hasNext()) {
names_iterator.next();
QDomElement name_elmt = xml_document.createElement(xml_opt["TagName"]);
name_elmt.setAttribute(xml_opt["LanguageAttribute"], names_iterator.key());
name_elmt.appendChild(xml_document.createTextNode(names_iterator.value().trimmed()));
names_elmt.appendChild(name_elmt);
}
}
return(names_elmt);
}
@@ -218,7 +235,7 @@ QHash<QString, QString> NamesList::getXmlOptions(const QHash<QString, QString> &
*/
bool NamesList::operator!=(const NamesList &nl) const
{
return(hash_names != nl.hash_names);
return(map_names != nl.map_names);
}
/**
@@ -227,7 +244,7 @@ bool NamesList::operator!=(const NamesList &nl) const
*/
bool NamesList::operator==(const NamesList &nl) const
{
return(hash_names == nl.hash_names);
return(map_names == nl.map_names);
}
/**
@@ -246,10 +263,10 @@ bool NamesList::operator==(const NamesList &nl) const
QString NamesList::name(const QString &fallback_name) const
{
QString system_language = QETApp::langFromSetting();
if (! hash_names[system_language].isEmpty())
return (hash_names[system_language]);
if (! hash_names["en"].isEmpty()) return (hash_names["en"]);
if (! map_names[system_language].isEmpty())
return (map_names[system_language]);
if (! map_names["en"].isEmpty()) return (map_names["en"]);
if (! fallback_name.isEmpty()) return (fallback_name);
if (hash_names.count()) return (hash_names.begin().value());
if (map_names.count()) return (map_names.begin().value());
return (QString(""));
}
+7 -1
View File
@@ -21,6 +21,12 @@
#include <QtXml>
/**
This class represents a list of names, used by elements and categories
to embed the same name in several languages.
Languages are represented by two or five letters (typically the first
two of the system locale); examples: en for English, fr for French,
pt_BR for Brazilian Portuguese.
French:
Cette classe represente une liste de noms, utilisee
par les elements et categories pour embarquer un meme nom en plusieurs
langues.
@@ -36,7 +42,7 @@ class NamesList {
// attributes
private:
QHash<QString, QString> hash_names;
QMap<QString, QString> map_names;
public:
static int MetaTypeId;
@@ -17,6 +17,7 @@
*/
#include "terminalstripdrawer.h"
#include <QPainter>
#include <QHash>
namespace TerminalStripDrawer {
@@ -202,7 +203,7 @@ void TerminalStripDrawer::paint(QPainter *painter)
painter->restore();
//Draw the bridges
for (const auto &points_ : qAsConst(bridges_anchor_points))
for (const auto &points_ : std::as_const(bridges_anchor_points))
{
painter->save();
auto pen_{painter->pen()};
@@ -126,7 +126,7 @@ void RemoveTerminalFromStripCommand::redo()
if (m_strip)
{
QVector<QSharedPointer<RealTerminal>> real_t;
for (const auto &real_t_vector : qAsConst(m_terminals)) {
for (const auto &real_t_vector : std::as_const(m_terminals)) {
real_t.append(real_t_vector);
}
@@ -68,7 +68,7 @@ void UnGroupTerminalsCommand::undo()
m_terminal_strip->groupTerminals(key, m_physical_real_H.value(key));
}
//Second, set level.
for (const auto &pair : qAsConst(m_real_t_level)) {
for (const auto &pair : std::as_const(m_real_t_level)) {
m_terminal_strip->setLevel(pair.first, pair.second);
}
}
@@ -78,7 +78,7 @@ void UnGroupTerminalsCommand::redo()
{
if (m_terminal_strip)
{
for (const auto &value : qAsConst(m_physical_real_H)) {
for (const auto &value : std::as_const(m_physical_real_H)) {
m_terminal_strip->unGroupTerminals(value);
}
}
+1 -1
View File
@@ -131,7 +131,7 @@ bool PhysicalTerminal::setLevelOf(const QSharedPointer<RealTerminal> &terminal,
if (i >= 0)
{
#if QT_VERSION >= QT_VERSION_CHECK(5,14,0)
m_real_terminal.swapItemsAt(i, std::min(level, m_real_terminal.size()-1));
m_real_terminal.swapItemsAt(i, std::min((qsizetype)level, m_real_terminal.size()-1));
#else
auto j = std::min(level, m_real_terminal.size()-1);
std::swap(m_real_terminal.begin()[i], m_real_terminal.begin()[j]);
+6 -6
View File
@@ -250,7 +250,7 @@ bool TerminalStrip::addTerminal(Element *terminal)
}
}
if (terminal->elementData().m_type != ElementData::Terminale) {
if (terminal->elementData().m_type != ElementData::Terminal) {
return false;
}
@@ -466,7 +466,7 @@ QSharedPointer<RealTerminal> TerminalStrip::realTerminalForUuid(const QUuid &uui
QVector<QSharedPointer<RealTerminal>> TerminalStrip::realTerminals() const
{
QVector<QSharedPointer<RealTerminal>> vector_;
for (const auto &phy : qAsConst(m_physical_terminals)) {
for (const auto &phy : std::as_const(m_physical_terminals)) {
vector_.append(phy->realTerminals());
}
return vector_;
@@ -639,7 +639,7 @@ bool TerminalStrip::isBridgeable(const QVector<QSharedPointer<RealTerminal>> &re
// Get the physical terminal and pos
auto first_physical_terminal = first_real_terminal->physicalTerminal();
QVector<shared_physical_terminal> physical_vector{first_physical_terminal};
QVector<int> pos_vector{m_physical_terminals.indexOf(first_physical_terminal)};
QVector<qsizetype> pos_vector{m_physical_terminals.indexOf(first_physical_terminal)};
auto bridge_ = isBridged(first_real_terminal);
//bool to know at the end of this function if at least one terminal is not bridged
@@ -856,7 +856,7 @@ QSharedPointer<TerminalStripBridge> TerminalStrip::isBridged(const QSharedPointe
{
if (real_terminal)
{
for (const auto &bridge_ : qAsConst(m_bridge)) {
for (const auto &bridge_ : std::as_const(m_bridge)) {
if (bridge_->realTerminals().contains(real_terminal))
return bridge_;
}
@@ -983,7 +983,7 @@ QDomElement TerminalStrip::toXml(QDomDocument &parent_document)
}
root_elmt.appendChild(xml_layout);
for (const auto &bridge_ : qAsConst(m_bridge)) {
for (const auto &bridge_ : std::as_const(m_bridge)) {
root_elmt.appendChild(bridge_->toXml(parent_document));
}
@@ -1024,7 +1024,7 @@ bool TerminalStrip::fromXml(QDomElement &xml_element)
for (auto &xml_real : QETXML::findInDomElement(xml_physical, RealTerminal::xmlTagName()))
{
const auto uuid_ = QUuid(xml_real.attribute(QStringLiteral("element_uuid")));
for (auto terminal_elmt : qAsConst(free_terminals))
for (auto terminal_elmt : std::as_const(free_terminals))
{
if (terminal_elmt->uuid() == uuid_)
{
@@ -85,7 +85,7 @@ QDomElement TerminalStripBridge::toXml(QDomDocument &parent_document) const
root_elmt.setAttribute(QStringLiteral("color"), m_color.name());
auto terminals_elmt = parent_document.createElement(QStringLiteral("real_terminals"));
for (const auto &real_t : qAsConst(m_real_terminals))
for (const auto &real_t : std::as_const(m_real_terminals))
{
if (real_t)
{
@@ -106,7 +106,7 @@ void TerminalStripBridge::fromXml(const QDomElement &dom_element)
}
m_uuid = QUuid(dom_element.attribute(QStringLiteral("uuid"), m_uuid.toString()));
m_color.setNamedColor(dom_element.attribute(QStringLiteral("color")));
m_color = QColor::fromString(dom_element.attribute(QStringLiteral("color")));
const auto real_t_vector = QETXML::subChild(dom_element,
QStringLiteral("real_terminals"),
@@ -69,7 +69,7 @@
</widget>
</item>
<item row="12" column="1" colspan="2">
<widget class="KColorCombo" name="m_bridge_color_cb"/>
<widget class="ColorComboBox" name="m_bridge_color_cb"/>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_6">
@@ -323,9 +323,9 @@
</widget>
<customwidgets>
<customwidget>
<class>KColorCombo</class>
<class>ColorComboBox</class>
<extends>QComboBox</extends>
<header>kcolorcombo.h</header>
<header>../../colorcombobox.h</header>
</customwidget>
</customwidgets>
<resources>
@@ -535,7 +535,7 @@ modelRealTerminalData TerminalStripModel::dataAtRow(int row) const
else
{
auto current_row = 0;
for (const auto &physical_data : qAsConst(m_physical_data))
for (const auto &physical_data : std::as_const(m_physical_data))
{
for (const auto &real_data : physical_data.real_data)
{
@@ -567,7 +567,7 @@ void TerminalStripModel::replaceDataAtRow(modelRealTerminalData data, int row)
auto current_row = 0;
auto current_physical = 0;
for (const auto &physical_data : qAsConst(m_physical_data))
for (const auto &physical_data : std::as_const(m_physical_data))
{
auto current_real = 0;
for (int i=0 ; i<physical_data.real_data.count() ; ++i)
@@ -606,7 +606,7 @@ modelPhysicalTerminalData TerminalStripModel::physicalDataAtIndex(int index) con
int current_phy = -1;
bool match_ = false;
for (const auto &ptd_ : qAsConst(m_physical_data))
for (const auto &ptd_ : std::as_const(m_physical_data))
{
current_checked_index += ptd_.real_data.size();
++current_phy;
@@ -637,9 +637,9 @@ modelRealTerminalData TerminalStripModel::realDataAtIndex(int index) const
int current_checked_index = -1;
for (const auto & ptd_ : qAsConst(m_physical_data))
for (const auto & ptd_ : std::as_const(m_physical_data))
{
for (const auto & rtd_ : qAsConst(ptd_.real_data)) {
for (const auto & rtd_ : std::as_const(ptd_.real_data)) {
++current_checked_index;
if (current_checked_index == index) {
return rtd_;
@@ -29,12 +29,12 @@
#include "modelTerminalData.h"
//Code to use QColor as key for QHash
inline uint qHash(const QColor &key, uint seed) {
inline size_t qHash(const QColor &key, size_t seed) {
return qHash(key.name(), seed);
}
//needed to use QPointer<Element> as key of QHash
inline uint qHash(const QPointer<Element> &key, uint seed) {
inline size_t qHash(const QPointer<Element> &key, size_t seed) {
if (key)
return qHash(key->uuid(), seed);
else
@@ -60,7 +60,7 @@ void TerminalStripTreeDockWidget::reload()
m_uuid_terminal_H.clear();
m_uuid_strip_H.clear();
for (const auto &connection_ : qAsConst(m_strip_changed_connection)) {
for (const auto &connection_ : std::as_const(m_strip_changed_connection)) {
disconnect(connection_);
}
m_strip_changed_connection.clear();
@@ -222,7 +222,7 @@ void TerminalStripTreeDockWidget::buildTree()
return a->name() < b->name();
});
for (const auto &ts : qAsConst(ts_vector)) {
for (const auto &ts : std::as_const(ts_vector)) {
addTerminalStrip(ts);
}
addFreeTerminal();
@@ -324,7 +324,7 @@ void TerminalStripTreeDockWidget::addFreeTerminal()
auto free_terminal_item = ui->m_tree_view->topLevelItem(1);
for (const auto terminal : qAsConst(vector_))
for (const auto terminal : std::as_const(vector_))
{
QUuid uuid_ = terminal->uuid();
QStringList strl{terminal->actualLabel()};
+17 -5
View File
@@ -20,6 +20,7 @@
#include "../diagram.h"
#include "../diagramposition.h"
#include "../qetapp.h"
#include "../qetgraphicsitem/conductor.h"
#include "../qetgraphicsitem/element.h"
#include "../qetxml.h"
@@ -189,12 +190,14 @@ namespace autonum
QString AssignVariables::formulaToLabel(QString formula,
sequentialNumbers &seqStruct,
Diagram *diagram,
const Element *elmt)
const Element *elmt,
const Conductor *cndr)
{
AssignVariables av(std::move(formula),
seqStruct,
diagram,
elmt);
elmt,
cndr);
seqStruct = av.m_seq_struct;
return av.m_assigned_label;
}
@@ -301,13 +304,14 @@ namespace autonum
AssignVariables::AssignVariables(const QString& formula,
const sequentialNumbers& seqStruct,
Diagram *diagram,
const Element *elmt):
const Element *elmt,
const Conductor *cndr):
m_diagram(diagram),
m_arg_formula(formula),
m_assigned_label(formula),
m_seq_struct(seqStruct),
m_element(elmt)
m_element(elmt),
m_conductor(cndr)
{
if (m_diagram)
{
@@ -349,6 +353,14 @@ namespace autonum
m_assigned_label.replace("%prefix", m_element->getPrefix());
}
if (m_conductor)
{
m_assigned_label.replace("%wf", cndr->properties().m_function);
m_assigned_label.replace("%wv", cndr->properties().m_tension_protocol);
m_assigned_label.replace("%wc", cndr->properties().m_wire_color);
m_assigned_label.replace("%ws", cndr->properties().m_wire_section);
}
assignTitleBlockVar();
assignProjectVar();
assignSequence();
+4 -2
View File
@@ -24,6 +24,7 @@
#include <QString>
#include <QStringList>
class Conductor;
class Diagram;
class Element;
class ElementsLocation;
@@ -61,12 +62,12 @@ namespace autonum
class AssignVariables
{
public:
static QString formulaToLabel (QString formula, sequentialNumbers &seqStruct, Diagram *diagram, const Element *elmt = nullptr);
static QString formulaToLabel (QString formula, sequentialNumbers &seqStruct, Diagram *diagram, const Element *elmt = nullptr, const Conductor *cndr = nullptr);
static QString replaceVariable (const QString &formula, const DiagramContext &dc);
static QString genericXref (const Element *element);
private:
AssignVariables(const QString& formula, const sequentialNumbers& seqStruct , Diagram *diagram, const Element *elmt = nullptr);
AssignVariables(const QString& formula, const sequentialNumbers& seqStruct , Diagram *diagram, const Element *elmt = nullptr, const Conductor *cndr = nullptr);
void assignTitleBlockVar();
void assignProjectVar();
void assignSequence();
@@ -76,6 +77,7 @@ namespace autonum
QString m_assigned_label;
sequentialNumbers m_seq_struct;
const Element *m_element = nullptr;
const Conductor *m_conductor = nullptr;
};
void setSequentialToList(QStringList &list, NumerotationContext &nc, const QString& type);
+2 -2
View File
@@ -57,9 +57,9 @@ bool NumerotationContext::addValue(const QString &type,
const QVariant &value,
const int increase,
const int initialvalue) {
if (!keyIsAcceptable(type) && !value.canConvert(QVariant::String))
if (!keyIsAcceptable(type) && !value.canConvert<QString>())
return false;
if (keyIsNumber(type) && !value.canConvert(QVariant::Int))
if (keyIsNumber(type) && !value.canConvert<int>())
return false;
QString valuestr = value.toString();
@@ -151,7 +151,7 @@ void AutoNumberingDockWidget::setProject(QETProject *project,
//Set Combobox Context
setContext();
ui->m_configure_pb->setShortcut(QKeySequence( tr("Ctrl+Shift+P")));
ui->m_configure_pb->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_P);
}
/**
+7 -16
View File
@@ -55,11 +55,8 @@ BorderTitleBlock::BorderTitleBlock(QObject *parent) :
m_titleblock_template_renderer = new TitleBlockTemplateRenderer(this);
m_titleblock_template_renderer -> setTitleBlockTemplate(QETApp::defaultTitleBlockTemplate());
// disable the QPicture-based cache from Qt 4.8 to avoid rendering errors and crashes
#if QT_VERSION < QT_VERSION_CHECK(4, 8, 0) // ### Qt 6: remove
#else
// disable the QPicture-based cache to avoid rendering errors and crashes
m_titleblock_template_renderer -> setUseCache(false);
#endif
// dimensions par defaut du schema
importBorder(BorderProperties());
@@ -239,7 +236,8 @@ void BorderTitleBlock::borderToXml(QDomElement &xml_elmt) {
xml_elmt.setAttribute("displayrows", rowsAreDisplayed() ? "true" : "false");
// attribut datant de la version 0.1 - laisse pour retrocompatibilite
xml_elmt.setAttribute("height", QString("%1").arg(diagramHeight()));
// attribute from version 0.1 - leave for backwards-compatibility
xml_elmt.setAttribute("height", QString("%1").arg(diagramHeight()));
}
/**
@@ -941,22 +939,15 @@ QString BorderTitleBlock::incrementLetters(const QString &string) {
} else {
// separate previous digits from last digit
// separe les digits precedents du dernier digit
QString first_digits(string.left(string.count() - 1));
QChar last_digit(string.at(string.count() - 1));
QString first_digits(string.left(string.length() - 1));
char last_digit(string.at(string.length() - 1).unicode());
if (last_digit != 'Z') {
// increments the last digit
// incremente le dernier digit
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
last_digit = last_digit.toLatin1() + 1;
#else
# if TODO_LIST
# pragma message("@TODO remove code for QT 6 or later")
# endif
qDebug() << "Help code for QT 6 or later";
#endif
last_digit = (char)(string[string.length()-1].unicode()) + 1;
return(first_digits + QString(last_digit));
} else {
return(incrementLetters(first_digits) + "A");
return(incrementLetters(first_digits) % "A");
}
}
}
+90
View File
@@ -0,0 +1,90 @@
/*
Copyright 2006-2025 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/>.
*/
#include "colorbutton.h"
#include <QColorDialog>
#include <QPainter>
/**
@brief ColorButton::ColorButton
Simple constructor
@param parent QObject parent of the ColorButton
*/
ColorButton::ColorButton(QWidget *parent) : QPushButton(parent)
{
connect(this, &QPushButton::clicked, this, &ColorButton::clicked);
}
/**
@brief Getter for current color
@return The current selected color
*/
const QColor ColorButton::color()
{
return m_color;
}
/**
@brief Setter for current color
*/
void ColorButton::setColor(const QColor &color)
{
m_color = color;
update();
}
/**
@brief ColorButton::clicked
Opens a color selection dialog and lets the user select a color.
@param checked Not used
*/
void ColorButton::clicked(bool checked)
{
// Open color selection dialog
auto new_color = QColorDialog::getColor(m_color, this, tr("Select color"), QColorDialog::DontUseNativeDialog);
// Validate user input
if (new_color.isValid()) {
m_color = new_color;
emit changed(new_color);
update();
}
}
/**
@brief ColorButton::paintEvent
Paints a filled rectangle with the current selected color on the button surface.
@param e Paint event context
*/
void ColorButton::paintEvent(QPaintEvent *e) {
QPushButton::paintEvent(e);
// Padding for the color indicator
const int padding_x = 5;
const int padding_y = 5;
QPainter painter(this);
// Get dimensions of the button paint surface
auto r_width = painter.device()->width();
auto r_height = painter.device()->height();
// Paint a rectangle with a margin of 5
auto color_indicator = QRect(padding_x, padding_y, r_width - padding_x * 2, r_height - padding_y * 2);
painter.fillRect(color_indicator, m_color);
}
+53
View File
@@ -0,0 +1,53 @@
/*
Copyright 2006-2025 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/>.
*/
#ifndef COLORBUTTON_H
#define COLORBUTTON_H
#include <QColor>
#include <QObject>
#include <QPushButton>
#include <Qt>
/**
@brief The ColorButton class
*/
class ColorButton : public QPushButton
{
Q_OBJECT
public:
ColorButton(QWidget * = nullptr);
const QColor color();
void setColor(const QColor &);
public slots:
void clicked(bool = false);
protected:
void paintEvent(QPaintEvent *) override;
signals:
void changed(const QColor &);
private:
/// @brief Current selected color
QColor m_color = Qt::black;
};
#endif
+98
View File
@@ -0,0 +1,98 @@
/*
Copyright 2006-2025 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/>.
*/
#include "colorcombobox.h"
#include "colorcomboboxdelegate.h"
#include <QColorDialog>
#include <QPainter>
#include <QStylePainter>
#include <Qt>
/**
@brief ColorComboBox::ColorComboBox
Simple constructor
@param parent QObject parent of the ColorComboBox
*/
ColorComboBox::ColorComboBox(QWidget *parent) : QComboBox(parent)
{
connect(this, &QComboBox::activated, this, &ColorComboBox::colorSelected);
setItemDelegate(new ColorComboBoxDelegate());
}
/**
@brief ColorComboBox::setColors
Sets the colors of the combo box. An item at the top will be added to allow selection
of a custom color.
@param colors Vector of colors to add to the combo box
*/
void ColorComboBox::setColors(const QVector<QColor> &colors)
{
addItem(tr("[Custom color...]"), QColor(Qt::black));
for(auto &color : colors) {
addItem(color.name(), color);
}
}
/**
@brief ColorComboBox::colorSelected
Opens a color selection dialog and lets the user select a color.
@param checked Not used
*/
void ColorComboBox::colorSelected(int index)
{
if (index == 0) {
// Open color selection dialog if custom color is selected
auto new_color = QColorDialog::getColor(itemData(index).value<QColor>(), this, tr("Select color"), QColorDialog::DontUseNativeDialog);
// Validate and emit user input color
if (new_color.isValid()) {
setItemData(index, new_color);
emit activated(new_color);
}
} else {
// Emit color from selected combo box row
emit activated(itemData(index).value<QColor>());
}
}
/**
@brief ColorComboBox::paintEvent
Paints a filled rectangle with the current selected color on the combo box surface.
@param e Paint event context
*/
void ColorComboBox::paintEvent(QPaintEvent *e) {
// Padding for the color indicator
const int padding_x = 5;
const int padding_y = 5;
// Create painter and draw a vanilla combobox
QStylePainter painter(this);
QStyleOptionComboBox opt;
initStyleOption(&opt);
painter.drawComplexControl(QStyle::CC_ComboBox, opt);
// Get dimensions of the combo box paint surface
auto r_width = painter.device()->width();
auto r_height = painter.device()->height();
// Paint a rectangle with a margin
auto color_indicator = QRect(padding_x, padding_y, r_width - padding_x * 2, r_height - padding_y * 2);
painter.fillRect(color_indicator, itemData(currentIndex()).value<QColor>());
}
+49
View File
@@ -0,0 +1,49 @@
/*
Copyright 2006-2025 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/>.
*/
#ifndef COLORCOMBOBOX_H
#define COLORCOMBOBOX_H
#include <QColor>
#include <QObject>
#include <QComboBox>
#include <QVector>
#include <Qt>
/**
@brief The ColorComboBox class
*/
class ColorComboBox : public QComboBox
{
Q_OBJECT
public:
ColorComboBox(QWidget * = nullptr);
void setColors(const QVector<QColor> &);
public slots:
void colorSelected(int);
protected:
void paintEvent(QPaintEvent *) override;
signals:
void activated(const QColor &);
};
#endif
+62
View File
@@ -0,0 +1,62 @@
/*
Copyright 2006-2025 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/>.
*/
#include "colorcomboboxdelegate.h"
#include <QColor>
#include <QPainter>
#include <QPalette>
#include <QtDebug>
/**
@brief ColorComboBoxDelegate::paint
Paints a filled rectangle on the drop down item with the items color.
@param painter Painter context
@param option Style options
@param index Index of the item to paint
*/
void ColorComboBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
// Padding for the color indicator
const int padding_x = 5;
const int padding_y = 2;
painter->save();
if (index.row() > 0)
{
auto rect = option.rect;
// Draw mouseover background
if (option.state & QStyle::State_MouseOver)
{
auto pal = option.widget->palette();
painter->fillRect(rect, pal.color(QPalette::Highlight));
}
// Draw color indicator rectangle
auto color = qvariant_cast<QColor>(index.data());
rect.adjust(padding_x, padding_y, -padding_x, -padding_y);
painter->fillRect(rect, color);
} else {
// Draw a normal drop down item for custom color
QStyledItemDelegate::paint(painter, option, index);
}
painter->restore();
}
+35
View File
@@ -0,0 +1,35 @@
/*
Copyright 2006-2025 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/>.
*/
#ifndef COLORCOMBOBOXDELEGATE_H
#define COLORCOMBOBOXDELEGATE_H
#include <QStyledItemDelegate>
/**
@brief The ColorComboBoxDelegate class
Handles drawing of items in the drop down list of ColorComboBox.
*/
class ColorComboBoxDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
void paint(QPainter *, const QStyleOptionViewItem &, const QModelIndex &) const override;
};
#endif
-7
View File
@@ -72,14 +72,7 @@ bool ConductorNumExport::toCsv()
if (file.open(QIODevice::WriteOnly | QIODevice::Text))
{
QTextStream stream(&file);
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) // ### Qt 6: remove
stream << wiresNum() << endl;
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 5.15 or later")
#endif
stream << wiresNum() << &Qt::endl(stream);
#endif
}
else {
return false;

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