Commit Graph

10794 Commits

Author SHA1 Message Date
Laurent Trinques dde7251624 Merge pull request #1601 from elevatormind/claude/qelectrotech-swedish-translations-bdd89a
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 2m10s
Swedish translation: complete, reviewed and extended
2026-10-25 07:01:14 +01:00
ispyisail af493af85c Merge pull request #1609 from elevatormind/refactor/tbt-relative-path-macro
Give the common title blocks path its own RELATIVE_TO_BINARY_PATH macro
2026-10-25 18:30:09 +13:00
ispyisail 0020e0cd13 Merge pull request #1561 from DaTweety/feature/text-fixed-size
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 1m41s
Symbol texts: width and height, each fixed or not
2026-10-25 11:06:50 +13:00
DaTweety 2222153662 Text size: the value and "fixed" on rows of their own
A tick box and a value in the same cell was not clear to use. Width and
height now take two rows each: "Width" / "Width fixed" and "Height" /
"Height fixed". Not fixed, the value shows the size the field has now
and cannot be edited; ticking "fixed" makes it editable at once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 21:14:06 +02:00
DaTweety 255def181c Symbol texts: width and height, each fixed or not
In a symbol text's properties, "Width (fixed)" and the new "Height
(fixed)" each carry a tick box. Not ticked, the field follows the text
and shows the size it has now, ready to be fixed; ticked, it keeps the
size beside the box.

A fixed height is new: the field keeps it whatever is written, and the
lines that do not fit are cut off, neither drawn nor picked, to shorten
a text where room is short. It is saved as text_height on the text,
only when set, and changed through an undoable property command like
the width. Translations for all languages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 21:14:06 +02:00
Magnus Hellströmer d49ebe8b56 Give the common title blocks path its own RELATIVE_TO_BINARY_PATH macro
The common title blocks folder was taken as relative to the executable
only when QET_COMMON_COLLECTION_PATH_RELATIVE_TO_BINARY_PATH was
defined, the macro of the elements folder. Add
QET_COMMON_TBT_PATH_RELATIVE_TO_BINARY_PATH for it; the collection
macro still applies too, so a build that defines it is unchanged.

CMake now passes QET_COMMON_COLLECTION_PATH_RELATIVE_TO_BINARY_PATH and
QET_COMMON_TBT_PATH_RELATIVE_TO_BINARY_PATH on when the variables of the
same names are set, as it already did for the lang folder. Nothing sets
them, so the default build is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 13:06:03 +02:00
Magnus Hellströmer 2f76a95317 Swedish: phrase book, translator credit and publiccode.yml
- Phrase book: replace the original entries with a glossary of the
  agreed Swedish terms (fixes the swapped From/To, French sources and
  old terms) and align the appended suggestions with qet_sv.ts.
- About dialog and CREDIT: credit the Swedish translation and note that
  parts of it are AI-generated. The new "Swedish translation (partly
  AI-generated)" string is added to every .ts file, translated for sv,
  fr and en and left unfinished for the others.
- publiccode.yml: add a Swedish description.

Note: the Swedish texts in this commit were generated with an AI
assistant (Claude) and then reviewed by the Swedish translator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 12:36:50 +02:00
ispyisail 2f4af977b7 Merge pull request #1558 from DaTweety/feature/tight-text-outline
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 1m45s
Texts are outlined and picked where they are written
2026-10-24 23:23:14 +13:00
Magnus Hellströmer 99a7e2508c Swedish: title blocks, installer, desktop/MIME files and man page
- Title block templates: Swedish labels for the multilingual fields
  (Datum, Titel, Fil, Blad, Upprättad av; ISO 7200 fields).
- Windows installer: translate the four AI assistant strings left in
  English, fix "Solvarme" and use "Symboler" for elements.
- Desktop, AppStream and MIME files: use the current terms (elscheman,
  symbol, ritningshuvud), add Swedish keywords and a .qetz comment.
- Add a Swedish man page.

Note: the Swedish texts in this commit were generated with an AI
assistant (Claude) and then reviewed by the Swedish translator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 12:00:39 +02:00
Magnus Hellströmer 0e6a759429 Swedish translation: review existing strings and complete the rest
Translate the 1857 unfinished strings (4265 of 4265 now finished) and
correct 302 existing translations: wrong meanings (e.g. "Number of
sheets" as "Bladnamn", Cancel as "Ångra"), broken --help and HTML
output, empty strings marked finished, typos and drafting terms.

Terminology made consistent: symbol (element), beteckning (element
label), förbindning (conductor), ritningshuvud (title block),
huvud/slav (master/slave), anslutning for a symbol's terminal and
plint for a terminal-block terminal.

Note: the new translations and the corrections in this commit were
generated with an AI assistant (Claude) and then reviewed by the
Swedish translator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 12:00:39 +02:00
DaTweety bf59f963c1 Texts are outlined and picked where they are written
A text kept at a fixed width was outlined, hovered and picked over its
whole box. A short label such as "-XS6", aligned to the right in a box
120 wide, took the clicks meant for whatever lay in the empty part of
the box, and its selection frame was six times wider than the text.

The selection outline, the hover outline and the click area (shape()
and contains()) are now the lines actually written, placed as the text
is aligned. While editing, the whole box still takes the clicks; a
text with nothing written keeps its box, so it can still be picked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 10:52:05 +02:00
Laurent Trinques 5df19f6672 Merge pull request #1593 from ispyisail/fix/1591-custom-colour-scheme
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 1m55s
Fix unreadable white text with a light custom colour on dark Windows
2026-10-24 03:09:31 +02:00
Laurent Trinques 212e00c1a8 Merge pull request #1597 from ispyisail/fix/1591-win11-menu-icons
Fix hovered menu icons vanishing on Windows 11 with a light colour
2026-10-24 02:40:52 +02:00
Laurent Trinques af138558ba Merge pull request #1594 from jp2images/fix/tabbed-selection-panel
Keep a tabbed Selection properties panel from locking its tab stack
2026-10-24 02:40:00 +02:00
ispyisail 5a29d6edaf Merge remote-tracking branch 'upstream/master' into fix/1591-win11-menu-icons 2026-10-24 08:09:14 +13:00
ispyisail 662e8a1d68 Merge remote-tracking branch 'upstream/master' into fix/1591-custom-colour-scheme 2026-10-24 08:09:13 +13:00
ispyisail ae943b1a95 Merge pull request #1598 from ispyisail/fix/ci-gate-kindinfo-test
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 1m39s
Fix Linux CI: skip the kind-information test where scripting is missing
2026-10-24 08:08:54 +13:00
ispyisail 9feadb0499 Skip tst_elementkindinformation where --run does not exist
The test drives the real binary through --run. A build without the Qt
Qml module has no scripting, so the binary opens and never exits, and
the test is killed at the 120 s timeout. That is the Linux CI build:
master and every pull request have failed on this test since #1590.

Guard it with if(QET_HAS_SCRIPTING), like the other --run tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 07:59:14 +13:00
ispyisail 2a6de652f7 Fix hovered menu icons vanishing in the Windows 11 style
A highlighted menu item's icon was redrawn in the highlighted-text
color, white in most palettes, for the highlight bar Fusion draws. The
Windows 11 style draws a pale fill and the normal text color instead,
so the white icon disappeared on light colors (issue #1591). Leave the
icon to the ordinary hover tint there, except in high contrast, where
that style does draw a highlight bar.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 06:06:33 +13:00
ispyisail f3e7bff4ad Switch the icons back when the system colors are chosen again
Choosing a custom color switches to the icon set that suits it, but
ticking "use system colors" again kept that set until the next start:
after a light color, the dark system theme showed dark icons on dark
menus (issue #1591, second report).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 06:05:26 +13:00
Laurent Trinques 8d448a8117 Merge pull request #1595 from Kellermorph/feature/terminal-label-split-default
Give new projects the terminal labelling of the settings
2026-10-23 17:44:24 +02:00
Kellermorph 8b59bcb992 Give new projects the terminal labelling of the settings
The labelling of the terminals is a setting of the project, so that the
same file draws the same way on every machine which opens it. A new
project has to start with something, though, and that is now a default
of the application: Configure QElectroTech > New project, on the sheet
tab, the same group box with the same two choices the project
properties use -- what it saves is only what a new project starts with.

Off unless the settings say otherwise, so a new project draws the whole
label in one field, as it always did, and a project saved after that
keeps its own choice (readTerminalLabelSplitXml()).

The settings key starts with "diagrameditor/default", the prefix of the
new-project part of a configuration profile, so the choice travels with
the other defaults of a new project.

The project gets the setting in its own properties and nowhere else: the
page of the new sheets does not offer it, and the tests say so.
2026-10-23 14:50:58 +02:00
Laurent Trinques 6a6e558194 Merge pull request #1584 from Kellermorph/feature/terminal-label-split
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 1m38s
Terminal labelling: option to draw label and number apart, and a Show name box for terminals
2026-10-23 13:41:48 +02:00
Laurent Trinques 82c96b84d3 Wire numbers CSV export: write a UTF-8 BOM and drop stray pointer line
Since the Qt6 port QTextStream always writes UTF-8 (Qt5 used the
locale codec, ANSI on Windows). Without a BOM Excel opens the file as
ANSI, so any non-ASCII character in a wire number is mangled, e.g. an
en dash prefix "–010" becomes "–010" (forum topic 3221).
Write a BOM, as the parts list export already does.

Also `stream << &Qt::endl(stream)` streamed the address of the
stream, adding a bogus last line like "0xa78cffb090"; wiresNum()
already terminates every line, so just drop it.
2026-10-23 13:29:23 +02:00
Kellermorph 129648f92a Keep the terminal number out of the element properties
The properties window builds a row for every element info key, so it
also offered an editable "Terminal number" row -- both for one element
and for several at once. The number is not a property of the element
but derived from its label: typing there stored a value nothing reads,
and the export has no column for it either (previous commit).

Both windows skip the key now, the way they skip exclude_from_bom.
The key itself stays an element info key, so the element editor keeps
offering %{terminal_number} as a text variable.

The test builds both windows for a terminal of the fixture and looks
at the rows they offer.
2026-10-23 13:21:29 +02:00
Kellermorph f6be424cad Keep the terminal number out of the export columns
Manual testing found that the CSV export of the project offered the
terminal number as a column, and failed when it was chosen. The export
takes its columns from the element info keys, but the query behind the
nomenclature has no terminal_number column, so the query breaks.

The widget which offers the columns skips the keys it cannot query
(formula and exclude_from_bom) and skips the terminal number with them,
with a comment saying why.

The key itself stays an element info key: the element editor keeps
offering %{terminal_number} as a text variable, and the label keeps
splitting into label and number the way it was drawn.
2026-10-23 13:02:17 +02:00
Jeff Patterson bf940a7205 Keep a tabbed Selection properties panel from locking its tab stack
Since #1572 the empty Selection properties panel shrinks to its title bar.
When it shares a tab stack with another panel, such as Collections, Qt
gives the whole stack the smallest maximum height of its tabs, so the
stack could not be resized while nothing was selected and snapped back
small on every deselect.

The panel now shrinks only when it is not tabbed. While tabbed it keeps the
normal size limits and skips remembering and restoring the area heights,
which would otherwise bring back heights from before it was tabbed.

tst_selectionpanelheight gets a tabbed case: the stack can be made taller
with nothing selected, keeps its height through a select and deselect, and
the panel shrinks again once untabbed.
2026-10-23 05:35:41 -05:00
ispyisail 535a3b03a3 Fix white menu and toolbar text with a light custom color on dark Windows
With Windows in dark mode and a light color chosen in place of the
system colors, the Windows 11 style kept drawing menu bar and toolbar
text in white: it takes those colors from the system color scheme, not
from the palette (issue #1591).

Request the color scheme that matches the chosen color before setting
the palette, and go back to the system scheme with the system colors.
On macOS, the scheme-change handler now leaves a custom color alone
instead of replacing it with the system palette.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 23:26:55 +13:00
ispyisail f68927d0a4 Merge pull request #1592 from ispyisail/refactor/qetz-reader-writer
Move reading and writing a .qetz file into classes of their own
2026-10-23 23:01:34 +13:00
ispyisail 93157a579d Move reading and writing a .qetz out of QETProject
QETZ-DB-FIRST stage 3a. QETProject::openFile() unzipped and joined a .qetz
itself and kept what it held beside the document in three members of its
own (the entries, each folio's part, the pictures), and writeContainer()
split and zipped it. Both now live in their own classes under
sources/container: QetzReader reads a .qet or a .qetz and keeps what a
.qetz holds for as long as the project is open; QetzWriter writes the
document as a .qetz.

No behaviour change: the same calls in the same order. This is the seam
stage 3b needs, where opening fills the working database straight from
project.sqlite instead of rebuilding it from the joined XML.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 18:31:37 +13:00
ispyisail 38107d4d73 Merge pull request #1590 from ispyisail/feature/element-state-db
Store each symbol's contact type in the project database
2026-10-23 18:04:55 +13:00
ispyisail 5c2726d34b Move a symbol's kind information through the project database
QETZ-DB-FIRST 2d-2a: the first half of 2d-2 (QETZ-DB-FIRST-2D-SCOPE.md).
A symbol's kind information (NO/NC/SW/power and the like, baked into its
own definition and never edited after it is built -- the data
CrossRefItem::NOElements()/NCElements() read, through the already
@deprecated Element::kindInformations(), to classify a linked contact)
had no database-backed form at all: nothing could query it without
walking a live Element*.

Add an element_kind_information table, written through from
projectDataBase::placeElement()/unplaceElement() (the same hooks that
already write element_information), with Element::kindInformations() now
reading the store first -- same shape as elementInformations()/
ownInformations(). Added Element::ownKindInformations() as the raw
member accessor, mirroring ownInformations(), so storeElementKindInformation()
is called with the member value rather than the store-reading getter
(the same stale-echo trap storeBorder()/storeFolioNumber() avoid).

No automated test existed for cross-reference text or kind information
at all; added tst_elementkindinformation (a hand-written embedded-symbol
project, checked through the database via qet.query()) before touching
anything cross-reference-shaped, per the re-scoping in
QETZ-DB-FIRST-2D-SCOPE.md.

crossrefitem.cpp itself is untouched here: switching
NOElements()/NCElements() to read through this store is 2d-2b, once this
lands.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-23 13:29:07 +13:00
ispyisail 2ae9196a09 Merge pull request #1589 from ispyisail/feature/folio-number-db
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 2m6s
Move a folio's number and total through the project database
2026-10-23 13:11:58 +13:00
ispyisail 44c96a4c95 Move a folio's number and total through the project database
QETZ-DB-FIRST 2d-1: the first sub-stage of 2d (QETZ-DB-FIRST-2D-SCOPE.md).
A folio's 1-based position among the project's folios, and the project's
folio count, were purely computed on the fly from QETProject's live
m_diagrams_list (QETProject::folioIndex(), updateDiagramsFolioData()) and
cached only as BorderTitleBlock's own folio_index_/folio_total_ members --
never in projectDataBase, so nothing could query a folio's number without
walking the live project.

Add a folio_number table (diagram_uuid, folio_index, folio_total), written
through from two places: BorderTitleBlock::setFolioData() (every live
folio add/remove/reorder, same point that already sets the members), and
projectDataBase::populateFromDocument() (straight from the document for a
folio not yet built, same habit as folio_titleblock/folio_border). Added
BorderTitleBlock::folioIndex() as a public getter alongside the existing
folioTotal(), both now reading the store first like the other title-block
and border accessors added in stage 2c.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-23 07:26:45 +13:00
ispyisail df73934bfb Merge pull request #1586 from ispyisail/feature/folio-border-db
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 1m41s
Move a folio's border dimensions into the project database
2026-10-23 06:34:42 +13:00
Kellermorph 208b5e1570 Leave the German translation file to lupdate
The review asked to keep hand-written entries out of the .ts: the file
is generated, and hand edits are lost with the next lupdate run anyway.
The strings of the labelling setting pick up their translation with the
next translation round.
2026-10-22 18:40:27 +02:00
Kellermorph 86563850f8 Move the terminal labelling setting into the project
The review asked for it, and it is the right place: the same file must
draw the same way on every machine which opens it, so how a terminal
writes its label belongs to the project, not to the application's own
settings.

The choice lives with the other display options of the sheets, in the
project properties (General page), and is saved in the project as
<terminal_labelling split="true"/> -- written only when on, so a
project with it off saves byte for byte as before. Reading it is a
member of the project now: no QSettings built per text refresh any
more, and switching it redraws the labels of the drawings already open.

The application setting (QetSettings, the General configuration page)
is gone with it, and the test reads the project's own value.
2026-10-22 18:40:19 +02:00
Kellermorph 790497978a Split the labelling of terminal symbols only
An element of any other type draws its label as a whole, whatever the
labelling setting says: the colon in a label like "-K1:13" is part of
that label, not a terminal number waiting to be split off. Only an
element whose data says it is a terminal is ever drawn split.

The test picks a non-terminal whose own label field draws the label it
is given -- not a report (its label is where its partner is), not a
slave (its label follows its master) and not a numbered symbol (a
formula composes its label): those draw texts of their own the split
never touches.
2026-10-22 18:33:06 +02:00
Laurent Trinques b099c65115 Fix #1562: cross-references settings squeezed on a low screen
On a 1080p screen with display scaling (QT_SCALE_FACTOR=1.25, or
Windows at 125 %), the "Representation" group of the Cross-references
tab in Settings > New project was drawn with its widgets on top of
each other.

The tab widget of that page had a minimum size of 800 x 650 set by
hand. A minimum height set by hand replaces the one computed from the
tabs, so the dialog's scroll area, which is there for low screens,
believed 650 px were enough and never scrolled, while the
cross-references tab needs more. Keep the minimum width only: the
tabs' own minimum height now applies and the dialog scrolls instead.
2026-10-22 16:55:21 +02:00
Laurent Trinques f8e9a1a457 Merge pull request #1582 from ispyisail/fix/1579-changed-on-disk-network-share
Fix #1579: false "changed on disk" warning on network shares
2026-10-22 16:15:56 +02:00
Kellermorph 337502edfc Take the label field off the sheet while the name is hidden
An element whose name must not be drawn left its label field behind
as an empty frame: selected along with the element, ready to click,
drawing nothing. The field now follows the Show name box both ways:

- a field bound to the label is hidden while Element::labelShown()
  says no, and shown again the moment the box is ticked again, both
  through the same signals which refresh the text (elementInfoChange,
  the label connection refresh, binding the field to another
  information), so it can never get stuck on one side;
- a hidden field is deselected and gets no resize handles, and one
  which comes back gets its handles back when its element is still
  selected;
- every other field, composite texts included, is drawn as always,
  and the data of the element never changes - only the drawing.

Adds a test: the field is visible, goes away with the name, and
comes back with it.
2026-10-22 13:18:55 +02:00
Kellermorph edf761c2b6 Add a Show name box to the selection properties of a terminal
The box hides the name of the terminal on the sheet only: the element
keeps all of its data, and with the labelling split the terminal keeps
its number, drawn once - in its own field when the symbol has one,
alone in the label field when it has not.

Only a terminal may have its name undrawn: the box is shown for the
element type Terminal alone, and Element::labelShown() obeys the
stored information for a terminal only. The choice is stored as the
element information "label_shown" = "false" and only that, so files
of every element which still draws its name stay exactly as they are.

Multi-selection: the flag appears for terminals only and counts an
absent information as "shown", so a mixed selection shows the box
ticked only when every terminal has it ticked.

Includes four test cases: hidden name keeps the stored data, keeps
the number without a number field, leaves the number to its own
field, and a non-terminal draws its name whatever the file says.
2026-10-22 12:51:50 +02:00
ispyisail 489676b155 Move a folio's border dimensions into the project database
Adds a folio_border table and wires BorderTitleBlock's column/row
grid (counts, widths, header sizes, display flags) through it, the
same way folio_titleblock already covers the title block itself.
Closes the one gap DB-ACCESSORS 4.6 found still living only in the
folio's own XML.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-22 22:55:38 +13:00
Laurent Trinques b98193dbe2 Merge pull request #1580 from ispyisail/doc/install-msys2-kf6
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 18m33s
Document KDE Frameworks for Windows builds through MSYS2 UCRT64
2026-10-22 11:08:26 +02:00
ispyisail 56b24aaa0e Merge pull request #1581 from ispyisail/refactor/autonum-folio-counter
Keep a folio's own numbering counters in the project database
2026-10-22 21:44:58 +13:00
ispyisail 3da3a78850 Fix #1579: no false "changed on disk" warning on a network share
On a CIFS/SMB share every save asked "Someone else changed the file on
disk", because the size and modification time read straight after
saving can be the client's cached values, not the server's final ones,
and the next save demanded an exact match.

The size and time are still the quick check. When they differ, the file
now counts as changed only if its content differs from what this QET
last read or wrote (a SHA-1 kept at open and after each save). A real
change by someone else still asks; the same bytes with a new time do
not.

tst_changedondisk: sameContentNewTimeSaves fails before and passes
after; the two conflict cases now move a symbol so the content really
changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 21:36:24 +13:00
Kellermorph dfec60a3a5 Draw a terminal's label and its number apart, when asked to
A terminal's label is written as it is read off the plan, "X1:1", and
the symbol draws it as one field. On a long strip that field is long
enough to reach into the next terminal, and a user who wants the number
next to the screw and the label out of the way has no way to say so.

Settings > General > Appearance now has a "Display of the terminal
labelling" group with two choices: the label and its terminal number in
one field, the way it has always been drawn, or the two split. The
first is what every drawing gets, so nothing moves until the user asks
for it, and choosing the other one redraws the drawings already open --
nothing needs to be closed and opened again.

A symbol made for the split carries a text field bound to the new
"Terminal number" information (in the element editor's list, next to
the label, and as the %{terminal_number} variable of a composite text):
the label field then shows "X1" and the number field "1", each placed
where the symbol wants it, and hideable when it must be. A symbol which
has no such field -- every symbol drawn until now -- gets the number on
its own line inside the label field, so switching the setting on can
never make a number vanish, and never needs a symbol to be touched
first. A field which becomes, or stops being, the number field tells
the label fields of its symbol to draw themselves again.

Only the drawing reacts. What the element stores, the numbering, the
sorting in the terminal strip editor, the automatic strip import and
every export keep the whole label: the split is read where the text is
drawn (Element::labelForDisplay() and friends), not where the label is
made.

The new test covers both choices, with and without the number field, a
label with no colon at all, and the way back to the whole label. The
full test suite passes (124/124).
2026-10-22 10:01:12 +02:00
ispyisail bd70fc8b20 INSTALL.md: KF6 is packaged in MSYS2 UCRT64; use it as the nightly does
The Windows section said KDE Frameworks are not prebuilt for Windows by any
route and that KF6 is not packaged in MSYS2, so every Windows build was told
to use -DBUILD_WITH_KF=OFF. MSYS2 packages kcoreaddons and kwidgetsaddons for
its UCRT64 and CLANG64 environments (not MINGW64), and
.github/workflows/windows-build.yml builds with them (-DBUILD_WITH_KF=ON
-DBUILD_KF=OFF).

Switch the MSYS2 recipe from MINGW64 to UCRT64 with the workflow's packages and
options. This also adds qt6-svg, a required Qt component the old package list
left out. MINGW64 users are told to drop the KDE packages and build with
-DBUILD_WITH_KF=OFF, as before.

Reported in discussion #1565.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 20:37:48 +13:00
Laurent Trinques 149d92545d Merge pull request #1577 from Kellermorph/integration/terminal-manager-upstream
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 2m12s
Terminal strip editor: automatic cable entry, plan order, target box, Target column and speed-ups
2026-10-22 06:01:59 +02:00
ispyisail 6225b20f32 Populate folio_counter rows from the document, not just write-through
Habit 4: a folio that is only parsed, never built into a live
Diagram scene by a numbering edit, still needs its folio_counter
rows. Diagram::folioSequentialsFromXml() now writes the rows it
just parsed, the same way insertFolioSeqHash() does for an edit
made in a built scene.

Adds the fixture used to prove this: folio_counters_multi.qet, 3
folios, an element and a conductor numbering scheme both using a
tenfolio part, exercising insertFolioSeqHash()'s write-through and
this load-time path. Resave-of-resave is byte-identical; ctest
clean on the 4 directly relevant tests.

Found in passing, not fixed here (pre-existing on master, outside
2b-4's scope): the conductor side's folio-sequential XML ends up
saved under <elementautonumfoliosequentials> instead of its own
<conductorautonumfoliosequentials> tag -- the fixture's 'Wires'
scheme reads back with owner=element for exactly that reason.
Worth a FINDINGS entry before anyone trusts the conductor side of
this mechanism.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-22 12:41:37 +13:00