00001
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
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