Speed up opening big projects with lazy folios

This commit is contained in:
Laurent Trinques
2026-10-13 11:01:21 +02:00
parent a78e95be2c
commit 77e2a9bfc5
45 changed files with 3956 additions and 388 deletions
+8 -4
View File
@@ -562,8 +562,9 @@ void QETDiagramEditor::setUpActions()
m_draw_grid->setCheckable(true);
m_draw_grid->setChecked(settings.value("diagrameditor/grid_display_startup", true).toBool());
connect(m_draw_grid, &QAction::triggered, [this](bool checked) {
//The folio's own setting: folios() builds nothing
foreach (ProjectView *prjv, this->openedProjects())
foreach (Diagram *d, prjv->project()->diagrams()) {
foreach (Diagram *d, prjv->project()->folios()) {
d->setDisplayGrid(checked);
d->update();
}
@@ -603,8 +604,9 @@ void QETDiagramEditor::setUpActions()
m_draw_guides->setCheckable(true);
m_draw_guides->setChecked(settings.value("diagrameditor/guides_display_startup", false).toBool());
connect(m_draw_guides, &QAction::triggered, [this](bool checked) {
//The folio's own setting: folios() builds nothing
foreach (ProjectView *prjv, this->openedProjects())
foreach (Diagram *d, prjv->project()->diagrams()) {
foreach (Diagram *d, prjv->project()->folios()) {
d->setDisplayGuides(checked);
}
});
@@ -652,8 +654,10 @@ void QETDiagramEditor::setUpActions()
action->setData(int(kind.first));
connect(action, &QAction::triggered, this, [kind](bool checked) {
ShownKinds::setShown(kind.first, checked);
//Items built later are shown or hidden as they are made
//(ShownKinds::tag())
for (QETProject *project : QETApp::registeredProjects())
for (Diagram *diagram : project->diagrams())
for (Diagram *diagram : project->builtFolios())
ShownKinds::apply(diagram, kind.first);
emit QETApp::instance()->shownKindsChanged();
});
@@ -2004,7 +2008,7 @@ bool QETDiagramEditor::openAndAddProject(
//was not found: they would otherwise vanish on the next save
//without the user ever being told.
QStringList lost_wires;
for (Diagram *diagram : project->diagrams()) {
for (Diagram *diagram : project->foliosWithWiresNotReconnected()) {
for (const QString &wire : diagram->wiresNotReconnected()) {
lost_wires << tr("Sheet %1: %2").arg(diagram->folioIndex() + 1).arg(wire);
}