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 Ewl_Container *redirect;
00099 Ewl_Child_Add child_add;
00100 Ewl_Child_Remove child_remove;
00101 Ewl_Child_Resize child_resize;
00102 Ewl_Child_Show child_show;
00103 Ewl_Child_Hide child_hide;
00105 Ewl_Container_Iterator iterator;
00106 };
00107
00108 Ewl_Widget *ewl_container_new(void);
00109 int ewl_container_init(Ewl_Container *container);
00110
00111 void ewl_container_add_notify_set(Ewl_Container *container,
00112 Ewl_Child_Add add);
00113 void ewl_container_remove_notify_set(Ewl_Container *container,
00114 Ewl_Child_Remove remove);
00115 void ewl_container_resize_notify_set(Ewl_Container *container,
00116 Ewl_Child_Resize resize);
00117 void ewl_container_show_notify_set(Ewl_Container *container,
00118 Ewl_Child_Show show);
00119 void ewl_container_hide_notify_set(Ewl_Container *container,
00120 Ewl_Child_Hide show);
00121
00122 void ewl_container_child_append(Ewl_Container *parent,
00123 Ewl_Widget *child);
00124 void ewl_container_child_prepend(Ewl_Container *parent,
00125 Ewl_Widget *child);
00126 void ewl_container_child_insert(Ewl_Container *parent,
00127 Ewl_Widget *child, int index);
00128 void ewl_container_child_insert_internal(Ewl_Container *parent,
00129 Ewl_Widget *child, int index);
00130 void ewl_container_child_remove(Ewl_Container *parent,
00131 Ewl_Widget *child);
00132 void ewl_container_child_resize(Ewl_Widget *w, int size,
00133 Ewl_Orientation o);
00134 Ewl_Widget *ewl_container_child_get(Ewl_Container *parent, int index);
00135 Ewl_Widget *ewl_container_child_internal_get(Ewl_Container *parent,
00136 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,
00166 Ewl_Orientation o);
00167
00168 void ewl_container_child_add_call(Ewl_Container *c, Ewl_Widget *w);
00169 void ewl_container_child_remove_call(Ewl_Container *c,
00170 Ewl_Widget *w, int idx);
00171 void ewl_container_child_show_call(Ewl_Container *c, Ewl_Widget *w);
00172 void ewl_container_child_hide_call(Ewl_Container *c, Ewl_Widget *w);
00173
00174 Ewl_Container *ewl_container_end_redirect_get(Ewl_Container *c);
00175 Ewl_Container *ewl_container_redirect_get(Ewl_Container *c);
00176 void ewl_container_redirect_set(Ewl_Container *c,
00177 Ewl_Container *rc);
00178
00179
00180
00181
00182 void ewl_container_cb_obscure(Ewl_Widget *w, void *ev_data, void *user_data);
00183 void ewl_container_cb_realize(Ewl_Widget *w, void *ev_data, void *user_data);
00184 void ewl_container_cb_configure(Ewl_Widget * w, void *ev_data, void *user_data);
00185 void ewl_container_cb_reparent(Ewl_Widget * w, void *ev_data, void *user_data);
00186 void ewl_container_cb_unrealize(Ewl_Widget *w, void *ev_data, void *user_data);
00187 void ewl_container_cb_enable(Ewl_Widget *w, void *ev_data, void *user_data);
00188 void ewl_container_cb_disable(Ewl_Widget *w, void *ev_data, void *user_data);
00189 void ewl_container_cb_container_focus_out(Ewl_Widget *w, void *ev_data, void *user_data);
00190 void ewl_container_cb_widget_focus_out(Ewl_Widget *w, void *ev_data, void *user_data);
00191 void ewl_container_cb_widget_focus_in(Ewl_Widget *w, void *ev_data, void *user_data);
00192
00197 #endif