X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/84820a0fe02b9fdd63fb7c28d5a823bfa065c259..16ec4547406edcae627dd3ec4bdc448ef605b11a:/viewer/view_btree_data.cpp?ds=inline diff --git a/viewer/view_btree_data.cpp b/viewer/view_btree_data.cpp index 04889cc..e1df3c2 100644 --- a/viewer/view_btree_data.cpp +++ b/viewer/view_btree_data.cpp @@ -1,5 +1,6 @@ #include "view_btree_data.h" +#define NODE_PTR_WIDTH 5 ViewBTreeData::ViewBTreeData (BTreeData *data, Canvas::Group *parent, double x1, double y1, double x2, double y2): Canvas::Rect (*parent, x1, y1, x2, y2) @@ -7,24 +8,22 @@ ViewBTreeData::ViewBTreeData (BTreeData *data, Canvas::Group *parent, double x1, this->data = data; property_fill_color () = "red"; property_outline_color () = "black"; - - init (parent); } void ViewBTreeData::init (Canvas::Group *parent) { double w = property_x2() - property_x1(); double h = property_y2() - property_y1(); - - std::string s = *data; - new Canvas::Text (*parent, property_x1()+w/2, h/2, s); } bool ViewBTreeData::on_event (GdkEvent *p1) { switch (p1->type) { case GDK_BUTTON_PRESS: - m_signal_clicked(data); + SetSelected (true); + break; + case GDK_2BUTTON_PRESS: + m_signal_double_clicked (data, this); } return Canvas::Rect::on_event (p1); @@ -36,13 +35,22 @@ ViewBTreeData::type_signal_clicked ViewBTreeData::signal_clicked () return m_signal_clicked; } +ViewBTreeData::type_signal_double_clicked ViewBTreeData::signal_double_clicked () +{ + return m_signal_double_clicked; +} + + ViewBTreeData* ViewBTreeData::Create (BTreeData *data, Canvas::Group *parent, double x1, double y1, double x2, double y2) { + ViewBTreeData *ret; if (dynamic_cast(data)) - return new ViewBTreeChildData (data, parent, x1, y1, x2, y2); - - return new ViewBTreeData (data, parent, x1, y1, x2, y2); + ret = new ViewBTreeChildData (data, parent, x1, y1, x2, y2); + else + ret = new ViewBTreeData (data, parent, x1, y1, x2, y2); + ret->init (parent); + return ret; } ViewBTreeChildData::ViewBTreeChildData (BTreeData *data, Canvas::Group *parent, double x1, double y1, double x2, double y2): @@ -52,13 +60,23 @@ ViewBTreeChildData::ViewBTreeChildData (BTreeData *data, Canvas::Group *parent, void ViewBTreeChildData::init (Canvas::Group *parent) { - property_fill_color () = "yellow"; property_outline_color () = "black"; +} - double w = property_x2() - property_x1(); - double h = property_y2() - property_y1(); +void ViewBTreeData::SetSelected (bool b) +{ + if (b) { + property_fill_color () = "yellow"; + m_signal_clicked(data, this); + } else { + property_fill_color () = "red"; + } +} + +bool ViewBTreeData::operator == (Clave &k) const +{ + if (!data->GetKey ()) return false; - std::string s = *data; - Canvas::Text *text = new Canvas::Text (*parent, property_x1()+w/2, h/2, s); + return (*(data->GetKey ())) == k; }