- if (region->hidden()) {
-
- TreeModel::iterator iter = _model->get_iter ("0");
- TreeModel::Row parent;
-
- if (!iter) {
- parent = *(_model->append());
- parent[_columns.name] = _("Hidden");
- boost::shared_ptr<Region> proxy = parent[_columns.region];
- proxy.reset ();
- } else {
- string s = (*iter)[_columns.name];
- if (s != _("Hidden")) {
- parent = *(_model->insert(iter));
- parent[_columns.name] = _("Hidden");
- boost::shared_ptr<Region> proxy = parent[_columns.region];
- proxy.reset ();
- } else {
- parent = *iter;
- }
- }
-
- row = *(_model->append (parent.children()));
-
- } else if (region->whole_file()) {
-
- TreeModel::iterator i;
- TreeModel::Children rows = _model->children();
-
- for (i = rows.begin(); i != rows.end(); ++i) {
- boost::shared_ptr<Region> rr = (*i)[_columns.region];
-
- if (rr && region->region_list_equivalent (rr)) {
- return;
- }
- }
-
- row = *(_model->append());
-
- if (missing_source) {
- // c.set_rgb(65535,0,0); // FIXME: error color from style
- set_color_from_rgba (c, UIConfiguration::instance().color ("region list missing source"));
-
- } else if (region->automatic()){
- // c.set_rgb(0,65535,0); // FIXME: error color from style
- set_color_from_rgba (c, UIConfiguration::instance().color ("region list automatic"));
-
- } else {
- set_color_from_rgba (c, UIConfiguration::instance().color ("region list whole file"));
- }
-
- row[_columns.color_] = c;
-
- if (region->source()->name()[0] == '/') { // external file
-
- if (region->whole_file()) {
-
- boost::shared_ptr<AudioFileSource> afs = boost::dynamic_pointer_cast<AudioFileSource>(region->source());
- str = ".../";
-
- if (afs) {
- str = region_name_from_path (afs->path(), region->n_channels() > 1);
- } else {
- str += region->source()->name();
- }
-
- } else {
- str = region->name();
- }
-
- } else {
- str = region->name();
- }
-
- populate_row_name (region, row);
- row[_columns.region] = region;
- row[_columns.property_toggles_visible] = false;
-
- if (missing_source) {
- row[_columns.path] = _("(MISSING) ") + Gtkmm2ext::markup_escape_text (region->source()->name());
-
- } else {
- boost::shared_ptr<FileSource> fs = boost::dynamic_pointer_cast<FileSource>(region->source());
- if (fs) {
- row[_columns.path] = Gtkmm2ext::markup_escape_text (fs->path());
- } else {
- row[_columns.path] = Gtkmm2ext::markup_escape_text (region->source()->name());
- }
- }
-
- region_row_map.insert(pair<boost::shared_ptr<ARDOUR::Region>, Gtk::TreeModel::RowReference>(region, TreeRowReference(_model, TreePath (row))) );
- parent_regions_sources_map.insert(pair<string, Gtk::TreeModel::RowReference>(region->source_string(), TreeRowReference(_model, TreePath (row))) );
-
- return;
-
- } else {
- // find parent node, add as new child
- TreeModel::iterator i;
-
- boost::unordered_map<string, Gtk::TreeModel::RowReference>::iterator it;
-
- it = parent_regions_sources_map.find (region->source_string());
-
- if (it != parent_regions_sources_map.end()){
-
- TreeModel::iterator j = _model->get_iter ((*it).second.get_path());
-
- TreeModel::iterator ii;
- TreeModel::Children subrows = (*j).children();
-
- /* XXXX: should we be accounting for all regions? */
- /*
- for (ii = subrows.begin(); ii != subrows.end(); ++ii) {
- boost::shared_ptr<Region> rr = (*ii)[_columns.region];
-
- if (region->region_list_equivalent (rr)) {
- return;
- }
- }
- */
-
- row = *(_model->insert (subrows.end()));
-
- } else {
- row = *(_model->append());
- }