#include "ScenarioWidget.hpp" #include namespace Hardware { ScenarioWidget::ScenarioWidget(Scenario::ProcessModel* scenario, bugui::container_widget* parent) : bugui::container_widget{parent} , model{scenario} { model->intervals.mutable_added.connect<&ScenarioWidget::on_interval_added>(this); model->intervals.removed.connect<&ScenarioWidget::on_interval_removed>(this); connect(model, &Scenario::ProcessModel::intervalMoved, [this] { update(); }); for(Scenario::IntervalModel& s : model->intervals) add_widget(s); } int ScenarioWidget::x() const { return bugui::base_widget::parent->x(); } int ScenarioWidget::y() const { return bugui::base_widget::parent->y(); } int ScenarioWidget::width() const { return bugui::base_widget::parent->width(); } int ScenarioWidget::height() const { return bugui::base_widget::parent->height(); } void ScenarioWidget::on_interval_added(Scenario::IntervalModel& interval) { add_widget(interval); update(); } void ScenarioWidget::on_interval_removed(const Scenario::IntervalModel& interval) { remove_widget([&interval] (const auto& w) { auto ntrvl = static_cast(w.get()); return ntrvl->get_model().id() == interval.id(); }); update(); } void ScenarioWidget::on_interval_changed(const Scenario::IntervalModel &) { update(); } } // namespace Hardware #include "wobjectimpl.h" W_OBJECT_IMPL(Hardware::ScenarioWidget)