score-addon-hardware/Hardware/Widgets/ScenarioWidget.hpp

58 lines
1.7 KiB
C++
Raw Normal View History

2024-12-28 17:53:59 +00:00
#pragma once
#include <Scenario/Process/ScenarioModel.hpp>
2024-12-31 16:11:11 +00:00
#include <widgets/container_widget.hpp>
2024-12-28 17:53:59 +00:00
namespace Hardware
{
2025-01-21 00:10:21 +00:00
struct StateWidget;
class ScenarioWidget final : public bugui::container_widget
, public Nano::Observer
{
2024-12-28 17:53:59 +00:00
public:
explicit ScenarioWidget(Scenario::ProcessModel* scenario,
bugui::container_widget* parent);
2024-12-28 17:53:59 +00:00
2025-01-19 19:11:10 +00:00
int x() const override
{ return bugui::base_widget::parent->x(); }
int y() const override
{ return bugui::base_widget::parent->y(); }
int width() const override
{ return std::numeric_limits<int>::max(); }
int height() const override { return 15; }
2024-12-28 17:53:59 +00:00
2025-01-19 19:11:10 +00:00
Scenario::ProcessModel* get_model() const { return model; }
2025-01-21 00:10:21 +00:00
void add_proxy(StateWidget* sw);
void remove_proxy(StateWidget* sw);
void recursive_change(const Scenario::StateModel& state);
void recursive_change(const Scenario::IntervalModel& interval);
void change_previous(const Scenario::IntervalModel& interval);
void change_next(const Scenario::IntervalModel& interval);
void change_previous(const Scenario::StateModel& state);
void change_next(const Scenario::StateModel& state);
void time_propagate(const Scenario::StateModel& state, const TimeVal& t);
void time_propagate(const Scenario::IntervalModel& interval, const TimeVal& t);
bool changing{false};
2024-12-28 17:53:59 +00:00
private:
void on_interval_added(Scenario::IntervalModel& interval);
void on_interval_removed(const Scenario::IntervalModel& interval);
void on_time_sync_added(Scenario::TimeSyncModel& timeSync);
void on_time_sync_removed(const Scenario::TimeSyncModel& timeSync);
2025-01-21 00:10:21 +00:00
std::vector<StateWidget*> states_proxy;
Scenario::ProcessModel* model{nullptr};
// const Process::Style& skin;
2024-12-28 17:53:59 +00:00
};
} // namespace Hardware