summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-09-07 11:56:23 +0000
committerCarl Hetherington <carl@carlh.net>2011-09-07 11:56:23 +0000
commit932b0e9ec1d0f7fb506ccd13bf08a4efe5f91297 (patch)
tree472bc1d117ab0673946fbed601830dd8241108f3 /libs
parent174c0d6831573f24689b7f1f6d6256583f790da6 (diff)
Update route colours when they are added to / removed
from groups which share colour (more of #4064). git-svn-id: svn://localhost/ardour2/branches/3.0@10060 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/route_group.h6
-rw-r--r--libs/ardour/ardour/route_group_member.h2
-rw-r--r--libs/ardour/ardour/session.h18
-rw-r--r--libs/ardour/route_group.cc4
-rw-r--r--libs/ardour/route_group_member.cc5
-rw-r--r--libs/ardour/session.cc20
-rw-r--r--libs/ardour/session_state.cc5
7 files changed, 45 insertions, 15 deletions
diff --git a/libs/ardour/ardour/route_group.h b/libs/ardour/ardour/route_group.h
index 1f6be864cd..22e527ff9e 100644
--- a/libs/ardour/ardour/route_group.h
+++ b/libs/ardour/ardour/route_group.h
@@ -123,8 +123,10 @@ class RouteGroup : public SessionObject
boost::shared_ptr<RouteList> route_list() { return routes; }
- /** Emitted when a route has been added to or removed from this group */
- PBD::Signal0<void> MembershipChanged;
+ /** Emitted when a route has been added to this group */
+ PBD::Signal2<void, RouteGroup *, boost::weak_ptr<ARDOUR::Route> > RouteAdded;
+ /** Emitted when a route has been removed from this group */
+ PBD::Signal2<void, RouteGroup *, boost::weak_ptr<ARDOUR::Route> > RouteRemoved;
XMLNode& get_state ();
diff --git a/libs/ardour/ardour/route_group_member.h b/libs/ardour/ardour/route_group_member.h
index ff99d27c13..860b836209 100644
--- a/libs/ardour/ardour/route_group_member.h
+++ b/libs/ardour/ardour/route_group_member.h
@@ -34,7 +34,7 @@ class RouteGroupMember
RouteGroup* route_group () const { return _route_group; }
/** Emitted when this member joins or leaves a route group */
- PBD::Signal0<void> route_group_changed;
+ PBD::Signal1<void, RouteGroup *> route_group_changed;
protected:
RouteGroup* _route_group;
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index 1daa82dc48..cafcd4382f 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -289,8 +289,18 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
PBD::Signal0<void> Located;
PBD::Signal1<void,RouteList&> RouteAdded;
- /** Emitted when anything about any of our route groups changes */
- PBD::Signal0<void> RouteGroupChanged;
+ /** Emitted when a property of one of our route groups changes.
+ * The parameter is the RouteGroup that has changed.
+ */
+ PBD::Signal1<void, RouteGroup *> RouteGroupPropertyChanged;
+ /** Emitted when a route is added to one of our route groups.
+ * First parameter is the RouteGroup, second is the route.
+ */
+ PBD::Signal2<void, RouteGroup *, boost::weak_ptr<Route> > RouteAddedToRouteGroup;
+ /** Emitted when a route is removed from one of our route groups.
+ * First parameter is the RouteGroup, second is the route.
+ */
+ PBD::Signal2<void, RouteGroup *, boost::weak_ptr<Route> > RouteRemovedFromRouteGroup;
/* Step Editing status changed */
PBD::Signal1<void,bool> StepEditStatusChange;
@@ -1234,7 +1244,9 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
int load_regions (const XMLNode& node);
int load_compounds (const XMLNode& node);
- void route_group_changed ();
+ void route_added_to_route_group (RouteGroup *, boost::weak_ptr<Route>);
+ void route_removed_from_route_group (RouteGroup *, boost::weak_ptr<Route>);
+ void route_group_property_changed (RouteGroup *);
/* SOURCES */
diff --git a/libs/ardour/route_group.cc b/libs/ardour/route_group.cc
index 0806ad7730..42aa30c0f1 100644
--- a/libs/ardour/route_group.cc
+++ b/libs/ardour/route_group.cc
@@ -144,7 +144,7 @@ RouteGroup::add (boost::shared_ptr<Route> r)
r->DropReferences.connect_same_thread (*this, boost::bind (&RouteGroup::remove_when_going_away, this, boost::weak_ptr<Route> (r)));
_session.set_dirty ();
- MembershipChanged (); /* EMIT SIGNAL */
+ RouteAdded (this, boost::weak_ptr<Route> (r)); /* EMIT SIGNAL */
return 0;
}
@@ -167,7 +167,7 @@ RouteGroup::remove (boost::shared_ptr<Route> r)
r->leave_route_group ();
routes->erase (i);
_session.set_dirty ();
- MembershipChanged (); /* EMIT SIGNAL */
+ RouteRemoved (this, boost::weak_ptr<Route> (r)); /* EMIT SIGNAL */
return 0;
}
diff --git a/libs/ardour/route_group_member.cc b/libs/ardour/route_group_member.cc
index e4075df689..9b23fd922b 100644
--- a/libs/ardour/route_group_member.cc
+++ b/libs/ardour/route_group_member.cc
@@ -31,13 +31,14 @@ RouteGroupMember::join_route_group (RouteGroup *rg)
}
_route_group = rg;
- route_group_changed (); /* EMIT SIGNAL */
+ route_group_changed (rg); /* EMIT SIGNAL */
}
void
RouteGroupMember::leave_route_group ()
{
+ RouteGroup* rg = _route_group;
_route_group = 0;
- route_group_changed (); /* EMIT SIGNAL */
+ route_group_changed (rg); /* EMIT SIGNAL */
}
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 9053797ad2..c5b32b943b 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -4033,11 +4033,25 @@ Session::solo_control_mode_changed ()
}
}
-/** Called when anything about any of our route groups changes (membership, state etc.) */
+/** Called when a property of one of our route groups changes */
void
-Session::route_group_changed ()
+Session::route_group_property_changed (RouteGroup* rg)
{
- RouteGroupChanged (); /* EMIT SIGNAL */
+ RouteGroupPropertyChanged (rg); /* EMIT SIGNAL */
+}
+
+/** Called when a route is added to one of our route groups */
+void
+Session::route_added_to_route_group (RouteGroup* rg, boost::weak_ptr<Route> r)
+{
+ RouteAddedToRouteGroup (rg, r);
+}
+
+/** Called when a route is removed from one of our route groups */
+void
+Session::route_removed_from_route_group (RouteGroup* rg, boost::weak_ptr<Route> r)
+{
+ RouteRemovedFromRouteGroup (rg, r);
}
vector<SyncSource>
diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc
index 074527dc33..e43be3cd44 100644
--- a/libs/ardour/session_state.cc
+++ b/libs/ardour/session_state.cc
@@ -2388,8 +2388,9 @@ Session::add_route_group (RouteGroup* g)
_route_groups.push_back (g);
route_group_added (g); /* EMIT SIGNAL */
- g->MembershipChanged.connect_same_thread (*this, boost::bind (&Session::route_group_changed, this));
- g->PropertyChanged.connect_same_thread (*this, boost::bind (&Session::route_group_changed, this));
+ g->RouteAdded.connect_same_thread (*this, boost::bind (&Session::route_added_to_route_group, this, _1, _2));
+ g->RouteRemoved.connect_same_thread (*this, boost::bind (&Session::route_removed_from_route_group, this, _1, _2));
+ g->PropertyChanged.connect_same_thread (*this, boost::bind (&Session::route_group_property_changed, this, g));
set_dirty ();
}