#include <cstdlib>
#include <cmath>
-#include <gtkmm2ext/stop_signal.h>
#include <gtkmm2ext/gtk_ui.h>
#include "ardour/route_group.h"
ARDOUR::RouteGroup *
EditorRouteGroups::new_route_group () const
{
- RouteGroup* g = new RouteGroup (
- *_session,
- "",
- RouteGroup::Active,
- (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit)
- );
+ PropertyList plist;
+
+ plist.add (Properties::active, true);
+ plist.add (Properties::mute, true);
+ plist.add (Properties::solo, true);
+ plist.add (Properties::edit, true);
+
+ RouteGroup* g = new RouteGroup (*_session, "");
+
+ g->set_properties (plist);
RouteGroupDialog d (g, Gtk::Stock::NEW);
int const r = d.do_run ();
void
EditorRouteGroups::run_new_group_dialog (const RouteList& rl)
{
- RouteGroup* g = new RouteGroup (
- *_session,
- "",
- RouteGroup::Active,
- (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit | RouteGroup::RecEnable)
- );
+ PropertyList plist;
+
+ plist.add (Properties::active, true);
+ plist.add (Properties::mute, true);
+ plist.add (Properties::solo, true);
+ plist.add (Properties::recenable, true);
+ plist.add (Properties::edit, true);
+
+ RouteGroup* g = new RouteGroup (*_session, "");
+ g->set_properties (plist);
RouteGroupDialog d (g, Gtk::Stock::NEW);
int const r = d.do_run ();
} else {
for (TrackViewList::const_iterator j = _editor->get_track_views().begin(); j != _editor->get_track_views().end(); ++j) {
if ((*j)->route_group() == group) {
- _editor->hide_track_in_display (**j);
+ _editor->hide_track_in_display (*j);
}
}
}
- group->set_property (RouteGroup::Gain, (*iter)[_columns.gain]);
- group->set_property (RouteGroup::RecEnable, (*iter)[_columns.record]);
- group->set_property (RouteGroup::Mute, (*iter)[_columns.mute]);
- group->set_property (RouteGroup::Solo, (*iter)[_columns.solo]);
- group->set_property (RouteGroup::Select, (*iter)[_columns.select]);
- group->set_property (RouteGroup::Edit, (*iter)[_columns.edits]);
-
- string name = (*iter)[_columns.text];
-
- if (name != group->name()) {
- group->set_name (name);
- }
+ PropertyList plist;
+ bool val = (*iter)[_columns.gain];
+ plist.add (Properties::gain, val);
+ val = (*iter)[_columns.record];
+ plist.add (Properties::recenable, val);
+ val = (*iter)[_columns.mute];
+ plist.add (Properties::mute, val);
+ val = (*iter)[_columns.solo];
+ plist.add (Properties::solo, val);
+ val = (*iter)[_columns.select];
+ plist.add (Properties::select, val);
+ val = (*iter)[_columns.edits];
+ plist.add (Properties::edit, val);
+ plist.add (Properties::name, string ((*iter)[_columns.text]));
+
+ group->set_hidden (!(*iter)[_columns.is_visible], this);
+
+ group->set_properties (plist);
}
void
TreeModel::Row row = *(_model->append());
row[_columns.is_visible] = !group->is_hidden();
- row[_columns.gain] = group->property(RouteGroup::Gain);
- row[_columns.record] = group->property(RouteGroup::RecEnable);
- row[_columns.mute] = group->property(RouteGroup::Mute);
- row[_columns.solo] = group->property(RouteGroup::Solo);
- row[_columns.select] = group->property(RouteGroup::Select);
- row[_columns.edits] = group->property(RouteGroup::Edit);
+ row[_columns.gain] = group->is_gain ();
+ row[_columns.record] = group->is_recenable();
+ row[_columns.mute] = group->is_mute ();
+ row[_columns.solo] = group->is_solo ();
+ row[_columns.select] = group->is_select ();
+ row[_columns.edits] = group->is_edit ();
_in_row_change = true;
focus = true;
}
- group->FlagsChanged.connect (flags_connection, ui_bind (&EditorRouteGroups::flags_changed, this, _1, group), gui_context());
+ group->PropertyChanged.connect (property_changed_connection, MISSING_INVALIDATOR, ui_bind (&EditorRouteGroups::property_changed, this, group, _1), gui_context());
if (focus) {
TreeViewColumn* col = _display.get_column (0);
}
void
-EditorRouteGroups::flags_changed (void* src, RouteGroup* group)
+EditorRouteGroups::property_changed (RouteGroup* group, const PropertyChange& change)
{
- ENSURE_GUI_THREAD (*this, &EditorRouteGroups::flags_changed, src, group)
-
_in_row_change = true;
Gtk::TreeModel::Children children = _model->children();
if (group == (*iter)[_columns.routegroup]) {
(*iter)[_columns.is_visible] = !group->is_hidden();
(*iter)[_columns.text] = group->name();
- (*iter)[_columns.gain] = group->property(RouteGroup::Gain);
- (*iter)[_columns.record] = group->property(RouteGroup::RecEnable);
- (*iter)[_columns.mute] = group->property(RouteGroup::Mute);
- (*iter)[_columns.solo] = group->property(RouteGroup::Solo);
- (*iter)[_columns.select] = group->property(RouteGroup::Select);
- (*iter)[_columns.edits] = group->property(RouteGroup::Edit);
+ (*iter)[_columns.gain] = group->is_gain ();
+ (*iter)[_columns.record] = group->is_recenable ();
+ (*iter)[_columns.mute] = group->is_mute ();
+ (*iter)[_columns.solo] = group->is_solo ();
+ (*iter)[_columns.select] = group->is_select ();
+ (*iter)[_columns.edits] = group->is_edit ();
}
}
_in_row_change = false;
- _editor->_group_tabs->set_dirty ();
+ if (change.contains (Properties::name) || change.contains (Properties::active)) {
+ _editor->_group_tabs->set_dirty ();
+ }
}
void
EditorComponent::set_session (s);
if (_session) {
- _session->route_group_added.connect (_session_connections, ui_bind (&EditorRouteGroups::add, this, _1), gui_context());
- _session->route_group_removed.connect (_session_connections, boost::bind (&EditorRouteGroups::groups_changed, this), gui_context());
+ _session->route_group_added.connect (_session_connections, MISSING_INVALIDATOR, ui_bind (&EditorRouteGroups::add, this, _1), gui_context());
+ _session->route_group_removed.connect (_session_connections, MISSING_INVALIDATOR, boost::bind (&EditorRouteGroups::groups_changed, this), gui_context());
}
groups_changed ();