X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/439b54b40ab317655a60bf1c323446b3dfb6e7d2..c2a1184ee0eb1c3638592a786e93fbf4b6f53493:/viewer/view_btree_data.cpp?ds=sidebyside diff --git a/viewer/view_btree_data.cpp b/viewer/view_btree_data.cpp index a98c30e..d2321c6 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,8 +8,6 @@ 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) @@ -16,18 +15,46 @@ void ViewBTreeData::init (Canvas::Group *parent) double w = property_x2() - property_x1(); double h = property_y2() - property_y1(); - std::string s = *data; - Canvas::Text *text = new Canvas::Text (*parent, property_x1()+w/2, h/2, s); + Canvas::Rect *ptr = new Canvas::Rect (*parent, property_x1()+w-NODE_PTR_WIDTH, h-NODE_PTR_WIDTH, property_x1()+w-1, h-1); + ptr->property_fill_color () = "green"; + ptr->property_outline_color () = "black"; +} + +bool ViewBTreeData::on_event (GdkEvent *p1) +{ + switch (p1->type) { + case GDK_BUTTON_PRESS: + m_signal_clicked(data, this); + 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; +} + +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 +64,15 @@ 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(); - - std::string s = *data; - Canvas::Text *text = new Canvas::Text (*parent, property_x1()+w/2, h/2, s); +void ViewBTreeData::SetSelected (bool b) +{ + if (b) { + property_fill_color () = "yellow"; + } else { + property_fill_color () = "red"; + } }