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
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user