trigger_ui: refactor Actions into the TriggerUI base class

This commit is contained in:
Ben Loftis 2021-12-30 10:53:17 -06:00
parent 133b51922a
commit f35020fc59
5 changed files with 49 additions and 47 deletions

View File

@ -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

View File

@ -58,6 +58,9 @@ std::string TriggerUI::longest_quantize;
std::vector<std::string> TriggerUI::launch_strings;
std::string TriggerUI::longest_launch;
Gtkmm2ext::Bindings* TriggerUI::bindings = 0;
Glib::RefPtr<Gtk::ActionGroup> 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 ()
{

View File

@ -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<std::string> 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<Gtk::ActionGroup> 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 ();

View File

@ -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<Gtk::ActionGroup> 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 ()
{

View File

@ -106,11 +106,6 @@ public:
void start_updating ();
void stop_updating ();
static Glib::RefPtr<Gtk::ActionGroup> 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);