summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-07-05 20:55:55 +0200
committerRobin Gareus <robin@gareus.org>2013-07-10 15:27:10 +0200
commitda08f8b1c5fed5f936d85aa4605eb202e7063cb3 (patch)
tree8e1255b3dedbde7592dbd033eff2eb1776f70e10
parent9d0a3b9eafc316e6536c8117fddbef62c77bd42c (diff)
add options to show/hide master and midi tracks;; hide inactive tracks
-rw-r--r--gtk2_ardour/meterbridge.cc47
-rw-r--r--gtk2_ardour/meterbridge.h3
-rw-r--r--gtk2_ardour/session_option_editor.cc21
-rw-r--r--libs/ardour/ardour/session_configuration_vars.h4
4 files changed, 58 insertions, 17 deletions
diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc
index 56a70a8d9a..4731d39b61 100644
--- a/gtk2_ardour/meterbridge.cc
+++ b/gtk2_ardour/meterbridge.cc
@@ -337,7 +337,9 @@ Meterbridge::set_session (Session* s)
}
update_title ();
- _show_busses = _session->config.get_show_busses_in_meterbridge();
+ _show_busses = _session->config.get_show_busses_on_meterbridge();
+ _show_master = _session->config.get_show_master_on_meterbridge();
+ _show_midi = _session->config.get_show_midi_on_meterbridge();
SignalOrderRouteSorter sorter;
boost::shared_ptr<RouteList> routes = _session->get_routes();
@@ -479,6 +481,7 @@ Meterbridge::fast_update_strips ()
return;
}
for (list<MeterStrip *>::iterator i = strips.begin(); i != strips.end(); ++i) {
+ // TODO skip inactive/hidden routes
(*i)->fast_update ();
}
}
@@ -498,6 +501,7 @@ Meterbridge::add_strips (RouteList& routes)
strip = new MeterStrip (_session, route);
strips.push_back (strip);
+ route->active_changed.connect (*this, invalidator (*this), boost::bind (&Meterbridge::resync_order, this), gui_context ());
meterarea.pack_start (*strip, false, false);
strip->show();
@@ -549,18 +553,15 @@ Meterbridge::sync_order_keys (RouteSortOrderKey src)
for (list<MeterStrip *>::iterator i = copy.begin(); i != copy.end(); ++i) {
-#if 0 // TODO subscribe to route active,inactive changes, merge w/ bus
if (! (*i)->route()->active()) {
(*i)->hide();
- } else {
- (*i)->show();
}
-#endif
-
- // TODO simplyfy, abstract ->is_bus()
- if ((*i)->route()->is_master()) {
- /* always show master */
- (*i)->show();
+ else if ((*i)->route()->is_master()) {
+ if (_show_master) {
+ (*i)->show();
+ } else {
+ (*i)->hide();
+ }
}
else if (boost::dynamic_pointer_cast<AudioTrack>((*i)->route()) == 0
&& boost::dynamic_pointer_cast<MidiTrack>((*i)->route()) == 0
@@ -572,19 +573,39 @@ Meterbridge::sync_order_keys (RouteSortOrderKey src)
(*i)->hide();
}
}
+ else if (boost::dynamic_pointer_cast<MidiTrack>((*i)->route())) {
+ if (_show_midi) {
+ (*i)->show();
+ } else {
+ (*i)->hide();
+ }
+ }
else {
(*i)->show();
}
-
meterarea.reorder_child(*(*i), pos++);
}
}
void
+Meterbridge::resync_order ()
+{
+ sync_order_keys(MixerSort);
+}
+
+void
Meterbridge::parameter_changed (std::string const & p)
{
- if (p == "show-busses-in-meterbridge") {
- _show_busses = _session->config.get_show_busses_in_meterbridge();
+ if (p == "show-busses-on-meterbridge") {
+ _show_busses = _session->config.get_show_busses_on_meterbridge();
+ sync_order_keys(MixerSort);
+ }
+ else if (p == "show-master-on-meterbridge") {
+ _show_master = _session->config.get_show_master_on_meterbridge();
+ sync_order_keys(MixerSort);
+ }
+ else if (p == "show-midi-on-meterbridge") {
+ _show_midi = _session->config.get_show_midi_on_meterbridge();
sync_order_keys(MixerSort);
}
}
diff --git a/gtk2_ardour/meterbridge.h b/gtk2_ardour/meterbridge.h
index f02d6b82ab..2e231861c7 100644
--- a/gtk2_ardour/meterbridge.h
+++ b/gtk2_ardour/meterbridge.h
@@ -60,6 +60,8 @@ class Meterbridge :
bool _visible;
bool _show_busses;
+ bool _show_master;
+ bool _show_midi;
Gtk::ScrolledWindow scroller;
Gtk::HBox meterarea;
@@ -78,6 +80,7 @@ class Meterbridge :
void session_going_away ();
void sync_order_keys (ARDOUR::RouteSortOrderKey src);
+ void resync_order ();
std::list<MeterStrip *> strips;
diff --git a/gtk2_ardour/session_option_editor.cc b/gtk2_ardour/session_option_editor.cc
index c419a3ad2b..31629cf085 100644
--- a/gtk2_ardour/session_option_editor.cc
+++ b/gtk2_ardour/session_option_editor.cc
@@ -273,11 +273,26 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
));
add_option (_("Misc"), new OptionEditorHeading (_("Meterbridge Options")));
+
+ add_option (_("Misc"), new BoolOption (
+ "show-midi-on-meterbridge",
+ _("Include Midi Tracks on Meterbridge"),
+ sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_midi_on_meterbridge),
+ sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_midi_on_meterbridge)
+ ));
+
add_option (_("Misc"), new BoolOption (
- "show-busses-in-meterbridge",
+ "show-busses-on-meterbridge",
_("Include Busses on Meterbridge"),
- sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_busses_in_meterbridge),
- sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_busses_in_meterbridge)
+ sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_busses_on_meterbridge),
+ sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_busses_on_meterbridge)
+ ));
+
+ add_option (_("Misc"), new BoolOption (
+ "show-master-on-meterbridge",
+ _("Include Master Bus on Meterbridge"),
+ sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_master_on_meterbridge),
+ sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_master_on_meterbridge)
));
}
diff --git a/libs/ardour/ardour/session_configuration_vars.h b/libs/ardour/ardour/session_configuration_vars.h
index 7069379b72..fb29004553 100644
--- a/libs/ardour/ardour/session_configuration_vars.h
+++ b/libs/ardour/ardour/session_configuration_vars.h
@@ -57,4 +57,6 @@ CONFIG_VARIABLE (bool, midi_copy_is_fork, "midi-copy-is-fork", false)
CONFIG_VARIABLE (bool, glue_new_regions_to_bars_and_beats, "glue-new-regions-to-bars-and-beats", false)
CONFIG_VARIABLE (bool, use_video_file_fps, "use-video-file-fps", false)
CONFIG_VARIABLE (bool, videotimeline_pullup, "videotimeline-pullup", true)
-CONFIG_VARIABLE (bool, show_busses_in_meterbridge, "show-busses-in-meterbridge", false)
+CONFIG_VARIABLE (bool, show_busses_on_meterbridge, "show-busses-on-meterbridge", false)
+CONFIG_VARIABLE (bool, show_master_on_meterbridge, "show-master-on-meterbridge", true)
+CONFIG_VARIABLE (bool, show_midi_on_meterbridge, "show-midi-on-meterbridge", true)