00001
00002 #ifndef EWL_EMBED_H
00003 #define EWL_EMBED_H
00004
00027 #define EWL_EMBED_TYPE "embed"
00028
00033 #define EWL_EMBED_IS(w) (ewl_widget_type_is(EWL_WIDGET(w), EWL_EMBED_TYPE))
00034
00039 typedef struct Ewl_Embed Ewl_Embed;
00040
00044 typedef void *Ewl_Embed_Window;
00045
00050 #define EWL_EMBED(widget) ((Ewl_Embed *) widget)
00051
00056 #define EWL_EMBED_WINDOW(window) ((Ewl_Embed_Window *)window)
00057
00062 struct Ewl_Embed
00063 {
00064 Ewl_Cell cell;
00066 const char *engine_name;
00067 void *engine;
00069 void *canvas;
00070 void *canvas_window;
00071 int cursor;
00073 void *smart;
00074 void *ev_clip;
00075 Ecore_DList *tab_order;
00077 Ecore_Hash *obj_cache;
00079 struct
00080 {
00081 Ewl_Widget *clicked;
00082 Ewl_Widget *focused;
00083 Ewl_Widget *mouse_in;
00084 Ewl_Widget *drop_widget;
00085 Ewl_Widget *drag_widget;
00086 } last;
00088 int x;
00089 int y;
00091 int dnd_count;
00093 Ewl_Dnd_Types dnd_types;
00094 Ewl_Widget *dnd_last_position;
00096 unsigned char focus:1;
00097 unsigned char render:1;
00101 };
00102
00103 Ewl_Widget *ewl_embed_new(void);
00104 int ewl_embed_init(Ewl_Embed *emb);
00105 int ewl_embed_engine_name_set(Ewl_Embed *embed, const char *engine);
00106 const char *ewl_embed_engine_name_get(Ewl_Embed *embed);
00107 void ewl_embed_shutdown(void);
00108 void *ewl_embed_canvas_set(Ewl_Embed *emb, void *canvas,
00109 Ewl_Embed_Window *canvas_window);
00110
00111 void ewl_embed_focus_set(Ewl_Embed *embed, int f);
00112 int ewl_embed_focus_get(Ewl_Embed *embed);
00113
00114 void ewl_embed_active_set(Ewl_Embed *embed, unsigned int act);
00115 Ewl_Embed *ewl_embed_active_embed_get(void);
00116
00117 void ewl_embed_last_mouse_position_get(int *x, int *y);
00118
00119 void ewl_embed_key_down_feed(Ewl_Embed *embed, const char *keyname,
00120 unsigned int modifiers);
00121 void ewl_embed_key_up_feed(Ewl_Embed *embed, const char *keyname,
00122 unsigned int modifiers);
00123 void ewl_embed_mouse_down_feed(Ewl_Embed *embed, int b, int clicks,
00124 int x, int y, unsigned int modifiers);
00125 void ewl_embed_mouse_up_feed(Ewl_Embed *embed, int b, int clicks,
00126 int x, int y, unsigned int modifiers);
00127 void ewl_embed_mouse_move_feed(Ewl_Embed *embed, int x, int y,
00128 unsigned int modifiers);
00129
00130 const char *ewl_embed_dnd_position_feed(Ewl_Embed *embed, int x, int y,
00131 int *, int *, int *, int *);
00132 const char *ewl_embed_dnd_drop_feed(Ewl_Embed* embed, int x, int y);
00133 void ewl_embed_dnd_data_received_feed(Ewl_Embed* embed, char *type,
00134 void *data, unsigned int len,
00135 unsigned int format);
00136 void ewl_embed_dnd_data_request_feed(Ewl_Embed* embed, void *handle, char *type);
00137
00138 void ewl_embed_mouse_out_feed(Ewl_Embed *embed, int x, int y,
00139 unsigned int modifiers);
00140 void ewl_embed_mouse_wheel_feed(Ewl_Embed *embed, int x, int y,
00141 int z, int dir, unsigned int mods);
00142 void ewl_embed_selection_text_clear_feed(void);
00143
00144 void ewl_embed_font_path_add(char *path);
00145 Ewl_Embed *ewl_embed_canvas_window_find(Ewl_Embed_Window *win);
00146 Ewl_Embed *ewl_embed_widget_find(Ewl_Widget *w);
00147 void ewl_embed_object_cache(Ewl_Embed *e, void *obj);
00148 void *ewl_embed_object_request(Ewl_Embed *e, char *type);
00149
00150 void ewl_embed_tab_order_append(Ewl_Embed *e, Ewl_Widget *w);
00151 void ewl_embed_tab_order_prepend(Ewl_Embed *e, Ewl_Widget *w);
00152 void ewl_embed_tab_order_insert(Ewl_Embed *e, Ewl_Widget *w,
00153 unsigned int idx);
00154 void ewl_embed_tab_order_insert_before(Ewl_Embed *e, Ewl_Widget *w,
00155 Ewl_Widget *before);
00156 void ewl_embed_tab_order_insert_after(Ewl_Embed *e, Ewl_Widget *w,
00157 Ewl_Widget *after);
00158 void ewl_embed_tab_order_remove(Ewl_Embed *e, Ewl_Widget *w);
00159 void ewl_embed_tab_order_next(Ewl_Embed *e);
00160 void ewl_embed_tab_order_previous(Ewl_Embed *e);
00161
00162 void ewl_embed_focused_widget_set(Ewl_Embed *e, Ewl_Widget *w);
00163 Ewl_Widget *ewl_embed_focused_widget_get(Ewl_Embed *e);
00164 void ewl_embed_info_widgets_cleanup(Ewl_Embed *e, Ewl_Widget *w);
00165
00166 void ewl_embed_coord_to_screen(Ewl_Embed *e, int xx, int yy,
00167 int *x, int *y);
00168
00169 void ewl_embed_mouse_cursor_set(Ewl_Widget *w);
00170 void ewl_embed_position_get(Ewl_Embed *e, int *x, int *y);
00171 void ewl_embed_window_position_get(Ewl_Embed *e, int *x, int *y);
00172 void ewl_embed_desktop_size_get(Ewl_Embed *e, int *w, int *y);
00173 void ewl_embed_freeze(Ewl_Embed *e);
00174 void ewl_embed_thaw(Ewl_Embed *e);
00175
00176 void ewl_embed_dnd_aware_set(Ewl_Embed *embed);
00177 void ewl_embed_dnd_aware_remove(Ewl_Embed *embed);
00178
00179 void ewl_embed_selection_text_set(Ewl_Embed *emb, Ewl_Widget *w,
00180 const char *txt);
00181
00182 void ewl_embed_render_set(Ewl_Embed *emb, unsigned int render);
00183 unsigned int ewl_embed_render_get(Ewl_Embed *emb);
00184
00185 void ewl_embed_cache_cleanup(Ewl_Embed *emb);
00186
00187
00188
00189
00190 void ewl_embed_cb_realize(Ewl_Widget *w, void *ev_data, void *user_data);
00191 void ewl_embed_cb_unrealize(Ewl_Widget *w, void *ev_data, void *user_data);
00192 void ewl_embed_cb_configure(Ewl_Widget *w, void *ev_data, void *user_data);
00193 void ewl_embed_cb_focus_out(Ewl_Widget *w, void *ev_data, void *user_data);
00194 void ewl_embed_cb_destroy(Ewl_Widget *w, void *ev_data, void *user_data);
00195
00200 #endif