diff options
-rw-r--r-- | gtk2_ardour/meterbridge.cc | 47 | ||||
-rw-r--r-- | gtk2_ardour/meterbridge.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/session_option_editor.cc | 9 | ||||
-rw-r--r-- | libs/ardour/ardour/session_configuration_vars.h | 1 |
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) |