X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/439b54b40ab317655a60bf1c323446b3dfb6e7d2..61ad6c12c81dd37c54797f5b507cdb677211f49a:/viewer/view_btree_data.cpp?ds=sidebyside diff --git a/viewer/view_btree_data.cpp b/viewer/view_btree_data.cpp index a98c30e..2d4a753 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,27 +8,47 @@ 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(); +} + +bool ViewBTreeData::on_event (GdkEvent *p1) +{ + switch (p1->type) { + case GDK_BUTTON_PRESS: + SetSelected (true); + break; + case GDK_2BUTTON_PRESS: + m_signal_double_clicked (data, this); + } + + return Canvas::Rect::on_event (p1); +} + + +ViewBTreeData::type_signal_clicked ViewBTreeData::signal_clicked () +{ + return m_signal_clicked; +} - std::string s = *data; - Canvas::Text *text = new Canvas::Text (*parent, property_x1()+w/2, h/2, s); +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): @@ -37,13 +58,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; }