00001
00002 #ifndef EWL_WIDGET_H
00003 #define EWL_WIDGET_H
00004
00026 #define EWL_WIDGET_TYPE "widget"
00027
00032 #define EWL_WIDGET_IS(w) (ewl_widget_type_is(EWL_WIDGET(w), EWL_WIDGET_TYPE))
00033
00037 typedef struct Ewl_Attach_List Ewl_Attach_List;
00038
00042 struct Ewl_Attach_List
00043 {
00044 void **list;
00045 unsigned int direct:1;
00046 unsigned int len:31;
00047 };
00048
00052 typedef struct Ewl_Pair Ewl_Pair;
00053
00058 #define EWL_PAIR(p) ((Ewl_Pair *)p)
00059
00063 struct Ewl_Pair
00064 {
00065 const char *key;
00066 char *value;
00067 };
00068
00072 typedef struct Ewl_Pair_List Ewl_Pair_List;
00073
00077 struct Ewl_Pair_List
00078 {
00079 Ewl_Pair **list;
00080 unsigned int direct:1;
00081 unsigned int len:31;
00082 };
00083
00087 typedef struct Ewl_Callback_Chain Ewl_Callback_Chain;
00088
00092 struct Ewl_Callback_Chain
00093 {
00094 void **list;
00095 unsigned char mask;
00096 unsigned char len;
00097 unsigned char index;
00098 };
00099
00103 typedef struct Ewl_Color_Set Ewl_Color_Set;
00104
00108 struct Ewl_Color_Set
00109 {
00110 unsigned char r,
00111 g,
00112 b,
00113 a;
00114 };
00115
00119 typedef void *(*Ewl_Widget_Drag)(void);
00120
00125 typedef struct Ewl_Widget Ewl_Widget;
00126
00131 #define EWL_WIDGET(widget) ((Ewl_Widget *) widget)
00132
00137 struct Ewl_Widget
00138 {
00139 Ewl_Object object;
00140 Ewl_Widget *parent;
00142 Ewl_Callback_Chain callbacks[EWL_CALLBACK_MAX + 1];
00144 Ewl_Attach_List *attach;
00146 void *smart_object;
00147 void *fx_clip_box;
00149 void *theme_object;
00150 const char *theme_path;
00151 const char *theme_group;
00152 const char *theme_state;
00153 const char *appearance;
00154 const char *inheritance;
00155 int layer;
00157 Ecore_Hash *theme;
00158 Ewl_Pair_List theme_text;
00160 unsigned char toplayered:1;
00162 unsigned char unmanaged:1;
00163
00164 };
00165
00166 Ewl_Widget *ewl_widget_new(void);
00167 int ewl_widget_init(Ewl_Widget *w);
00168 void ewl_widget_free(Ewl_Widget *w);
00169
00170 void ewl_widget_name_set(Ewl_Widget *w, const char *name);
00171 const char *ewl_widget_name_get(Ewl_Widget *w);
00172 Ewl_Widget *ewl_widget_name_find(const char *name);
00173
00174 void ewl_widget_reparent(Ewl_Widget *widget);
00175 void ewl_widget_realize(Ewl_Widget *widget);
00176 void ewl_widget_unrealize(Ewl_Widget *w);
00177 void ewl_widget_reveal(Ewl_Widget *w);
00178 void ewl_widget_obscure(Ewl_Widget *w);
00179 void ewl_widget_show(Ewl_Widget *widget);
00180 void ewl_widget_hide(Ewl_Widget *widget);
00181 void ewl_widget_destroy(Ewl_Widget *widget);
00182 void ewl_widget_configure(Ewl_Widget *widget);
00183
00184 void ewl_widget_data_set(Ewl_Widget *w, void *k, void *v);
00185 void *ewl_widget_data_del(Ewl_Widget *w, void *k);
00186 void *ewl_widget_data_get(Ewl_Widget *w, void *k);
00187
00188 void ewl_widget_state_set(Ewl_Widget *w, const char *state,
00189 Ewl_State_Type flag);
00190
00191 void ewl_widget_appearance_set(Ewl_Widget *w, const char *appearance);
00192 char *ewl_widget_appearance_get(Ewl_Widget *w);
00193 char *ewl_widget_appearance_path_get(Ewl_Widget *w);
00194 int ewl_widget_appearance_path_size_get(Ewl_Widget *w);
00195 int ewl_widget_appearance_path_copy(Ewl_Widget *w, char *buf,
00196 int size);
00197 void ewl_widget_appearance_part_text_set(Ewl_Widget *w, const char *part,
00198 const char *text);
00199 const char *ewl_widget_appearance_part_text_get(Ewl_Widget *w, const char *part);
00200 void ewl_widget_appearance_text_set(Ewl_Widget *w, const char *text);
00201 const char *ewl_widget_appearance_text_get(Ewl_Widget *w);
00202
00203 void ewl_widget_inherit(Ewl_Widget *widget, const char *type);
00204
00205 unsigned int ewl_widget_type_is(Ewl_Widget *widget, const char *type);
00206 unsigned int ewl_widget_onscreen_is(Ewl_Widget *widget);
00207
00208 void ewl_widget_parent_set(Ewl_Widget *w, Ewl_Widget *p);
00209 Ewl_Widget *ewl_widget_parent_get(Ewl_Widget *w);
00210
00211 void ewl_widget_enable(Ewl_Widget *w);
00212 void ewl_widget_disable(Ewl_Widget *w);
00213
00214 void ewl_widget_print(Ewl_Widget *w);
00215 void ewl_widget_print_verbose(Ewl_Widget *w);
00216 void ewl_widget_tree_print(Ewl_Widget *w);
00217
00218 void ewl_widget_layer_top_set(Ewl_Widget *w, int top);
00219 int ewl_widget_layer_top_get(Ewl_Widget *w);
00220 void ewl_widget_layer_priority_set(Ewl_Widget *w, int layer);
00221 int ewl_widget_layer_priority_get(Ewl_Widget *w);
00222
00223 void ewl_widget_internal_set(Ewl_Widget *w, unsigned int val);
00224 unsigned int ewl_widget_internal_is(Ewl_Widget *w);
00225
00226 void ewl_widget_unmanaged_set(Ewl_Widget *w, unsigned int val);
00227 unsigned int ewl_widget_unmanaged_is(Ewl_Widget *w);
00228
00229 void ewl_widget_clipped_set(Ewl_Widget *w, unsigned int val);
00230 unsigned int ewl_widget_clipped_is(Ewl_Widget *w);
00231
00232 void ewl_widget_focus_send(Ewl_Widget *w);
00233 Ewl_Widget *ewl_widget_focused_get(void);
00234
00235 void ewl_widget_tab_order_append(Ewl_Widget *w);
00236 void ewl_widget_tab_order_prepend(Ewl_Widget *w);
00237 void ewl_widget_tab_order_insert(Ewl_Widget *w, unsigned int idx);
00238 void ewl_widget_tab_order_insert_before(Ewl_Widget *w, Ewl_Widget *before);
00239 void ewl_widget_tab_order_insert_after(Ewl_Widget *w, Ewl_Widget *after);
00240 void ewl_widget_tab_order_remove(Ewl_Widget *w);
00241
00242 void ewl_widget_focusable_set(Ewl_Widget *w, unsigned int val);
00243 unsigned int ewl_widget_focusable_get(Ewl_Widget *w);
00244
00245 void ewl_widget_ignore_focus_change_set(Ewl_Widget *w, unsigned int val);
00246 unsigned int ewl_widget_ignore_focus_change_get(Ewl_Widget *w);
00247
00248 void ewl_widget_color_set(Ewl_Widget *w, unsigned int r, unsigned int g,
00249 unsigned int b, unsigned int a);
00250 void ewl_widget_color_get(Ewl_Widget *w, unsigned int *r, unsigned int *g,
00251 unsigned int *b, unsigned int *a);
00252
00253 int ewl_widget_parent_of(Ewl_Widget *c, Ewl_Widget *w);
00254
00255
00256 #define UNMANAGED(w) (((const Ewl_Widget *)(w))->unmanaged)
00257
00258
00259
00260
00261 void ewl_widget_cb_show(Ewl_Widget *w, void *ev_data, void *user_data);
00262 void ewl_widget_cb_hide(Ewl_Widget *w, void *ev_data, void *user_data);
00263 void ewl_widget_cb_reveal(Ewl_Widget *w, void *ev_data, void *user_data);
00264 void ewl_widget_cb_obscure(Ewl_Widget *w, void *ev_data, void *user_data);
00265 void ewl_widget_cb_realize(Ewl_Widget *w, void *ev_data, void *user_data);
00266 void ewl_widget_cb_unrealize(Ewl_Widget *w, void *ev_data, void *user_data);
00267 void ewl_widget_cb_configure(Ewl_Widget *w, void *ev_data, void *user_data);
00268 void ewl_widget_cb_reparent(Ewl_Widget *w, void *ev_data, void *user_data);
00269 void ewl_widget_cb_enable(Ewl_Widget *w, void *ev_data, void *user_data);
00270 void ewl_widget_cb_disable(Ewl_Widget *w, void *ev_data, void *user_data);
00271 void ewl_widget_cb_focus_in(Ewl_Widget *w, void *ev_data, void *user_data);
00272 void ewl_widget_cb_focus_out(Ewl_Widget *w, void *ev_data, void *user_data);
00273 void ewl_widget_cb_mouse_in(Ewl_Widget *w, void *ev_data, void *user_data);
00274 void ewl_widget_cb_mouse_out(Ewl_Widget *w, void *ev_data, void *user_data);
00275 void ewl_widget_cb_mouse_down(Ewl_Widget *w, void *ev_data, void *user_data);
00276 void ewl_widget_cb_mouse_up(Ewl_Widget *w, void *ev_data, void *user_data);
00277 void ewl_widget_cb_mouse_move(Ewl_Widget *w, void *ev_data, void *user_data);
00278
00283 #endif