* @brief Rebuilds m_frame from ProjectModel's already-parsed in-memory state (no file I/O). */
| 547 | * @brief Rebuilds m_frame from ProjectModel's already-parsed in-memory state (no file I/O). |
| 548 | */ |
| 549 | void DataModel::FrameBuilder::syncFromProjectModel() |
| 550 | { |
| 551 | const auto& pm = DataModel::ProjectModel::instance(); |
| 552 | Q_ASSERT(!pm.title().isEmpty()); |
| 553 | |
| 554 | clear_frame(m_frame); |
| 555 | m_sourceFrames.clear(); |
| 556 | m_sourceFrameCounters.clear(); |
| 557 | |
| 558 | m_externalTableApiUsers = false; |
| 559 | m_captureFlagsDirty = true; |
| 560 | |
| 561 | m_frame.title = pm.title(); |
| 562 | m_frame.groups = buildEnabledGroups(pm.groups()); |
| 563 | m_frame.actions = pm.actions(); |
| 564 | m_frame.sources = pm.sources(); |
| 565 | |
| 566 | finalize_frame(m_frame); |
| 567 | invalidateFramePool(); |
| 568 | initializeTableStore(); |
| 569 | compileTransforms(); |
| 570 | parseBudgetReset(); |
| 571 | |
| 572 | Q_ASSERT(!m_frame.title.isEmpty()); |
| 573 | |
| 574 | Q_EMIT jsonFileMapChanged(); |
| 575 | } |
| 576 | |
| 577 | //-------------------------------------------------------------------------------------------------- |
| 578 | // Quick Plot header registration |
no test coverage detected