diff options
author | Len Ovens <len@ovenwerks.net> | 2019-09-11 16:36:05 -0700 |
---|---|---|
committer | Len Ovens <len@ovenwerks.net> | 2019-09-11 16:36:05 -0700 |
commit | da88e9d34cfadeafb9e2ec046d1bc0306baf0dde (patch) | |
tree | dab4f7c1208048503d6a78760d33acfd110e728d /gtk2_ardour/mixer_ui.cc | |
parent | 729cd0e2b341a0b9a3068ba0b534b7238815d05b (diff) |
Foldback gui: Added hide and show
- New menu item in view menu
- Foldback strip has hide button
- Adding a new foldback bus sets show
- setting is saved and restored
Diffstat (limited to 'gtk2_ardour/mixer_ui.cc')
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index ec04705fff..e349381ce7 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -115,6 +115,7 @@ Mixer_UI::Mixer_UI () , track_menu (0) , _plugin_selector (0) , foldback_strip (0) + , _show_foldback_strip (true) , _strip_width (UIConfiguration::instance().get_default_narrow_ms() ? Narrow : Wide) , _spill_scroll_position (0) , ignore_reorder (false) @@ -612,6 +613,7 @@ Mixer_UI::add_stripables (StripableList& slist) } if (route->is_foldbackbus ()) { if (foldback_strip) { + // last strip created is shown foldback_strip->set_route (route); } else { foldback_strip = new FoldbackStrip (*this, _session, route); @@ -620,6 +622,13 @@ Mixer_UI::add_stripables (StripableList& slist) out_packer.reorder_child (*foldback_strip, 0); foldback_strip->set_packed (true); } + /* config from last run is set before there are any foldback strips + * this takes that setting and applies it after at least one foldback + * strip exists */ + bool yn = _show_foldback_strip; + Glib::RefPtr<ToggleAction> act = ActionManager::get_toggle_action ("Mixer", "ToggleFoldbackStrip"); + act->set_active(!yn); + act->set_active(yn); continue; } @@ -2070,6 +2079,28 @@ Mixer_UI::showhide_monitor_section (bool yn) } void +Mixer_UI::toggle_foldback_strip () +{ + Glib::RefPtr<ToggleAction> act = ActionManager::get_toggle_action ("Mixer", "ToggleFoldbackStrip"); + showhide_foldback_strip (act->get_active()); +} + + +void +Mixer_UI::showhide_foldback_strip (bool yn) +{ + _show_foldback_strip = yn; + + if (foldback_strip) { + if (yn) { + foldback_strip->show(); + } else { + foldback_strip->hide(); + } + } +} + +void Mixer_UI::toggle_vcas () { Glib::RefPtr<ToggleAction> act = ActionManager::get_toggle_action ("Mixer", "ToggleVCAPane"); @@ -2331,6 +2362,15 @@ Mixer_UI::set_state (const XMLNode& node, int version) } yn = true; + node.get_property ("foldback-strip-visible", yn); + { + Glib::RefPtr<ToggleAction> act = ActionManager::get_toggle_action (X_("Mixer"), X_("ToggleFoldbackStrip")); + /* do it twice to force the change */ + act->set_active (!yn); + act->set_active (yn); + } + + yn = true; node.get_property ("show-vca-pane", yn); { Glib::RefPtr<ToggleAction> act = ActionManager::get_toggle_action (X_("Mixer"), X_("ToggleVCAPane")); @@ -2444,6 +2484,9 @@ Mixer_UI::get_state () act = ActionManager::get_toggle_action ("Mixer", "ToggleMonitorSection"); node->set_property ("monitor-section-visible", act->get_active ()); + act = ActionManager::get_toggle_action ("Mixer", "ToggleFoldbackStrip"); + node->set_property ("foldback-strip-visible", act->get_active ()); + act = ActionManager::get_toggle_action ("Mixer", "ToggleVCAPane"); node->set_property ("show-vca-pane", act->get_active ()); @@ -3357,6 +3400,9 @@ Mixer_UI::register_actions () #endif ActionManager::register_toggle_action (group, X_("ToggleMonitorSection"), _("Mixer: Show Monitor Section"), sigc::mem_fun (*this, &Mixer_UI::toggle_monitor_section)); + + ActionManager::register_toggle_action (group, X_("ToggleFoldbackStrip"), _("Mixer: Show Foldback Strip"), sigc::mem_fun (*this, &Mixer_UI::toggle_foldback_strip)); + } void |