diff options
author | Carl Hetherington <carl@carlh.net> | 2011-09-07 11:56:23 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2011-09-07 11:56:23 +0000 |
commit | 932b0e9ec1d0f7fb506ccd13bf08a4efe5f91297 (patch) | |
tree | 472bc1d117ab0673946fbed601830dd8241108f3 /libs | |
parent | 174c0d6831573f24689b7f1f6d6256583f790da6 (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.h | 6 | ||||
-rw-r--r-- | libs/ardour/ardour/route_group_member.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/session.h | 18 | ||||
-rw-r--r-- | libs/ardour/route_group.cc | 4 | ||||
-rw-r--r-- | libs/ardour/route_group_member.cc | 5 | ||||
-rw-r--r-- | libs/ardour/session.cc | 20 | ||||
-rw-r--r-- | libs/ardour/session_state.cc | 5 |
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 (); } |