summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/group_tabs.cc12
-rw-r--r--gtk2_ardour/group_tabs.h1
-rw-r--r--libs/ardour/ardour/route_group.h1
-rw-r--r--libs/ardour/route_group.cc6
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);