summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/ardour.menus.in1
-rw-r--r--gtk2_ardour/ardour_ui.h1
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc11
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc3
-rw-r--r--gtk2_ardour/mixer_ui.cc32
-rw-r--r--gtk2_ardour/mixer_ui.h5
6 files changed, 53 insertions, 0 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in
index 33460000da..2197ed93f8 100644
--- a/gtk2_ardour/ardour.menus.in
+++ b/gtk2_ardour/ardour.menus.in
@@ -504,6 +504,7 @@
<menuitem action='show-editor-mixer'/>
<menuitem action='show-editor-list'/>
+ <menuitem action='ToggleMixerList'/>
<menuitem action='ToggleMeasureVisibility'/>
<menuitem action='ToggleSummary'/>
<menuitem action='ToggleGroupTabs'/>
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index fc46eb4292..8583d73d48 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -202,6 +202,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
void new_midi_tracer_window ();
void toggle_editing_space();
void toggle_mixer_space();
+ void toggle_mixer_list();
void toggle_keep_tearoffs();
static PublicEditor* _instance;
diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc
index f41c06a9a1..8640d7a2f5 100644
--- a/gtk2_ardour/ardour_ui_dialogs.cc
+++ b/gtk2_ardour/ardour_ui_dialogs.cc
@@ -586,3 +586,14 @@ ARDOUR_UI::toggle_mixer_space()
}
}
}
+
+void
+ARDOUR_UI::toggle_mixer_list()
+{
+ Glib::RefPtr<Action> act = ActionManager::get_action ("Common", "ToggleMixerList");
+
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+ mixer->show_mixer_list (tact->get_active());
+ }
+}
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index e409c5b8fc..2fc5a17c33 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -215,6 +215,9 @@ ARDOUR_UI::install_actions ()
act = ActionManager::register_toggle_action (common_actions, X_("KeepTearoffs"), _("Show Toolbars"), mem_fun (*this, &ARDOUR_UI::toggle_keep_tearoffs));
ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_toggle_action (common_actions, X_("ToggleMixerList"), _("Toggle Mixer List"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_mixer_list));
+ ActionManager::session_sensitive_actions.push_back (act);
+
if (Profile->get_mixbus())
ActionManager::register_action (common_actions, X_("show-ui-prefs"), _("Show more UI preferences"), sigc::mem_fun (*this, &ARDOUR_UI::show_ui_prefs));
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index e58a61948d..0eb3f77cfe 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -100,6 +100,7 @@ Mixer_UI::Mixer_UI ()
, _route_deletion_in_progress (false)
, _following_editor_selection (false)
, _maximised (false)
+ , _show_mixer_list (true)
{
/* allow this window to become the key focus window */
set_flags (CAN_FOCUS);
@@ -1430,6 +1431,24 @@ Mixer_UI::route_group_property_changed (RouteGroup* group, const PropertyChange&
}
void
+Mixer_UI::show_mixer_list (bool yn)
+{
+ if (yn) {
+ list_vpacker.show ();
+
+ //if user wants to show the pane, we should make sure that it is wide enough to be visible
+ int width = list_hpane.get_position();
+ if (width < 40)
+ list_hpane.set_position(40);
+ } else {
+ list_vpacker.hide ();
+ }
+
+ _show_mixer_list = yn;
+}
+
+
+void
Mixer_UI::route_group_name_edit (const std::string& path, const std::string& new_text)
{
RouteGroup* group;
@@ -1639,6 +1658,17 @@ Mixer_UI::set_state (const XMLNode& node)
}
}
+ if ((prop = node.property ("show-mixer-list"))) {
+ bool yn = string_is_affirmative (prop->value());
+ Glib::RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("ToggleMixerList"));
+ assert (act);
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+
+ /* do it twice to force the change */
+ tact->set_active (!yn);
+ tact->set_active (yn);
+ }
+
return 0;
}
@@ -1682,6 +1712,8 @@ Mixer_UI::get_state (void)
node->add_property ("show-mixer", _visible ? "yes" : "no");
+ node->add_property ("show-mixer-list", _show_mixer_list ? "yes" : "no");
+
node->add_property ("maximised", _maximised ? "yes" : "no");
return *node;
diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h
index a982546358..8352ce76a2 100644
--- a/gtk2_ardour/mixer_ui.h
+++ b/gtk2_ardour/mixer_ui.h
@@ -75,6 +75,8 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR
XMLNode& get_state (void);
int set_state (const XMLNode& );
+ void show_mixer_list (bool yn);
+
void show_window ();
bool hide_window (GdkEventAny *ev);
void show_strip (MixerStrip *);
@@ -293,6 +295,9 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR
/// true if we are in fullscreen mode
bool _maximised;
+
+ // true if mixer list is visible
+ bool _show_mixer_list;
};
#endif /* __ardour_mixer_ui_h__ */