TARGET=viewer
CXXFLAGS=-Wall -g `pkg-config gtkmm-2.4 libgnomecanvasmm-2.6 --cflags` -I../src
-OBJECTS=main.o view_btree.o view_btree_data.o view_properties.o
+OBJECTS=main.o view_btree.o view_btree_data.o view_properties.o view_node.o
all: $(TARGET)
return m_signal_selected;
}
-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;
-}
-
#include <string>
#include "btree.h"
+#include "view_node.h"
#define NODE_WIDTH 500
#define NODE_HEIGHT 50
};
-class ViewNode : public Canvas::Group {
- public:
- ViewNode (Canvas::Group *parent, uint num, BTreeNodeHeader &header, std::list<BTreeData *> &keys);
-
- std::list<uint>& getChilds () { return hijos; }
-
- typedef SigC::Signal2<void, BTreeData *, uint> type_signal_selected;
- type_signal_selected signal_selected ();
- private:
- void on_item_clicked (BTreeData *data);
- std::list<uint> hijos;
- type_signal_selected m_signal_selected;
- uint num;
-};
-
#endif
--- /dev/null
+
+#include "view_node.h"
+
+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;
+}
+
--- /dev/null
+
+#ifndef _VIEW_NODE_H_
+#define _VIEW_NODE_H_
+
+#include <libgnomecanvasmm.h>
+#include "view_btree.h"
+#include "view_btree_data.h"
+#include "btree.h"
+
+using namespace Gnome;
+
+class ViewNode : public Canvas::Group {
+ public:
+ ViewNode (Canvas::Group *parent, uint num, BTreeNodeHeader &header, std::list<BTreeData *> &keys);
+
+ std::list<uint>& getChilds () { return hijos; }
+
+ typedef SigC::Signal2<void, BTreeData *, uint> type_signal_selected;
+ type_signal_selected signal_selected ();
+ private:
+ void on_item_clicked (BTreeData *data);
+ std::list<uint> hijos;
+ type_signal_selected m_signal_selected;
+ uint num;
+};
+
+#endif
+