add/remove edit groups via buttons (still a bit of work left to do)
git-svn-id: svn://localhost/trunk/ardour2@364 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
@@ -127,9 +127,11 @@ class Route : public IO
|
||||
bool phase_invert() const { return _phase_invert; }
|
||||
|
||||
void set_edit_group (RouteGroup *, void *);
|
||||
void drop_edit_group (void *);
|
||||
RouteGroup *edit_group () { return _edit_group; }
|
||||
|
||||
void set_mix_group (RouteGroup *, void *);
|
||||
void drop_mix_group (void *);
|
||||
RouteGroup *mix_group () { return _mix_group; }
|
||||
|
||||
virtual void set_meter_point (MeterPoint, void *src);
|
||||
|
||||
@@ -69,9 +69,15 @@ class RouteGroup : public Stateful, public sigc::trackable {
|
||||
|
||||
int remove (Route *);
|
||||
|
||||
void apply (void (Route::*func)(void *), void *src) {
|
||||
for (list<Route *>::iterator i = routes.begin(); i != routes.end(); i++) {
|
||||
((*i)->*func)(src);
|
||||
}
|
||||
}
|
||||
|
||||
template<class T> void apply (void (Route::*func)(T, void *), T val, void *src) {
|
||||
for (list<Route *>::iterator i = routes.begin(); i != routes.end(); i++) {
|
||||
((*i)->*func)(val, this);
|
||||
((*i)->*func)(val, src);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -505,11 +505,16 @@ class Session : public sigc::trackable, public Stateful
|
||||
RouteGroup* add_edit_group (string);
|
||||
RouteGroup* add_mix_group (string);
|
||||
|
||||
void remove_edit_group (RouteGroup&);
|
||||
void remove_mix_group (RouteGroup&);
|
||||
|
||||
RouteGroup *mix_group_by_name (string);
|
||||
RouteGroup *edit_group_by_name (string);
|
||||
|
||||
sigc::signal<void,RouteGroup*> edit_group_added;
|
||||
sigc::signal<void,RouteGroup*> mix_group_added;
|
||||
sigc::signal<void> edit_group_removed;
|
||||
sigc::signal<void> mix_group_removed;
|
||||
|
||||
void foreach_edit_group (sigc::slot<void,RouteGroup*> sl) {
|
||||
for (list<RouteGroup *>::iterator i = edit_groups.begin(); i != edit_groups.end(); i++) {
|
||||
|
||||
@@ -1833,16 +1833,27 @@ void
|
||||
Route::set_edit_group (RouteGroup *eg, void *src)
|
||||
|
||||
{
|
||||
if (eg == _edit_group) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (_edit_group) {
|
||||
_edit_group->remove (this);
|
||||
}
|
||||
|
||||
if ((_edit_group = eg)) {
|
||||
if ((_edit_group = eg) != 0) {
|
||||
_edit_group->add (this);
|
||||
}
|
||||
|
||||
_session.set_dirty ();
|
||||
edit_group_changed (src); /* EMIT SIGNAL */
|
||||
}
|
||||
|
||||
void
|
||||
Route::drop_edit_group (void *src)
|
||||
{
|
||||
_edit_group = 0;
|
||||
_session.set_dirty ();
|
||||
edit_group_changed (src); /* EMIT SIGNAL */
|
||||
}
|
||||
|
||||
@@ -1850,16 +1861,27 @@ void
|
||||
Route::set_mix_group (RouteGroup *mg, void *src)
|
||||
|
||||
{
|
||||
if (mg == _mix_group) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (_mix_group) {
|
||||
_mix_group->remove (this);
|
||||
}
|
||||
|
||||
if ((_mix_group = mg)) {
|
||||
if ((_mix_group = mg) != 0) {
|
||||
_mix_group->add (this);
|
||||
}
|
||||
|
||||
_session.set_dirty ();
|
||||
|
||||
mix_group_changed (src); /* EMIT SIGNAL */
|
||||
}
|
||||
|
||||
void
|
||||
Route::drop_mix_group (void *src)
|
||||
{
|
||||
_mix_group = 0;
|
||||
_session.set_dirty ();
|
||||
mix_group_changed (src); /* EMIT SIGNAL */
|
||||
}
|
||||
|
||||
|
||||
@@ -2415,6 +2415,34 @@ Session::add_mix_group (string name)
|
||||
return rg;
|
||||
}
|
||||
|
||||
void
|
||||
Session::remove_edit_group (RouteGroup& rg)
|
||||
{
|
||||
list<RouteGroup*>::iterator i;
|
||||
|
||||
if ((i = find (edit_groups.begin(), edit_groups.end(), &rg)) != edit_groups.end()) {
|
||||
(*i)->apply (&Route::drop_edit_group, this);
|
||||
edit_groups.erase (i);
|
||||
edit_group_removed (); /* EMIT SIGNAL */
|
||||
}
|
||||
|
||||
delete &rg;
|
||||
}
|
||||
|
||||
void
|
||||
Session::remove_mix_group (RouteGroup& rg)
|
||||
{
|
||||
list<RouteGroup*>::iterator i;
|
||||
|
||||
if ((i = find (mix_groups.begin(), mix_groups.end(), &rg)) != mix_groups.end()) {
|
||||
(*i)->apply (&Route::drop_mix_group, this);
|
||||
mix_groups.erase (i);
|
||||
mix_group_removed (); /* EMIT SIGNAL */
|
||||
}
|
||||
|
||||
delete &rg;
|
||||
}
|
||||
|
||||
RouteGroup *
|
||||
Session::mix_group_by_name (string name)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user