Cleanup global monitor options:
authorRobin Gareus <robin@gareus.org>
Wed, 18 Jan 2017 11:25:02 +0000 (12:25 +0100)
committerRobin Gareus <robin@gareus.org>
Wed, 18 Jan 2017 11:25:02 +0000 (12:25 +0100)
- rely on parameter-changed signal emission to update buttons
- use dedicated button/style names
- improve tooltip

gtk2_ardour/ardour_ui.cc
gtk2_ardour/ardour_ui.h
gtk2_ardour/ardour_ui2.cc
gtk2_ardour/ardour_ui_options.cc

index 7f24b1e677545f45857a2ca48049ec9bc2a45a7d..46510112b7a3a43a9f2ffe94b13639d59e2eec18 100644 (file)
@@ -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)
index c375bf89e29125af885dc836a2b9cfc18edfa864..5686d8c978a7fd8659ee156f3a3feca3f592c9da 100644 (file)
@@ -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 ();
index 8dde2b730471a9f1ba326add02ba14bc6c8d3aac..cf17cf61b1bb89e19185a772c3ac99ef04d7fdad 100644 (file)
@@ -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 */
 
index 0c31bf4de1e9d1dbb31105e66b0b6e0032e34b9e..a2853ff5cd6459c15bcc17ce389a69f0d81dbd8f 100644 (file)
@@ -132,9 +132,6 @@ ARDOUR_UI::toggle_click ()
 void
 ARDOUR_UI::toggle_session_monitoring_in ()
 {
-       if (ignore_session_monitoring) {
-               return;
-       }
        Glib::RefPtr<Action> 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<Action> dact = ActionManager::get_action (X_("Transport"), X_("SessionMonitorDisk"));
-               if (dact) {
-                       Glib::RefPtr<ToggleAction> tdact = Glib::RefPtr<ToggleAction>::cast_dynamic(dact);
-                       if (tdact) {
-                               PBD::Unwinder<bool> (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<Action> 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<Action> iact = ActionManager::get_action (X_("Transport"), X_("SessionMonitorIn"));
-               if (iact) {
-                       Glib::RefPtr<ToggleAction> tiact = Glib::RefPtr<ToggleAction>::cast_dynamic(iact);
-                       if (tiact) {
-                               PBD::Unwinder<bool> (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);