1 /*
2  * (SLIK) SimpLIstic sKin functions
3  * (C) 2005 John Ellis
4  *
5  * Author: John Ellis
6  *
7  * This software is released under the GNU General Public License (GNU GPL).
8  * Please read the included file COPYING for more information.
9  * This software comes with no warranty of any kind, use at your own risk!
10  */
11 
12 #ifndef UI2_WIDGET_H
13 #define UI2_WIDGET_H
14 
15 
16 #define UI_WIDGET_PRIORITY_NORMAL 0
17 #define UI_WIDGET_PRIORITY_HIGH   1
18 
19 
20 void ui_widget_free(WidgetData *wd);
21 WidgetData *ui_widget_new(const gchar *key, const gchar *text_id, WidgetType type, gpointer widget);
22 
23 
24 void ui_widget_motion(UIData *ui, WidgetData *wd, gint x, gint y);
25 gint ui_widget_press(UIData *ui, WidgetData *wd, gint x, gint y);
26 void ui_widget_release(UIData *ui, WidgetData *wd, gint x, gint y);
27 
28 void ui_widget_draw(UIData *ui, WidgetData *wd, gint update, gint force);
29 void ui_widget_reset(UIData *ui, WidgetData *wd);
30 void ui_widget_sync_back(UIData *ui, WidgetData *wd);
31 
32 void ui_widget_hide(UIData *ui, WidgetData *wd);
33 void ui_widget_show(UIData *ui, WidgetData *wd);
34 
35 gint ui_widget_focus_draw(UIData *ui, WidgetData *wd, gint x, gint y, gint w, gint h);
36 gint ui_widget_focus_key_event(UIData *ui, WidgetData *wd, GdkEventKey *event);
37 
38 gint ui_widget_can_focus(WidgetData *wd);
39 
40 void ui_widget_hide_by_key(UIData *ui, const gchar *key, WidgetType type);
41 void ui_widget_show_by_key(UIData *ui, const gchar *key, WidgetType type);
42 
43 gint ui_widget_get_geometry(WidgetData *wd, gint *x, gint *y, gint *w, gint *h);
44 void ui_widget_set_coord(UIData *ui, WidgetData *wd, gint x, gint y, gint redraw);
45 void ui_widget_set_size(UIData *ui, WidgetData *wd, gint dev_w, gint dev_h, gint redraw);
46 void ui_widget_set_anchor(WidgetData *wd, gint right, gint bottom);
47 
48 gint ui_widget_for_each_key(UIData *ui, const gchar *key, WidgetType type,
49                             void (*func)(WidgetData *wd, gpointer data, UIData *ui),
50                             gpointer data);
51 /* this one stays within the ui, (no parent/child propogation) */
52 gint ui_widget_for_each_key_one(UIData *ui, const gchar *key, WidgetType type,
53 			        void (*func)(WidgetData *wd, gpointer data, UIData *ui),
54 			        gpointer data);
55 
56 WidgetData *ui_widget_find_by_coord(UIData *ui, gint x, gint y);
57 gint ui_widget_contacts_area(WidgetData *wd, gint x, gint y, gint w, gint h);
58 
59 /* manipulate key/data pairs stored in GLists */
60 GList *widget_data_list_find(GList *list, const gchar *key);
61 GList *widget_data_list_set(GList *list, const gchar *key, const gchar *data);
62 
63 void ui_widget_set_data(WidgetData *wd, const gchar *key, const gchar *data);
64 const gchar *ui_widget_get_data(WidgetData *wd, const gchar *key);
65 
66 const gchar *ui_widget_get_data_by_widget(UIData *ui, gpointer widget);
67 
68 WidgetObjectData *ui_widget_type_new(const gchar *description);
69 WidgetObjectData *ui_widget_object_by_type(WidgetType type);
70 WidgetObjectData *ui_widget_object_by_text(const gchar *description);
71 const gchar *ui_widget_type_to_text(WidgetType type);
72 WidgetObjectData *ui_widget_object_copy(WidgetObjectData *src);
73 
74 #endif
75 
76 
77