summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2019-09-11 16:36:05 -0700
committerLen Ovens <len@ovenwerks.net>2019-09-11 16:36:05 -0700
commitda88e9d34cfadeafb9e2ec046d1bc0306baf0dde (patch)
treedab4f7c1208048503d6a78760d33acfd110e728d /gtk2_ardour
parent729cd0e2b341a0b9a3068ba0b534b7238815d05b (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')
-rw-r--r--gtk2_ardour/ardour.menus.in3
-rw-r--r--gtk2_ardour/ardour_ui.cc1
-rw-r--r--gtk2_ardour/foldback_strip.cc22
-rw-r--r--gtk2_ardour/foldback_strip.h2
-rw-r--r--gtk2_ardour/mixer_ui.cc46
-rw-r--r--gtk2_ardour/mixer_ui.h4
6 files changed, 74 insertions, 4 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in
index 4292448d2a..f04cbd6539 100644
--- a/gtk2_ardour/ardour.menus.in
+++ b/gtk2_ardour/ardour.menus.in
@@ -41,7 +41,7 @@
<menuitem action='monitor-dim-all'/>
<menuitem action='monitor-mono'/>
</menu>
-
+
<menu name='Metadata' action='Metadata'>
<menuitem action='EditMetadata'/>
<menuitem action='ImportMetadata'/>
@@ -536,6 +536,7 @@
#endif
<menuitem action='ToggleVCAPane'/>
<menuitem action='ToggleMonitorSection'/>
+ <menuitem action='ToggleFoldbackStrip'/>
</menu>
<menu action = 'WindowMenu'>
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index b7aed85750..d1229c8f76 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -4464,6 +4464,7 @@ ARDOUR_UI::add_route_dialog_response (int r)
break;
case AddRouteDialog::FoldbackBus:
session_add_foldback_bus (input_chan.n_audio(), count, name_template);
+ ActionManager::get_toggle_action (X_("Mixer"), X_("ToggleFoldbackStrip"))->set_active (true);
break;
}
}
diff --git a/gtk2_ardour/foldback_strip.cc b/gtk2_ardour/foldback_strip.cc
index 75110e92c8..34bc4b635b 100644
--- a/gtk2_ardour/foldback_strip.cc
+++ b/gtk2_ardour/foldback_strip.cc
@@ -321,17 +321,23 @@ FoldbackStrip::init ()
_previous_button.set_name ("mixer strip button");
_previous_button.set_icon (ArdourIcon::NudgeLeft);
_previous_button.set_tweaks (ArdourButton::Square);
- UI::instance()->set_tip (&_previous_button, _("previous foldback bus"), "");
+ UI::instance()->set_tip (&_previous_button, _("Previous foldback bus"), "");
_previous_button.set_sensitive (false);
_next_button.set_name ("mixer strip button");
_next_button.set_icon (ArdourIcon::NudgeRight);
_next_button.set_tweaks (ArdourButton::Square);
- UI::instance()->set_tip (&_next_button, _("next foldback bus"), "");
+ UI::instance()->set_tip (&_next_button, _("Next foldback bus"), "");
_next_button.set_sensitive (false);
+ _hide_button.set_name ("mixer strip button");
+ _hide_button.set_icon (ArdourIcon::CloseCross);
+ _hide_button.set_tweaks (ArdourButton::Square);
+ set_tooltip (&_hide_button, _("Hide Foldback strip"));
+
prev_next_box.pack_start (_previous_button, false, true);
- prev_next_box.pack_end (_next_button, false, true);
+ prev_next_box.pack_start (_next_button, false, true);
+ prev_next_box.pack_end (_hide_button, false, true);
name_button.set_name ("mixer strip button");
name_button.set_text_ellipsize (Pango::ELLIPSIZE_END);
@@ -443,6 +449,7 @@ FoldbackStrip::init ()
name_button.signal_button_press_event().connect (sigc::mem_fun(*this, &FoldbackStrip::name_button_button_press), false);
_previous_button.signal_button_press_event().connect (sigc::mem_fun (*this, &FoldbackStrip::previous_button_button_press), false);
_next_button.signal_button_press_event().connect (sigc::mem_fun (*this, &FoldbackStrip::next_button_button_press), false);
+ _hide_button.signal_clicked.connect (sigc::mem_fun(*this, &FoldbackStrip::hide_clicked));
_show_sends_button.signal_button_press_event().connect (sigc::mem_fun(*this, &FoldbackStrip::show_sends_press), false);
send_scroller.signal_button_press_event().connect (sigc::mem_fun (*this, &FoldbackStrip::send_button_press_event));
_comment_button.signal_clicked.connect (sigc::mem_fun (*this, &RouteUI::toggle_comment_editor));
@@ -584,6 +591,7 @@ FoldbackStrip::set_route (boost::shared_ptr<Route> rt)
prev_next_changed ();
_previous_button.show();
_next_button.show();
+ _hide_button.show();
prev_next_box.show ();
name_button.show();
send_display.show ();
@@ -1301,6 +1309,14 @@ FoldbackStrip::prev_next_changed ()
}
}
+void
+FoldbackStrip::hide_clicked()
+{
+ _hide_button.set_sensitive(false);
+ ActionManager::get_toggle_action (X_("Mixer"), X_("ToggleFoldbackStrip"))->set_active (false);
+ _hide_button.set_sensitive(true);
+}
+
gboolean
FoldbackStrip::show_sends_press (GdkEventButton* ev)
{
diff --git a/gtk2_ardour/foldback_strip.h b/gtk2_ardour/foldback_strip.h
index 2a9f23d2ad..dffe549a9a 100644
--- a/gtk2_ardour/foldback_strip.h
+++ b/gtk2_ardour/foldback_strip.h
@@ -212,10 +212,12 @@ private:
ArdourWidgets::ArdourButton _show_sends_button;
ArdourWidgets::ArdourButton _previous_button;
ArdourWidgets::ArdourButton _next_button;
+ ArdourWidgets::ArdourButton _hide_button;
ArdourWidgets::ArdourButton _comment_button;
ArdourWidgets::ArdourKnob* fb_level_control;
void setup_comment_button ();
+ void hide_clicked();
gint output_press (GdkEventButton *);
gint output_release (GdkEventButton *);
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
diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h
index 16e6d35c3f..4eb7062fb2 100644
--- a/gtk2_ardour/mixer_ui.h
+++ b/gtk2_ardour/mixer_ui.h
@@ -145,6 +145,9 @@ public:
void toggle_monitor_section ();
void showhide_monitor_section (bool);
+ void toggle_foldback_strip ();
+ void showhide_foldback_strip (bool);
+
void toggle_vcas ();
void showhide_vcas (bool on);
@@ -305,6 +308,7 @@ private:
MonitorSection _monitor_section;
PluginSelector *_plugin_selector;
FoldbackStrip * foldback_strip;
+ bool _show_foldback_strip;
void stripable_property_changed (const PBD::PropertyChange& what_changed, boost::weak_ptr<ARDOUR::Stripable> ws);
void route_group_property_changed (ARDOUR::RouteGroup *, const PBD::PropertyChange &);