X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/1f2e83ab78a55bc0730bdd507c4fd64482fb0846..8d4a4f4d97c0275c9275e1934db6ffabbbbcffa5:/viewer/view_properties.cpp?ds=sidebyside diff --git a/viewer/view_properties.cpp b/viewer/view_properties.cpp index c10bbae..0e789df 100644 --- a/viewer/view_properties.cpp +++ b/viewer/view_properties.cpp @@ -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,32 +78,63 @@ void ViewProperties::ShowItem (BTreeData *data, BTreeNodeHeader &header) ss3 >> s3; node_freespace.set_label (s3); + raw_view.get_buffer ()->assign (ToRaw (data)); + if (dynamic_cast(data)) { data_type.set_label ("BTreeChildData"); data_key.set_label ("N/C"); std::string s4; std::stringstream ss4; - ss4 << data->getChild (); + ss4 << data->GetChild (); ss4 >> s4; data_child.set_label (s4); } else if (dynamic_cast(data)) { data_type.set_label ("BTreeLeafData"); data_child.set_label ("N/C"); - std::string s4 = *(data->getClave ()); + std::string s4 = *(data->GetKey ()); + std::cout << "----> " << s4 << std::endl; data_key.set_label (s4); } else { data_type.set_label ("BTreeData"); std::string s4; std::stringstream ss4; - ss4 << data->getChild (); + ss4 << data->GetChild (); ss4 >> s4; data_child.set_label (s4); - std::string s5 = *(data->getClave ()); + std::string s5 = *(data->GetKey ()); data_key.set_label (s5); } } +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 (); +} +