mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-17 19:34:13 +02:00
Show a folio without building its partners' folios (stage D5b)
Showing a folio built it and every folio holding a partner of its symbols. Now a partner is built alone, as a symbol, into its folio's scene (Diagram::buildSymbols()), and reused when that folio is built. - A linked folio report built alone had no wires when it was linked, so its texts showing a wire's properties stayed empty: after any build, linked reports on the built folios and their partners look at their wires again, as opening does. Unlinked reports keep their texts, as opening leaves them. - A report whose partner was built alone builds the partner's folio when its potential is followed. - tableChainFolios() parsed every unbuilt folio's file. The index now lists the drawn tables and the table each continues (folio_table), and a .qetz opened from it uses that list. An index without it falls back to the folio files. - A .qetz's project.sqlite is opened once per project (QetContainerDb::FolioReader), not once per folio built. nuri (136 folios), opened fresh, one folio shown: median 1104 -> 184 ms, each show builds one folio; industrial 234 -> 87 ms. tst_lazyfolios: a folio whose table continues another is shown first from a .qetz (fails when the index's chains are ignored). ctest 96/96 eager and lazy; 342-project corpus: master, lazy, .qetz lazy and .qetz kept all the same. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -29,6 +29,8 @@
|
||||
#include <QSet>
|
||||
#include <QUuid>
|
||||
|
||||
#include <optional>
|
||||
|
||||
#include "../diagramcontext.h"
|
||||
#include "../titleblockproperties.h"
|
||||
#include "../conductorproperties.h"
|
||||
@@ -164,12 +166,16 @@ class projectDataBase : public QObject
|
||||
bool isBuildingFolio() const {return m_building_folios > 0;}
|
||||
bool rowsFromDocument() const {return m_rows_from_document;}
|
||||
QString schemaStamp() const;
|
||||
QByteArray indexFile(const QList<std::pair<QUuid, QString>> &folio_headers);
|
||||
/// A drawn table of a folio and the table it continues
|
||||
struct FolioTable { QUuid table; QUuid folio; QUuid previous; };
|
||||
QByteArray indexFile(const QList<std::pair<QUuid, QString>> &folio_headers,
|
||||
const QList<FolioTable> &tables = QList<FolioTable>());
|
||||
void discardFill();
|
||||
/// The tables are right as they are (filled from an index)
|
||||
void markCurrent() {m_content_changed = false;}
|
||||
bool fillFromIndex(const QByteArray &index, QList<std::pair<QUuid, QString>> *folio_headers,
|
||||
QString *why = nullptr);
|
||||
QString *why = nullptr,
|
||||
std::optional<QList<FolioTable>> *folio_tables = nullptr);
|
||||
QString prefillReport() const;
|
||||
QSet<QUuid> foliosWithUnjoinedWires() const;
|
||||
QSet<QUuid> folioUuidsOfElements(const QSet<QUuid> &elements) const;
|
||||
|
||||
Reference in New Issue
Block a user