// generated 2002/7/29 18:27:31 CEST by free@mandrake82.maison.fr // using glademm V0.6.4 // // newer (non customized) versions of this file go to MMITreeBrowser.cc_new // This file is for your program, I won't touch it again! #include "config.h" #include "MMITreeBrowser.hh" #include void MMITreeBrowser::Select(std::string const &id) { if (id != getSelectedId()) { std::map< std::string, Gtk::TreeItem *>::const_iterator item = _nodes.find(id); if (item != _nodes.end()) { _family_tree->select_child(*(item->second)); } } return; } std::string const MMITreeBrowser::getSelectedId(void) const { std::string id; Gtk::Tree::SelectionList selection = _family_tree->selection(); if (selection.size() > 0) { Gtk::Tree::SelectionList::iterator node = _family_tree->selection().begin(); std::map < Gtk::TreeItem * , std::string > ::const_iterator iter = _ids.find(*node); if (iter != _ids.end()) { id = iter->second; } } return id; } void MMITreeBrowser::clear(void) { _family_tree->tree().clear(); _nodes.clear(); _ids.clear(); _family_tree->show_all(); return; } void MMITreeBrowser::treeItemExpanded_cb(Gtk::TreeItem * item) { Gtk::Tree * subtree = item->get_subtree(); if (subtree != 0) { subtree->show_all(); } return; } void MMITreeBrowser::treeItemSelected_cb(Gtk::TreeItem * item) { Gtk::Tree * subtree = item->get_subtree(); if (subtree != 0) { item->expand(); } return; } void MMITreeBrowser::show(void) { Gtk::Tree_Helpers::ItemList items = _family_tree->tree(); for (Gtk::Tree_Helpers::ItemList::const_iterator iter = items.begin(); iter != items.end(); iter++) { (*iter)->show(); } _family_tree->show(); return; } int MMITreeBrowser::addParent(std::string const &child_id, std::string const &parent_id, std::string const &parent_label) { Gtk::TreeItem * parent_item = 0; parent_item = _nodes[parent_id]; int res = -1; if (parent_item == 0) { parent_item = new Gtk::TreeItem(parent_label); parent_item->expand.connect(bind(slot(this, &MMITreeBrowser::treeItemExpanded_cb), parent_item)); parent_item->select.connect(bind(slot(this, &MMITreeBrowser::treeItemSelected_cb), parent_item)); Gtk::Tree * parent_tree = 0; Gtk::TreeItem * _child_item = 0; _child_item = _nodes[child_id]; if (_child_item != 0) { parent_tree = _child_item->get_subtree(); if (parent_tree == 0) { parent_tree = new Gtk::Tree(); _child_item->set_subtree(*parent_tree); } parent_tree->tree().push_back(*parent_item); _nodes[parent_id] = parent_item; } else { _family_tree->tree().push_back(*parent_item); _nodes[parent_id] = parent_item; } res = 1; _ids[parent_item] = parent_id; } else { res = 0; } return res; } Gtk::Tree * const MMITreeBrowser::getTree(void) { return _family_tree; }