diff options
Diffstat (limited to 'gtk2_ardour/editor_route_groups.cc')
-rw-r--r-- | gtk2_ardour/editor_route_groups.cc | 99 |
1 files changed, 51 insertions, 48 deletions
diff --git a/gtk2_ardour/editor_route_groups.cc b/gtk2_ardour/editor_route_groups.cc index 7496d50ccb..2a07ca89c1 100644 --- a/gtk2_ardour/editor_route_groups.cc +++ b/gtk2_ardour/editor_route_groups.cc @@ -252,87 +252,90 @@ EditorRouteGroups::new_route_group () } void -EditorRouteGroups::new_from_selection () +EditorRouteGroups::run_new_group_dialog (const RouteList& rl) { RouteGroup* g = new RouteGroup ( *_session, "", RouteGroup::Active, - (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit | RouteGroup::Select) + (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit | RouteGroup::RecEnable) ); RouteGroupDialog d (g, Gtk::Stock::NEW); int const r = d.do_run (); - if (r == Gtk::RESPONSE_OK) { + switch (r) { + case Gtk::RESPONSE_OK: + case Gtk::RESPONSE_ACCEPT: _session->add_route_group (g); - - for (TrackSelection::iterator i = _editor->get_selection().tracks.begin(); i != _editor->get_selection().tracks.end(); ++i) { - RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); - if (rtv) { - rtv->route()->set_route_group (g, this); - } + for (RouteList::const_iterator i = rl.begin(); i != rl.end(); ++i) { + (*i)->set_route_group (g, this); } - - } else { + break; + default: delete g; } } void -EditorRouteGroups::new_from_rec_enabled () +EditorRouteGroups::new_from_selection () { - RouteGroup* g = new RouteGroup ( - *_session, - "", - RouteGroup::Active, - (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit | RouteGroup::RecEnable) - ); + if (_editor->get_selection().tracks.empty()) { + return; + } - RouteGroupDialog d (g, Gtk::Stock::NEW); - int const r = d.do_run (); + RouteList rl; - if (r == Gtk::RESPONSE_OK) { - _session->add_route_group (g); - - for (Editor::TrackViewList::const_iterator i = _editor->get_track_views().begin(); i != _editor->get_track_views().end(); ++i) { - RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); - if (rtv && rtv->route()->record_enabled()) { - rtv->route()->set_route_group (g, this); - } + for (TrackSelection::iterator i = _editor->get_selection().tracks.begin(); i != _editor->get_selection().tracks.end(); ++i) { + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); + if (rtv) { + rl.push_back (rtv->route()); } + } - } else { - delete g; + if (rl.empty()) { + return; } + + run_new_group_dialog (rl); } void -EditorRouteGroups::new_from_soloed () +EditorRouteGroups::new_from_rec_enabled () { - RouteGroup* g = new RouteGroup ( - *_session, - "", - RouteGroup::Active, - (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit) - ); + RouteList rl; - RouteGroupDialog d (g, Gtk::Stock::NEW); - int const r = d.do_run (); + for (Editor::TrackViewList::const_iterator i = _editor->get_track_views().begin(); i != _editor->get_track_views().end(); ++i) { + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); + if (rtv && rtv->route()->record_enabled()) { + rl.push_back (rtv->route()); + } + } - if (r == Gtk::RESPONSE_OK) { - _session->add_route_group (g); + if (rl.empty()) { + return; + } - for (Editor::TrackViewList::const_iterator i = _editor->get_track_views().begin(); i != _editor->get_track_views().end(); ++i) { - RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); - if (rtv && !rtv->route()->is_master() && rtv->route()->soloed()) { - rtv->route()->set_route_group (g, this); - } + run_new_group_dialog (rl); +} + +void +EditorRouteGroups::new_from_soloed () +{ + RouteList rl; + + for (Editor::TrackViewList::const_iterator i = _editor->get_track_views().begin(); i != _editor->get_track_views().end(); ++i) { + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); + if (rtv && !rtv->route()->is_master() && rtv->route()->soloed()) { + rl.push_back (rtv->route()); } + } - } else { - delete g; + if (rl.empty()) { + return; } + + run_new_group_dialog (rl); } void |