summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Knoth <adi@drcomp.erfurt.thur.de>2014-03-21 13:45:00 +0100
committerAdrian Knoth <adi@drcomp.erfurt.thur.de>2014-03-21 16:08:53 +0100
commit5f45828c67749a54a6f274557cf25006b1989692 (patch)
tree8eb32839afebe0a5d48f0655c9287b98abf77d2b
parent92b7e0709c331771c79df90ffe383e7f45ecdf28 (diff)
Add option to display the mixer in fullscreen
This is useful for dual-head setups.
-rw-r--r--gtk2_ardour/ardour.menus.in1
-rw-r--r--gtk2_ardour/ardour_ui.h1
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc15
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc1
-rw-r--r--gtk2_ardour/mixer_ui.cc39
-rw-r--r--gtk2_ardour/mixer_ui.h6
6 files changed, 63 insertions, 0 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in
index b6328963bb..6c5e08c8f8 100644
--- a/gtk2_ardour/ardour.menus.in
+++ b/gtk2_ardour/ardour.menus.in
@@ -341,6 +341,7 @@
<menu name='View' action = 'View'>
<menuitem action='ToggleMaximalEditor'/>
+ <menuitem action='ToggleMaximalMixer'/>
<menuitem action='KeepTearoffs'/>
<separator/>
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 130fc69581..1f90a4cbb6 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -171,6 +171,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_keep_tearoffs();
Gtk::Tooltips& tooltips() { return _tooltips; }
diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc
index b0ac528b79..6f55f7cc44 100644
--- a/gtk2_ardour/ardour_ui_dialogs.cc
+++ b/gtk2_ardour/ardour_ui_dialogs.cc
@@ -565,3 +565,18 @@ ARDOUR_UI::editor_meter_peak_button_release (GdkEventButton* ev)
}
return true;
}
+
+void
+ARDOUR_UI::toggle_mixer_space()
+{
+ Glib::RefPtr<Action> act = ActionManager::get_action ("Common", "ToggleMaximalMixer");
+
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+ if (tact->get_active()) {
+ mixer->maximise_mixer_space ();
+ } else {
+ mixer->restore_mixer_space ();
+ }
+ }
+}
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index 0ed7a95df3..454c657e6e 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -191,6 +191,7 @@ ARDOUR_UI::install_actions ()
/* windows visibility actions */
ActionManager::register_toggle_action (common_actions, X_("ToggleMaximalEditor"), _("Maximise Editor Space"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_editing_space));
+ ActionManager::register_toggle_action (common_actions, X_("ToggleMaximalMixer"), _("Maximise Mixer Space"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_mixer_space));
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);
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index 12cf87d793..874f8feddf 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -240,6 +240,7 @@ Mixer_UI::Mixer_UI ()
group_display.show();
_in_group_rebuild_or_clear = false;
+ _maximised = false;
MixerStrip::CatchDeletion.connect (*this, invalidator (*this), boost::bind (&Mixer_UI::remove_strip, this, _1), gui_context());
@@ -1559,6 +1560,19 @@ Mixer_UI::set_state (const XMLNode& node)
}
}
+ if ((prop = node.property ("maximised"))) {
+ bool yn = string_is_affirmative (prop->value());
+ Glib::RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("ToggleMaximalMixer"));
+ assert (act);
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+ bool fs = tact && tact->get_active();
+ if (yn ^ fs) {
+ ActionManager::do_action ("Common",
+ "ToggleMaximalMixer");
+ }
+ }
+
+
return 0;
}
@@ -1601,6 +1615,8 @@ Mixer_UI::get_state (void)
node->add_property ("show-mixer", _visible ? "yes" : "no");
+ node->add_property ("maximised", _maximised ? "yes" : "no");
+
return *node;
}
@@ -1942,3 +1958,26 @@ Mixer_UI::toggle_midi_input_active (bool flip_others)
_session->set_exclusive_input_active (rl, onoff, flip_others);
}
+void
+Mixer_UI::maximise_mixer_space ()
+{
+ if (_maximised) {
+ return;
+ }
+
+ fullscreen ();
+
+ _maximised = true;
+}
+
+void
+Mixer_UI::restore_mixer_space ()
+{
+ if (!_maximised) {
+ return;
+ }
+
+ unfullscreen();
+
+ _maximised = false;
+}
diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h
index db841535b7..693fd9dfa5 100644
--- a/gtk2_ardour/mixer_ui.h
+++ b/gtk2_ardour/mixer_ui.h
@@ -80,6 +80,9 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR
void show_strip (MixerStrip *);
void hide_strip (MixerStrip *);
+ void maximise_mixer_space();
+ void restore_mixer_space();
+
void ensure_float (Gtk::Window&);
MonitorSection* monitor_section() const { return _monitor_section; }
@@ -279,6 +282,9 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR
bool _following_editor_selection;
void monitor_section_going_away ();
+
+ /// true if we are in fullscreen mode
+ bool _maximised;
};
#endif /* __ardour_mixer_ui_h__ */