summaryrefslogtreecommitdiff
path: root/gtk2_ardour/mixer_ui.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-11-20 09:37:14 -0700
committerPaul Davis <paul@linuxaudiosystems.com>2019-11-20 09:37:33 -0700
commit78d5e6af289ff0e05a0058d078b79d3cc4d1c27d (patch)
tree572f1cfee113946d70ea42f05867edac7d9a4141 /gtk2_ardour/mixer_ui.cc
parent7fec401b8da9b52af00e7cd7cc0acd2af72ee28e (diff)
add mixer actions for toggle disk & input monitoring; bind to d and i in mixer bindings
Diffstat (limited to 'gtk2_ardour/mixer_ui.cc')
-rw-r--r--gtk2_ardour/mixer_ui.cc35
1 files changed, 35 insertions, 0 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index 914a858a38..c5a2e947e9 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -49,6 +49,7 @@
#include "ardour/debug.h"
#include "ardour/audio_track.h"
#include "ardour/midi_track.h"
+#include "ardour/monitor_control.h"
#include "ardour/plugin_manager.h"
#include "ardour/route_group.h"
#include "ardour/selection.h"
@@ -3403,6 +3404,8 @@ Mixer_UI::register_actions ()
ActionManager::register_toggle_action (group, X_("ToggleFoldbackStrip"), _("Mixer: Show Foldback Strip"), sigc::mem_fun (*this, &Mixer_UI::toggle_foldback_strip));
+ ActionManager::register_toggle_action (group, X_("toggle-disk-monitor"), _("Toggle Disk Monitoring"), sigc::bind (sigc::mem_fun (*this, &Mixer_UI::toggle_monitor_action), MonitorDisk, false, false));
+ ActionManager::register_toggle_action (group, X_("toggle-input-monitor"), _("Toggle Input Monitoring"), sigc::bind (sigc::mem_fun (*this, &Mixer_UI::toggle_monitor_action), MonitorInput, false, false));
}
void
@@ -3690,3 +3693,35 @@ Mixer_UI::screenshot (std::string const& filename)
}
return true;
}
+
+void
+Mixer_UI::toggle_monitor_action (MonitorChoice monitor_choice, bool group_override, bool all)
+{
+ MonitorChoice mc;
+ boost::shared_ptr<RouteList> rl;
+
+ for (AxisViewSelection::iterator i = _selection.axes.begin(); i != _selection.axes.end(); ++i) {
+ boost::shared_ptr<ARDOUR::Route> rt = boost::dynamic_pointer_cast<ARDOUR::Route> ((*i)->stripable());
+
+ if (rt->monitoring_control()->monitoring_choice() & monitor_choice) {
+ mc = MonitorChoice (rt->monitoring_control()->monitoring_choice() & ~monitor_choice);
+ } else {
+ mc = MonitorChoice (rt->monitoring_control()->monitoring_choice() | monitor_choice);
+ }
+
+ if (all) {
+ /* Primary-Tertiary-click applies change to all routes */
+ rl = _session->get_routes ();
+ _session->set_controls (route_list_to_control_list (rl, &Stripable::monitoring_control), (double) mc, Controllable::NoGroup);
+ } else if (group_override) {
+ rl.reset (new RouteList);
+ rl->push_back (rt);
+ _session->set_controls (route_list_to_control_list (rl, &Stripable::monitoring_control), (double) mc, Controllable::InverseGroup);
+ } else {
+ rl.reset (new RouteList);
+ rl->push_back (rt);
+ _session->set_controls (route_list_to_control_list (rl, &Stripable::monitoring_control), (double) mc, Controllable::UseGroup);
+ }
+
+ }
+}