-ViewNode::ViewNode (Canvas::Group *parent, uint num, BTreeNodeHeader &header, std::list<BTreeData *> &keys)
- : Canvas::Group (*parent)
-{
- double header_w = ViewBTree::byte_to_pixels * sizeof (BTreeNodeHeader);
- this->num = num;
-
- /* Fondo */
- Canvas::Rect *fondo = new Canvas::Rect (*this, 0, 0, NODE_WIDTH, NODE_HEIGHT);
- fondo->property_fill_color() = "gray";
- fondo->property_outline_color() = "black";
-
- /* Header */
- Canvas::Rect *h = new Canvas::Rect (*this, 0, 0, header_w, NODE_HEIGHT);
- h->property_fill_color() = "blue";
- h->property_outline_color() = "black";
-
- /* Numero de nodo */
- std::string node_num;
- std::stringstream ss;
- ss << num;
- ss >> node_num;
- new Canvas::Text (*this, header_w/2, NODE_HEIGHT/2, node_num);
-
- double x = header_w;
-
- std::list<BTreeData *>::iterator it = keys.begin ();
- while (it != keys.end ()) {
- BTreeData *data = (*it);
- double w = ViewBTree::byte_to_pixels * data->Size ();
-
- ViewBTreeData *v = ViewBTreeData::Create (data, this, x, 0, w+x, NODE_HEIGHT);
- v->signal_clicked ().connect ( sigc::mem_fun (this , &ViewNode::on_item_clicked ));
- x += w;
- it++;
-
- if (!dynamic_cast<BTreeLeafData *>(data)) {
- /* Si no es un dato de una hoja, tiene hijos */
- hijos.push_back (data->getChild ());
- }
- }
-}
-
-void ViewNode::on_item_clicked (BTreeData *data)
-{
- m_signal_selected (data, num);
-}
-
-ViewNode::type_signal_selected ViewNode::signal_selected ()
-{
- return m_signal_selected;
-}
-