summaryrefslogtreecommitdiff
path: root/gtk2_ardour/transport_control.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-12-22 20:20:59 +0100
committerRobin Gareus <robin@gareus.org>2017-12-22 22:15:50 +0100
commitaab787f686e6287a06ba94ed8c87b524c4690f0f (patch)
tree274012a8cb968252dff99735c2be9b4e59a7a988 /gtk2_ardour/transport_control.cc
parent34a926fc510ebe356d8212ec3d0070124e16eb08 (diff)
Separate and consolidate Transport-Control-UI code
Diffstat (limited to 'gtk2_ardour/transport_control.cc')
-rw-r--r--gtk2_ardour/transport_control.cc70
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 ();
+ }
+}