From b7ce1315574aa9ea615a7a3111a56cc46ce0721e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 1 Nov 2021 12:10:15 -0600 Subject: [PATCH] triggerboxUI: skeleton for triggerbox bindings and actions, include triggering of scene 1 --- gtk2_ardour/ardour_ui_dependents.cc | 2 ++ gtk2_ardour/editor.cc | 1 + gtk2_ardour/triggerbox_ui.cc | 31 +++++++++++++++++++++++++++++ gtk2_ardour/triggerbox_ui.h | 9 +++++++++ gtk2_ardour/wscript | 2 +- 5 files changed, 44 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc index 248e1152c7..100a71748e 100644 --- a/gtk2_ardour/ardour_ui_dependents.cc +++ b/gtk2_ardour/ardour_ui_dependents.cc @@ -54,6 +54,7 @@ #include "rc_option_editor.h" #include "route_params_ui.h" #include "time_info_box.h" +#include "triggerbox_ui.h" #include "step_entry.h" #include "opts.h" #include "utils.h" @@ -89,6 +90,7 @@ ARDOUR_UI::we_have_dependents () */ ProcessorBox::register_actions (); StepEntry::setup_actions_and_bindings (); + TriggerBoxUI::setup_actions_and_bindings (); /* Global, editor, mixer, processor box actions are defined now. Link them with any bindings, so that GTK does not get a chance to define diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index d635bed241..4180fe4331 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -1118,6 +1118,7 @@ Editor::access_action (const std::string& action_group, const std::string& actio try { act = ActionManager::get_action (action_group.c_str(), action_item.c_str()); if (act) { + cerr << "firing up " << action_item << endl; act->activate(); } } catch ( ActionManager::MissingActionException const& e) { diff --git a/gtk2_ardour/triggerbox_ui.cc b/gtk2_ardour/triggerbox_ui.cc index 99a6e46856..df46d90b43 100644 --- a/gtk2_ardour/triggerbox_ui.cc +++ b/gtk2_ardour/triggerbox_ui.cc @@ -30,6 +30,7 @@ #include "canvas/polygon.h" #include "canvas/text.h" +#include "gtkmm2ext/actions.h" #include "gtkmm2ext/colors.h" #include "gtkmm2ext/utils.h" @@ -253,6 +254,9 @@ TriggerEntry::prop_change (PropertyChange const & change) /* ---------------------------- */ +Gtkmm2ext::Bindings* TriggerBoxUI::bindings = 0; +Glib::RefPtr TriggerBoxUI::trigger_actions; + TriggerBoxUI::TriggerBoxUI (ArdourCanvas::Item* parent, TriggerBox& tb) : Table (parent) , _triggerbox (tb) @@ -272,6 +276,33 @@ TriggerBoxUI::~TriggerBoxUI () update_connection.disconnect (); } +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")); + + ActionManager::register_toggle_action (trigger_actions, "trigger-scene-1", _("Scene 1"), sigc::bind (sigc::ptr_fun (TriggerBoxUI::trigger_scene), 1)); +} + +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 1c5eb473be..c6aebe282d 100644 --- a/gtk2_ardour/triggerbox_ui.h +++ b/gtk2_ardour/triggerbox_ui.h @@ -86,6 +86,11 @@ class TriggerBoxUI : public ArdourCanvas::Table void start_updating (); void stop_updating (); + static Glib::RefPtr trigger_actions; + static void setup_actions_and_bindings (); + + static void trigger_scene (int32_t); + private: ARDOUR::TriggerBox& _triggerbox; typedef std::vector Slots; @@ -94,6 +99,10 @@ class TriggerBoxUI : public ArdourCanvas::Table sigc::connection file_chooser_connection; Gtk::Menu* _context_menu; + static Gtkmm2ext::Bindings* bindings; + static void load_bindings (); + static void register_actions (); + bool bang (GdkEvent*, uint64_t); bool text_event (GdkEvent*, uint64_t); bool event (GdkEvent*, uint64_t); diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index 00edab5d24..a791590a83 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -912,7 +912,7 @@ def build(bld): for b in [ 'ardour' ] : obj = bld( target = b + '.keys', - source = [ b + '.keys.in', 'mixer.bindings', 'processor_box.bindings', 'step_editing.bindings', 'monitor.bindings' ], + source = [ b + '.keys.in', 'mixer.bindings', 'processor_box.bindings', 'step_editing.bindings', 'monitor.bindings', 'trigger.bindings' ], rule = a_rule ) obj.install_path = bld.env['CONFDIR']