]> git.tdb.fi Git - libs/gltk.git/blob - source/button.cpp
543782e8306a448e616377b6d435c01ee185b218
[libs/gltk.git] / source / button.cpp
1 #include "button.h"
2 #include "part.h"
3
4 namespace Msp {
5 namespace GLtk {
6
7 Button::Button(const Resources &r, const std::string &t):
8         Widget(r)
9 {
10         set_text(t);
11         update_style();
12 }
13
14 void Button::set_text(const std::string &t)
15 {
16         text=t;
17 }
18
19 void Button::button_press(int x, int y, unsigned btn)
20 {
21         if(geom.is_inside(x, y) && btn==1)
22                 state=ACTIVE;
23 }
24
25 void Button::button_release(int x, int y, unsigned btn)
26 {
27         if(btn==1)
28         {
29                 if(geom.is_inside(x, y))
30                 {
31                         signal_clicked.emit();
32                         state=HOVER;
33                 }
34                 else
35                         state=NORMAL;
36         }
37 }
38
39 void Button::pointer_enter()
40 {
41         state=HOVER;
42 }
43
44 void Button::pointer_leave()
45 {
46         state=NORMAL;
47 }
48
49 void Button::render_part(const Part &part) const
50 {
51         if(part.get_name()=="text")
52                 render_text(part, text);
53         else
54                 Widget::render_part(part);
55 }
56
57
58 Button::Loader::Loader(Button &btn):
59         Widget::Loader(btn)
60 {
61         add("text", &Button::text);
62 }
63
64 Button &Button::Loader::get_object() const
65 {
66         return static_cast<Button &>(wdg);
67 }
68
69 } // namespace GLtk
70 } // namespace Msp