3 This file is part of libmspgltk
4 Copyright © 2007-2009 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
8 #ifndef MSP_GLTK_WIDGET_H_
9 #define MSP_GLTK_WIDGET_H_
24 Base class for all widgets. Derived classes should call update_style in
25 constructor, because it can't be done correctly in the Widget constructor.
30 class Loader: public Msp::DataFile::Loader
37 Widget &get_object() const { return wdg; }
39 void position(int, int);
40 void size(unsigned, unsigned);
41 void style(const std::string &);
44 sigc::signal<void, bool> signal_visibility_changed;
45 sigc::signal<void> signal_request_focus;
46 sigc::signal<void> signal_grab_pointer;
47 sigc::signal<void> signal_ungrab_pointer;
52 std::string style_name;
60 Widget(const Resources &);
64 void set_position(int, int);
65 void set_size(unsigned, unsigned);
66 virtual void autosize() { }
67 void set_geometry(const Geometry &);
68 const Geometry &get_geometry() const { return geom; }
71 Sets the widget style. The final style name is constructed by concatenating
72 the widget class and the style name with a dash.
74 void set_style(const std::string &);
75 const Style &get_style() const { return *style; }
77 void set_tooltip(const std::string &);
78 const std::string &get_tooltip() const { return tooltip; }
80 void set_visible(bool);
81 bool is_visible() const { return visible; }
82 void set_focusable(bool);
83 bool is_focusable() const { return focusable; }
88 virtual void render_special(const Part &) const { }
92 virtual void button_press(int, int, unsigned) { }
93 virtual void button_release(int, int, unsigned) { }
94 virtual void pointer_motion(int, int) { }
95 virtual void pointer_enter();
96 virtual void pointer_leave();
97 virtual void key_press(unsigned, unsigned, wchar_t) { }
98 virtual void key_release(unsigned, unsigned) { }
99 virtual void focus_in();
100 virtual void focus_out();
104 Returns the name of the widget class. Used for style lookup.
106 virtual const char *get_class() const { return "widget"; }
109 Gets a style object from the resource collection based on the class and
110 style names of the widget.
115 Sets the widget's parent Panel. The widget must be unparented when calling
116 this function with a nonzero parameter.
118 void set_parent(Container *);
121 A helper function to set the parent of another widget.
123 void set_parent(Widget &, Container *);
126 virtual void on_geometry_change() { }
127 virtual void on_style_change() { }
128 virtual void on_reparent() { }