From f022784014d4ae1b3bb75a1c02f206ba8a28d7d6 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 21 May 2016 12:44:41 -0400 Subject: convert editor routes code to use Stripable --- gtk2_ardour/editor_routes.cc | 104 +++++++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 48 deletions(-) (limited to 'gtk2_ardour/editor_routes.cc') diff --git a/gtk2_ardour/editor_routes.cc b/gtk2_ardour/editor_routes.cc index 40ead04f7a..dfc9e86877 100644 --- a/gtk2_ardour/editor_routes.cc +++ b/gtk2_ardour/editor_routes.cc @@ -256,7 +256,7 @@ EditorRoutes::EditorRoutes (Editor* e) _display.set_name (X_("EditGroupList")); _display.set_rules_hint (true); _display.set_size_request (100, -1); - _display.add_object_drag (_columns.route.index(), "routes"); + _display.add_object_drag (_columns.stripable.index(), "routes"); CellRendererText* name_cell = dynamic_cast (_display.get_column_cell_renderer (_name_column)); @@ -546,7 +546,7 @@ EditorRoutes::redisplay_real () for (n = 0, position = 0, i = rows.begin(); i != rows.end(); ++i) { TimeAxisView *tv = (*i)[_columns.tv]; - boost::shared_ptr route = (*i)[_columns.route]; + boost::shared_ptr route = (*i)[_columns.stripable]; if (tv == 0) { // just a "title" row @@ -677,9 +677,12 @@ EditorRoutes::active_changed (std::string const & path) } Gtk::TreeModel::Row row = *_model->get_iter (path); - boost::shared_ptr route = row[_columns.route]; - bool const active = row[_columns.active]; - route->set_active (!active, this); + boost::shared_ptr stripable = row[_columns.stripable]; + boost::shared_ptr route = boost::dynamic_pointer_cast (stripable); + if (route) { + bool const active = row[_columns.active]; + route->set_active (!active, this); + } } void @@ -690,7 +693,7 @@ EditorRoutes::routes_added (list routes) Gtk::TreeModel::Children::iterator insert_iter = _model->children().end(); for (Gtk::TreeModel::Children::iterator it = _model->children().begin(); it != _model->children().end(); ++it) { - boost::shared_ptr r = (*it)[_columns.route]; + boost::shared_ptr r = (*it)[_columns.stripable]; if (r->presentation_info().group_order() == (routes.front()->route()->presentation_info().group_order() + routes.size())) { insert_iter = it; @@ -712,7 +715,7 @@ EditorRoutes::routes_added (list routes) row[_columns.visible] = (*x)->marked_for_display(); row[_columns.active] = (*x)->route()->active (); row[_columns.tv] = *x; - row[_columns.route] = (*x)->route (); + row[_columns.stripable] = (*x)->route (); row[_columns.is_track] = (boost::dynamic_pointer_cast ((*x)->route()) != 0); if (midi_trk) { @@ -831,7 +834,7 @@ EditorRoutes::route_property_changed (const PropertyChange& what_changed, boost: TreeModel::Children::iterator i; for (i = rows.begin(); i != rows.end(); ++i) { - boost::shared_ptr t = (*i)[_columns.route]; + boost::shared_ptr t = (*i)[_columns.stripable]; if (t == route) { (*i)[_columns.text] = route->name(); break; @@ -933,21 +936,21 @@ EditorRoutes::sync_presentation_info_from_treeview () for (ri = rows.begin(); ri != rows.end(); ++ri) { - boost::shared_ptr route = (*ri)[_columns.route]; + boost::shared_ptr stripable = (*ri)[_columns.stripable]; bool visible = (*ri)[_columns.visible]; - if (route->presentation_info().special ()) { + if (stripable->presentation_info().special ()) { continue; } if (!visible) { - route->presentation_info().set_flag (PresentationInfo::Hidden); + stripable->presentation_info().set_flag (PresentationInfo::Hidden); } else { - route->presentation_info().unset_flag (PresentationInfo::Hidden); + stripable->presentation_info().unset_flag (PresentationInfo::Hidden); } - if (order != route->presentation_info().group_order()) { - route->set_presentation_group_order_explicit (order); + if (order != stripable->presentation_info().group_order()) { + stripable->set_presentation_group_order_explicit (order); change = true; } @@ -990,8 +993,8 @@ EditorRoutes::sync_treeview_from_presentation_info () OrderingKeys sorted; for (TreeModel::Children::iterator ri = rows.begin(); ri != rows.end(); ++ri, ++old_order) { - boost::shared_ptr route = (*ri)[_columns.route]; - sorted.push_back (OrderKeys (old_order, route->presentation_info().group_order())); + boost::shared_ptr stripable = (*ri)[_columns.stripable]; + sorted.push_back (OrderKeys (old_order, stripable->presentation_info().group_order())); } SortByNewDisplayOrder cmp; @@ -1413,33 +1416,33 @@ EditorRoutes::move_selected_tracks (bool up) return; } - typedef std::pair > ViewRoute; - std::list view_routes; + typedef std::pair > ViewStripable; + std::list view_stripables; std::vector neworder; TreeModel::Children rows = _model->children(); TreeModel::Children::iterator ri; for (ri = rows.begin(); ri != rows.end(); ++ri) { TimeAxisView* tv = (*ri)[_columns.tv]; - boost::shared_ptr route = (*ri)[_columns.route]; + boost::shared_ptr stripable = (*ri)[_columns.stripable]; - view_routes.push_back (ViewRoute (tv, route)); + view_stripables.push_back (ViewStripable (tv, stripable)); } - list::iterator trailing; - list::iterator leading; + list::iterator trailing; + list::iterator leading; if (up) { - trailing = view_routes.begin(); - leading = view_routes.begin(); + trailing = view_stripables.begin(); + leading = view_stripables.begin(); ++leading; - while (leading != view_routes.end()) { + while (leading != view_stripables.end()) { if (_editor->selection->selected (leading->first)) { - view_routes.insert (trailing, ViewRoute (leading->first, leading->second)); - leading = view_routes.erase (leading); + view_stripables.insert (trailing, ViewStripable (leading->first, leading->second)); + leading = view_stripables.erase (leading); } else { ++leading; ++trailing; @@ -1453,17 +1456,17 @@ EditorRoutes::move_selected_tracks (bool up) and so it looks like a bit of a mess. */ - trailing = view_routes.end(); - leading = view_routes.end(); + trailing = view_stripables.end(); + leading = view_stripables.end(); - --leading; if (leading == view_routes.begin()) { return; } + --leading; if (leading == view_stripables.begin()) { return; } --leading; --trailing; while (1) { if (_editor->selection->selected (leading->first)) { - list::iterator tmp; + list::iterator tmp; /* need to insert *after* trailing, not *before* it, which is what insert (iter, val) normally does. @@ -1472,7 +1475,7 @@ EditorRoutes::move_selected_tracks (bool up) tmp = trailing; tmp++; - view_routes.insert (tmp, ViewRoute (leading->first, leading->second)); + view_stripables.insert (tmp, ViewStripable (leading->first, leading->second)); /* can't use iter = cont.erase (iter); form here, because we need iter to move backwards. @@ -1483,7 +1486,7 @@ EditorRoutes::move_selected_tracks (bool up) bool done = false; - if (leading == view_routes.begin()) { + if (leading == view_stripables.begin()) { /* the one we've just inserted somewhere else was the first in the list. erase this copy, and then break, because we're done. @@ -1491,7 +1494,7 @@ EditorRoutes::move_selected_tracks (bool up) done = true; } - view_routes.erase (leading); + view_stripables.erase (leading); if (done) { break; @@ -1500,7 +1503,7 @@ EditorRoutes::move_selected_tracks (bool up) leading = tmp; } else { - if (leading == view_routes.begin()) { + if (leading == view_stripables.begin()) { break; } --leading; @@ -1509,7 +1512,7 @@ EditorRoutes::move_selected_tracks (bool up) }; } - for (leading = view_routes.begin(); leading != view_routes.end(); ++leading) { + for (leading = view_stripables.begin(); leading != view_stripables.end(); ++leading) { uint32_t order = (uint32_t) leading->second->presentation_info().group_order (); neworder.push_back (order); } @@ -1539,10 +1542,10 @@ EditorRoutes::update_input_active_display () TreeModel::Children::iterator i; for (i = rows.begin(); i != rows.end(); ++i) { - boost::shared_ptr route = (*i)[_columns.route]; + boost::shared_ptr stripable = (*i)[_columns.stripable]; - if (boost::dynamic_pointer_cast (route)) { - boost::shared_ptr mt = boost::dynamic_pointer_cast (route); + if (boost::dynamic_pointer_cast (stripable)) { + boost::shared_ptr mt = boost::dynamic_pointer_cast (stripable); if (mt) { (*i)[_columns.is_input_active] = mt->input_active(); @@ -1567,12 +1570,17 @@ EditorRoutes::idle_update_mute_rec_solo_etc() TreeModel::Children::iterator i; for (i = rows.begin(); i != rows.end(); ++i) { - boost::shared_ptr route = (*i)[_columns.route]; - (*i)[_columns.mute_state] = RouteUI::mute_active_state (_session, route); - (*i)[_columns.solo_state] = RouteUI::solo_active_state (route); - (*i)[_columns.solo_isolate_state] = RouteUI::solo_isolate_active_state (route) ? 1 : 0; - (*i)[_columns.solo_safe_state] = RouteUI::solo_safe_active_state (route) ? 1 : 0; - (*i)[_columns.active] = route->active (); + boost::shared_ptr stripable = (*i)[_columns.stripable]; + boost::shared_ptr route = boost::dynamic_pointer_cast (stripable); + (*i)[_columns.mute_state] = RouteUI::mute_active_state (_session, stripable); + (*i)[_columns.solo_state] = RouteUI::solo_active_state (stripable); + (*i)[_columns.solo_isolate_state] = RouteUI::solo_isolate_active_state (stripable) ? 1 : 0; + (*i)[_columns.solo_safe_state] = RouteUI::solo_safe_active_state (stripable) ? 1 : 0; + if (route) { + (*i)[_columns.active] = route->active (); + } else { + (*i)[_columns.active] = true; + } boost::shared_ptr trk (boost::dynamic_pointer_cast(route)); @@ -1676,10 +1684,10 @@ EditorRoutes::name_edit (std::string const & path, std::string const & new_text) return; } - boost::shared_ptr route = (*iter)[_columns.route]; + boost::shared_ptr stripable = (*iter)[_columns.stripable]; - if (route && route->name() != new_text) { - route->set_name (new_text); + if (stripable && stripable->name() != new_text) { + stripable->set_name (new_text); } } -- cgit v1.2.3