X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/41ae290f8d3c5b30968d9ea94e8945d9cb66e0ca..8e23e15f255365a35ebcf3a5cec7a4c356fc78b5:/viewer/main.cpp diff --git a/viewer/main.cpp b/viewer/main.cpp index aa0746a..59f34f7 100644 --- a/viewer/main.cpp +++ b/viewer/main.cpp @@ -18,6 +18,7 @@ using namespace Gnome::Canvas; " " " " " " +" " " " " " " " @@ -39,6 +40,7 @@ using namespace Gnome::Canvas; ""; void nuevo_arbol (); +void abrir_arbol (); void agregar_clave (); void borrar_clave (); void ir_al_padre (); @@ -79,6 +81,7 @@ int main(int argc, char *argv[]) actiongroup->add( Gtk::Action::create("MenuFile", "_Arbol") ); actiongroup->add( Gtk::Action::create("Nuevo", Gtk::Stock::NEW), &nuevo_arbol); + actiongroup->add( Gtk::Action::create("Abrir", Gtk::Stock::OPEN), &abrir_arbol); actiongroup->add( Gtk::Action::create("Salir", Gtk::Stock::QUIT), Gtk::AccelKey ("q"), &Gtk::Main::quit); actiongroup->add( Gtk::Action::create("MenuNode", "_Nodo") ); actiongroup->add( Gtk::Action::create("Ir al Padre", Gtk::Stock::GO_BACK), Gtk::AccelKey ("b"), &ir_al_padre); @@ -112,6 +115,27 @@ int main(int argc, char *argv[]) return 0; } +void abrir_arbol () +{ + Gtk::FileChooserDialog dlg ("Abrir Arbol"); + + dlg.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); + dlg.add_button (Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT); + if (dlg.run () == Gtk::RESPONSE_ACCEPT) { + Glib::ustring s = dlg.get_filename (); + std::string filename = s; + ViewBTree *ptree = ViewBTree::Open (real_canvas->root (), filename); + if (ptree != NULL) { + tree = Glib::RefPtr(ptree); + tree->signal_selected ().connect ( sigc::mem_fun (*real_frame, &ViewProperties::ShowItem) ); + tree->AddNode (0); + double x1, x2, y1, y2; + tree->get_bounds (x1, y1, x2, y2); + real_canvas->scroll_to (0, 0); + } + } +} + void nuevo_arbol () { real_canvas->set_scroll_region (0, 0, 5000, 5000); @@ -136,7 +160,7 @@ void nuevo_arbol () it = lst.begin (); uint i = 0; while (it != lst.end ()) { - ClaveFija c(*it, i); + ClaveFija c(*it); double l = Random::Double (0.0f, 1.0f); std::cout << l << " >= " << paltas << std::endl; @@ -157,7 +181,7 @@ void nuevo_arbol () otro++; j++; } - ClaveFija c(*otro, 0); + ClaveFija c(*otro); tree->DelKey (c); std::string sss = c; @@ -174,7 +198,7 @@ void nuevo_arbol () it = lst.begin (); while (it != lst.end ()) { - ClaveVariable c(*it, 0); + ClaveVariable c(*it); try { tree->AddKey (c); @@ -200,19 +224,19 @@ void agregar_clave () d.run(); return; } - KeyDialog d("Agregar", true); + KeyDialog d("Agregar"); if (d.run () == Gtk::RESPONSE_OK) { Glib::ustring str_key = d.key(); Glib::ustring str_val = d.val(); if (tree->type() == BTree::KEY_FIXED) { - ClaveFija c(atoi(str_key.c_str()), atoi(str_val.c_str())); + ClaveFija c(atoi(str_key.c_str())); tree->AddKey(c); } else { - ClaveVariable c(str_key, atoi(str_val.c_str())); + ClaveVariable c(str_key); tree->AddKey(c); } @@ -220,10 +244,10 @@ void agregar_clave () BTreeFindResult* result = 0; Clave *c = NULL; if (tree->type() == BTree::KEY_FIXED) { - c = new ClaveFija (atoi(str_key.c_str()), 0); + c = new ClaveFija (atoi(str_key.c_str())); result = tree->FindKey(*c); } else { - c = new ClaveVariable (str_key, 0); + c = new ClaveVariable (str_key); result = tree->FindKey(*c); } if (result) { @@ -256,12 +280,12 @@ void borrar_clave () Glib::ustring str_key = d.key(); if (tree->type() == BTree::KEY_FIXED) { - ClaveFija c(atoi(str_key.c_str()), 0); + ClaveFija c(atoi(str_key.c_str())); tree->DelKey(c); } else { - ClaveVariable c(str_key, 0); + ClaveVariable c(str_key); tree->DelKey(c); } delete tree->last_selected; @@ -300,12 +324,12 @@ void buscar_clave () Glib::ustring str_key = d.key(); if (tree->type() == BTree::KEY_FIXED) { - c = new ClaveFija (atoi(str_key.c_str()), 0); + c = new ClaveFija (atoi(str_key.c_str())); result = tree->FindKey(*c); } else { - c = new ClaveVariable (str_key, 0); + c = new ClaveVariable (str_key); result = tree->FindKey(*c); } if (result)