bool HierTreeMdl::iter_parent_vfunc(const iterator& child, iterator& iter) const { bool res = false; bool valid = IsIterValid(child); if (valid) { Elem* comp = (Elem*) child.gobj()->user_data; if (comp->GetMan() != NULL) { iter.set_stamp(iStamp); iter.gobj()->user_data = comp->GetMan(); res = true; } } return res; }
Gtk::TreeModel::Path HierTreeMdl::get_path_vfunc(const iterator& iter) const { Path path; Elem* mgr = NULL; Elem* comp = (Elem*) iter.gobj()->user_data; // By depth do { mgr = comp->GetMan(); if (mgr == NULL) { break; } int pos; for (pos = 0; pos < mgr->Comps().size(); pos++) { if (mgr->Comps().at(pos) == comp) { break; } } path.prepend_index(pos); comp = mgr; } while (comp != iRoot); return path; }