From d52e74eb27340af01e9b486dc4fc94cb9d5c3d11 Mon Sep 17 00:00:00 2001 From: thibaudk Date: Tue, 31 Dec 2024 16:11:11 +0000 Subject: [PATCH] [widgets] rebase on container_widget --- Hardware/3rdparty/bugui | 2 +- Hardware/Controller.cpp | 31 ++----------------- Hardware/Controller.hpp | 4 --- Hardware/Widgets/IntervalWidget.cpp | 4 +-- Hardware/Widgets/IntervalWidget.hpp | 6 ++-- Hardware/Widgets/ScenarioWidget.cpp | 47 ++++------------------------- Hardware/Widgets/ScenarioWidget.hpp | 12 ++------ 7 files changed, 18 insertions(+), 88 deletions(-) diff --git a/Hardware/3rdparty/bugui b/Hardware/3rdparty/bugui index 0f5aabb..dfa356a 160000 --- a/Hardware/3rdparty/bugui +++ b/Hardware/3rdparty/bugui @@ -1 +1 @@ -Subproject commit 0f5aabb4a70a5e0e82a758a17d27f700a21830e8 +Subproject commit dfa356a6fe5d8fd215fae4e59d0b662938b17d7b diff --git a/Hardware/Controller.cpp b/Hardware/Controller.cpp index f0ce03c..ab81a8b 100644 --- a/Hardware/Controller.cpp +++ b/Hardware/Controller.cpp @@ -17,38 +17,13 @@ Controller::Controller(const score::DocumentContext& document, { auto scnr = qobject_cast(&*interval.processes.begin()); - if (scnr) widgets.emplace_back(std::make_unique(this, scnr)); + if (scnr) + bugui::container_widget::children.emplace_back( + std::make_unique(this, scnr)); update(); } -bool Controller::on_press(int x, int y, bool pressed) -{ - for (auto& w : widgets) - if (w->on_press(x, y, pressed)) - return true; - - return false; -} - -bool Controller::on_double_press(int x, int y) -{ - for (auto& w : widgets) - if (w->on_double_press(x, y)) - return true; - - return false; -} - -bool Controller::on_drag(int from_x, int from_y, int to_x, int to_y) -{ - for (auto& w : widgets) - if (w->on_drag(from_x, from_y, to_x, to_y)) - return true; - - return false; -} - void Controller::on_play(bool pressed) { if (m_shift) diff --git a/Hardware/Controller.hpp b/Hardware/Controller.hpp index 0ecfca7..919e802 100644 --- a/Hardware/Controller.hpp +++ b/Hardware/Controller.hpp @@ -28,10 +28,6 @@ public: void on_down(bool pressed); void on_left(bool pressed); void on_right(bool pressed); - - bool on_press(int x, int y, bool pressed) override; - bool on_double_press(int x, int y) override; - bool on_drag(int from_x, int from_y, int to_x, int to_y) override; private: Scenario::IntervalModel* interval; diff --git a/Hardware/Widgets/IntervalWidget.cpp b/Hardware/Widgets/IntervalWidget.cpp index 608cc4c..61c79da 100644 --- a/Hardware/Widgets/IntervalWidget.cpp +++ b/Hardware/Widgets/IntervalWidget.cpp @@ -2,9 +2,9 @@ namespace Hardware { -IntervalWidget::IntervalWidget(base_widget* parent, +IntervalWidget::IntervalWidget(container_widget *parent, Scenario::IntervalModel& interval) - : bugui::base_widget{parent} + : bugui::container_widget{parent} , model{interval} , skin{Process::Style::instance()} { diff --git a/Hardware/Widgets/IntervalWidget.hpp b/Hardware/Widgets/IntervalWidget.hpp index e47546d..b24ecac 100644 --- a/Hardware/Widgets/IntervalWidget.hpp +++ b/Hardware/Widgets/IntervalWidget.hpp @@ -2,13 +2,13 @@ #include #include -#include +#include namespace Hardware { -struct IntervalWidget final : bugui::base_widget +struct IntervalWidget final : bugui::container_widget { - explicit IntervalWidget(base_widget* parent, + explicit IntervalWidget(container_widget* parent, Scenario::IntervalModel& interval); void paint(bugui::painter& painter) const override; diff --git a/Hardware/Widgets/ScenarioWidget.cpp b/Hardware/Widgets/ScenarioWidget.cpp index 9f7b2e8..5ab431b 100644 --- a/Hardware/Widgets/ScenarioWidget.cpp +++ b/Hardware/Widgets/ScenarioWidget.cpp @@ -3,9 +3,9 @@ namespace Hardware { -ScenarioWidget::ScenarioWidget(base_widget* parent, +ScenarioWidget::ScenarioWidget(bugui::container_widget* parent, Scenario::ProcessModel* scenario) - : bugui::base_widget{parent} + : bugui::container_widget{parent} , model{scenario} { model->intervals.mutable_added.connect<&ScenarioWidget::on_interval_added>(this); @@ -16,42 +16,7 @@ ScenarioWidget::ScenarioWidget(base_widget* parent, [this] { update(); }); for(Scenario::IntervalModel& s : model->intervals) - widgets.emplace_back(std::make_unique(this, s)); -} - -void ScenarioWidget::paint(bugui::painter& painter) const -{ - for (const auto& w : widgets) w->paint(painter); -} - -bool ScenarioWidget::on_press(int x, int y, bool pressed) -{ - if (!is_inside(x, y)) return false; - - for (auto& w : widgets) - if (w->on_press(x, y, pressed)) return true; - - return true; -} - -bool ScenarioWidget::on_double_press(int x, int y) -{ - if (!is_inside(x, y)) return false; - - for (auto& w : widgets) - if (w->on_double_press(x, y)) return true; - - return true; -} - -bool ScenarioWidget::on_drag(int from_x, int from_y, int to_x, int to_y) -{ - if (!is_inside(from_x, from_y)) return false; - - for (auto& w : widgets) - if (w->on_drag(from_x, from_y, to_x, to_y)) return true; - - return true; + bugui::container_widget::children.emplace_back(std::make_unique(this, s)); } int ScenarioWidget::x() const @@ -76,15 +41,15 @@ int ScenarioWidget::height() const void ScenarioWidget::on_interval_added(Scenario::IntervalModel& interval) { - widgets.emplace_back(std::make_unique(this, interval)); + bugui::container_widget::children.emplace_back(std::make_unique(this, interval)); update(); } void ScenarioWidget::on_interval_removed(const Scenario::IntervalModel& interval) { - std::erase_if(widgets, + std::erase_if(bugui::container_widget::children, [&interval] - (auto& w) + (const auto& w) { auto ntrvl = static_cast(w.get()); return ntrvl->get_model().id() == interval.id(); diff --git a/Hardware/Widgets/ScenarioWidget.hpp b/Hardware/Widgets/ScenarioWidget.hpp index 976ba80..08abcec 100644 --- a/Hardware/Widgets/ScenarioWidget.hpp +++ b/Hardware/Widgets/ScenarioWidget.hpp @@ -3,25 +3,20 @@ #include #include -#include +#include namespace Hardware { class ScenarioWidget final - : public bugui::base_widget + : public bugui::container_widget , public QObject { W_OBJECT(ScenarioWidget) public: - explicit ScenarioWidget(bugui::base_widget* parent, + explicit ScenarioWidget(bugui::container_widget* parent, Scenario::ProcessModel* scenario); - void paint(bugui::painter& painter) const override; - bool on_press(int x, int y, bool pressed) override; - bool on_double_press(int x, int y) override; - bool on_drag(int from_x, int from_y, int to_x, int to_y) override; - int x() const override; int y() const override; int width() const override; @@ -32,7 +27,6 @@ private: void on_interval_removed(const Scenario::IntervalModel& interval); void on_interval_changed(const Scenario::IntervalModel&); - std::vector> widgets; Scenario::ProcessModel* model; };