add convenience functions to switch meter-types.. (maybe too much?!)
[ardour.git] / gtk2_ardour / mixer_strip.cc
index 50522564d09f15ec20bd0046e7b5ff1f6fee4190..c15d3ea22125097c883fd3ac47d2a967a3926d84 100644 (file)
@@ -62,6 +62,7 @@
 #include "utils.h"
 #include "gui_thread.h"
 #include "route_group_menu.h"
+#include "meter_patterns.h"
 
 #include "i18n.h"
 
@@ -2136,7 +2137,31 @@ MixerStrip::popup_level_meter_menu (GdkEventButton* ev)
        items.push_back (SeparatorElem());
 
        add_level_meter_item_type (items, tgroup, _("Peak"), MeterPeak);
-       add_level_meter_item_type (items, tgroup, _("RMS"), MeterKrms);
+       add_level_meter_item_type (items, tgroup, _("RMS + Peak"), MeterKrms);
+
+       int _strip_type;
+       if (_route->is_master()) {
+               _strip_type = 4;
+       }
+       else if (boost::dynamic_pointer_cast<AudioTrack>(_route) == 0
+                       && boost::dynamic_pointer_cast<MidiTrack>(_route) == 0) {
+               /* non-master bus */
+               _strip_type = 3;
+       }
+       else if (boost::dynamic_pointer_cast<MidiTrack>(_route)) {
+               _strip_type = 2;
+       }
+       else {
+               _strip_type = 1;
+       }
+
+       items.push_back (SeparatorElem());
+       items.push_back (MenuElem (_("Change all in Group to Peak"), sigc::bind (SetMeterTypeMulti, -1, _route->route_group(), MeterPeak)));
+       items.push_back (MenuElem (_("Change all in Group to RMS + Peak"), sigc::bind (SetMeterTypeMulti, -1, _route->route_group(), MeterKrms)));
+       items.push_back (MenuElem (_("Change all to Peak"), sigc::bind (SetMeterTypeMulti, 0, _route->route_group(), MeterPeak)));
+       items.push_back (MenuElem (_("Change all to RMS + Peak"), sigc::bind (SetMeterTypeMulti, 0, _route->route_group(), MeterKrms)));
+       items.push_back (MenuElem (_("Change same track-type to Peak"), sigc::bind (SetMeterTypeMulti, _strip_type, _route->route_group(), MeterPeak)));
+       items.push_back (MenuElem (_("Change same track-type to RMS + Peak"), sigc::bind (SetMeterTypeMulti, _strip_type, _route->route_group(), MeterKrms)));
 
        m->popup (ev->button, ev->time);
        _suspend_menu_callbacks = false;