Commit Graph

44 Commits

Author SHA1 Message Date
Laurent Trinques 88962570a8 Merge pull request #569 from DieterMayerOSS/pr/parttext-alignment
Element editor: optional alignment for static texts
2026-07-28 17:45:43 +02:00
Dieter Mayer 787335582b Element editor: optional alignment for static texts (#549)
Static texts (PartText) gain an optional alignment, exposed via the
existing AlignmentTextDialog behind a new "Alignement" button in the
static text editor:

- The horizontal part aligns the lines of a multi-line text relative
  to each other (centered block labels no longer need one hand-placed
  text per line).
- The full alignment defines the anchor: when the content or font
  changes later, the selected corner/center of the bounding rect keeps
  its place instead of always growing right/down from the top-left
  (same prepareAlignment/finishAlignment logic as DiagramTextItem).

Format: the <text> node takes the same optional Halignment/Valignment
attributes as dynamic_text, written only when they differ from the
historical top-left behaviour - existing .elmt files are untouched and
round-trip byte-identical. The saved x/y stay the baseline-left of the
text block in all cases; ElementPictureFactory only needs the line
alignment (the anchor is editor-side behaviour), so rendered elements
match the editor exactly.

German translations for the three new strings included (qet_de stays
complete, 2686/2686).

Verified headless: a project embedding a two-line text once with
Halignment=AlignHCenter and once without exports to SVG with the short
line centered under the long one (x 102.5 vs 126.5) in the aligned
block, and identical x for both lines in the legacy block. Editor-side
anchor behaviour follows the proven DiagramTextItem implementation but
was not manually exercised in the GUI yet.
2026-07-28 13:58:51 +02:00
Dieter Mayer 96f6fa44ad Replace hash.keys().contains(k) with hash.contains(k) (35 call sites)
QHash/QMap::keys() allocates a list of every key on each call, then
contains() searches it linearly - an accidental O(n) plus allocation
where a direct O(1) lookup was meant. 35 occurrences across 7 files,
found while profiling project load times (context: #553/#560).

The hot one is ElementPictureFactory::getPictures(), which runs once
per element instance on project load: on the 3399 KiB example project
(191 instances, 129 cache hits) the keys() detour cost 45 ms of the
1.34 s total - measured, not estimated; the fix reproducibly shaves
~35-45 ms off that load. The remaining call sites are UI paths
(search&replace, dynamic text model, undo commands) where the waste
scales with selection/model size.

No behavior change: for QHash/QMap, keys().contains(k) and
contains(k) are equivalent by definition.

(cherry picked from commit 0a7f8f072fa68de7c01a9fc134a4bc8e16d62062)
2026-07-28 13:58:33 +02:00
Laurent Trinques 4044d04cc5 One year
Auto-build doxygen docs / doxygen (push) Has been cancelled
Auto-build doxygen docs / deploy (push) Has been cancelled
2026-01-16 15:24:35 +01:00
plc-user e98ce4de1d add English comments 2025-02-16 10:02:19 +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 77bfe84a4c One year 2025-01-04 13:37:40 +01:00
plc-user fa68d545d0 correct more indentations / whitespace 2024-04-24 14:14:40 +02:00
Laurent Trinques e73cf633ce 2023->2024 2024-03-29 10:09:48 +01:00
joshua a0970b37b9 Improve and simplify the use of versions 2023-01-19 20:18:21 +01:00
Remi Collet 038d2d7033 use QVersionNumber and switch to "list of int" standard 2023-01-12 18:24:58 +01:00
Laurent Trinques 9afef79629 Update Copyright date 2023-01-01 17:05:57 +01:00
luz paz 1994235bc5 Fix various typos in source documentation and comments (cont.)
Found via `codespell`
2022-12-04 20:46:32 +01:00
joshua aefae7b73b Fix some misprint
When print on printer with low resolution, some lines are not printed
because to thin.
Thin line of elements : set width to 0.5 instead of 0 and set cosmetic
option to false.
Folio border and titleblock : set width to 1 and set cosmetic option to
false.
2021-10-16 10:15:45 +02:00
Peter Keresztes Schmidt de80d10f5e Build fix for non-C++17 compatible systems
std::variant/std::visit was only introduced with C++17. Remove its usage.
We don't even need it in these cases since QColor has an implicit constructor accepting Qt::GlobalColor.

Follow-up for b69c7b1027
2021-09-23 21:50:37 +02:00
Peter Keresztes Schmidt b69c7b1027 Refactor deeply nested statements
Compilation using MSVC fails with a C1061 error since MSVC has a hard limit on block nesting.
Refactor the code in question to use map lookups instead.
2021-09-22 21:53:21 +02:00
joshua 21c35bc744 Minor improvement at element picture creation
Call once the uuid() method of element location instead of four (and so
parse once time the xml) to store the uuid/picture and uuid/primitive to
hash.
2021-05-14 16:15:49 +02:00
Laurent Trinques ef58f34c14 Update Copyright date 2021-02-20 12:13:46 +01:00
joshua 2513961cd6 Revert "Update Copyright date"
This reverts commit d04bccc384.
2021-02-06 19:00:48 +01:00
Laurent Trinques d04bccc384 Update Copyright date 2021-02-06 18:33:42 +01:00
Simon De Backer 6da9c58458 Wip Fix preprocessor on Cmake 2020-12-10 21:19:45 +01:00
Simon De Backer 10c4c3d528 Wip Fix preprocessor on Cmake 2020-12-08 19:57:35 +01:00
Claveau Joshua ec0b92ec1d Fix : Filling color is not apply to polyline. 2020-10-18 10:45:05 +02:00
Simon De Backer 30b8205f82 Mod some qWarning add QObject::tr 2020-09-24 22:39:11 +02:00
Simon De Backer 36dbe65457 Add TODO compile var + Fix doxygen issue
You can make your code warn on compile time for the TODO's
In order to do so, uncomment the following line. in pro file
DEFINES += TODO_LIST
2020-09-24 17:01:33 +02:00
Simon De Backer bfd487effe Fix QRegularExpression pattern 2020-09-23 23:11:33 +02:00
Simon De Backer d9f38f8a5d Fix QRegularExpression
-add isValid
-add debug
2020-09-23 22:50:41 +02:00
Simon De Backer 3eca82baad Fix deprecated QRegExp
Use QRegularExpression instead.

https://doc.qt.io/qt-5/qregularexpression.html#notes-for-qregexp-users

This function was introduced in Qt 5
2020-09-19 01:12:46 +02:00
Simon De Backer 5d92393ee7 Wrap code for better readability 2020-09-07 22:03:40 +02:00
Simon De Backer 331918d143 Wrap code for better readability 2020-08-20 21:58:23 +02:00
Simon De Backer 0c00d83b27 Fix some doxygen issues 2020-08-20 21:57:35 +02:00
Simon De Backer d4ee161c07 Mod doc set style de same 2020-08-16 11:19:36 +02:00
Simon De Backer fe4552200b Add compiler message @TODO 2020-07-19 22:06:42 +02:00
Laurent Trinques e10ae8ce2e Update Copyright date 2020-06-15 17:42:53 +02:00
Simon De Backer 2ec018a4e9 fix deprecated warning QString::SplitBehavior
enum QString::SplitBehavior This enum is obsolete.

Use Qt::SplitBehavior instead.
This enum was introduced or modified in Qt 5.14.
2020-06-12 05:52:50 +02:00
Laurent Trinques 081f44f8be Element Editor add new ColorHTML, THANKS Arnaud for the patch 2020-04-15 10:27:54 +02:00
Claveau Joshua ed2e72e995 Minor improvement about using pugixml 2020-01-18 20:03:24 +01:00
blacksun 4cbf103cbc Static text of element are now exported to dxf
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5896 bfdf4180-ca20-0410-9c96-a3a8aa849046
2019-05-28 19:22:36 +00:00
blacksun 66ef773c53 Fix DXF export
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5794 bfdf4180-ca20-0410-9c96-a3a8aa849046
2019-03-16 19:13:46 +00:00
blacksun ad76d438ef Element editor :
The font of the dynamic text field can be edited.
The font of the static text field can be edited.
The color of the static text field can be edited. 


git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5775 bfdf4180-ca20-0410-9c96-a3a8aa849046
2019-03-10 17:58:33 +00:00
scorpio810 3ed7a4e63b Minor : update Copyright date
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5705 bfdf4180-ca20-0410-9c96-a3a8aa849046
2019-01-13 16:56:12 +00:00
blacksun e4f3f284ea fix bug : if a xml definition of an element haven't got a uuid, the generated pixmap is false.
this commit it.


git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5493 bfdf4180-ca20-0410-9c96-a3a8aa849046
2018-08-23 20:58:41 +00:00
blacksun e6d73977c1 1-Use the "implicite shared" of Qt for the QPicture and QPixmap of element (https://doc.qt.io/qt-5/implicit-sharing.html).
This avoid to parse the same element definition each time user drop the same element in the diagram.
Only the first element build the picture, all other get the created picture which is shared.

2- For use the "implicite shared" QPicture and QPixmap of element, now this isn't the element who build her picture, but a dedicated class who made only this job : build the QPicture and QPixmap of elements.

3- With the two previous novelty, the class CustomElement and GhostElement are became useless, and so was removed.
Some few member function of CustomElement was moved to Element.


git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5492 bfdf4180-ca20-0410-9c96-a3a8aa849046
2018-08-23 19:41:58 +00:00