]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blob - viewer/view_properties.cpp
Guardo los nodos por recuperar al salir.
[z.facultad/75.52/treemulator.git] / viewer / view_properties.cpp
1
2 #include "view_properties.h"
3
4 ViewProperties::ViewProperties ():Frame ()
5 {
6         lnode_num.set_use_markup (true);
7         lnode_level.set_use_markup (true);
8         lnode_items.set_use_markup (true);
9         lnode_freespace.set_use_markup (true);
10         ldata_type.set_use_markup (true);
11         ldata_key.set_use_markup (true);
12         ldata_child.set_use_markup (true);
13
14         lnode_num.set_label ("<b>Nodo</b> :");
15         lnode_level.set_label ("<b>Nivel</b> : ");
16         lnode_items.set_label ("<b>Items</b> :");
17         lnode_freespace.set_label ("<b>Libre</b> :");
18         ldata_type.set_label ("<b>Tipo</b> :");
19         ldata_key.set_label ("<b>Clave</b> : ");
20         ldata_child.set_label ("<b>Hijo</b> : ");
21
22         lnode_num.set_alignment(Gtk::JUSTIFY_LEFT);
23         lnode_level.set_alignment(Gtk::JUSTIFY_LEFT);
24         lnode_items.set_alignment(Gtk::JUSTIFY_LEFT);
25         lnode_freespace.set_alignment(Gtk::JUSTIFY_LEFT);
26         ldata_type.set_alignment(Gtk::JUSTIFY_LEFT);
27         ldata_key.set_alignment(Gtk::JUSTIFY_LEFT);
28         ldata_child.set_alignment(Gtk::JUSTIFY_LEFT);
29
30         table.attach (lnode_num, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
31         table.attach (lnode_level, 0, 1, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
32         table.attach (lnode_items, 0, 1, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
33         table.attach (lnode_freespace, 0, 1, 3, 4, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
34         table.attach (ldata_type, 0, 1, 4, 5, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
35         table.attach (ldata_key, 0, 1, 5, 6, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
36         table.attach (ldata_child, 0, 1, 6, 7, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
37
38         table.attach (node_num, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
39         table.attach (node_level, 1, 2, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
40         table.attach (node_items, 1, 2, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
41         table.attach (node_freespace, 1, 2, 3, 4, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
42         table.attach (data_type, 1, 2, 4, 5, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
43         table.attach (data_key, 1, 2, 5, 6, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
44         table.attach (data_child, 1, 2, 6, 7, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
45
46         table.property_column_spacing () = 8;
47         table.property_row_spacing () = 8;
48
49         hbox.pack_start (table, false, true, 8);
50         hbox.pack_start (raw_view, true, true, 8);
51
52         table.set_size_request (250, 0);
53
54         add (hbox);
55         
56         property_label_xalign () = 0;
57         set_label ("Propiedades");
58         set_shadow_type(Gtk::SHADOW_NONE);
59         set_size_request (200, 0);
60 }
61
62 void ViewProperties::ShowItem (BTreeData *data, BTreeNodeHeader &header)
63 {
64         std::string s1, s2, s3;
65         std::stringstream ss1, ss2, ss3;
66
67         node_num.set_label ("TODO");
68
69         ss1 << header.level;
70         ss1 >> s1;
71         node_level.set_label (s1);
72
73         ss2 << header.item_count;
74         ss2 >> s2;
75         node_items.set_label (s2);
76
77         ss3 << header.free_space;
78         ss3 >> s3;
79         node_freespace.set_label (s3);
80
81         raw_view.get_buffer ()->assign (ToRaw (data));
82
83         if (dynamic_cast<BTreeChildData *>(data)) {
84                 data_type.set_label ("BTreeChildData");
85                 data_key.set_label ("N/C");
86
87                 std::string s4;
88                 std::stringstream ss4;
89                 ss4 << data->GetChild ();
90                 ss4 >> s4;
91                 data_child.set_label (s4);
92         } else if (dynamic_cast<BTreeLeafData *>(data)) {
93                 data_type.set_label ("BTreeLeafData");
94                 data_child.set_label ("N/C");
95
96                 std::string s4 = *(data->GetKey ());
97                 std::cout << "----> " << s4 << std::endl;
98                 data_key.set_label (s4);
99         } else {
100                 data_type.set_label ("BTreeData");
101
102                 std::string s4;
103                 std::stringstream ss4;
104                 ss4 << data->GetChild ();
105                 ss4 >> s4;
106                 data_child.set_label (s4);
107
108                 std::string s5 = *(data->GetKey ());
109                 data_key.set_label (s5);
110         }
111 }
112
113 std::string ViewProperties::ToRaw (BTreeData *p)
114 {
115         std::stringstream ss;
116         uint size = 0, i;
117         uchar *arr = NULL;
118         if (p->GetKey ()) {
119                 arr = p->GetKey ()->ToRaw (size);
120         }
121
122         for (i=0; i < size; i++) {
123                 if (isalnum (arr[i]) || (arr[i] == ']') || (arr[i] == '|') ||
124                         (arr[i] == '[') || (arr[i] == '-'))
125                         ss << arr[i];
126                 else
127                         ss << ".";
128         }
129
130         if (p->GetChild () != 0) {
131                 ss << "(";
132                 ss << p->GetChild ();
133                 ss << ")";
134         }
135
136         if (arr)
137                 delete [] arr;
138         return ss.str ();
139 }
140