]> git.tdb.fi Git - libs/gltk.git/blob - source/toggle.cpp
2e3488ac24a465fe890820d2dff877cfdb2bfc7d
[libs/gltk.git] / source / toggle.cpp
1 /* $Id$
2
3 This file is part of libmspgltk
4 Copyright © 2007  Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #include "part.h"
9 #include "toggle.h"
10
11 namespace Msp {
12 namespace GLtk {
13
14 Toggle::Toggle(const Resources &r):
15         Widget(r),
16         value(false)
17 {
18         update_style();
19 }
20
21 void Toggle::button_release(int x, int y, unsigned btn)
22 {
23         if(btn==1)
24         {
25                 if(geom.is_inside_relative(x, y))
26                 {
27                         value=!value;
28                         state=(value ? ACTIVE : HOVER);
29                         signal_toggled.emit(value);
30                 }
31                 else
32                         state=NORMAL;
33         }
34 }
35
36 void Toggle::pointer_enter()
37 {
38         if(!value)
39                 state=HOVER;
40 }
41
42 void Toggle::pointer_leave()
43 {
44         if(!value)
45                 state=NORMAL;
46 }
47
48 void Toggle::render_special(const Part &part) const
49 {
50         if(part.get_name()=="text")
51                 render_text(part, text);
52 }
53
54
55 Toggle::Loader::Loader(Toggle &t):
56         Widget::Loader(t)
57 {
58         add("text",  &Toggle::text);
59         add("value", &Toggle::value);
60 }
61
62 Toggle &Toggle::Loader::get_object() const
63 {
64         return static_cast<Toggle &>(wdg);
65 }
66
67 } // namespace GLtk
68 } // namespace Msp