diff options
-rw-r--r-- | gtk2_ardour/group_tabs.cc | 12 | ||||
-rw-r--r-- | gtk2_ardour/group_tabs.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/route_group.h | 1 | ||||
-rw-r--r-- | libs/ardour/route_group.cc | 6 |
4 files changed, 19 insertions, 1 deletions
diff --git a/gtk2_ardour/group_tabs.cc b/gtk2_ardour/group_tabs.cc index d53b905846..1332d4ba10 100644 --- a/gtk2_ardour/group_tabs.cc +++ b/gtk2_ardour/group_tabs.cc @@ -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) {} diff --git a/gtk2_ardour/group_tabs.h b/gtk2_ardour/group_tabs.h index fa6a7bac53..39ac42c9d5 100644 --- a/gtk2_ardour/group_tabs.h +++ b/gtk2_ardour/group_tabs.h @@ -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 *); diff --git a/libs/ardour/ardour/route_group.h b/libs/ardour/ardour/route_group.h index 1f12c57f8d..2f62193d83 100644 --- a/libs/ardour/ardour/route_group.h +++ b/libs/ardour/ardour/route_group.h @@ -118,6 +118,7 @@ class RouteGroup : public SessionObject changed(); } + bool has_subgroup() const; void make_subgroup (bool, Placement); void destroy_subgroup (); diff --git a/libs/ardour/route_group.cc b/libs/ardour/route_group.cc index 55183bd0b8..23b745892e 100644 --- a/libs/ardour/route_group.cc +++ b/libs/ardour/route_group.cc @@ -507,6 +507,12 @@ RouteGroup::destroy_subgroup () } bool +RouteGroup::has_subgroup() const +{ + return subgroup_bus != 0; +} + +bool RouteGroup::enabled_property (PBD::PropertyID prop) { OwnedPropertyList::iterator i = _properties->find (prop); |