44 lines
1.3 KiB
C++
44 lines
1.3 KiB
C++
|
#pragma once
|
||
|
|
||
|
#include "widgets/base_widget.hpp"
|
||
|
#include <Process/Style/ScenarioStyle.hpp>
|
||
|
#include <Scenario/Document/Interval/IntervalModel.hpp>
|
||
|
|
||
|
namespace Hardware
|
||
|
{
|
||
|
struct ScenarioComponent : bugui::base_widget
|
||
|
{
|
||
|
virtual bool this_model(const Scenario::IntervalModel&) const { return false; };
|
||
|
virtual bool this_model(const Scenario::TimeSyncModel&) const { return false; };
|
||
|
virtual bool this_model(const Scenario::EventModel&) const { return false; };
|
||
|
virtual bool this_model(const Scenario::StateModel&) const { return false; };
|
||
|
|
||
|
protected:
|
||
|
explicit ScenarioComponent(bugui::container_widget* parent)
|
||
|
: bugui::base_widget{parent}
|
||
|
{ }
|
||
|
};
|
||
|
|
||
|
template <typename T>
|
||
|
requires (std::same_as<T, Scenario::IntervalModel> ||
|
||
|
std::same_as<T, Scenario::TimeSyncModel> ||
|
||
|
std::same_as<T, Scenario::EventModel> ||
|
||
|
std::same_as<T, Scenario::StateModel>)
|
||
|
struct ScenarioComponentSpec : ScenarioComponent
|
||
|
{
|
||
|
bool this_model(const T& m) const override { return m.id() == model.id(); };
|
||
|
|
||
|
protected:
|
||
|
explicit ScenarioComponentSpec(T& m,
|
||
|
bugui::container_widget* parent)
|
||
|
: ScenarioComponent{parent}
|
||
|
, model{m}
|
||
|
, skin{Process::Style::instance()}
|
||
|
{ }
|
||
|
|
||
|
T& model;
|
||
|
const Process::Style& skin;
|
||
|
};
|
||
|
|
||
|
} // hardware
|