]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blob - viewer/view_btree_data.cpp
Algo de Signals para pasar eventos.
[z.facultad/75.52/treemulator.git] / viewer / view_btree_data.cpp
1
2 #include "view_btree_data.h"
3
4 ViewBTreeData::ViewBTreeData (BTreeData *data, Canvas::Group *parent, double x1, double y1, double x2, double y2):
5         Canvas::Rect (*parent, x1, y1, x2, y2)
6 {
7         this->data = data;
8         property_fill_color () = "red";
9         property_outline_color () = "black";
10
11         init (parent);
12 }
13
14 void ViewBTreeData::init (Canvas::Group *parent)
15 {
16         double w = property_x2() - property_x1();
17         double h = property_y2() - property_y1();
18
19         std::string s = *data;
20         new Canvas::Text (*parent, property_x1()+w/2, h/2, s);
21 }
22                 
23 bool ViewBTreeData::on_event (GdkEvent *p1)
24 {
25         switch (p1->type) {
26                 case GDK_BUTTON_PRESS:
27                         m_signal_clicked(data);
28         }
29
30         return Canvas::Rect::on_event (p1);
31 }
32
33
34 ViewBTreeData::type_signal_clicked ViewBTreeData::signal_clicked ()
35 {
36         return m_signal_clicked;
37 }
38
39 ViewBTreeData*
40 ViewBTreeData::Create (BTreeData *data, Canvas::Group *parent, double x1, double y1, double x2, double y2)
41 {
42         if (dynamic_cast<BTreeChildData *>(data))
43                 return new ViewBTreeChildData (data, parent, x1, y1, x2, y2);
44
45         return new ViewBTreeData (data, parent, x1, y1, x2, y2);
46 }
47
48 ViewBTreeChildData::ViewBTreeChildData (BTreeData *data, Canvas::Group *parent, double x1, double y1, double x2, double y2):
49         ViewBTreeData (data, parent, x1, y1, x2, y2)
50 {
51 }
52
53 void ViewBTreeChildData::init (Canvas::Group *parent)
54 {
55         property_fill_color () = "yellow";
56         property_outline_color () = "black";
57
58         double w = property_x2() - property_x1();
59         double h = property_y2() - property_y1();
60
61         std::string s = *data;
62         Canvas::Text *text = new Canvas::Text (*parent, property_x1()+w/2, h/2, s);
63 }
64