X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/b4a23678596cdf0fd5993ec6650422a86d2012be..0fd0b8da8e1e9c889282ad4cb41f4b4cf2e63838:/viewer/view_btree_data.cpp diff --git a/viewer/view_btree_data.cpp b/viewer/view_btree_data.cpp index 403da55..0c29461 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) @@ -9,26 +10,77 @@ ViewBTreeData::ViewBTreeData (BTreeData *data, Canvas::Group *parent, double x1, property_outline_color () = "black"; } +void ViewBTreeData::init (Canvas::Group *parent) +{ + double w = property_x2() - property_x1(); + double h = property_y2() - property_y1(); + + 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: + 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; +} + +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): ViewBTreeData (data, parent, x1, y1, x2, y2) { - property_fill_color () = "yellow"; +} + +void ViewBTreeChildData::init (Canvas::Group *parent) +{ property_outline_color () = "black"; +} - double w = x2 - x1; - double h = y2 - 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, x1 + w/2, y1 + h/2, s); + return (*(data->GetKey ())) == k; }