simplify meter-type context menu
authorRobin Gareus <robin@gareus.org>
Mon, 15 Jul 2013 12:38:24 +0000 (14:38 +0200)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 8 Aug 2013 19:23:09 +0000 (15:23 -0400)
in preparation for adding more meter-types

gtk2_ardour/meter_patterns.cc
gtk2_ardour/meter_patterns.h
gtk2_ardour/meter_strip.cc
gtk2_ardour/mixer_strip.cc

index cb5209d8ea35964d478ec49d3d0a1f2c776939db..80655af7b9a452a63bd751416d699a9f6a5a52e1 100644 (file)
@@ -54,6 +54,21 @@ namespace ArdourMeter {
 static ArdourMeter::TickPatterns ticks_patterns;
 static ArdourMeter::MetricPatterns metric_patterns;
 
+const std::string
+ArdourMeter::meter_type_string (ARDOUR::MeterType mt)
+{
+       switch (mt) {
+               case MeterPeak:
+                       return _("Peak");
+                       break;
+               case MeterKrms:
+                       return _("RMS + Peak");
+                       break;
+               default:
+                       return _("???");
+                       break;
+       }
+}
 
 static cairo_pattern_t*
 meter_render_ticks (Gtk::Widget& w, vector<ARDOUR::DataType> types)
index 9ac8ce308a7f81f4eb1d4f96b012a683b3a06e8a..90ef4ec980580800deb6875974a9466230330212 100644 (file)
@@ -42,6 +42,8 @@ gint meter_expose_metrics (GdkEventExpose *ev, std::vector<ARDOUR::DataType> typ
 
 void meter_clear_pattern_cache(int which=7);
 
+const std::string meter_type_string (ARDOUR::MeterType);
+
 }
 
 #endif
index c5d32d6680505d5511e138d650e4b4416df339d2..44144114a4dad2cbc167d2d238fb26c180678854 100644 (file)
@@ -571,16 +571,19 @@ MeterStrip::popup_level_meter_menu (GdkEventButton* ev)
        RadioMenuItem::Group group;
 
        _suspend_menu_callbacks = true;
-       add_level_meter_item (items, group, _("Peak"), MeterPeak);
-       add_level_meter_item (items, group, _("RMS + Peak"), MeterKrms);
+       add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterPeak), MeterPeak);
+       add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterKrms), MeterKrms);
+
+       MeterType cmt = _route->meter_type();
+       const std::string cmn = ArdourMeter::meter_type_string(cmt);
 
        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)));
+       items.push_back (MenuElem (string_compose(_("Change all in Group to %1"), cmn),
+                               sigc::bind (SetMeterTypeMulti, -1, _route->route_group(), cmt)));
+       items.push_back (MenuElem (string_compose(_("Change all to %1"), cmn),
+                               sigc::bind (SetMeterTypeMulti, 0, _route->route_group(), cmt)));
+       items.push_back (MenuElem (string_compose(_("Change same track-type to %1"), cmn),
+                               sigc::bind (SetMeterTypeMulti, _strip_type, _route->route_group(), cmt)));
 
        m->popup (ev->button, ev->time);
        _suspend_menu_callbacks = false;
index cd3185fcbfd4d8747b22c639be8b5d9b821a7ba3..6128780cf03dda5837d9d8f175467f5549ff19c5 100644 (file)
@@ -2133,8 +2133,8 @@ MixerStrip::popup_level_meter_menu (GdkEventButton* ev)
        RadioMenuItem::Group tgroup;
        items.push_back (SeparatorElem());
 
-       add_level_meter_item_type (items, tgroup, _("Peak"), MeterPeak);
-       add_level_meter_item_type (items, tgroup, _("RMS + Peak"), MeterKrms);
+       add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterPeak), MeterPeak);
+       add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterKrms), MeterKrms);
 
        int _strip_type;
        if (_route->is_master()) {
@@ -2152,13 +2152,16 @@ MixerStrip::popup_level_meter_menu (GdkEventButton* ev)
                _strip_type = 1;
        }
 
+       MeterType cmt = _route->meter_type();
+       const std::string cmn = ArdourMeter::meter_type_string(cmt);
+
        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)));
+       items.push_back (MenuElem (string_compose(_("Change all in Group to %1"), cmn),
+                               sigc::bind (SetMeterTypeMulti, -1, _route->route_group(), cmt)));
+       items.push_back (MenuElem (string_compose(_("Change all to %1"), cmn),
+                               sigc::bind (SetMeterTypeMulti, 0, _route->route_group(), cmt)));
+       items.push_back (MenuElem (string_compose(_("Change same track-type to %1"), cmn),
+                               sigc::bind (SetMeterTypeMulti, _strip_type, _route->route_group(), cmt)));
 
        m->popup (ev->button, ev->time);
        _suspend_menu_callbacks = false;