Merge pull request #1574 from ispyisail/refactor/autonum-save-from-db

Save the project's numbering schemes from the project database
This commit is contained in:
ispyisail
2026-10-21 21:39:36 +13:00
committed by GitHub
3 changed files with 20 additions and 7 deletions
+3 -2
View File
@@ -2697,8 +2697,9 @@ bool projectDataBase::createDataBase()
//The numbering tables (QETZ-DB-FIRST stage 2b): the project's //The numbering tables (QETZ-DB-FIRST stage 2b): the project's
//schemes, one row per part of each in its order, and the settings //schemes, one row per part of each in its order, and the settings
//saved with them. Not filled from the folios: QETProject writes //saved with them; the save writes the numbering from them. Not
//them when it reads its file and whenever its numbering changes. //filled from the folios: QETProject writes them when it reads its
//file and whenever its numbering changes.
for (const char *table : { for (const char *table : {
"CREATE TABLE numbering_scheme (" "CREATE TABLE numbering_scheme ("
"kind VARCHAR(20) NOT NULL, title TEXT NOT NULL, uuid VARCHAR(50), " "kind VARCHAR(20) NOT NULL, title TEXT NOT NULL, uuid VARCHAR(50), "
+9 -5
View File
@@ -4247,10 +4247,13 @@ void QETProject::writeDefaultPropertiesXml(QDomElement &xml_element)
} }
xml_element.appendChild(xrefs_elmt); 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 //QET_CHECK_NUMBERING_ROWS=1: say whether the project database's
//numbering rows write what the project writes (QETZ-DB-FIRST stage //numbering rows write what the project holds. A test and
//2b-1). A test and debugging aid; it changes nothing. //debugging aid; it changes nothing.
if (qEnvironmentVariableIntValue("QET_CHECK_NUMBERING_ROWS") == 1) { if (qEnvironmentVariableIntValue("QET_CHECK_NUMBERING_ROWS") == 1) {
QDomDocument from_project, from_rows; QDomDocument from_project, from_rows;
QDomElement project_root = from_project.createElement(QStringLiteral("numbering")); QDomElement project_root = from_project.createElement(QStringLiteral("numbering"));
@@ -4308,8 +4311,9 @@ projectDataBase::Numbering QETProject::numberingOfProject() const
@brief QETProject::writeNumberingRows @brief QETProject::writeNumberingRows
Write the project's numbering into the project database's numbering Write the project's numbering into the project database's numbering
tables (QETZ-DB-FIRST stage 2b-1): after reading the file and after 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 each change of the numbering. The save writes the numbering from
writes (QET_CHECK_NUMBERING_ROWS checks it) them (2b-2); QET_CHECK_NUMBERING_ROWS says whether they hold what
the project does
*/ */
void QETProject::writeNumberingRows() void QETProject::writeNumberingRows()
{ {
+8
View File
@@ -786,6 +786,14 @@ qet.log('PROBE ' + JSON.stringify({saves: saves}));
QVERIFY(xml.contains("title=\"Rows renamed folio\"")); QVERIFY(xml.contains("title=\"Rows renamed folio\""));
QCOMPARE(diagramAttributes(xml, QStringLiteral("conductorAutonum")).value(0), QCOMPARE(diagramAttributes(xml, QStringLiteral("conductorAutonum")).value(0),
QStringLiteral("Rows renamed conductor")); 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() void conductorNumberings()