From f35020fc59d28a47d13908be76f4a9c3b8827b31 Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Thu, 30 Dec 2021 10:53:17 -0600 Subject: [PATCH] trigger_ui: refactor Actions into the TriggerUI base class --- gtk2_ardour/ardour_ui_dependents.cc | 4 ++-- gtk2_ardour/trigger_ui.cc | 35 ++++++++++++++++++++++++++++ gtk2_ardour/trigger_ui.h | 12 ++++++++++ gtk2_ardour/triggerbox_ui.cc | 36 ----------------------------- gtk2_ardour/triggerbox_ui.h | 9 -------- 5 files changed, 49 insertions(+), 47 deletions(-) diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc index 8e08a69f41..431115d860 100644 --- a/gtk2_ardour/ardour_ui_dependents.cc +++ b/gtk2_ardour/ardour_ui_dependents.cc @@ -56,7 +56,7 @@ #include "rc_option_editor.h" #include "route_params_ui.h" #include "time_info_box.h" -#include "triggerbox_ui.h" +#include "trigger_ui.h" #include "step_entry.h" #include "opts.h" #include "utils.h" @@ -92,7 +92,7 @@ ARDOUR_UI::we_have_dependents () */ ProcessorBox::register_actions (); StepEntry::setup_actions_and_bindings (); - TriggerBoxUI::setup_actions_and_bindings (); + TriggerUI::setup_actions_and_bindings (); ClipEditorBox::init (); /* Global, editor, mixer, processor box actions are defined now. Link diff --git a/gtk2_ardour/trigger_ui.cc b/gtk2_ardour/trigger_ui.cc index e19a050f78..597fb79419 100644 --- a/gtk2_ardour/trigger_ui.cc +++ b/gtk2_ardour/trigger_ui.cc @@ -58,6 +58,9 @@ std::string TriggerUI::longest_quantize; std::vector TriggerUI::launch_strings; std::string TriggerUI::longest_launch; +Gtkmm2ext::Bindings* TriggerUI::bindings = 0; +Glib::RefPtr TriggerUI::trigger_actions; + TriggerUI::TriggerUI () : _renaming (false) { @@ -96,6 +99,38 @@ TriggerUI::~TriggerUI() { } +void +TriggerUI::setup_actions_and_bindings () +{ + load_bindings (); + register_actions (); +} + +void +TriggerUI::load_bindings () +{ + bindings = Bindings::get_bindings (X_("Triggers")); +} + +void +TriggerUI::register_actions () +{ + trigger_actions = ActionManager::create_action_group (bindings, X_("Triggers")); + + for (int32_t n = 0; n < TriggerBox::default_triggers_per_box; ++n) { + const std::string action_name = string_compose ("trigger-scene-%1", n); + const std::string display_name = string_compose (_("Scene %1"), n); + + ActionManager::register_toggle_action (trigger_actions, action_name.c_str (), display_name.c_str (), sigc::bind (sigc::ptr_fun (TriggerUI::trigger_scene), n)); + } +} + +void +TriggerUI::trigger_scene (int32_t n) +{ + TriggerBox::scene_bang (n); +} + void TriggerUI::choose_color () { diff --git a/gtk2_ardour/trigger_ui.h b/gtk2_ardour/trigger_ui.h index 21584c7645..a4cc7e2700 100644 --- a/gtk2_ardour/trigger_ui.h +++ b/gtk2_ardour/trigger_ui.h @@ -21,6 +21,9 @@ #include "gtkmm/colorselection.h" +#include "gtkmm2ext/actions.h" +#include "gtkmm2ext/bindings.h" + #include "ardour/triggerbox.h" #include "widgets/ardour_button.h" #include "widgets/slider_controller.h" @@ -48,9 +51,18 @@ public: static std::vector launch_strings; static std::string longest_launch; + static void setup_actions_and_bindings (); + private: void trigger_changed (PBD::PropertyChange); //calls on_trigger_changed to subclasses + /* Actions for Triggers: accessed via ardour_ui and shortcuts and lua */ + static Glib::RefPtr trigger_actions; + static void trigger_scene (int32_t); + static Gtkmm2ext::Bindings* bindings; + static void load_bindings (); + static void register_actions (); + protected: void choose_color (); void choose_sample (); diff --git a/gtk2_ardour/triggerbox_ui.cc b/gtk2_ardour/triggerbox_ui.cc index 9934225f49..d9f6840eee 100644 --- a/gtk2_ardour/triggerbox_ui.cc +++ b/gtk2_ardour/triggerbox_ui.cc @@ -41,7 +41,6 @@ #include "canvas/polygon.h" #include "canvas/text.h" -#include "gtkmm2ext/actions.h" #include "gtkmm2ext/colors.h" #include "gtkmm2ext/utils.h" @@ -482,9 +481,6 @@ TriggerEntry::ui_parameter_changed (std::string const& p) } } -Gtkmm2ext::Bindings* TriggerBoxUI::bindings = 0; -Glib::RefPtr TriggerBoxUI::trigger_actions; - TriggerBoxUI::TriggerBoxUI (ArdourCanvas::Item* parent, TriggerBox& tb) : Rectangle (parent) , _triggerbox (tb) @@ -534,38 +530,6 @@ TriggerBoxUI::selection_changed () } } -void -TriggerBoxUI::setup_actions_and_bindings () -{ - load_bindings (); - register_actions (); -} - -void -TriggerBoxUI::load_bindings () -{ - bindings = Bindings::get_bindings (X_("Triggers")); -} - -void -TriggerBoxUI::register_actions () -{ - trigger_actions = ActionManager::create_action_group (bindings, X_("Triggers")); - - for (int32_t n = 0; n < TriggerBox::default_triggers_per_box; ++n) { - const std::string action_name = string_compose ("trigger-scene-%1", n); - const std::string display_name = string_compose (_("Scene %1"), n); - - ActionManager::register_toggle_action (trigger_actions, action_name.c_str (), display_name.c_str (), sigc::bind (sigc::ptr_fun (TriggerBoxUI::trigger_scene), n)); - } -} - -void -TriggerBoxUI::trigger_scene (int32_t n) -{ - TriggerBox::scene_bang (n); -} - void TriggerBoxUI::build () { diff --git a/gtk2_ardour/triggerbox_ui.h b/gtk2_ardour/triggerbox_ui.h index e99547e07c..96f371f17e 100644 --- a/gtk2_ardour/triggerbox_ui.h +++ b/gtk2_ardour/triggerbox_ui.h @@ -106,11 +106,6 @@ public: void start_updating (); void stop_updating (); - static Glib::RefPtr trigger_actions; - static void setup_actions_and_bindings (); - - static void trigger_scene (int32_t); - void _size_allocate (ArdourCanvas::Rect const&); private: @@ -125,10 +120,6 @@ private: Gtk::Menu* _context_menu; bool _ignore_menu_action; - static Gtkmm2ext::Bindings* bindings; - static void load_bindings (); - static void register_actions (); - bool play_button_event (GdkEvent*, uint64_t); bool name_button_event (GdkEvent*, uint64_t); bool follow_button_event (GdkEvent*, uint64_t);