Download

Support

lib/ewl_container.h

Go to the documentation of this file.
00001 /* vim: set sw=8 ts=8 sts=8 expandtab: */
00002 #ifndef EWL_CONTAINER_H
00003 #define EWL_CONTAINER_H
00004 
00022 #define EWL_CONTAINER_TYPE "container"
00023 
00028 #define EWL_CONTAINER_IS(w) (ewl_widget_type_is(EWL_WIDGET(w), EWL_CONTAINER_TYPE))
00029 
00034 typedef struct Ewl_Container Ewl_Container;
00035 
00040 #define EWL_CONTAINER(widget) ((Ewl_Container *) widget)
00041 
00047 typedef void (*Ewl_Child_Add) (Ewl_Container *c, Ewl_Widget *w);
00048 
00054 typedef void (*Ewl_Child_Remove) (Ewl_Container *c, Ewl_Widget *w, int idx);
00055 
00061 typedef void (*Ewl_Child_Resize) (Ewl_Container *c, Ewl_Widget *w,
00062                                         int size, Ewl_Orientation o);
00063 
00069 typedef void (*Ewl_Child_Show) (Ewl_Container *c, Ewl_Widget *w);
00070 
00076 typedef void (*Ewl_Child_Hide) (Ewl_Container *c, Ewl_Widget *w);
00077 
00084 typedef Ewl_Widget *(*Ewl_Container_Iterator) (Ewl_Container *c);
00085 
00090 struct Ewl_Container
00091 {
00092         Ewl_Widget widget; 
00094         Ecore_DList *children; 
00095         int visible_children; 
00097         void *clip_box; 
00099         Ewl_Container *redirect; 
00101         Ewl_Child_Add child_add; 
00102         Ewl_Child_Remove child_remove; 
00103         Ewl_Child_Resize child_resize; 
00104         Ewl_Child_Show child_show; 
00105         Ewl_Child_Hide child_hide; 
00107         Ewl_Container_Iterator iterator; 
00108 };
00109 
00110 int                  ewl_container_init(Ewl_Container *container);
00111 
00112 void                  ewl_container_add_notify_set(Ewl_Container *container,
00113                                                 Ewl_Child_Add add);
00114 void                  ewl_container_remove_notify_set(Ewl_Container *container,
00115                                                 Ewl_Child_Remove remove);
00116 void                  ewl_container_resize_notify_set(Ewl_Container *container,
00117                                                 Ewl_Child_Resize resize);
00118 void                  ewl_container_show_notify_set(Ewl_Container *container,
00119                                                 Ewl_Child_Show show);
00120 void                  ewl_container_hide_notify_set(Ewl_Container *container,
00121                                                 Ewl_Child_Hide show);
00122 
00123 void                  ewl_container_child_append(Ewl_Container *parent,
00124                                                    Ewl_Widget *child);
00125 void                   ewl_container_child_prepend(Ewl_Container *parent,
00126                                                 Ewl_Widget *child);
00127 void                  ewl_container_child_insert(Ewl_Container *parent,
00128                                                 Ewl_Widget *child, int index);
00129 void                 ewl_container_child_insert_internal(Ewl_Container *parent,
00130                                                 Ewl_Widget *child, int index);
00131 void                  ewl_container_child_remove(Ewl_Container *parent,
00132                                                 Ewl_Widget *child);
00133 void                  ewl_container_child_resize(Ewl_Widget *w, int size,
00134                                                 Ewl_Orientation o);
00135 Ewl_Widget         *ewl_container_child_get(Ewl_Container *parent, int index);
00136 Ewl_Widget         *ewl_container_child_internal_get(Ewl_Container *parent, int index);
00137 int                 ewl_container_child_index_get(Ewl_Container *parent,
00138                                                         Ewl_Widget *child);
00139 int                  ewl_container_child_index_internal_get(Ewl_Container *parent,
00140                                                         Ewl_Widget *child);
00141 void                  ewl_container_child_iterate_begin(Ewl_Container *c);
00142 Ewl_Widget         *ewl_container_child_next(Ewl_Container *c);
00143 void                  ewl_container_child_iterator_set(Ewl_Container *c,
00144                                                  Ewl_Container_Iterator i);
00145 int                  ewl_container_child_count_get(Ewl_Container *c);
00146 int                  ewl_container_child_count_internal_get(Ewl_Container *c);
00147 int                 ewl_container_child_count_visible_get(Ewl_Container *c);
00148 void                 ewl_container_children_show(Ewl_Container *c);
00149 void                  ewl_container_destroy(Ewl_Container *c);
00150 void                  ewl_container_reset(Ewl_Container *c);
00151 void                  ewl_container_callback_notify(Ewl_Container *c,
00152                                                 unsigned int t);
00153 void                  ewl_container_callback_nonotify(Ewl_Container *c,
00154                                                 unsigned int t);
00155 void                  ewl_container_callback_intercept(Ewl_Container *c,
00156                                                 unsigned int t);
00157 void                  ewl_container_callback_nointercept(Ewl_Container *c,
00158                                                 unsigned int t);
00159 Ewl_Widget         *ewl_container_child_at_get(Ewl_Container *widget,
00160                                                         int x, int y);
00161 Ewl_Widget         *ewl_container_child_at_recursive_get(Ewl_Container *widget,
00162                                                         int x, int y);
00163 void                  ewl_container_largest_prefer(Ewl_Container *c,
00164                                                 Ewl_Orientation o);
00165 void                  ewl_container_sum_prefer(Ewl_Container *c, Ewl_Orientation o);
00166 
00167 void                  ewl_container_child_add_call(Ewl_Container *c, Ewl_Widget *w);
00168 void                  ewl_container_child_remove_call(Ewl_Container *c, Ewl_Widget *w,
00169                                                                 int idx);
00170 void                  ewl_container_child_show_call(Ewl_Container *c, Ewl_Widget *w);
00171 void                  ewl_container_child_hide_call(Ewl_Container *c, Ewl_Widget *w);
00172 
00173 Ewl_Container         *ewl_container_end_redirect_get(Ewl_Container *c);
00174 Ewl_Container         *ewl_container_redirect_get(Ewl_Container *c);
00175 void                  ewl_container_redirect_set(Ewl_Container *c, Ewl_Container *rc);
00176 
00177 /*
00178  * Internally used callbacks, override at your own risk.
00179  */
00180 void ewl_container_cb_reveal(Ewl_Widget *w, void *ev_data, void *user_data);
00181 void ewl_container_cb_obscure(Ewl_Widget *w, void *ev_data, void *user_data);
00182 void ewl_container_cb_realize(Ewl_Widget *w, void *ev_data, void *user_data);
00183 void ewl_container_cb_configure(Ewl_Widget * w, void *ev_data, void *user_data);
00184 void ewl_container_cb_reparent(Ewl_Widget * w, void *ev_data, void *user_data);
00185 void ewl_container_cb_unrealize(Ewl_Widget *w, void *ev_data, void *user_data);
00186 void ewl_container_cb_enable(Ewl_Widget *w, void *ev_data, void *user_data);
00187 void ewl_container_cb_disable(Ewl_Widget *w, void *ev_data, void *user_data);
00188 void ewl_container_cb_container_focus_out(Ewl_Widget *w, void *ev_data, void *user_data);
00189 void ewl_container_cb_widget_focus_out(Ewl_Widget *w, void *ev_data, void *user_data);
00190 void ewl_container_cb_widget_focus_in(Ewl_Widget *w, void *ev_data, void *user_data);
00191 
00196 #endif

Copyright © Enlightenment.org

Enlightened Widget Library Documentation Generated: Sat May 17 16:49:04 2008