Commit Graph

10279 Commits

Author SHA1 Message Date
ispyisail 06083c455d Merge pull request #1376 from ispyisail/feature/1375-paste-element-info
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 19m47s
Add Paste element information: copy one symbol's details onto others
2026-10-08 06:32:46 +13:00
ispyisail f2513f4f9b Add "Paste element information" to copy one symbol's details onto others
Issue #1375: replacing a symbol meant retyping its label, manufacturer,
part number and the rest by hand. Copy the old symbol (Ctrl+C), select
the new one(s), then Edit > Paste element information, also in the
right-click menu of a selection.

Every field filled in on the copied symbol overwrites the same field on
each selected symbol; fields it leaves empty are left alone, since empty
fields are not written to the clipboard. The label and its formula move
together, so a target whose label comes from a formula takes the copied
label rather than rebuilding its own. A numbering-scheme id is kept only
if the scheme exists in the target project. Plain slaves and folio
reports are skipped: they take their information from what they are
linked to, as in the properties dialog. One undo step.

Enabled only when the clipboard holds exactly one symbol. The clipboard
is parsed once when it changes, not on every selection change.

No default shortcut: Ctrl+Shift+V, suggested in the issue, is already
"Paste at origin". It can be assigned in the shortcut settings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 05:37:22 +13:00
ispyisail 47ecd06d1c Merge pull request #1371 from bhangart/fix/element-typo
Fix the spelling of "Élément" in the element description
2026-10-08 05:15:15 +13:00
ispyisail 51c9035611 Merge pull request #1367 from bhangart/fix/image-pivot-flag-undo
Undo restores whether a picture's pivot was placed by hand
2026-10-08 05:14:47 +13:00
Laurent Trinques 4146936fb6 Merge pull request #1374 from arummler/master-remove-pri-file
Cleanup: remove old *.pri files
2026-10-07 16:43:38 +02:00
Laurent Trinques b9507a09fe CI: try to fix windows-build 2026-10-07 16:25:23 +02:00
Laurent Trinques 3dab9256c0 CI: try to fix windows-build 2026-10-07 15:55:39 +02:00
Laurent Trinques 44abc241c2 Merge pull request #1369 from bhangart/feature/script-imagecrop-map
Return qet.imageCrop() as {x, y, width, height}
2026-10-07 13:15:48 +02:00
Laurent Trinques 03f2911295 Merge pull request #1373 from bhangart/fix/lang-pl-missing
Add the missing Polish translations
2026-10-07 13:15:10 +02:00
Laurent Trinques d9225bb89d Merge pull request #1372 from bhangart/fix/lang-de-missing
Add the missing German translations
2026-10-07 13:14:56 +02:00
Andre Rummler 329e8f51d0 Cleanup: remova old *.pri files which were part of qmake and are no longer used for anything after switch to cmake. 2026-10-07 10:55:50 +02:00
Beat Hangartner 36bfc6f969 Return qet.imageCrop() as {x, y, width, height}
The crop rectangle came back as the string "x,y,width,height", which a
script had to split and parse. elementGeometry() returns a map; the
crop now does the same, and an empty map for no such image.

Suggested in the review of #1310.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 10:55:02 +02:00
Beat Hangartner afa35e094d Undo restores whether a picture's pivot was placed by hand
A picture remembers whether its pivot was placed by hand: a hand-placed
pivot is saved and kept through a resize, a default one is not saved
and recentres after a resize. Two actions changed that flag outside
their undo step:

- applyCrop() marked the pivot as default after moving it to the centre
  of the kept region. After Ctrl+Z the pivot was back where the user
  had put it, but marked as default, so the next save dropped it.
- dragging the pivot handle marked it as hand-placed. After Ctrl+Z the
  pivot was back at the centre but still marked as hand-placed, so a
  later resize left it at the handle's anchor corner.

pivotIsCustom becomes a property, and both actions put it into their
undo command next to rawPivot. tst_imagecropundo checks that a project
saved after undoing a crop keeps its hand-placed pivot.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 10:54:53 +02:00
ispyisail 140f9f6e39 Merge pull request #1355 from ispyisail/feat/upright-symbol-texts
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 1m54s
Add an option to keep texts of turned symbols horizontal
2026-10-07 21:39:49 +13:00
ispyisail fd0df50c17 Merge pull request #1354 from ispyisail/feat/1335-flip-elements
Add horizontal and vertical mirror for symbols on a folio (#1335)
2026-10-07 21:30:18 +13:00
Beat Hangartner 6c9f1b40ab Fix the spelling of "Élément" in the element description
The "general" tab of the element properties starts its description with
tr("Élement\n"), missing the second accent. The French UI shows the typo,
and the misspelt string is the translation key in all 34 lang/qet_*.ts
files (and from there was copied into 11 phrase books).

This fixes the source string to "Élément\n" and renames the key in the
34 .ts files so every existing translation stays attached. Without the
.ts change, the next lupdate run would mark the old entry vanished and
add an empty "Élément" entry: lupdate's similar-text heuristic does not
carry the translation over (checked with Qt 6.11 lupdate on copies of
qet_de/pl/en/fr.ts). With the change, lupdate reports the entry as
already existing and keeps the translation. qet_fr.ts also gets the
corrected spelling as its translation.

No behaviour change besides the one character in the label. The phrase
books keep their copy of the typo for now; they are cleaned up with the
other phrase-book corrections.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 10:25:32 +02:00
Beat Hangartner dad46cd75f Use "element główny" for the master element in the new Polish strings
Four strings added on this branch rendered "maître" as "nadrzędny",
following the rest of the file. A Polish reviewer confirmed that the
phrase book's "Element główny" is the right term and "nadrzędny" is
wrong for a master element. The 14 older entries that use "nadrzędny"
are left for a separate change, so this PR does not rewrite existing
translations.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 10:25:32 +02:00
Beat Hangartner e4bdb296ae Refresh qet_de.ts and translate the strings added since 4 October
Upstream added 154 source strings after the last translations update
(da39ec1c8), among them the Toolbars, Shortcuts, Gestures and 3D mouse
pages, DXF block export, the image dark-theme option, text width and
cross-reference stacking. That update had also marked 38 entries vanished
whose strings are still in the code (table properties, text field
properties, database model widget), so lrelease left them out and the
German UI showed French there (the same issue #1366 fixes for English).

lupdate over sources/ revives the 38 with their existing translations and
adds the new strings; the 116 that had no translation are translated with
the terms the file already uses. lupdate's same-text suggestions were
reviewed rather than accepted (e.g. "Grille des textes" had been offered
as "Textübersicht"). Most of the diff is lupdate moving line numbers.

Checked with lrelease (3782 translations, no warning) and the placeholder
check for every changed entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 10:25:32 +02:00
Beat Hangartner df32e9088f Refresh qet_pl.ts and translate the strings added since 4 October
Upstream added 154 source strings after the last translations update
(da39ec1c8), among them the Toolbars, Shortcuts, Gestures and 3D mouse
pages, DXF block export, the image dark-theme option, text width and
cross-reference stacking. That update had also marked 38 entries vanished
whose strings are still in the code (table properties, text field
properties, database model widget), so lrelease left them out and the
Polish UI showed French there (the same issue #1366 fixes for English).

lupdate over sources/ revives the 38 with their existing translations and
adds the new strings; the 116 that had no translation are translated with
the terms the file already uses. lupdate's same-text suggestions were
reviewed rather than accepted; the 20 offered for Polish were kept
after review. Most of the diff is lupdate moving line numbers.

Checked with lrelease (3782 translations, no warning) and the placeholder
check for every changed entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 10:25:32 +02:00
Beat Hangartner 5f0b918c3e Add the missing German translations
qet_de.ts had 407 strings with no German translation (plus 7 plural
entries with only the singular filled), almost all from features merged
in the last two months: auto-numbering pages, script manager, AI
assistant dialog, live server, material list, prefix configuration,
element info widget, fillet/arc tools, alignment and grouping. A German
user saw the French source text in those places.

This fills every empty translation and the missing plural forms, using
the terms the file already uses (Bauteil, Seite, Leiter, Anschluss,
Nummerierung, Schnellzugriffsleiste). Two existing entries were wrong
and are corrected: "Exécuter un script" was translated as "v", and the
spin-box suffix " pas de grille" (grid steps) as " kein Raster".

No source code or file-format change. Checked with lrelease (3630
translations, no warning) and a script that compares source and
translation placeholders (%1, %n) for every changed entry.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 10:25:32 +02:00
Beat Hangartner af10f50153 Add the missing Polish translations
qet_pl.ts had 675 strings with no Polish translation (plus 4 plural
entries with missing forms), almost all from features merged in the last
two months: auto-numbering pages, script manager, AI assistant dialog,
live server, material list, prefix configuration, shortcut bar, element
picker, conductor and background colour buttons, fillet/arc tools,
alignment and grouping. A Polish user saw the French source text in
those places.

This fills every empty translation and the missing plural forms, using
the terms the file already uses (element, arkusz, przewód, zacisk,
numeracja, pasek skrótów). Three existing entries are corrected: the
plural of "%n action(s)" contained the placeholder "niepewne"
(uncertain) and an empty third form, the PDF page count had only its
first form, and "Borne" was translated as "Terminal" twice while the
rest of the file uses "Zacisk".

No source code or file-format change. Checked with lrelease (3630
translations, no warning) and a script that compares source and
translation placeholders (%1, %n) for every changed entry.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 10:25:32 +02:00
ispyisail aac004bcdd Merge pull request #1368 from bhangart/refactor/image-pixmap-from-source
Compute a picture's displayed pixmap from its source
2026-10-07 21:24:39 +13:00
ispyisail c8944e23b2 Merge pull request #1370 from ispyisail/fix/qt-colour-dialog
Fix saved custom colours being pushed out on Linux
2026-10-07 21:23:10 +13:00
ispyisail 5d2eddfdd1 Merge pull request #1358 from bhangart/fix/bordertitleblock-uninit-members
Initialise the BorderTitleBlock members its constructor compares
2026-10-07 21:18:30 +13:00
ispyisail 3662032289 Merge feat/1335-flip-elements into feat/upright-symbol-texts
Brings in master's DXF blocks (#1339) through #1354. The upright texts
now live in drawSymbol() too, and a turned symbol whose texts stay
horizontal is drawn in full like a mirrored one: an INSERT would turn
its texts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 21:17:38 +13:00
ispyisail d508e0adb2 Merge pull request #1359 from bhangart/fix/conductorprofile-uninit-orientation
Initialise the orientations of a default-constructed ConductorProfile
2026-10-07 21:14:36 +13:00
ispyisail f94ad83c46 Merge pull request #1366 from ispyisail/translation/english-update
Update the English translation (qet_en.ts)
2026-10-07 21:12:46 +13:00
ispyisail a55c1312de Merge pull request #1357 from ispyisail/fix/aligned-text-lines-auto-width
Fix line alignment of multi-line symbol texts with Auto width (#1348)
2026-10-07 21:12:20 +13:00
ispyisail 14a31e895e Merge master into feat/1335-flip-elements
Conflicts with the DXF blocks export (#1350) and the picture factory
leak fix. The mirror now lives in drawSymbol(); a mirrored symbol is
drawn in full rather than as an INSERT of its block, since a negative
INSERT scale would mirror its texts too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 21:11:00 +13:00
ispyisail b1f1f77a53 Merge pull request #1365 from ispyisail/feature/customise-dialog
Add a Customise window for toolbars, shortcuts and gestures
2026-10-07 20:57:15 +13:00
ispyisail bae96b4ae7 Merge pull request #1364 from ispyisail/feature/customise-gesture-list
Add a mouse gesture page: own commands, 4 or 8 directions
2026-10-07 20:56:50 +13:00
ispyisail a43ce3baa5 Merge pull request #1362 from ispyisail/feature/folio-paper-size
Add paper sizes A0–A5 to the folio dimensions
2026-10-07 20:54:31 +13:00
ispyisail 72b215bb23 Always use Qt's own colour dialog
On GTK desktops (Mint, XFCE, GNOME) Qt hands QColorDialog to GTK's
chooser. Its "Custom" row is a recent-colours list kept by GTK: every
colour picked is pushed in on the left and the oldest drops out, so a
user's saved wire colours are lost (forum topic 3190). It also ignores
the custom colours QET saves (#918) and has no swatch grid for the
double-click to accept (#1172).

Pass DontUseNativeDialog at every colour dialog, so all platforms get
the dialog Windows already shows: 16 custom slots that change only on
"Add to Custom Colors", saved across restarts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 20:53:11 +13:00
ispyisail a3c178e4ce Update the English translation (qet_en.ts)
lupdate over sources/ finds 98 new source texts. 41 are new and are
translated here: the Toolbars settings page, the new Shortcuts page
controls (category filter, search by key, Menu column, copy list), the
Edit > Selection submenu, DXF block export options, cross-reference
stacking, picture dark-theme adaptation and text width.

The other 57 were already translated but marked vanished by the
4 October translations update (da39ec1c8), so lrelease left them out
and these screens showed French in the English interface: the 3D mouse
settings page, the table properties editor and the text field
properties. They come back with their existing English.

lrelease: 3737 finished, 0 unfinished.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 20:08:38 +13:00
ispyisail 0fef6b19ce Add a Customise window: toolbars, shortcut bar, keyboard, gestures
Configuration > Personnaliser... (also at the bottom of a toolbar's
right-click menu) opens one window with a tab for each page that sets
how the user works: Barres d'outils, Contenu des barres, Barre de
raccourcis, Raccourcis and Gestes de la souris, like SolidWorks'
Tools > Customize. The tabs are the same pages the configuration
dialog shows, which keeps them. OK applies every tab, Cancel none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 19:31:42 +13:00
ispyisail b6bbcfdd7a Merge branch 'feature/customise-gesture-list' into feature/customise-dialog
# Conflicts:
#	tests/qttest/CMakeLists.txt
2026-10-07 18:41:40 +13:00
ispyisail 46e041fe01 Mouse gestures: own command list, 4 or 8 directions
The right-drag ring showed the shortcut bar's commands for the selection.
A new Preferences page, "Gestes de la souris", lets the user pick the
ring's commands per selection context, one per direction, and choose 4 or
8 directions. Commands are dropped from the list onto a slot of a ring
editor, or placed with a button; Delete empties a slot.

A context the user never edits keeps following the shortcut bar, and 8
directions stays the default, so nothing changes for anyone who does not
open the page. A picked list is positional: a direction left empty, or
holding a command this build lacks, stays empty instead of shifting the
others. Stored like ShortcutBarSettings: diagrameditor/gestures/<context>
id lists in QSettings, defaults not stored.

tst_gesturesettings covers the defaults, positional lists, the 4/8
setting, the overlay's sectors and empty slots, and the page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 18:38:25 +13:00
ispyisail 3a61513f29 Let the user choose what each folio editor toolbar holds
Configure QElectroTech > Toolbar contents: pick a toolbar, drag or add
commands from the list on the left, remove them with Delete, reorder,
add separators, and add, rename or delete toolbars of one's own.
Reset to defaults gives a toolbar its original contents back.

Each toolbar is stored as a list of command ids in QSettings
(diagrameditor/toolbars/<objectName>), the same pattern the shortcut
bar uses. A toolbar the user never changed stores nothing and is built
exactly as before; an id no command carries any more is skipped. The
four buttons that are widgets rather than commands (handle size, text
grid, background colour, conductor colour) get ids of their own and
can each be on one toolbar at a time. Stored scripts can go on any
toolbar.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 18:34:51 +13:00
ispyisail 5f21d4fce2 Paper size presets: never fit fewer than 3 columns or rows
fitCells() tried counts from 1, but BorderTitleBlock raises any column
or row count below 3 to 3. With very large cells (A5 portrait with
columns of about 200 px or more) the preset picked 2 columns; the folio
then got 3, came out wider than the sheet, and the dropdown fell back
to "Custom". Start the search, and the capped fallback, at 3, and
refuse a paper that leaves no room for 3 cells of the smallest size.

A5 portrait with 300 px columns now gives 3 x 179 px instead of
2 x 269 px; A4 landscape with the default cells is unchanged
(19 x 58 px). ctest 65/65.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 18:07:03 +13:00
Laurent Trinques 437729df15 Merge pull request #1327 from ispyisail/feature/customise-toolbar-options
Add a Toolbars settings page: icon size, text with icons, lock
2026-10-07 06:50:11 +02:00
Laurent Trinques 0b993f4d89 Merge pull request #1344 from bhangart/fix/headless-log-to-stderr
Write the messages of a headless run to stderr on Windows too
2026-10-07 06:47:33 +02:00
Laurent Trinques 5106dd3029 Merge pull request #1360 from bhangart/fix/elementpicturefactory-text-leak
Delete the text items ElementPictureFactory::build() creates and drops
2026-10-07 06:45:38 +02:00
Laurent Trinques e107c9444f Merge pull request #1356 from ispyisail/fix/composite-text-variable-insert
Fix composite text dialog not inserting variables (#1348)
2026-10-07 06:42:54 +02:00
Laurent Trinques a79eaf8af6 Merge pull request #1345 from bhangart/fix/unreadable-element-test-windows
Skip tst_unreadableelement where a file cannot be made unreadable
2026-10-07 06:41:12 +02:00
Laurent Trinques 223ace3a40 Merge pull request #1347 from saschbe/fix/background-color-menu-title
fix: name the sheet background color submenu
2026-10-07 06:39:00 +02:00
Laurent Trinques 5c38907204 Merge pull request #1346 from ispyisail/fix/1336-edit-menu-submenus
Fix #1336: split the long Edit menu into submenus
2026-10-07 06:38:22 +02:00
Laurent Trinques 211075f1b3 Merge pull request #1343 from bhangart/feature/element-editor-text-field-handles
Resize text fields in the element editor by dragging a corner
2026-10-07 06:36:48 +02:00
ispyisail 2752e6705c Folio properties: paper size presets A0-A5, landscape or portrait
A "Format" choice in the folio dimensions box sets the columns and rows
so the whole folio, title block included, has the size of an ISO A
sheet at the 96 dpi the PDF export uses. A4 landscape keeps 60 px
columns and 80 px rows and comes out as an A4 page in the PDF.

Nothing new is stored: the choice only fills in the columns and rows.
A folio whose size already matches a paper shows that paper; any other
shows "Custom". Changing the title block template after picking a paper
fits the folio again; a template too tall for the paper falls back to
"Custom".

The same box is in Folio properties and in the new-folio defaults of
the project and application settings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 17:36:22 +13:00
Laurent Trinques e2fd2d1c20 Merge pull request #1342 from bhangart/feature/free-text-resize-handles
Resize free texts by dragging a corner
2026-10-07 06:36:06 +02:00
Laurent Trinques 96fc0b9d4a Merge pull request #1341 from bhangart/feature/free-text-width-spinbox
Set the width of free texts in their properties
2026-10-07 06:35:17 +02:00