remove method and inline its contents. Nothing gained by wrapping this up
[ardour.git] / gtk2_ardour / monitor_section.cc
index ec591a571af016437b5e1586dc3bffc5c07d46c6..94a821c866e3fbaae597c028f028467d6922f623 100644 (file)
 #include "pbd/error.h"
 #include "pbd/replace_all.h"
 
-#include "gtkmm2ext/bindable_button.h"
-#include "gtkmm2ext/tearoff.h"
 #include "gtkmm2ext/actions.h"
 #include "gtkmm2ext/utils.h"
 
 #include <gtkmm/menu.h>
 #include <gtkmm/menuitem.h>
 
+#include "widgets/tearoff.h"
+#include "widgets/tooltips.h"
+
 #include "ardour/amp.h"
 #include "ardour/audioengine.h"
 #include "ardour/monitor_processor.h"
 #include "monitor_section.h"
 #include "public_editor.h"
 #include "timers.h"
-#include "tooltips.h"
 #include "ui_config.h"
 #include "utils.h"
 
 #include "pbd/i18n.h"
 
 using namespace ARDOUR;
+using namespace ArdourWidgets;
 using namespace ARDOUR_UI_UTILS;
 using namespace Gtk;
 using namespace Gtkmm2ext;
@@ -60,7 +61,6 @@ using namespace PBD;
 using namespace std;
 
 Glib::RefPtr<ActionGroup> MonitorSection::monitor_actions;
-Gtkmm2ext::ActionMap MonitorSection::myactions (X_("monitor section"));
 Gtkmm2ext::Bindings* MonitorSection::bindings = 0;
 
 #define PX_SCALE(px) std::max((float)px, rintf((float)px * UIConfiguration::instance().get_ui_scale()))
@@ -88,6 +88,7 @@ MonitorSection::MonitorSection (Session* s)
        , solo_mute_override_button (ArdourButton::led_default_elements)
        , toggle_processorbox_button (ArdourButton::default_elements)
        , _inhibit_solo_model_update (false)
+       , _rr_selection ()
        , _ui_initialized (false)
 {
 
@@ -439,9 +440,9 @@ MonitorSection::MonitorSection (Session* s)
        vpacker.pack_start (master_packer,        false, false, PX_SCALE(10));
        vpacker.pack_end   (*out_packer,          false, false,
 #ifdef MIXBUS
-                       scrollbar_height - 2 /* no outer frame */
+                       scrollbar_height - 2 /* no outer sample */
 #else
-                       scrollbar_height + 2 /* frame borders */
+                       scrollbar_height + 2 /* sample borders */
 #endif
                        );
 
@@ -923,24 +924,15 @@ MonitorSection::register_actions ()
        string action_descr;
        Glib::RefPtr<Action> act;
 
-       monitor_actions = myactions.create_action_group (X_("Monitor"));
-
-       myactions.register_toggle_action (monitor_actions, "monitor-mono", _("Switch monitor to mono"),
-                       sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), MonitorMono));
-
-       myactions.register_toggle_action (monitor_actions, "monitor-cut-all", _("Cut monitor"),
-                       sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), MonitorCutAll));
+       monitor_actions = ActionManager::create_action_group (X_("Monitor"));
 
-       myactions.register_toggle_action (monitor_actions, "monitor-dim-all", _("Dim monitor"),
-                       sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), MonitorDimAll));
-
-       act = myactions.register_toggle_action (monitor_actions, "toggle-exclusive-solo", _("Toggle exclusive solo mode"),
+       act = ActionManager::register_toggle_action (monitor_actions, "toggle-exclusive-solo", _("Toggle exclusive solo mode"),
                        sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), ToggleExclusiveSolo));
 
        Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
        tact->set_active (Config->get_exclusive_solo());
 
-       act = myactions.register_toggle_action (monitor_actions, "toggle-mute-overrides-solo", _("Toggle mute overrides solo mode"),
+       act = ActionManager::register_toggle_action (monitor_actions, "toggle-mute-overrides-solo", _("Toggle mute overrides solo mode"),
                        sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), ToggleMuteOverridesSolo));
 
        tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
@@ -950,39 +942,39 @@ MonitorSection::register_actions ()
 
                action_name = string_compose (X_("monitor-cut-%1"), chn);
                action_descr = string_compose (_("Cut monitor channel %1"), chn);
-               myactions.register_toggle_action (monitor_actions, action_name.c_str(), action_descr.c_str(),
+               ActionManager::register_toggle_action (monitor_actions, action_name.c_str(), action_descr.c_str(),
                                sigc::bind (sigc::ptr_fun (action_proxy1), CutChannel, chn));
 
                action_name = string_compose (X_("monitor-dim-%1"), chn);
                action_descr = string_compose (_("Dim monitor channel %1"), chn);
-               myactions.register_toggle_action (monitor_actions, action_name.c_str(), action_descr.c_str(),
+               ActionManager::register_toggle_action (monitor_actions, action_name.c_str(), action_descr.c_str(),
                                sigc::bind (sigc::ptr_fun (action_proxy1), DimChannel, chn));
 
                action_name = string_compose (X_("monitor-solo-%1"), chn);
                action_descr = string_compose (_("Solo monitor channel %1"), chn);
-               myactions.register_toggle_action (monitor_actions, action_name.c_str(), action_descr.c_str(),
+               ActionManager::register_toggle_action (monitor_actions, action_name.c_str(), action_descr.c_str(),
                                sigc::bind (sigc::ptr_fun (action_proxy1), SoloChannel, chn));
 
                action_name = string_compose (X_("monitor-invert-%1"), chn);
                action_descr = string_compose (_("Invert monitor channel %1"), chn);
-               myactions.register_toggle_action (monitor_actions, action_name.c_str(), action_descr.c_str(),
+               ActionManager::register_toggle_action (monitor_actions, action_name.c_str(), action_descr.c_str(),
                                sigc::bind (sigc::ptr_fun (action_proxy1), InvertChannel, chn));
 
        }
 
 
-       Glib::RefPtr<ActionGroup> solo_actions = myactions.create_action_group (X_("Solo"));
+       Glib::RefPtr<ActionGroup> solo_actions = ActionManager::create_action_group (X_("Solo"));
        RadioAction::Group solo_group;
 
-       myactions.register_radio_action (solo_actions, solo_group, "solo-use-in-place", _("In-place solo"),
-                       sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), SoloUseInPlace));
-       myactions.register_radio_action (solo_actions, solo_group, "solo-use-afl", _("After Fade Listen (AFL) solo"),
-                       sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), SoloUseAFL));
-       myactions.register_radio_action (solo_actions, solo_group, "solo-use-pfl", _("Pre Fade Listen (PFL) solo"),
-                       sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), SoloUsePFL));
+       ActionManager::register_radio_action (solo_actions, solo_group, "solo-use-in-place", _("In-place solo"),
+                                             sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), SoloUseInPlace));
+       ActionManager::register_radio_action (solo_actions, solo_group, "solo-use-afl", _("After Fade Listen (AFL) solo"),
+                                             sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), SoloUseAFL));
+       ActionManager::register_radio_action (solo_actions, solo_group, "solo-use-pfl", _("Pre Fade Listen (PFL) solo"),
+                                             sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), SoloUsePFL));
 
-       myactions.register_toggle_action (monitor_actions, "toggle-monitor-processor-box", _("Toggle Monitor Section Processor Box"),
-                       sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), ToggleMonitorProcessorBox));
+       ActionManager::register_toggle_action (monitor_actions, "toggle-monitor-processor-box", _("Toggle Monitor Section Processor Box"),
+                                              sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), ToggleMonitorProcessorBox));
 
 }
 
@@ -1101,13 +1093,14 @@ MonitorSection::map_state ()
                return;
        }
 
-       Glib::RefPtr<Action> act;
-
        update_solo_model ();
 
+       Glib::RefPtr<Action> act;
+       Glib::RefPtr<ToggleAction> tact;
+
        act = ActionManager::get_action (X_("Monitor"), "monitor-cut-all");
        if (act) {
-               Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
+               tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
                if (tact) {
                        tact->set_active (_monitor->cut_all());
                }
@@ -1115,7 +1108,7 @@ MonitorSection::map_state ()
 
        act = ActionManager::get_action (X_("Monitor"), "monitor-dim-all");
        if (act) {
-               Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
+               tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
                if (tact) {
                        tact->set_active (_monitor->dim_all());
                }
@@ -1123,7 +1116,7 @@ MonitorSection::map_state ()
 
        act = ActionManager::get_action (X_("Monitor"), "monitor-mono");
        if (act) {
-               Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
+               tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
                if (tact) {
                        tact->set_active (_monitor->mono());
                }
@@ -1178,6 +1171,10 @@ MonitorSection::map_state ()
 void
 MonitorSection::do_blink (bool onoff)
 {
+       if (!UIConfiguration::instance().get_blink_alert_indicators ()) {
+               onoff = true;
+       }
+
        solo_blink (onoff);
        audition_blink (onoff);
 }
@@ -1648,7 +1645,7 @@ MonitorSection::port_connected_or_disconnected (boost::weak_ptr<Port> wa, boost:
 void
 MonitorSection::load_bindings ()
 {
-       bindings = Bindings::get_bindings (X_("Monitor Section"), myactions);
+       bindings = Bindings::get_bindings (X_("Monitor Section"));
 }
 
 void