- _display_packer->pack_start (_scroller, true, true);
- _display_packer->pack_start (*button_box, false, false);
-}
-
-
-Gtk::Menu*
-EditorRouteGroups::menu (RouteGroup* g)
-{
- using namespace Gtk::Menu_Helpers;
-
- delete _menu;
-
- Menu* new_from = new Menu;
- MenuList& f = new_from->items ();
- f.push_back (MenuElem (_("Selection..."), mem_fun (*this, &EditorRouteGroups::new_from_selection)));
- f.push_back (MenuElem (_("Record Enabled..."), mem_fun (*this, &EditorRouteGroups::new_from_rec_enabled)));
- f.push_back (MenuElem (_("Soloed..."), mem_fun (*this, &EditorRouteGroups::new_from_soloed)));
-
- _menu = new Menu;
- _menu->set_name ("ArdourContextMenu");
- MenuList& items = _menu->items();
-
- items.push_back (MenuElem (_("New..."), mem_fun(*this, &EditorRouteGroups::new_route_group)));
- items.push_back (MenuElem (_("New From"), *new_from));
- if (g) {
- items.push_back (MenuElem (_("Edit..."), bind (mem_fun (*this, &EditorRouteGroups::edit), g)));
- items.push_back (MenuElem (_("Fit to Window"), bind (mem_fun (*_editor, &Editor::fit_route_group), g)));
- items.push_back (MenuElem (_("Subgroup"), bind (mem_fun (*this, &EditorRouteGroups::subgroup), g)));
- items.push_back (MenuElem (_("Collect"), bind (mem_fun (*this, &EditorRouteGroups::collect), g)));
- }
- items.push_back (SeparatorElem());
- items.push_back (MenuElem (_("Activate All"), mem_fun(*this, &EditorRouteGroups::activate_all)));
- items.push_back (MenuElem (_("Disable All"), mem_fun(*this, &EditorRouteGroups::disable_all)));
-
- return _menu;
-}
-
-void
-EditorRouteGroups::subgroup (RouteGroup* g)
-{
- g->make_subgroup ();
-}
-
-void
-EditorRouteGroups::unsubgroup (RouteGroup* g)
-{
- g->destroy_subgroup ();
-}
-
-void
-EditorRouteGroups::activate_all ()
-{
- _session->foreach_route_group (
- bind (mem_fun (*this, &EditorRouteGroups::set_activation), true)
- );
-}
-
-void
-EditorRouteGroups::disable_all ()
-{
- _session->foreach_route_group (
- bind (mem_fun (*this, &EditorRouteGroups::set_activation), false)
- );
-}
-
-void
-EditorRouteGroups::set_activation (RouteGroup* g, bool a)
-{
- g->set_active (a, this);
-}
-
-void
-EditorRouteGroups::new_route_group ()
-{
- RouteGroup* g = new RouteGroup (
- *_session,
- "",
- RouteGroup::Active,
- (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit)
- );
-
- RouteGroupDialog d (g, Gtk::Stock::NEW);
- int const r = d.do_run ();
-
- if (r == Gtk::RESPONSE_OK) {
- _session->add_route_group (g);
- } else {
- delete g;
- }
-}
-
-void
-EditorRouteGroups::new_from_selection ()
-{
- RouteGroup* g = new RouteGroup (
- *_session,
- "",
- RouteGroup::Active,
- (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit | RouteGroup::Select)
- );
-
- RouteGroupDialog d (g, Gtk::Stock::NEW);
- int const r = d.do_run ();
-
- if (r == Gtk::RESPONSE_OK) {
- _session->add_route_group (g);
-
- for (TrackSelection::iterator i = _editor->get_selection().tracks.begin(); i != _editor->get_selection().tracks.end(); ++i) {
- RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i);
- if (rtv) {
- rtv->route()->set_route_group (g, this);
- }
- }
-
- } else {
- delete g;
- }
-}
-
-void
-EditorRouteGroups::new_from_rec_enabled ()
-{
- RouteGroup* g = new RouteGroup (
- *_session,
- "",
- RouteGroup::Active,
- (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) {
- _session->add_route_group (g);
-
- for (Editor::TrackViewList::const_iterator i = _editor->get_track_views().begin(); i != _editor->get_track_views().end(); ++i) {
- RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i);
- if (rtv && rtv->route()->record_enabled()) {
- rtv->route()->set_route_group (g, this);
- }
- }
-
- } else {
- delete g;
- }
-}
-
-void
-EditorRouteGroups::new_from_soloed ()
-{
- RouteGroup* g = new RouteGroup (
- *_session,
- "",
- RouteGroup::Active,
- (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit)
- );
-
- RouteGroupDialog d (g, Gtk::Stock::NEW);
- int const r = d.do_run ();
-
- 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) {
- RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i);
- if (rtv && !rtv->route()->is_master() && rtv->route()->soloed()) {
- rtv->route()->set_route_group (g, this);
- }
- }
-
- } else {
- delete g;
- }
-}
-
-void
-EditorRouteGroups::edit (RouteGroup* g)
-{
- RouteGroupDialog d (g, Gtk::Stock::APPLY);
- d.do_run ();