summaryrefslogtreecommitdiff
path: root/gtk2_ardour/transport_masters_dialog.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2020-03-23 19:08:57 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2020-03-23 19:08:57 -0600
commit3bbad66a999dbe402209881de072720d78f01793 (patch)
tree1efb463a72582c8c7edeeb70cbb142c00064fb8d /gtk2_ardour/transport_masters_dialog.cc
parent43edfc8900a55e803861047cd9d17957d67aa9ac (diff)
control over transport-masters-just-roll-when-sync-is-lost
Diffstat (limited to 'gtk2_ardour/transport_masters_dialog.cc')
-rw-r--r--gtk2_ardour/transport_masters_dialog.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/gtk2_ardour/transport_masters_dialog.cc b/gtk2_ardour/transport_masters_dialog.cc
index 4ca8f70a16..361c4fe4e8 100644
--- a/gtk2_ardour/transport_masters_dialog.cc
+++ b/gtk2_ardour/transport_masters_dialog.cc
@@ -49,6 +49,7 @@ using namespace ArdourWidgets;
TransportMastersWidget::TransportMastersWidget ()
: table (4, 13)
, add_button (_("Add a new Transport Master"))
+ , lost_sync_button (_("Keeping rolling if sync is lost"))
, ignore_active_change (false)
{
midi_port_store = ListStore::create (port_columns);
@@ -59,6 +60,13 @@ TransportMastersWidget::TransportMastersWidget ()
pack_start (table, PACK_EXPAND_WIDGET, 12);
pack_start (add_button, FALSE, FALSE);
+ pack_start (lost_sync_button, FALSE, FALSE, 12);
+
+ Config->ParameterChanged.connect (config_connection, invalidator (*this), boost::bind (&TransportMastersWidget::param_changed, this, _1), gui_context());
+ lost_sync_button.signal_toggled().connect (sigc::mem_fun (*this, &TransportMastersWidget::lost_sync_button_toggled));
+ lost_sync_button.set_active (Config->get_transport_masters_just_roll_when_sync_lost());
+ set_tooltip (lost_sync_button, string_compose (_("<b>When enabled</b>, if the signal from a transport master is lost, %1 will keep rolling at its current speed.\n"
+ "<b>When disabled</b>, loss of transport master sync causes %1 to stop"), PROGRAM_NAME));
add_button.signal_clicked ().connect (sigc::mem_fun (*this, &TransportMastersWidget::add_master));
@@ -736,3 +744,24 @@ TransportMastersWidget::AddTransportMasterDialog::get_type() const
return LTC;
}
+
+void
+TransportMastersWidget::lost_sync_changed ()
+{
+ lost_sync_button.set_active (Config->get_transport_masters_just_roll_when_sync_lost());
+}
+
+void
+TransportMastersWidget::lost_sync_button_toggled ()
+{
+ bool active = lost_sync_button.get_active ();
+ Config->set_transport_masters_just_roll_when_sync_lost (active);
+}
+
+void
+TransportMastersWidget::param_changed (string const & p)
+{
+ if (p == "transport-masters-just_roll-when-sync-lost") {
+ lost_sync_changed ();
+ }
+}