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;
59 Widget(const Resources &);
63 void set_position(int, int);
64 void set_size(unsigned, unsigned);
65 virtual void autosize() { }
66 void set_geometry(const Geometry &);
67 const Geometry &get_geometry() const { return geom; }
70 Sets the widget style. The final style name is constructed by concatenating
71 the widget class and the style name with a dash.
73 void set_style(const std::string &);
74 const Style &get_style() const { return *style; }
76 void set_tooltip(const std::string &);
77 const std::string &get_tooltip() const { return tooltip; }
79 void set_visible(bool);
80 bool is_visible() const { return visible; }
85 virtual void render_special(const Part &) const { }
89 virtual void button_press(int, int, unsigned) { }
90 virtual void button_release(int, int, unsigned) { }
91 virtual void pointer_motion(int, int) { }
92 virtual void pointer_enter();
93 virtual void pointer_leave();
94 virtual void key_press(unsigned, unsigned, wchar_t) { }
95 virtual void key_release(unsigned, unsigned) { }
96 virtual void focus_in();
97 virtual void focus_out();
101 Returns the name of the widget class. Used for style lookup.
103 virtual const char *get_class() const { return "widget"; }
106 Gets a style object from the resource collection based on the class and
107 style names of the widget.
112 Sets the widget's parent Panel. The widget must be unparented when calling
113 this function with a nonzero parameter.
115 void set_parent(Container *);
118 A helper function to set the parent of another widget.
120 void set_parent(Widget &, Container *);
123 virtual void on_geometry_change() { }
124 virtual void on_style_change() { }
125 virtual void on_reparent() { }