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;
48 sigc::signal<void> signal_request_raise;
53 std::string style_name;
59 Widget(const Resources &);
62 void set_position(int, int);
63 void set_size(unsigned, unsigned);
64 void set_geometry(const Geometry &);
67 Sets the widget style. The final style name is constructed by concatenating
68 the widget class and the style name with a dash.
70 void set_style(const std::string &);
71 const Style &get_style() const { return *style; }
73 void set_visible(bool);
76 const Geometry &get_geometry() const { return geom; }
77 bool is_visible() const { return visible; }
81 void render_graphic(const Part &) const;
82 void render_text(const Part &, const std::string &) const;
83 virtual void render_special(const Part &) const { }
87 virtual void button_press(int, int, unsigned) { }
88 virtual void button_release(int, int, unsigned) { }
89 virtual void pointer_motion(int, int) { }
90 virtual void pointer_enter();
91 virtual void pointer_leave();
92 virtual void key_press(unsigned, unsigned, wchar_t) { }
93 virtual void key_release(unsigned, unsigned) { }
94 virtual void focus_in();
95 virtual void focus_out();
99 Returns the name of the widget class. Used for style lookup.
101 virtual const char *get_class() const { return "widget"; }
104 Gets a style object from the resource collection based on the class and
105 style names of the widget.
110 Sets the widget's parent Panel. The widget must be unparented when calling
111 this function with a nonzero parameter.
113 void set_parent(Container *);
116 A helper function to set the parent of another widget.
118 void set_parent(Widget &, Container *);
121 virtual void on_geometry_change() { }
122 virtual void on_style_change() { }
123 virtual void on_reparent() { }