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