From ab298f035ae32532a48af315426b07fe8e1f12be Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 31 Oct 2019 15:55:46 +0100 Subject: Consolidate automation and meter-point strings This also properly selects texts in dropdown-menus on the mixer-strip, panner and plugin-controls, gain-meters. --- gtk2_ardour/gain_meter.cc | 66 +++++++++++++++++++++++++---------------- gtk2_ardour/gain_meter.h | 1 + gtk2_ardour/generic_pluginui.cc | 42 +++++++------------------- gtk2_ardour/mixer_strip.cc | 21 ++++--------- gtk2_ardour/panner_ui.cc | 49 ++---------------------------- gtk2_ardour/panner_ui.h | 4 --- 6 files changed, 60 insertions(+), 123 deletions(-) diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index f3d9669274..6c6b3c13f8 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -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 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); diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index 85b7166da1..2ae9a2ee44 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -107,6 +107,7 @@ public: */ PBD::Signal1 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); diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc index e3b52a8d0d..e18cdfd889 100644 --- a/gtk2_ardour/generic_pluginui.cc +++ b/gtk2_ardour/generic_pluginui.cc @@ -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; } diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 27769d9169..79848f7466 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -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; diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc index 79aba88397..7b434a448c 100644 --- a/gtk2_ardour/panner_ui.cc +++ b/gtk2_ardour/panner_ui.cc @@ -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 (_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 () { diff --git a/gtk2_ardour/panner_ui.h b/gtk2_ardour/panner_ui.h index 1e83f33872..bd5c8cb5f1 100644 --- a/gtk2_ardour/panner_ui.h +++ b/gtk2_ardour/panner_ui.h @@ -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); void stop_touch (boost::weak_ptr); -- cgit v1.2.3