From cf31233cd1503f7f3818c6bbeb6f5bd427144f80 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 18 Jan 2017 12:25:02 +0100 Subject: [PATCH] Cleanup global monitor options: - rely on parameter-changed signal emission to update buttons - use dedicated button/style names - improve tooltip --- gtk2_ardour/ardour_ui.cc | 1 - gtk2_ardour/ardour_ui.h | 1 - gtk2_ardour/ardour_ui2.cc | 8 +++---- gtk2_ardour/ardour_ui_options.cc | 39 ++++++++++++++------------------ 4 files changed, 21 insertions(+), 28 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 7f24b1e677..46510112b7 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -264,7 +264,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) , video_timeline(0) , global_actions (X_("global")) , ignore_dual_punch (false) - , ignore_session_monitoring (false) , main_window_visibility (0) , editor (0) , mixer (0) diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index c375bf89e2..5686d8c978 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -392,7 +392,6 @@ protected: bool ignore_dual_punch; void toggle_punch_in (); void toggle_punch_out (); - bool ignore_session_monitoring; void toggle_session_monitoring_in (); void toggle_session_monitoring_disk (); void show_loop_punch_ruler_and_disallow_hide (); diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 8dde2b7304..cf17cf61b1 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -428,8 +428,8 @@ ARDOUR_UI::setup_transport () punch_out_button.set_name ("punch button"); layered_button.set_name (("layered button")); - monitor_in_button.set_name ("punch button"); // XXX - monitor_disk_button.set_name ("punch button"); // XXX + monitor_in_button.set_name ("monitor button"); + monitor_disk_button.set_name ("monitor button"); auto_input_button.set_name ("transport option button"); click_button.set_name ("transport button"); @@ -466,8 +466,8 @@ ARDOUR_UI::setup_transport () Gtkmm2ext::UI::instance()->set_tip (punch_in_button, _("Start recording at auto-punch start")); Gtkmm2ext::UI::instance()->set_tip (punch_out_button, _("Stop recording at auto-punch end")); - Gtkmm2ext::UI::instance()->set_tip (monitor_in_button, _("Force all implicit monitoed tracks to monitor input")); - Gtkmm2ext::UI::instance()->set_tip (monitor_disk_button, _("Force all implicit monitored tracks to disk-monitoring")); + Gtkmm2ext::UI::instance()->set_tip (monitor_in_button, _("Force all implicitly monitoed tracks to monitor input")); + Gtkmm2ext::UI::instance()->set_tip (monitor_disk_button, _("Force all implicitly monitored tracks to disk-monitoring")); /* setup icons */ diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc index 0c31bf4de1..a2853ff5cd 100644 --- a/gtk2_ardour/ardour_ui_options.cc +++ b/gtk2_ardour/ardour_ui_options.cc @@ -132,9 +132,6 @@ ARDOUR_UI::toggle_click () void ARDOUR_UI::toggle_session_monitoring_in () { - if (ignore_session_monitoring) { - return; - } Glib::RefPtr act = ActionManager::get_action (X_("Transport"), X_("SessionMonitorIn")); if (!act) { return; @@ -143,15 +140,15 @@ ARDOUR_UI::toggle_session_monitoring_in () if (!tact) { return; } + + if (tact->get_active() && _session->config.get_session_monitoring () == MonitorInput) { + return; + } + if (!tact->get_active() && _session->config.get_session_monitoring () != MonitorInput) { + return; + } + if (tact->get_active()) { - Glib::RefPtr dact = ActionManager::get_action (X_("Transport"), X_("SessionMonitorDisk")); - if (dact) { - Glib::RefPtr tdact = Glib::RefPtr::cast_dynamic(dact); - if (tdact) { - PBD::Unwinder (ignore_session_monitoring, true); - tdact->set_active (false); - } - } _session->config.set_session_monitoring (MonitorInput); } else { _session->config.set_session_monitoring (MonitorAuto); @@ -161,9 +158,6 @@ ARDOUR_UI::toggle_session_monitoring_in () void ARDOUR_UI::toggle_session_monitoring_disk () { - if (ignore_session_monitoring) { - return; - } Glib::RefPtr act = ActionManager::get_action (X_("Transport"), X_("SessionMonitorDisk")); if (!act) { return; @@ -172,15 +166,14 @@ ARDOUR_UI::toggle_session_monitoring_disk () if (!tact) { return; } + if (tact->get_active() && _session->config.get_session_monitoring () == MonitorDisk) { + return; + } + if (!tact->get_active() && _session->config.get_session_monitoring () != MonitorDisk) { + return; + } + if (tact->get_active()) { - Glib::RefPtr iact = ActionManager::get_action (X_("Transport"), X_("SessionMonitorIn")); - if (iact) { - Glib::RefPtr tiact = Glib::RefPtr::cast_dynamic(iact); - if (tiact) { - PBD::Unwinder (ignore_session_monitoring, true); - tiact->set_active (false); - } - } _session->config.set_session_monitoring (MonitorDisk); } else { _session->config.set_session_monitoring (MonitorAuto); @@ -409,9 +402,11 @@ ARDOUR_UI::parameter_changed (std::string p) switch (_session->config.get_session_monitoring ()) { case MonitorDisk: tdact->set_active (true); + tiact->set_active (false); break; case MonitorInput: tiact->set_active (true); + tdact->set_active (false); break; default: tdact->set_active (false);