expose operation to remove subgroup
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 3 Jan 2013 19:34:07 +0000 (19:34 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 3 Jan 2013 19:34:07 +0000 (19:34 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@13762 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/group_tabs.cc
gtk2_ardour/group_tabs.h
libs/ardour/ardour/route_group.h
libs/ardour/route_group.cc

index d53b90584695111dcb528107d4f353beea3c7570..1332d4ba10d7d81039a9ecd45a10cb187cd49277 100644 (file)
@@ -319,7 +319,11 @@ GroupTabs::get_menu (RouteGroup* g)
                items.push_back (MenuElem (_("Collect Group"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::collect), g)));
                items.push_back (MenuElem (_("Remove Group"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::remove_group), g)));
                items.push_back (SeparatorElem());
-               items.push_back (MenuElem (_("Add New Subgroup Bus"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, false, PreFader)));
+               if (g->has_subgroup()) {
+                       items.push_back (MenuElem (_("Remove Subgroup Bus"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::un_subgroup), g)));
+               } else {
+                       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)));
        }
@@ -434,6 +438,12 @@ GroupTabs::subgroup (RouteGroup* g, bool aux, Placement placement)
        g->make_subgroup (aux, placement);
 }
 
+void
+GroupTabs::un_subgroup (RouteGroup* g)
+{
+       g->destroy_subgroup ();
+}
+
 struct CollectSorter {
        CollectSorter (RouteSortOrderKey key) : _key (key) {}
 
index fa6a7bac532bcddf84f43b8516bf5dabe5628bb6..39ac42c9d5d7ab8582887ac32e34bb6ebbd39b42 100644 (file)
@@ -104,6 +104,7 @@ private:
        void set_activation (ARDOUR::RouteGroup *, bool);
        void edit_group (ARDOUR::RouteGroup *);
        void subgroup (ARDOUR::RouteGroup *, bool, ARDOUR::Placement);
+        void un_subgroup (ARDOUR::RouteGroup *);
        void activate_all ();
        void disable_all ();
        void remove_group (ARDOUR::RouteGroup *);
index 1f12c57f8d37f52d97d9d238be2caa80817b894f..2f62193d83843cbdd79a500b91310b434dee20c4 100644 (file)
@@ -118,6 +118,7 @@ class RouteGroup : public SessionObject
                changed();
        }
 
+        bool has_subgroup() const;
        void make_subgroup (bool, Placement);
        void destroy_subgroup ();
 
index 55183bd0b8424b676878bafaa530bdf5b0cab262..23b745892e9037cb32df91184f954bdae4dda1fc 100644 (file)
@@ -506,6 +506,12 @@ RouteGroup::destroy_subgroup ()
        subgroup_bus.reset ();
 }
 
+bool
+RouteGroup::has_subgroup() const
+{
+       return subgroup_bus != 0;
+}
+
 bool
 RouteGroup::enabled_property (PBD::PropertyID prop)
 {