summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-03-09 23:44:39 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-03-09 23:44:39 +0000
commit8ca43d57fea4e10e20b331f13132dfd9721911a1 (patch)
tree5c1c47ccceda129734a9409679add60c59ce7ac9 /libs/ardour
parent1511423e4ec34a56d1e22d6379f08847dcd25e84 (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.h12
-rw-r--r--libs/ardour/route_group.cc29
-rw-r--r--libs/ardour/session_state.cc4
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();