stereo and mono panner tweaks to use cairomm and rounded rectangles and more
[ardour.git] / gtk2_ardour / group_tabs.cc
index f899e8fa789f035796374cb1848e2fc82d9ce99f..297698e85c9d27e14d27bc1e4f8ab6b19de9ef41 100644 (file)
@@ -53,6 +53,7 @@ GroupTabs::set_session (Session* s)
 
        if (_session) {
                _session->RouteGroupChanged.connect (_session_connections, invalidator (*this), boost::bind (&GroupTabs::set_dirty, this), gui_context());
+               _session->route_group_removed.connect (_session_connections, invalidator (*this), boost::bind (&GroupTabs::set_dirty, this), gui_context());
        }
 }
 
@@ -172,7 +173,7 @@ GroupTabs::on_button_release_event (GdkEventButton* ev)
                        if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
                                
                                /* edit */
-                               RouteGroupDialog d (_dragging->group, Gtk::Stock::APPLY);
+                               RouteGroupDialog d (_dragging->group, false);
                                d.do_run ();
                                
                        } else {
@@ -278,7 +279,7 @@ GroupTabs::click_to_tab (double c, list<Tab>::iterator* prev, list<Tab>::iterato
                *next = i;
 
                if (under) {
-                       *next++;
+                       (*next)++;
                }
        }
 
@@ -307,7 +308,9 @@ GroupTabs::get_menu (RouteGroup* g)
        
        if (g) {
                items.push_back (MenuElem (_("Edit..."), sigc::bind (sigc::mem_fun (*this, &GroupTabs::edit_group), g)));
-               items.push_back (MenuElem (_("Subgroup"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g)));
+               items.push_back (MenuElem (_("Add New Subgroup Bus"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, false, PreFader)));
+               items.push_back (MenuElem (_("Add New Aux Bus (pre-fader)"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, true, PreFader)));
+               items.push_back (MenuElem (_("Add New Aux Bus (post-fader)"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, true, PostFader)));
                items.push_back (MenuElem (_("Collect"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::collect), g)));
                items.push_back (MenuElem (_("Remove"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::remove_group), g)));
        }
@@ -371,28 +374,23 @@ GroupTabs::new_from_soloed ()
        }
 
        run_new_group_dialog (soloed);
-
 }
 
 void
 GroupTabs::run_new_group_dialog (RouteList const & rl)
 {
        RouteGroup* g = new RouteGroup (*_session, "");
-       g->set_properties (default_properties ());
+       g->apply_changes (default_properties ());
 
-       RouteGroupDialog d (g, Gtk::Stock::NEW);
-       int const r = d.do_run ();
+       RouteGroupDialog d (g, true);
 
-       switch (r) {
-       case Gtk::RESPONSE_OK:
-       case Gtk::RESPONSE_ACCEPT:
+       if (d.do_run ()) {
+               delete g;
+       } else {
                _session->add_route_group (g);
                for (RouteList::const_iterator i = rl.begin(); i != rl.end(); ++i) {
                        g->add (*i);
                }
-               break;
-       default:
-               delete g;
        }
 }
 
@@ -401,12 +399,11 @@ GroupTabs::create_and_add_group () const
 {
        RouteGroup* g = new RouteGroup (*_session, "");
 
-       g->set_properties (default_properties ());
+       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;
                return 0;
        }
@@ -418,14 +415,14 @@ GroupTabs::create_and_add_group () const
 void
 GroupTabs::edit_group (RouteGroup* g)
 {
-       RouteGroupDialog d (g, Gtk::Stock::APPLY);
+       RouteGroupDialog d (g, false);
        d.do_run ();
 }
 
 void
-GroupTabs::subgroup (RouteGroup* g)
+GroupTabs::subgroup (RouteGroup* g, bool aux, Placement placement)
 {
-       g->make_subgroup ();
+       g->make_subgroup (aux, placement);
 }
 
 struct CollectSorter {