- _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..."), sigc::mem_fun (*this, &EditorRouteGroups::new_from_selection)));
- f.push_back (MenuElem (_("Record Enabled..."), sigc::mem_fun (*this, &EditorRouteGroups::new_from_rec_enabled)));
- f.push_back (MenuElem (_("Soloed..."), sigc::mem_fun (*this, &EditorRouteGroups::new_from_soloed)));
-
- _menu = new Menu;
- _menu->set_name ("ArdourContextMenu");
- MenuList& items = _menu->items();
-
- items.push_back (MenuElem (_("New..."), hide_return (sigc::mem_fun(*this, &EditorRouteGroups::new_route_group))));
- items.push_back (MenuElem (_("New From"), *new_from));
- if (g) {
- items.push_back (MenuElem (_("Edit..."), sigc::bind (sigc::mem_fun (*this, &EditorRouteGroups::edit), g)));
- items.push_back (MenuElem (_("Fit to Window"), sigc::bind (sigc::mem_fun (*_editor, &Editor::fit_route_group), g)));
- items.push_back (MenuElem (_("Subgroup"), sigc::bind (sigc::mem_fun (*this, &EditorRouteGroups::subgroup), g)));
- items.push_back (MenuElem (_("Collect"), sigc::bind (sigc::mem_fun (*this, &EditorRouteGroups::collect), g)));
- }
- items.push_back (SeparatorElem());
- items.push_back (MenuElem (_("Activate All"), sigc::mem_fun(*this, &EditorRouteGroups::activate_all)));
- items.push_back (MenuElem (_("Disable All"), sigc::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 (
- sigc::bind (sigc::mem_fun (*this, &EditorRouteGroups::set_activation), true)
- );
-}
-
-void
-EditorRouteGroups::disable_all ()
-{
- _session->foreach_route_group (
- sigc::bind (sigc::mem_fun (*this, &EditorRouteGroups::set_activation), false)
- );
-}
-
-void
-EditorRouteGroups::set_activation (RouteGroup* g, bool a)
-{
- g->set_active (a, this);
-}
-
-ARDOUR::RouteGroup *
-EditorRouteGroups::new_route_group () const
-{
- PropertyList plist;
-
- plist.add (Properties::active, true);
- plist.add (Properties::mute, true);
- plist.add (Properties::solo, true);
- plist.add (Properties::edit, true);
-
- RouteGroup* g = new RouteGroup (*_session, "");
-
- g->set_properties (plist);
-
- RouteGroupDialog d (g, Gtk::Stock::NEW);
- int const r = d.do_run ();
-
- if (r != Gtk::RESPONSE_OK) {
- delete g;
- return 0;
- }
-
- _session->add_route_group (g);
- return g;
-}
-void
-EditorRouteGroups::run_new_group_dialog (const RouteList& rl)
-{
- PropertyList plist;
-
- plist.add (Properties::active, true);
- plist.add (Properties::mute, true);
- plist.add (Properties::solo, true);
- plist.add (Properties::recenable, true);
- plist.add (Properties::edit, true);
-
- RouteGroup* g = new RouteGroup (*_session, "");
- g->set_properties (plist);
-
- RouteGroupDialog d (g, Gtk::Stock::NEW);
- int const r = d.do_run ();
-
- switch (r) {
- case Gtk::RESPONSE_OK:
- case Gtk::RESPONSE_ACCEPT:
- _session->add_route_group (g);
- for (RouteList::const_iterator i = rl.begin(); i != rl.end(); ++i) {
- g->add (*i);
- }
- break;
- default:
- delete g;
- }
-}
-
-void
-EditorRouteGroups::new_from_selection ()
-{
- if (_editor->get_selection().tracks.empty()) {
- return;
- }
-
- RouteList rl;
-
- 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());
- }
- }
-
- if (rl.empty()) {
- return;
- }
-
- run_new_group_dialog (rl);
-}
-
-void
-EditorRouteGroups::new_from_rec_enabled ()
-{
- RouteList rl;
-
- for (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 (rl.empty()) {
- return;
- }
-
- run_new_group_dialog (rl);
-}
-
-void
-EditorRouteGroups::new_from_soloed ()
-{
- RouteList rl;
-
- for (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());
- }
- }
-
- if (rl.empty()) {
- return;
- }
-
- run_new_group_dialog (rl);
-}
-
-void
-EditorRouteGroups::edit (RouteGroup* g)
-{
- RouteGroupDialog d (g, Gtk::Stock::APPLY);
- d.do_run ();