]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blobdiff - viewer/view_btree.h
Mejoro el layout del dialogo.
[z.facultad/75.52/treemulator.git] / viewer / view_btree.h
index e3a5c688268e52dab36b12e4cb7059415c9b3ac9..18f4df7ec162cda5d4ca5e162e3bf851d27e50b4 100644 (file)
@@ -4,38 +4,46 @@
 
 #include <libgnomecanvasmm.h>
 #include <string>
+#include <stack>
 
 #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 tree_type, int type);
+
+               void Clear ();
+               void HighliteKey (Clave &k);
+               void GoBack ();
 
                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 ();
        protected:
+               type_signal_selected m_signal_selected;
                int max_level; /* Lo saco de la raiz */
                /* Posicion X por nivel */
                std::map<uint,double> pos_x;
                /* Control para no poner 2 veces un nodo */
                /* Un nodo que quiera ser puesto 2 veces es un bug :) */
                std::map<uint,bool> node_placed;
+               std::stack<uint> back;
+               uint last_visited;
 
-               void AddNode (uint num);
-
-};
-
-class ViewNode : public Canvas::Group {
        public:
-               ViewNode (Canvas::Group *parent, uint num, BTreeNodeHeader &header, std::list<BTreeData *> &keys);
+               void AddNode (uint num, uint padre = 0);
+               void on_item_selected (BTreeData *, uint, ViewNode *);
+               void on_item_activated (BTreeData *, uint, ViewNode *);
 
-               std::list<uint>& getChilds () { return hijos; } 
-       private:
-               std::list<uint> hijos;
+               ViewNode *last_selected;
 };
 
 #endif