0e876742a5ae32866f3b3086ec83df6e64978220
[navit-package] / navit / gui / internal / gui_internal.h
1 struct widget; // defined in gui_internal.c
2 struct graphics_image;
3
4 #define STATE_VISIBLE 1
5 #define STATE_SELECTED 2
6 #define STATE_HIGHLIGHTED 4
7 #define STATE_SENSITIVE 8
8 #define STATE_EDIT 16
9 #define STATE_CLEAR 32
10
11 enum widget_type {
12         widget_box=1,
13         widget_button,
14         widget_label,
15         widget_image,
16         widget_table,
17         widget_table_row
18 };
19
20 enum flags {
21         gravity_none=0x00,
22         gravity_left=1,
23         gravity_xcenter=2,
24         gravity_right=4,
25         gravity_top=8,
26         gravity_ycenter=16,
27         gravity_bottom=32,
28         gravity_left_top=gravity_left|gravity_top,
29         gravity_top_center=gravity_xcenter|gravity_top,
30         gravity_right_top=gravity_right|gravity_top,
31         gravity_left_center=gravity_left|gravity_ycenter,
32         gravity_center=gravity_xcenter|gravity_ycenter,
33         gravity_right_center=gravity_right|gravity_ycenter,
34         gravity_left_bottom=gravity_left|gravity_bottom,
35         gravity_bottom_center=gravity_xcenter|gravity_bottom,
36         gravity_right_bottom=gravity_right|gravity_bottom,
37         flags_expand=0x100,
38         flags_fill=0x200,
39         orientation_horizontal=0x10000,
40         orientation_vertical=0x20000,
41         orientation_horizontal_vertical=0x40000,
42 };
43
44
45 struct gui_internal_methods {
46         void (*add_callback)(struct gui_priv *priv, struct callback *cb);
47         void (*remove_callback)(struct gui_priv *priv, struct callback *cb);
48         void (*menu_render)(struct gui_priv *this);
49         struct graphics_image * (*image_new_xs)(struct gui_priv *this, char *name);
50         struct graphics_image * (*image_new_l)(struct gui_priv *this, char *name);
51 };
52
53 struct gui_internal_widget_methods {
54         void (*append)(struct widget *parent, struct widget *child);
55         struct widget * (*button_new)(struct gui_priv *this, char *text, struct graphics_image *image, enum flags flags);
56         struct widget * (*button_new_with_callback)(struct gui_priv *this, char *text, struct graphics_image *image, enum flags flags, void(*func)(struct gui_priv *priv, struct widget *widget, void *data), void *data);
57         struct widget * (*box_new)(struct gui_priv *this, enum flags flags);
58         struct widget * (*label_new)(struct gui_priv *this, char *text);
59         struct widget * (*image_new)(struct gui_priv *this, struct graphics_image *image);
60         struct widget * (*keyboard)(struct gui_priv *this, int mode);
61         struct widget * (*menu)(struct gui_priv *this, char *label);
62         enum flags (*get_flags)(struct widget *widget);
63         void (*set_flags)(struct widget *widget, enum flags flags);
64         int (*get_state)(struct widget *widget);
65         void (*set_state)(struct widget *widget, int state);
66         void (*set_func)(struct widget *widget, void (*func)(struct gui_priv *priv, struct widget *widget, void *data));
67         void (*set_data)(struct widget *widget, void *data);
68         void (*set_default_background)(struct gui_priv *this, struct widget *widget);
69
70 };
71
72 struct gui_internal_data {
73         struct gui_priv *priv;
74         struct gui_internal_methods *gui;
75         struct gui_internal_widget_methods *widget;
76 };