summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-01-31 11:00:16 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2016-01-31 11:00:16 -0500
commit2b56dc17e3bc387c52bcd656e3487164ea8f6e06 (patch)
treeff5d82092e669ef4b7014ed95eb2e2102352d095
parentef793d37629afe6cdb06b89e5f53a2198db200de (diff)
mackie: add "clean" method to invoke GUI actions from button events, in code
-rw-r--r--libs/surfaces/mackie/gui.cc13
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.h5
2 files changed, 18 insertions, 0 deletions
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<Gtk::Action> 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;