]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blobdiff - viewer/view_properties.cpp
Agrego posibiliad de abrir un arbol desde un archivo.
[z.facultad/75.52/treemulator.git] / viewer / view_properties.cpp
index 65f782f8343614feb4891744d7d4f9e6ee472a6a..0e789df53b51a265edc6664801e6ef87c283e8a4 100644 (file)
@@ -45,7 +45,13 @@ ViewProperties::ViewProperties ():Frame ()
 
        table.property_column_spacing () = 8;
        table.property_row_spacing () = 8;
-       add (table);
+
+       hbox.pack_start (table, false, true, 8);
+       hbox.pack_start (raw_view, true, true, 8);
+
+       table.set_size_request (250, 0);
+
+       add (hbox);
        
        property_label_xalign () = 0;
        set_label ("Propiedades");
@@ -72,6 +78,8 @@ void ViewProperties::ShowItem (BTreeData *data, BTreeNodeHeader &header)
        ss3 >> s3;
        node_freespace.set_label (s3);
 
+       raw_view.get_buffer ()->assign (ToRaw (data));
+
        if (dynamic_cast<BTreeChildData *>(data)) {
                data_type.set_label ("BTreeChildData");
                data_key.set_label ("N/C");
@@ -102,3 +110,31 @@ void ViewProperties::ShowItem (BTreeData *data, BTreeNodeHeader &header)
        }
 }
 
+std::string ViewProperties::ToRaw (BTreeData *p)
+{
+       std::stringstream ss;
+       uint size = 0, i;
+       uchar *arr = NULL;
+       if (p->GetKey ()) {
+               arr = p->GetKey ()->ToRaw (size);
+       }
+
+       for (i=0; i < size; i++) {
+               if (isalnum (arr[i]) || (arr[i] == ']') || (arr[i] == '|') ||
+                       (arr[i] == '[') || (arr[i] == '-'))
+                       ss << arr[i];
+               else
+                       ss << ".";
+       }
+
+       if (p->GetChild () != 0) {
+               ss << "(";
+               ss << p->GetChild ();
+               ss << ")";
+       }
+
+       if (arr)
+               delete [] arr;
+       return ss.str ();
+}
+