#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "DocumentPlugin.hpp" namespace Hardware { using namespace std::literals; DocumentPlugin::DocumentPlugin(const score::DocumentContext& doc, QObject* parent) : score::DocumentPlugin{doc, "Hardware::DocumentPlugin", parent} , ctrlr{doc} { auto& set = m_context.app.settings(); if(set.getEnabled()) { create(); } con( set, &Settings::Model::EnabledChanged, this, [this](bool b) { if (b) create(); else cleanup(); }, Qt::QueuedConnection); } DocumentPlugin::~DocumentPlugin() { } void DocumentPlugin::on_documentClosing() { cleanup(); } void DocumentPlugin::create() { if (cstr) cleanup(); auto& doc = m_context.document.model().modelDelegate(); auto scenar = safe_cast(&doc); cstr = &scenar->baseScenario().interval(); ctrlr.setup(); // Get Scenario::processModel // adapted from // src/plugins/score-plugin-scenario/Scenario/Document/ScenarioDocument/ScenarioDocumentModel.cpp#67 ctrlr.setup_scenario( qobject_cast( &*cstr->processes.begin()) ); } void DocumentPlugin::cleanup() { if (!cstr) return; cstr = nullptr; } }