Add operator<< for bundles.
[ardour.git] / gtk2_ardour / route_group_menu.cc
index c8ef0a260b1485789470b0c796ad088c53fae803..123d925a8e8e7dc699ec7753c6664c578158b53d 100644 (file)
 
 using namespace Gtk;
 using namespace ARDOUR;
+using namespace PBD;
 
-RouteGroupMenu::RouteGroupMenu (Session* s, RouteGroup::Property p)
+RouteGroupMenu::RouteGroupMenu (Session* s, PropertyList* plist)
        : SessionHandlePtr (s)
-       , _default_properties (p)
+       , _default_properties (plist)
        , _inhibit_group_selected (false)
        , _selected_route_group (0)
 {
        rebuild (0);
 }
 
+RouteGroupMenu::~RouteGroupMenu()
+{
+       delete _default_properties; 
+}
+
 void
 RouteGroupMenu::rebuild (RouteGroup* curr)
 {
@@ -77,6 +83,9 @@ RouteGroupMenu::add_item (RouteGroup* rg, RouteGroup* curr, RadioMenuItem::Group
        }
 }
 
+/** Called when a group is selected from the menu.
+ *  @param Group, or 0 for none.
+ */
 void
 RouteGroupMenu::set_group (RouteGroup* g)
 {
@@ -101,15 +110,15 @@ RouteGroupMenu::new_group ()
                return;
        }
 
-       RouteGroup* g = new RouteGroup (*_session, "", RouteGroup::Active, _default_properties);
+       RouteGroup* g = new RouteGroup (*_session, "");
+       g->apply_changes (*_default_properties);
 
-       RouteGroupDialog d (g, Gtk::Stock::NEW);
-       int const r = d.do_run ();
+       RouteGroupDialog d (g, true);
 
-       if (r == Gtk::RESPONSE_OK) {
+       if (d.do_run ()) {
+               delete g;
+       } else {
                _session->add_route_group (g);
                set_group (g);
-       } else {
-               delete g;
        }
 }