77 lines
1.8 KiB
C++
77 lines
1.8 KiB
C++
#include <Scenario/Application/ScenarioActions.hpp>
|
|
#include <Scenario/Application/ScenarioApplicationPlugin.hpp>
|
|
#include <Scenario/Document/BaseScenario/BaseScenario.hpp>
|
|
|
|
#include <score/actions/Action.hpp>
|
|
#include <score/actions/ActionManager.hpp>
|
|
#include <score/document/DocumentInterface.hpp>
|
|
#include <score/model/path/PathSerialization.hpp>
|
|
#include <score/model/tree/TreeNodeSerialization.hpp>
|
|
#include <score/serialization/VisitorCommon.hpp>
|
|
#include <score/tools/Bind.hpp>
|
|
|
|
#include <core/document/Document.hpp>
|
|
#include <core/document/DocumentModel.hpp>
|
|
|
|
#include <QBuffer>
|
|
|
|
#include <Hardware/Settings/Model.hpp>
|
|
|
|
#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<Settings::Model>();
|
|
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<Scenario::ScenarioDocumentModel*>(&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<Scenario::ProcessModel*>(&*cstr->processes.begin()));
|
|
}
|
|
|
|
void DocumentPlugin::cleanup()
|
|
{
|
|
if(!cstr)
|
|
return;
|
|
|
|
cstr = nullptr;
|
|
}
|
|
}
|