diff options
author | Robin Gareus <robin@gareus.org> | 2017-12-22 20:20:59 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-12-22 22:15:50 +0100 |
commit | aab787f686e6287a06ba94ed8c87b524c4690f0f (patch) | |
tree | 274012a8cb968252dff99735c2be9b4e59a7a988 /gtk2_ardour/transport_control.cc | |
parent | 34a926fc510ebe356d8212ec3d0070124e16eb08 (diff) |
Separate and consolidate Transport-Control-UI code
Diffstat (limited to 'gtk2_ardour/transport_control.cc')
-rw-r--r-- | gtk2_ardour/transport_control.cc | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/gtk2_ardour/transport_control.cc b/gtk2_ardour/transport_control.cc new file mode 100644 index 0000000000..2f08b4aac0 --- /dev/null +++ b/gtk2_ardour/transport_control.cc @@ -0,0 +1,70 @@ + +#include "actions.h" +#include "transport_control.h" + +#include "pbd/i18n.h" + +using namespace Gtk; + +TransportControlProvider::TransportControlProvider () + : roll_controllable (new TransportControllable ("transport roll", TransportControllable::Roll)) + , stop_controllable (new TransportControllable ("transport stop", TransportControllable::Stop)) + , goto_start_controllable (new TransportControllable ("transport goto start", TransportControllable::GotoStart)) + , goto_end_controllable (new TransportControllable ("transport goto end", TransportControllable::GotoEnd)) + , auto_loop_controllable (new TransportControllable ("transport auto loop", TransportControllable::AutoLoop)) + , play_selection_controllable (new TransportControllable ("transport play selection", TransportControllable::PlaySelection)) + , rec_controllable (new TransportControllable ("transport rec-enable", TransportControllable::RecordEnable)) +{ +} + +TransportControlProvider::TransportControllable::TransportControllable (std::string name, ToggleType tp) + : Controllable (name), type(tp) +{ +} + +void +TransportControlProvider::TransportControllable::set_value (double val, PBD::Controllable::GroupControlDisposition /*group_override*/) +{ + if (val < 0.5) { + /* do nothing: these are radio-style actions */ + return; + } + + const char *action = 0; + + switch (type) { + case Roll: + action = X_("Roll"); + break; + case Stop: + action = X_("Stop"); + break; + case GotoStart: + action = X_("GotoStart"); + break; + case GotoEnd: + action = X_("GotoEnd"); + break; + case AutoLoop: + action = X_("Loop"); + break; + case PlaySelection: + action = X_("PlaySelection"); + break; + case RecordEnable: + action = X_("Record"); + break; + default: + break; + } + + if (action == 0) { + return; + } + + Glib::RefPtr<Action> act = ActionManager::get_action ("Transport", action); + + if (act) { + act->activate (); + } +} |