From 04ad1c890a1efbb226deb8376f08af209a469a63 Mon Sep 17 00:00:00 2001 From: ispyisail Date: Tue, 20 Oct 2026 00:09:06 +1300 Subject: [PATCH] Write the project's numbering from the project database QETZ-DB-FIRST stage 2b-2. The save writes the numbering schemes and their settings from the project database's numbering rows (2b-1) instead of the project's own lists. The project still keeps the rows in step after each change, and QET_CHECK_NUMBERING_ROWS still says whether the two agree, until the lists go (2b-3). tst_elementautonumids::numberingRowsFollowEveryChange also checks the saved file: the current symbol and wire numbering and the schemes. With setCurrrentElementAutonum() not writing the rows, a save straight after it now names the old scheme in use. Co-Authored-By: Claude Opus 5.5 --- sources/dataBase/projectdatabase.cpp | 5 +++-- sources/qetproject.cpp | 14 +++++++++----- tests/qttest/tst_elementautonumids.cpp | 8 ++++++++ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/sources/dataBase/projectdatabase.cpp b/sources/dataBase/projectdatabase.cpp index 7c1472fd1..5e463cbc3 100644 --- a/sources/dataBase/projectdatabase.cpp +++ b/sources/dataBase/projectdatabase.cpp @@ -2697,8 +2697,9 @@ bool projectDataBase::createDataBase() //The numbering tables (QETZ-DB-FIRST stage 2b): the project's //schemes, one row per part of each in its order, and the settings - //saved with them. Not filled from the folios: QETProject writes - //them when it reads its file and whenever its numbering changes. + //saved with them; the save writes the numbering from them. Not + //filled from the folios: QETProject writes them when it reads its + //file and whenever its numbering changes. for (const char *table : { "CREATE TABLE numbering_scheme (" "kind VARCHAR(20) NOT NULL, title TEXT NOT NULL, uuid VARCHAR(50), " diff --git a/sources/qetproject.cpp b/sources/qetproject.cpp index cc1de0d6f..8b5ec0b61 100644 --- a/sources/qetproject.cpp +++ b/sources/qetproject.cpp @@ -4247,10 +4247,13 @@ void QETProject::writeDefaultPropertiesXml(QDomElement &xml_element) } xml_element.appendChild(xrefs_elmt); - writeNumberingXml(numberingOfProject(), xml_element); + //The numbering is written from the project database's rows + //(QETZ-DB-FIRST stage 2b-2), which the project keeps in step + //(writeNumberingRows()) + writeNumberingXml(m_data_base.numbering(), xml_element); //QET_CHECK_NUMBERING_ROWS=1: say whether the project database's - //numbering rows write what the project writes (QETZ-DB-FIRST stage - //2b-1). A test and debugging aid; it changes nothing. + //numbering rows write what the project holds. A test and + //debugging aid; it changes nothing. if (qEnvironmentVariableIntValue("QET_CHECK_NUMBERING_ROWS") == 1) { QDomDocument from_project, from_rows; QDomElement project_root = from_project.createElement(QStringLiteral("numbering")); @@ -4308,8 +4311,9 @@ projectDataBase::Numbering QETProject::numberingOfProject() const @brief QETProject::writeNumberingRows Write the project's numbering into the project database's numbering tables (QETZ-DB-FIRST stage 2b-1): after reading the file and after - each change of the numbering, so the rows are always what the save - writes (QET_CHECK_NUMBERING_ROWS checks it) + each change of the numbering. The save writes the numbering from + them (2b-2); QET_CHECK_NUMBERING_ROWS says whether they hold what + the project does */ void QETProject::writeNumberingRows() { diff --git a/tests/qttest/tst_elementautonumids.cpp b/tests/qttest/tst_elementautonumids.cpp index f41786945..565a25111 100644 --- a/tests/qttest/tst_elementautonumids.cpp +++ b/tests/qttest/tst_elementautonumids.cpp @@ -786,6 +786,14 @@ qet.log('PROBE ' + JSON.stringify({saves: saves})); QVERIFY(xml.contains("title=\"Rows renamed folio\"")); QCOMPARE(diagramAttributes(xml, QStringLiteral("conductorAutonum")).value(0), QStringLiteral("Rows renamed conductor")); + // and the save, which writes the numbering from the rows (2b-2), + // has every scheme and the ones made current + const Saved numbering = parse(xml); + QCOMPARE(numbering.current, QStringLiteral("Rows renamed element")); + QCOMPARE(numbering.scheme_formula.value(QStringLiteral("Rows renamed element")), + QStringLiteral("R-%sequ_1")); + QCOMPARE(QUuid(numbering.current_id), numbering.scheme_id.value(QStringLiteral("Rows renamed element"))); + QVERIFY(xml.contains("current_autonum=\"Rows renamed conductor\"")); } void conductorNumberings()