#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} , hardware{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(); hardware.setup(); // Get Scenario::processModel // adapted from // src/plugins/score-plugin-scenario/Scenario/Document/ScenarioDocument/ScenarioDocumentModel.cpp#67 hardware.setup_scenario(qobject_cast(&*cstr->processes.begin())); } void DocumentPlugin::cleanup() { if(!cstr) return; cstr = nullptr; } }