X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/62a1e1a38321f11eeb36f8e2ade9bc0ee91084b4..f5c3009d23291f17be708ddcd38b5e9b1eb2fd7d:/viewer/main.cpp?ds=inline diff --git a/viewer/main.cpp b/viewer/main.cpp index 1cee643..5d43759 100644 --- a/viewer/main.cpp +++ b/viewer/main.cpp @@ -68,7 +68,8 @@ int main(int argc, char *argv[]) area.add (canvas); hbox.pack_start (area); - hbox.pack_end (frame, true, true, 10); + hbox.pack_start (frame, false, false, 10); + frame.set_size_request (200, 200); Glib::RefPtr actiongroup = Gtk::ActionGroup::create(); @@ -117,7 +118,8 @@ void nuevo_arbol () double paltas = bajas / (double)altas; int type = d.getKeyType (); - tree = Glib::RefPtr(new ViewBTree (real_canvas->root(), "test.idx", d.getBlockSize (), type)); + int atype = d.getTreeType (); + tree = Glib::RefPtr(new ViewBTree (real_canvas->root(), "test.idx", d.getBlockSize (), atype, type)); tree->signal_selected ().connect ( sigc::mem_fun (*real_frame, &ViewProperties::ShowItem) ); if (type == BTree::KEY_FIXED) { std::list lst; @@ -128,12 +130,16 @@ void nuevo_arbol () it = lst.begin (); uint i = 0; while (it != lst.end ()) { - ClaveFija c(*it); + ClaveFija c(*it, i); double l = Random::Double (0.0f, 1.0f); std::cout << l << " >= " << paltas << std::endl; if (l >= paltas) { - tree->AddKey (c); + try { + tree->AddKey (c); + } catch (Exception *e) { + std::cout << "====== " << (std::string)c << e->Message () << std::endl; + } i++; } else { /* Tengo que borrar una clave entre 0 e "i" de la lista @@ -145,7 +151,7 @@ void nuevo_arbol () otro++; j++; } - ClaveFija c(*otro); + ClaveFija c(*otro, 0); tree->DelKey (c); std::string sss = c; @@ -162,9 +168,13 @@ void nuevo_arbol () it = lst.begin (); while (it != lst.end ()) { - ClaveVariable c(*it); + ClaveVariable c(*it, 0); - tree->AddKey (c); + try { + tree->AddKey (c); + } catch (Exception *e) { + std::cout << "====== " << (std::string)c << e->Message () << std::endl; + } it++; } } @@ -184,18 +194,19 @@ void agregar_clave () d.run(); return; } - KeyDialog d("Agregar"); + KeyDialog d("Agregar", true); 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())); + ClaveFija c(atoi(str_key.c_str()), atoi(str_val.c_str())); tree->AddKey(c); } else { - ClaveVariable c(str_key); + ClaveVariable c(str_key, atoi(str_val.c_str())); tree->AddKey(c); } delete tree->last_selected; @@ -219,12 +230,12 @@ void borrar_clave () Glib::ustring str_key = d.key(); if (tree->type() == BTree::KEY_FIXED) { - ClaveFija c(atoi(str_key.c_str())); + ClaveFija c(atoi(str_key.c_str()), 0); tree->DelKey(c); } else { - ClaveVariable c(str_key); + ClaveVariable c(str_key, 0); tree->DelKey(c); } delete tree->last_selected; @@ -252,12 +263,12 @@ void buscar_clave () Glib::ustring str_key = d.key(); if (tree->type() == BTree::KEY_FIXED) { - c = new ClaveFija (atoi(str_key.c_str())); + c = new ClaveFija (atoi(str_key.c_str()), 0); result = tree->FindKey(*c); } else { - c = new ClaveVariable (str_key); + c = new ClaveVariable (str_key, 0); result = tree->FindKey(*c); } if (result)