add options to show/hide master and midi tracks;; hide inactive tracks

This commit is contained in:
Robin Gareus 2013-07-05 20:55:55 +02:00
parent 9d0a3b9eaf
commit da08f8b1c5
4 changed files with 58 additions and 17 deletions

View File

@ -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);
}
}

View File

@ -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;

View File

@ -273,11 +273,26 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
));
add_option (_("Misc"), new OptionEditorHeading (_("Meterbridge Options")));
add_option (_("Misc"), new BoolOption (
"show-busses-in-meterbridge",
"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-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)
));
}

View File

@ -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)