64 lines
1.6 KiB
C++
64 lines
1.6 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}
|
|
, ctrlr{nullptr}
|
|
{
|
|
auto& set = m_context.app.settings<Settings::Model>();
|
|
create(set.getDevice());
|
|
|
|
con(set,
|
|
&Settings::Model::DeviceChanged,
|
|
this,
|
|
&DocumentPlugin::create,
|
|
Qt::QueuedConnection);
|
|
}
|
|
|
|
void DocumentPlugin::on_documentClosing()
|
|
{
|
|
cleanup();
|
|
}
|
|
|
|
void DocumentPlugin::create(const QString& device_name)
|
|
{
|
|
if (ctrlr) cleanup();
|
|
if (device_name == "None") return;
|
|
|
|
auto& doc = m_context.document.model().modelDelegate();
|
|
auto scenar = safe_cast<Scenario::ScenarioDocumentModel*>(&doc);
|
|
auto cstr = &scenar->baseScenario().interval();
|
|
|
|
ctrlr = new Controller{m_context, *cstr, device_name.toStdString()};
|
|
}
|
|
|
|
void DocumentPlugin::cleanup()
|
|
{
|
|
if (!ctrlr) return;
|
|
|
|
delete ctrlr;
|
|
ctrlr = nullptr;
|
|
}
|
|
|
|
} // namespace Hardware
|