summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/meterbridge.cc47
-rw-r--r--gtk2_ardour/meterbridge.h3
-rw-r--r--gtk2_ardour/session_option_editor.cc9
-rw-r--r--libs/ardour/ardour/session_configuration_vars.h1
4 files changed, 48 insertions, 12 deletions
diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc
index 70f0c80dba..dc06dc2415 100644
--- a/gtk2_ardour/meterbridge.cc
+++ b/gtk2_ardour/meterbridge.cc
@@ -117,6 +117,7 @@ Meterbridge::Meterbridge ()
: Window (Gtk::WINDOW_TOPLEVEL)
, VisibilityTracker (*((Gtk::Window*) this))
, _visible (false)
+ , _show_busses (false)
{
set_name ("Meter Bridge");
@@ -251,6 +252,7 @@ Meterbridge::set_session (Session* s)
}
update_title ();
+ _show_busses = _session->config.get_show_busses_in_meterbridge();
SignalOrderRouteSorter sorter;
boost::shared_ptr<RouteList> routes = _session->get_routes();
@@ -262,6 +264,7 @@ Meterbridge::set_session (Session* s)
_session->RouteAdded.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::add_strips, this, _1), gui_context());
_session->DirtyChanged.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::update_title, this), gui_context());
_session->StateSaved.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::update_title, this), gui_context());
+ _session->config.ParameterChanged.connect (*this, invalidator (*this), ui_bind (&Meterbridge::parameter_changed, this, _1), gui_context());
if (_visible) {
show_window();
@@ -408,17 +411,6 @@ Meterbridge::add_strips (RouteList& routes)
continue;
}
- if (route->is_master()) {
- /* always show master */
- }
- else
- if (boost::dynamic_pointer_cast<AudioTrack>(route) == 0
- && boost::dynamic_pointer_cast<MidiTrack>(route) == 0
- ) {
- // non-master bus
- if (0) continue; // TODO allow to skip busses
- }
-
strip = new MeterStrip (*this, _session, route);
strips.push_back (strip);
@@ -451,7 +443,8 @@ Meterbridge::sync_order_keys (RouteSortOrderKey src)
int pos = 0;
for (list<MeterStrip *>::iterator i = copy.begin(); i != copy.end(); ++i) {
-#if 0 // TODO subscribe to route active,inactive changes
+
+#if 0 // TODO subscribe to route active,inactive changes, merge w/ bus
if (! (*i)->route()->active()) {
(*i)->hide();
} else {
@@ -459,6 +452,27 @@ Meterbridge::sync_order_keys (RouteSortOrderKey src)
}
#endif
+ // TODO simplyfy, abstract ->is_bus()
+ if ((*i)->route()->is_master()) {
+ /* always show master */
+ (*i)->show();
+ }
+ else if (boost::dynamic_pointer_cast<AudioTrack>((*i)->route()) == 0
+ && boost::dynamic_pointer_cast<MidiTrack>((*i)->route()) == 0
+ ) {
+ /* non-master bus */
+ if (_show_busses) {
+ (*i)->show();
+ } else {
+ (*i)->hide();
+ }
+ }
+ else {
+ (*i)->show();
+ }
+
+
+
if (pos%8 == 0) {
(*i)->display_metrics(true);
} else {
@@ -467,3 +481,12 @@ Meterbridge::sync_order_keys (RouteSortOrderKey src)
global_hpacker.reorder_child(*(*i), pos++);
}
}
+
+void
+Meterbridge::parameter_changed (std::string const & p)
+{
+ if (p == "show-busses-in-meterbridge") {
+ _show_busses = _session->config.get_show_busses_in_meterbridge();
+ sync_order_keys(MixerSort);
+ }
+}
diff --git a/gtk2_ardour/meterbridge.h b/gtk2_ardour/meterbridge.h
index 3b50d6f8ae..9239ebc788 100644
--- a/gtk2_ardour/meterbridge.h
+++ b/gtk2_ardour/meterbridge.h
@@ -59,6 +59,7 @@ class Meterbridge :
static Meterbridge* _instance;
bool _visible;
+ bool _show_busses;
Gtk::ScrolledWindow scroller;
Gtk::HBox global_hpacker;
@@ -91,6 +92,8 @@ class Meterbridge :
bool on_key_press_event (GdkEventKey*);
bool on_key_release_event (GdkEventKey*);
+
+ void parameter_changed (std::string const & p);
};
#endif
diff --git a/gtk2_ardour/session_option_editor.cc b/gtk2_ardour/session_option_editor.cc
index 17f909a08a..c419a3ad2b 100644
--- a/gtk2_ardour/session_option_editor.cc
+++ b/gtk2_ardour/session_option_editor.cc
@@ -271,6 +271,15 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
sigc::mem_fun (*_session_config, &SessionConfiguration::get_glue_new_regions_to_bars_and_beats),
sigc::mem_fun (*_session_config, &SessionConfiguration::set_glue_new_regions_to_bars_and_beats)
));
+
+ add_option (_("Misc"), new OptionEditorHeading (_("Meterbridge Options")));
+ add_option (_("Misc"), new BoolOption (
+ "show-busses-in-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)
+ ));
+
}
void
diff --git a/libs/ardour/ardour/session_configuration_vars.h b/libs/ardour/ardour/session_configuration_vars.h
index 9def8f3aad..7069379b72 100644
--- a/libs/ardour/ardour/session_configuration_vars.h
+++ b/libs/ardour/ardour/session_configuration_vars.h
@@ -57,3 +57,4 @@ 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)