]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blob - nviewer/w_btree.cpp
Mejora vista del arbol.
[z.facultad/75.52/treemulator.git] / nviewer / w_btree.cpp
1
2 #include <curses.h>
3 #include "w_btree.h"
4
5 wBTree::wBTree (Window *p):Window (p, "", p->Width()-2, p->Height ()-2, 1, 1, true)
6 {
7         last_length = 0;
8         wnode = new wNodeHeader (this, p->Width () - 30, 2);
9 }
10
11 wBTree::~wBTree ()
12 {
13 }
14
15 void wBTree::SetTree (BTree *b)
16 {
17         tree = b;
18 }
19
20 void wBTree::ShowNode (uint node_num)
21 {
22         uchar *node;
23         std::list<BTreeData*> node_keys;
24
25         node = tree->ReadBlock (node_num);
26         tree->ReadNodoHeader (node, &node_header);
27         node_keys = tree->ReadKeys (node, node_header);
28
29         int y, x;
30         y = 5;
31         x = 5;
32         /* Dibujo el bloque de color rojo */
33         /*wattron (win, COLOR_PAIR (1));
34         for (uint i=0; i < tree->header.block_size + 2; i++)
35                 mvwaddstr (win, y+1, i+x-1, ".");
36         for (uint i=0; i < tree->header.block_size + 2; i++)
37                 mvwaddstr (win, y-1, i+x-1, ".");
38         mvwaddstr (win, y, x-1, ".");
39         mvwaddstr (win, y, tree->header.block_size + x, ".");
40         wattroff (win, COLOR_PAIR (1));*/
41
42         for (uint o=0; o<last_length; o++)
43                 mvwaddstr (win, y, x+o, " ");
44
45         std::list<BTreeData*>::iterator it = node_keys.begin ();
46         int n = 0;
47         while (it != node_keys.end ()) {
48                 std::string s = *(*it);
49         
50                 if (n%2)
51                         wattron (win, COLOR_PAIR (2));
52                 else
53                         wattron (win, COLOR_PAIR (3));
54                 mvwaddnstr (win, y, x, (const char *)(s.c_str ()), s.length ());
55                 if (n%2)
56                         wattroff (win, COLOR_PAIR (2));
57                 else
58                         wattroff (win, COLOR_PAIR (3));
59                 x += s.length ();
60                 n++;
61                 it++;
62         }
63         last_length = x;
64         mvwaddstr (win, 20, 5, "Ir al nodo (-1 para salir) : ");
65 }
66
67 void wBTree::Show ()
68 {
69         wnode->Show ();
70         Window::Show ();
71 }
72