diff --git a/Hardware/Widgets/ScenarioComponent.hpp b/Hardware/Widgets/ScenarioComponent.hpp index b286d6f..3c27711 100644 --- a/Hardware/Widgets/ScenarioComponent.hpp +++ b/Hardware/Widgets/ScenarioComponent.hpp @@ -6,7 +6,10 @@ namespace Hardware { -struct ScenarioComponent : bugui::base_widget +template + requires (std::same_as || + std::derived_from) +struct ScenarioComponent : T { virtual bool this_model(const Scenario::IntervalModel&) const { return false; }; virtual bool this_model(const Scenario::TimeSyncModel&) const { return false; }; @@ -15,23 +18,23 @@ struct ScenarioComponent : bugui::base_widget protected: explicit ScenarioComponent(bugui::container_widget* parent) - : bugui::base_widget{parent} + : T{parent} { } }; -template +template requires (std::same_as || std::same_as || std::same_as || std::same_as) -struct ScenarioComponentSpec : ScenarioComponent +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} + : ScenarioComponent{parent} , model{m} , skin{Process::Style::instance()} { } diff --git a/Hardware/Widgets/ScenarioWidget.cpp b/Hardware/Widgets/ScenarioWidget.cpp index ab03213..d49f6c9 100644 --- a/Hardware/Widgets/ScenarioWidget.cpp +++ b/Hardware/Widgets/ScenarioWidget.cpp @@ -57,7 +57,7 @@ void ScenarioWidget::on_interval_removed(const Scenario::IntervalModel& interval { remove_widget([&interval] (const auto& w) - { return static_cast(w.get())->this_model(interval); }); + { return static_cast*>(w.get())->this_model(interval); }); update(); } @@ -77,7 +77,7 @@ void ScenarioWidget::on_time_sync_removed(const Scenario::TimeSyncModel& timeSyn { remove_widget([&timeSync] (const auto& w) - { return static_cast(w.get())->this_model(timeSync); }); + { return static_cast*>(w.get())->this_model(timeSync); }); update(); } diff --git a/Hardware/Widgets/TimeSyncWidget.cpp b/Hardware/Widgets/TimeSyncWidget.cpp index a910b72..13d6ea1 100644 --- a/Hardware/Widgets/TimeSyncWidget.cpp +++ b/Hardware/Widgets/TimeSyncWidget.cpp @@ -6,8 +6,8 @@ namespace Hardware { TimeSyncWidget::TimeSyncWidget(Scenario::TimeSyncModel& timeSync, bugui::container_widget* parent) - : ScenarioComponentSpec{timeSync, parent} - // , bugui::container_widget{parent} + : ScenarioComponentSpec{timeSync, parent} { } int TimeSyncWidget::x() const diff --git a/Hardware/Widgets/TimeSyncWidget.hpp b/Hardware/Widgets/TimeSyncWidget.hpp index 8cc035e..4d676f8 100644 --- a/Hardware/Widgets/TimeSyncWidget.hpp +++ b/Hardware/Widgets/TimeSyncWidget.hpp @@ -6,8 +6,8 @@ namespace Hardware { -struct TimeSyncWidget final : ScenarioComponentSpec - // , virtual bugui::container_widget +struct TimeSyncWidget final : ScenarioComponentSpec { explicit TimeSyncWidget(Scenario::TimeSyncModel& timeSync, bugui::container_widget* parent);