X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/67b413e9cd7fab6a17af34e90a669a3a1cd4e66d..e994ad95d6fcb7372527146482ce55cea669b6c9:/viewer/view_btree.cpp?ds=inline diff --git a/viewer/view_btree.cpp b/viewer/view_btree.cpp index d8bc219..1180c93 100644 --- a/viewer/view_btree.cpp +++ b/viewer/view_btree.cpp @@ -4,22 +4,16 @@ #include double ViewBTree::byte_to_pixels = 0; +double ViewBTree::node_width = 0; -ViewBTree::ViewBTree (Canvas::Group *parent, std::string filename):Canvas::Group (*parent, 0, 0), - BTree (filename, 64) +ViewBTree::ViewBTree (Canvas::Group *parent, std::string filename, uint block_size):Canvas::Group (*parent, 0, 0), + BTree (filename, block_size) { - /* TODO : hace que el arbol se abra de un archivo ya creado o que se - * cree afuera - */ - for (int i=0; i<=64; i++) { - ClaveFija c(i); + /* Cada bytes lo hago de 5 units de ancho */ + node_width = 3 * block_size; // 64 == blocksize + byte_to_pixels = node_width/block_size; // TODO : 64 == BlockSize - AddKey (c); - } - - byte_to_pixels = NODE_WIDTH/64; // TODO : 64 == BlockSize - - AddNode (0); + last_selected = NULL; } void ViewBTree::AddNode (uint num) @@ -48,7 +42,7 @@ void ViewBTree::AddNode (uint num) ViewNode *vnode = new ViewNode (this, num, node_h, keys); vnode->property_y () = y; vnode->property_x () = pos_x[node_h.level]; - pos_x[node_h.level] += NODE_WIDTH+10; + pos_x[node_h.level] += ViewBTree::node_width+10; vnode->signal_selected().connect ( sigc::mem_fun (*this, &ViewBTree::on_item_selected) ); std::list childs = vnode->getChilds (); @@ -64,7 +58,7 @@ void ViewBTree::AddNode (uint num) } } -void ViewBTree::on_item_selected (BTreeData *data, uint num) +void ViewBTree::on_item_selected (BTreeData *data, uint num, ViewNode *vnode) { BTreeNodeHeader node_h; uchar *node; @@ -73,7 +67,11 @@ void ViewBTree::on_item_selected (BTreeData *data, uint num) ReadNodoHeader (node, &node_h); delete [] node; - std::cout << "Emit SignalSelected" << std::endl; + if (last_selected) + if (vnode != last_selected) + last_selected->SetSelected (false); + last_selected = vnode; + vnode->SetSelected (true); m_signal_selected (data, node_h); }