From 2b56dc17e3bc387c52bcd656e3487164ea8f6e06 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sun, 31 Jan 2016 11:00:16 -0500 Subject: mackie: add "clean" method to invoke GUI actions from button events, in code --- libs/surfaces/mackie/gui.cc | 13 +++++++++++++ libs/surfaces/mackie/mackie_control_protocol.h | 5 +++++ 2 files changed, 18 insertions(+) diff --git a/libs/surfaces/mackie/gui.cc b/libs/surfaces/mackie/gui.cc index 61ca6504cb..096543e112 100644 --- a/libs/surfaces/mackie/gui.cc +++ b/libs/surfaces/mackie/gui.cc @@ -915,3 +915,16 @@ MackieControlProtocolGUI::active_port_changed (Gtk::ComboBox* combo, boost::weak } } } + +/* special case: MackieControlProtocol object method that requires GUI headers */ + +void +MackieControlProtocol::gui_invoke (string const& action_name) +{ + Glib::RefPtr act = ActionManager::get_action (action_name.c_str()); + if (act) { + act->activate (); + } else { + std::cerr << "no such action: " << action_name << std::endl; + } +} diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h index 61d5bf3811..09654230d6 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.h +++ b/libs/surfaces/mackie/mackie_control_protocol.h @@ -388,6 +388,11 @@ class MackieControlProtocol int set_device_info (const std::string& device_name); void update_configuration_state (); + /* accepts an Action name from the application GUI definitions, and + invokes it + */ + void gui_invoke (std::string const &); + /* MIDI port connection management */ PBD::ScopedConnection port_connection; -- cgit v1.2.3