#include <string>
#include "btree.h"
-
-#define NODE_WIDTH 500
-#define NODE_HEIGHT 50
+#include "view_node.h"
using namespace Gnome;
+class ViewNode;
+
class ViewBTree : public Canvas::Group, public BTree {
public:
- ViewBTree (Canvas::Group *parent, std::string filename);
+ ViewBTree (Canvas::Group *parent, std::string filename, uint block_size, int type);
static double byte_to_pixels;
+ static double node_width;
+ static double node_height;
typedef SigC::Signal2<void, BTreeData *, BTreeNodeHeader&> type_signal_selected;
type_signal_selected signal_selected ();
/* Un nodo que quiera ser puesto 2 veces es un bug :) */
std::map<uint,bool> node_placed;
- void AddNode (uint num);
- void on_item_selected (BTreeData *, uint);
-
-};
-
-class ViewNode : public Canvas::Group {
public:
- ViewNode (Canvas::Group *parent, uint num, BTreeNodeHeader &header, std::list<BTreeData *> &keys);
-
- std::list<uint>& getChilds () { return hijos; }
+ void AddNode (uint num, uint padre = 0);
+ void on_item_selected (BTreeData *, uint, ViewNode *);
+ void on_item_activated (BTreeData *, uint, ViewNode *);
- 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;
+ ViewNode *last_selected;
};
#endif