diff options
author | Robin Gareus <robin@gareus.org> | 2013-07-05 20:55:55 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-07-10 15:27:10 +0200 |
commit | da08f8b1c5fed5f936d85aa4605eb202e7063cb3 (patch) | |
tree | 8e1255b3dedbde7592dbd033eff2eb1776f70e10 /gtk2_ardour/meterbridge.cc | |
parent | 9d0a3b9eafc316e6536c8117fddbef62c77bd42c (diff) |
add options to show/hide master and midi tracks;; hide inactive tracks
Diffstat (limited to 'gtk2_ardour/meterbridge.cc')
-rw-r--r-- | gtk2_ardour/meterbridge.cc | 47 |
1 files changed, 34 insertions, 13 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); } } |