diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-03-09 23:44:39 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-03-09 23:44:39 +0000 |
commit | 8ca43d57fea4e10e20b331f13132dfd9721911a1 (patch) | |
tree | 5c1c47ccceda129734a9409679add60c59ce7ac9 /libs/ardour | |
parent | 1511423e4ec34a56d1e22d6379f08847dcd25e84 (diff) |
new mix group interface, not yet finished and still to propagate to edit_group
git-svn-id: svn://localhost/trunk/ardour2@366 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/route_group.h | 12 | ||||
-rw-r--r-- | libs/ardour/route_group.cc | 29 | ||||
-rw-r--r-- | libs/ardour/session_state.cc | 4 |
3 files changed, 33 insertions, 12 deletions
diff --git a/libs/ardour/ardour/route_group.h b/libs/ardour/ardour/route_group.h index f5c55e184f..c9f966666f 100644 --- a/libs/ardour/ardour/route_group.h +++ b/libs/ardour/ardour/route_group.h @@ -36,6 +36,7 @@ namespace ARDOUR { class Route; class AudioTrack; +class Session; class RouteGroup : public Stateful, public sigc::trackable { public: @@ -45,18 +46,19 @@ class RouteGroup : public Stateful, public sigc::trackable { Hidden = 0x4, }; - RouteGroup(const string &n, Flag f = Flag(0)) : _name (n), _flags (f) {} + RouteGroup (Session& s, const string &n, Flag f = Flag(0)); const string& name() { return _name; } + void set_name (std::string str); bool is_active () const { return _flags & Active; } bool is_relative () const { return _flags & Relative; } bool is_hidden () const { return _flags & Hidden; } bool empty() const {return routes.empty();} - gain_t get_max_factor(gain_t factor); - gain_t get_min_factor(gain_t factor); - + gain_t get_max_factor(gain_t factor); + gain_t get_min_factor(gain_t factor); + int size() { return routes.size();} ARDOUR::Route * first () const { return *routes.begin();} @@ -64,7 +66,6 @@ class RouteGroup : public Stateful, public sigc::trackable { void set_relative (bool yn, void *src); void set_hidden (bool yn, void *src); - int add (Route *); int remove (Route *); @@ -110,6 +111,7 @@ class RouteGroup : public Stateful, public sigc::trackable { int set_state (const XMLNode&); private: + Session& _session; list<Route *> routes; string _name; uint32_t _flags; diff --git a/libs/ardour/route_group.cc b/libs/ardour/route_group.cc index 3d40483634..b9d4972277 100644 --- a/libs/ardour/route_group.cc +++ b/libs/ardour/route_group.cc @@ -34,13 +34,28 @@ using namespace ARDOUR; using namespace sigc; +using namespace std; + +RouteGroup::RouteGroup (Session& s, const string &n, Flag f) + : _session (s), _name (n), _flags (f) +{ +} + +void +RouteGroup::set_name (string str) +{ + _name = str; + _session.set_dirty (); + FlagsChanged (0); /* EMIT SIGNAL */ +} int RouteGroup::add (Route *r) { routes.push_back (r); r->GoingAway.connect (sigc::bind (mem_fun (*this, &RouteGroup::remove_when_going_away), r)); - changed (); /* EMIT SIGNAL */ + _session.set_dirty (); + changed (); /* EMIT SIGNAL */ return 0; } @@ -57,7 +72,8 @@ RouteGroup::remove (Route *r) if ((i = find (routes.begin(), routes.end(), r)) != routes.end()) { routes.erase (i); - changed (); /* EMIT SIGNAL */ + _session.set_dirty (); + changed (); /* EMIT SIGNAL */ return 0; } return -1; @@ -145,7 +161,8 @@ RouteGroup::set_active (bool yn, void *src) } else { _flags &= ~Active; } - FlagsChanged (src); /* EMIT SIGNAL */ + _session.set_dirty (); + FlagsChanged (src); /* EMIT SIGNAL */ } void @@ -160,7 +177,8 @@ RouteGroup::set_relative (bool yn, void *src) } else { _flags &= ~Relative; } - FlagsChanged (src); /* EMIT SIGNAL */ + _session.set_dirty (); + FlagsChanged (src); /* EMIT SIGNAL */ } void @@ -181,7 +199,8 @@ RouteGroup::set_hidden (bool yn, void *src) _flags |= Active; } } - FlagsChanged (src); /* EMIT SIGNAL */ + _session.set_dirty (); + FlagsChanged (src); /* EMIT SIGNAL */ } void diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 731184e8d9..8c34386495 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -2398,7 +2398,7 @@ Session::auto_save() RouteGroup * Session::add_edit_group (string name) { - RouteGroup* rg = new RouteGroup (name); + RouteGroup* rg = new RouteGroup (*this, name); edit_groups.push_back (rg); edit_group_added (rg); /* EMIT SIGNAL */ set_dirty(); @@ -2408,7 +2408,7 @@ Session::add_edit_group (string name) RouteGroup * Session::add_mix_group (string name) { - RouteGroup* rg = new RouteGroup (name, RouteGroup::Relative); + RouteGroup* rg = new RouteGroup (*this, name, RouteGroup::Relative); mix_groups.push_back (rg); mix_group_added (rg); /* EMIT SIGNAL */ set_dirty(); |