Consolidate automation and meter-point strings
authorRobin Gareus <robin@gareus.org>
Thu, 31 Oct 2019 14:55:46 +0000 (15:55 +0100)
committerRobin Gareus <robin@gareus.org>
Thu, 31 Oct 2019 15:12:27 +0000 (16:12 +0100)
This also properly selects texts in dropdown-menus on the mixer-strip,
panner and plugin-controls, gain-meters.

gtk2_ardour/gain_meter.cc
gtk2_ardour/gain_meter.h
gtk2_ardour/generic_pluginui.cc
gtk2_ardour/mixer_strip.cc
gtk2_ardour/panner_ui.cc
gtk2_ardour/panner_ui.h

index f3d9669274c8dea8605a9894b93dc5ca51054b10..6c6b3c13f80d75cc6454201f96c8edb04744a630 100644 (file)
@@ -182,21 +182,22 @@ GainMeterBase::GainMeterBase (Session* s, bool horizontal, int fader_length, int
        meter_point_menu.set_reserve_toggle_size(false);
 
        meter_point_menu.items().clear ();
-       meter_point_menu.items().push_back (MenuElem(_("Input"),
+       meter_point_menu.items().push_back (MenuElem(meterpt_string(MeterInput),
         sigc::bind (sigc::mem_fun (*this,
         &GainMeterBase::meter_point_clicked), (MeterPoint) MeterInput)));
-       meter_point_menu.items().push_back (MenuElem(_("Pre Fader"),
+       meter_point_menu.items().push_back (MenuElem(meterpt_string(MeterPreFader),
         sigc::bind (sigc::mem_fun (*this,
         &GainMeterBase::meter_point_clicked), (MeterPoint) MeterPreFader)));
-       meter_point_menu.items().push_back (MenuElem(_("Post Fader"),
+       meter_point_menu.items().push_back (MenuElem(meterpt_string (MeterPostFader),
         sigc::bind (sigc::mem_fun (*this,
         &GainMeterBase::meter_point_clicked), (MeterPoint) MeterPostFader)));
-       meter_point_menu.items().push_back (MenuElem(_("Output"),
+       meter_point_menu.items().push_back (MenuElem(meterpt_string (MeterOutput),
         sigc::bind (sigc::mem_fun (*this,
         &GainMeterBase::meter_point_clicked), (MeterPoint) MeterOutput)));
-       meter_point_menu.items().push_back (MenuElem(_("Custom"),
+       meter_point_menu.items().push_back (MenuElem(meterpt_string (MeterCustom),
         sigc::bind (sigc::mem_fun (*this,
         &GainMeterBase::meter_point_clicked), (MeterPoint) MeterCustom)));
+
        meter_point_button.signal_button_press_event().connect (sigc::mem_fun (*this, &GainMeter::meter_press), false);
 
        gain_adjustment.signal_value_changed().connect (sigc::mem_fun(*this, &GainMeterBase::fader_moved));
@@ -263,15 +264,15 @@ GainMeterBase::set_controls (boost::shared_ptr<Route> r,
 
                gain_astate_menu.items().clear ();
 
-               gain_astate_menu.items().push_back (MenuElem (S_("Automation|Manual"),
+               gain_astate_menu.items().push_back (MenuElem (astate_string (ARDOUR::Off),
                                                              sigc::bind (sigc::mem_fun (*this, &GainMeterBase::set_gain_astate), (AutoState) ARDOUR::Off)));
-               gain_astate_menu.items().push_back (MenuElem (_("Play"),
+               gain_astate_menu.items().push_back (MenuElem (astate_string (ARDOUR::Play),
                                                              sigc::bind (sigc::mem_fun (*this, &GainMeterBase::set_gain_astate), (AutoState) ARDOUR::Play)));
-               gain_astate_menu.items().push_back (MenuElem (_("Write"),
+               gain_astate_menu.items().push_back (MenuElem (astate_string (ARDOUR::Write),
                                                              sigc::bind (sigc::mem_fun (*this, &GainMeterBase::set_gain_astate), (AutoState) ARDOUR::Write)));
-               gain_astate_menu.items().push_back (MenuElem (_("Touch"),
+               gain_astate_menu.items().push_back (MenuElem (astate_string (ARDOUR::Touch),
                                                              sigc::bind (sigc::mem_fun (*this, &GainMeterBase::set_gain_astate), (AutoState) ARDOUR::Touch)));
-               gain_astate_menu.items().push_back (MenuElem (_("Latch"),
+               gain_astate_menu.items().push_back (MenuElem (astate_string (ARDOUR::Latch),
                                                              sigc::bind (sigc::mem_fun (*this, &GainMeterBase::set_gain_astate), (AutoState) ARDOUR::Latch)));
 
                connections.push_back (gain_automation_state_button.signal_button_press_event().connect (sigc::mem_fun(*this, &GainMeterBase::gain_automation_state_button_event), false));
@@ -682,7 +683,8 @@ GainMeterBase::meter_press(GdkEventButton* ev)
                                }
                                Gtkmm2ext::anchored_menu_popup(&meter_point_menu,
                                                               &meter_point_button,
-                                                              "", 1, ev->time);
+                                                              meterpt_string (_route->meter_point()),
+                                                              1, ev->time);
                                break;
                        default:
                                break;
@@ -752,7 +754,8 @@ GainMeterBase::gain_automation_state_button_event (GdkEventButton *ev)
                        gain_astate_propagate = Keyboard::modifier_state_contains (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier | Keyboard::TertiaryModifier));
                        Gtkmm2ext::anchored_menu_popup(&gain_astate_menu,
                                                       &gain_automation_state_button,
-                                                      "", 1, ev->time);
+                                                      astate_string(_control->alist()->automation_state()),
+                                                      1, ev->time);
                        break;
                default:
                        break;
@@ -781,38 +784,49 @@ GainMeterBase::_astate_string (AutoState state, bool shrt)
 
        switch (state) {
        case ARDOUR::Off:
-               sstr = (shrt ? "M" : S_("Manual|M"));
+               sstr = shrt ? S_("Manual|M") : S_("Automation|Manual");
                break;
        case Play:
-               sstr = (shrt ? "P" : S_("Play|P"));
+               sstr = shrt ? S_("Play|P") : _("Play");
                break;
        case Touch:
-               sstr = (shrt ? "T" : S_("Trim|T"));
+               sstr = shrt ? S_("Trim|T") : _("Write");
                break;
        case Latch:
-               sstr = (shrt ? "L" : S_("Latch|L"));
+               sstr = shrt ? S_("Latch|L") : _("Touch");
                break;
        case Write:
-               sstr = (shrt ? "W" : S_("Write|W"));
+               sstr = shrt ? S_("Write|W"): _("Latch");
                break;
        }
 
        return sstr;
 }
 
+string
+GainMeterBase::meterpt_string (MeterPoint mp)
+{
+       switch (mp) {
+               case MeterInput:
+                       return _("Input");
+               case MeterPreFader:
+                       return _("Pre Fader");
+               case MeterPostFader:
+                       return _("Post Fader");
+               case MeterOutput:
+                       return _("Output");
+               case MeterCustom:
+                       return _("Custom");
+       }
+       assert (0);
+       return _("Custom"); // make gcc happy
+}
+
 void
 GainMeterBase::gain_automation_state_changed ()
 {
        ENSURE_GUI_THREAD (*this, &GainMeterBase::gain_automation_state_changed);
-
-       switch (_width) {
-       case Wide:
-               gain_automation_state_button.set_text (astate_string(_control->alist()->automation_state()));
-               break;
-       case Narrow:
-               gain_automation_state_button.set_text (short_astate_string(_control->alist()->automation_state()));
-               break;
-       }
+       gain_automation_state_button.set_text (short_astate_string(_control->alist()->automation_state()));
 
        const bool automation_watch_required = (_control->alist()->automation_state() != ARDOUR::Off);
 
index 85b7166da1fad4e6df81e2aa5dd860967db37d57..2ae9a2ee44f0686ff37a387e4b9e1461eec156e7 100644 (file)
@@ -107,6 +107,7 @@ public:
         */
        PBD::Signal1<bool, GdkEventButton *> LevelMeterButtonPress;
 
+       static std::string meterpt_string (ARDOUR::MeterPoint);
        static std::string astate_string (ARDOUR::AutoState);
        static std::string short_astate_string (ARDOUR::AutoState);
        static std::string _astate_string (ARDOUR::AutoState, bool);
index e3b52a8d0dc732bbd97d00c9c700640012d52118..e18cdfd8890161ca76cf3a2926463b5d3670f1f5 100644 (file)
@@ -876,30 +876,9 @@ GenericPluginUI::automation_state_changed (ControlUI* cui)
        cui->automate_button.set_active((state != ARDOUR::Off));
 
        if (cui->short_autostate) {
-               cui->automate_button.set_text (
-                               GainMeterBase::astate_string (state));
-               return;
-       }
-
-       switch (state & (ARDOUR::Off|Play|Touch|Write|Latch)) {
-       case ARDOUR::Off:
-               cui->automate_button.set_text (S_("Automation|Manual"));
-               break;
-       case Play:
-               cui->automate_button.set_text (_("Play"));
-               break;
-       case Write:
-               cui->automate_button.set_text (_("Write"));
-               break;
-       case Touch:
-               cui->automate_button.set_text (_("Touch"));
-               break;
-       case Latch:
-               cui->automate_button.set_text (_("Latch"));
-               break;
-       default:
-               cui->automate_button.set_text (_("???"));
-               break;
+               cui->automate_button.set_text (GainMeterBase::short_astate_string (state));
+       } else {
+               cui->automate_button.set_text (GainMeterBase::astate_string (state));
        }
 }
 
@@ -1215,19 +1194,20 @@ GenericPluginUI::astate_button_event (GdkEventButton* ev, ControlUI* cui)
        MenuList& items (automation_menu->items());
 
        items.clear ();
-       items.push_back (MenuElem (S_("Automation|Manual"),
+       items.push_back (MenuElem (GainMeterBase::astate_string (ARDOUR::Off),
                                   sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::set_automation_state), (AutoState) ARDOUR::Off, cui)));
-       items.push_back (MenuElem (_("Play"),
+       items.push_back (MenuElem (GainMeterBase::astate_string (Play),
                                   sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::set_automation_state), (AutoState) Play, cui)));
-       items.push_back (MenuElem (_("Write"),
+       items.push_back (MenuElem (GainMeterBase::astate_string (Write),
                                   sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::set_automation_state), (AutoState) Write, cui)));
-       items.push_back (MenuElem (_("Touch"),
+       items.push_back (MenuElem (GainMeterBase::astate_string (Touch),
                                   sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::set_automation_state), (AutoState) Touch, cui)));
-       items.push_back (MenuElem (_("Latch"),
+       items.push_back (MenuElem (GainMeterBase::astate_string (Latch),
                                   sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::set_automation_state), (AutoState) Latch, cui)));
 
-       anchored_menu_popup(automation_menu, &cui->automate_button, cui->automate_button.get_text(),
-                           1, ev->time);
+       anchored_menu_popup (automation_menu, &cui->automate_button,
+                            GainMeterBase::astate_string (insert->get_parameter_automation_state (cui->parameter())),
+                            1, ev->time);
 
        return true;
 }
index 27769d9169dfd45f5afd841695a949fd01754638..79848f7466847f8349951dce6d01a51ced894f63 100644 (file)
@@ -782,6 +782,12 @@ MixerStrip::set_width_enum (Width w, void* owner)
 
        const float scale = std::max(1.f, UIConfiguration::instance().get_ui_scale());
 
+       gpm.gain_automation_state_button.set_text (GainMeterBase::short_astate_string (gain_automation->automation_state()));
+
+       if (_route->panner()) {
+               ((Gtk::Label*)panners.pan_automation_state_button.get_child())->set_text (GainMeterBase::short_astate_string (_route->panner()->automation_state()));
+       }
+
        switch (w) {
        case Wide:
 
@@ -789,14 +795,6 @@ MixerStrip::set_width_enum (Width w, void* owner)
                        show_sends_button->set_text (_("Aux"));
                }
 
-               gpm.gain_automation_state_button.set_text (
-                               gpm.astate_string(gain_automation->automation_state()));
-
-               if (_route->panner()) {
-                       ((Gtk::Label*)panners.pan_automation_state_button.get_child())->set_text (
-                                       panners.astate_string(_route->panner()->automation_state()));
-               }
-
                {
                        // panners expect an even number of horiz. pixels
                        int width = rintf (max (110.f * scale, gpm.get_gm_width() + 10.f * scale)) + 1;
@@ -811,15 +809,8 @@ MixerStrip::set_width_enum (Width w, void* owner)
                        show_sends_button->set_text (_("Snd"));
                }
 
-               gpm.gain_automation_state_button.set_text (
-                               gpm.short_astate_string(gain_automation->automation_state()));
                gain_meter().setup_meters (); // recalc meter width
 
-               if (_route->panner()) {
-                       ((Gtk::Label*)panners.pan_automation_state_button.get_child())->set_text (
-                       panners.short_astate_string(_route->panner()->automation_state()));
-               }
-
                {
                        // panners expect an even number of horiz. pixels
                        int width = rintf (max (60.f * scale, gpm.get_gm_width() + 10.f * scale)) + 1;
index 79aba88397e307248f082b88570dd5cd20c447ff..7b434a448c20347275573ab172069b8e71ed657f 100644 (file)
@@ -37,6 +37,7 @@
 
 #include "widgets/tooltips.h"
 
+#include "gain_meter.h"
 #include "panner_ui.h"
 #include "panner2d.h"
 #include "gui_thread.h"
@@ -526,15 +527,7 @@ void
 PannerUI::pan_automation_state_changed ()
 {
        boost::shared_ptr<Pannable> pannable (_panner->pannable());
-
-       switch (_width) {
-       case Wide:
-               pan_automation_state_button.set_label (astate_string(pannable->automation_state()));
-               break;
-       case Narrow:
-               pan_automation_state_button.set_label (short_astate_string(pannable->automation_state()));
-               break;
-       }
+       pan_automation_state_button.set_label (GainMeterBase::short_astate_string(pannable->automation_state()));
 
        bool x = (pannable->automation_state() != ARDOUR::Off);
 
@@ -547,44 +540,6 @@ PannerUI::pan_automation_state_changed ()
        update_pan_sensitive ();
 }
 
-string
-PannerUI::astate_string (AutoState state)
-{
-       return _astate_string (state, false);
-}
-
-string
-PannerUI::short_astate_string (AutoState state)
-{
-       return _astate_string (state, true);
-}
-
-string
-PannerUI::_astate_string (AutoState state, bool shrt)
-{
-       string sstr;
-
-       switch (state) {
-       case ARDOUR::Off:
-               sstr = (shrt ? "M" : S_("Manual|M"));
-               break;
-       case Play:
-               sstr = (shrt ? "P" : S_("Play|P"));
-               break;
-       case Touch:
-               sstr = (shrt ? "T" : S_("Touch|T"));
-               break;
-       case Latch:
-               sstr = (shrt ? "L" : S_("Latch|L"));
-               break;
-       case Write:
-               sstr = (shrt ? "W" : S_("Write|W"));
-               break;
-       }
-
-       return sstr;
-}
-
 void
 PannerUI::show_width ()
 {
index 1e83f33872b8be2b1dfd8ee3ee6c2088cb27b815..bd5c8cb5f1e78208115aaa241847284b50e523b2 100644 (file)
@@ -144,10 +144,6 @@ private:
        void pan_automation_state_changed();
        gint pan_automation_state_button_event (GdkEventButton *);
 
-       std::string astate_string (ARDOUR::AutoState);
-       std::string short_astate_string (ARDOUR::AutoState);
-       std::string _astate_string (ARDOUR::AutoState, bool);
-
        void start_touch (boost::weak_ptr<ARDOUR::AutomationControl>);
        void stop_touch (boost::weak_ptr<ARDOUR::AutomationControl>);