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;
00092 int focus;
00094 Ewl_Dnd_Types dnd_types;
00095 Ewl_Widget *dnd_last_position;
00096 };
00097
00098 Ewl_Widget *ewl_embed_new(void);
00099 int ewl_embed_init(Ewl_Embed *emb);
00100 int ewl_embed_engine_name_set(Ewl_Embed *embed, const char *engine);
00101 const char *ewl_embed_engine_name_get(Ewl_Embed *embed);
00102 void ewl_embed_shutdown(void);
00103 void *ewl_embed_canvas_set(Ewl_Embed *emb, void *canvas,
00104 Ewl_Embed_Window *canvas_window);
00105
00106 void ewl_embed_focus_set(Ewl_Embed *embed, int f);
00107 int ewl_embed_focus_get(Ewl_Embed *embed);
00108
00109 void ewl_embed_active_set(Ewl_Embed *embed, unsigned int act);
00110 Ewl_Embed *ewl_embed_active_embed_get(void);
00111
00112 void ewl_embed_last_mouse_position_get(int *x, int *y);
00113
00114 void ewl_embed_key_down_feed(Ewl_Embed *embed, const char *keyname,
00115 unsigned int modifiers);
00116 void ewl_embed_key_up_feed(Ewl_Embed *embed, const char *keyname,
00117 unsigned int modifiers);
00118 void ewl_embed_mouse_down_feed(Ewl_Embed *embed, int b, int clicks,
00119 int x, int y, unsigned int modifiers);
00120 void ewl_embed_mouse_up_feed(Ewl_Embed *embed, int b, int x,
00121 int y, unsigned int modifiers);
00122 void ewl_embed_mouse_move_feed(Ewl_Embed *embed, int x, int y,
00123 unsigned int modifiers);
00124
00125 const char *ewl_embed_dnd_position_feed(Ewl_Embed *embed, int x, int y,
00126 int *, int *, int *, int *);
00127 const char *ewl_embed_dnd_drop_feed(Ewl_Embed* embed, int x, int y,
00128 int internal);
00129 void ewl_embed_dnd_data_received_feed(Ewl_Embed* embed, char *type,
00130 void *data,
00131 unsigned int len,
00132 unsigned int format);
00133 void ewl_embed_dnd_data_request_feed(Ewl_Embed* embed, void *handle,
00134 char *type);
00135
00136 void ewl_embed_mouse_out_feed(Ewl_Embed *embed, int x, int y,
00137 unsigned int modifiers);
00138 void ewl_embed_mouse_wheel_feed(Ewl_Embed *embed, int x, int y,
00139 int z, int dir, unsigned int mods);
00140
00141 void ewl_embed_font_path_add(char *path);
00142 Ewl_Embed *ewl_embed_canvas_window_find(Ewl_Embed_Window *win);
00143 Ewl_Embed *ewl_embed_widget_find(Ewl_Widget *w);
00144 void ewl_embed_object_cache(Ewl_Embed *e, void *obj);
00145 void *ewl_embed_object_request(Ewl_Embed *e, char *type);
00146
00147 void ewl_embed_tab_order_append(Ewl_Embed *e, Ewl_Widget *w);
00148 void ewl_embed_tab_order_prepend(Ewl_Embed *e, Ewl_Widget *w);
00149 void ewl_embed_tab_order_insert(Ewl_Embed *e, Ewl_Widget *w,
00150 unsigned int idx);
00151 void ewl_embed_tab_order_insert_before(Ewl_Embed *e, Ewl_Widget *w,
00152 Ewl_Widget *before);
00153 void ewl_embed_tab_order_insert_after(Ewl_Embed *e, Ewl_Widget *w,
00154 Ewl_Widget *after);
00155 void ewl_embed_tab_order_remove(Ewl_Embed *e, Ewl_Widget *w);
00156 void ewl_embed_tab_order_next(Ewl_Embed *e);
00157 void ewl_embed_tab_order_previous(Ewl_Embed *e);
00158
00159 void ewl_embed_focused_widget_set(Ewl_Embed *e, Ewl_Widget *w);
00160 Ewl_Widget *ewl_embed_focused_widget_get(Ewl_Embed *e);
00161 void ewl_embed_info_widgets_cleanup(Ewl_Embed *e, Ewl_Widget *w);
00162
00163 void ewl_embed_coord_to_screen(Ewl_Embed *e, int xx, int yy,
00164 int *x, int *y);
00165
00166 void ewl_embed_mouse_cursor_set(Ewl_Widget *w);
00167 void ewl_embed_position_get(Ewl_Embed *e, int *x, int *y);
00168 void ewl_embed_window_position_get(Ewl_Embed *e, int *x, int *y);
00169 void ewl_embed_desktop_size_get(Ewl_Embed *e, int *w, int *y);
00170 void ewl_embed_freeze(Ewl_Embed *e);
00171 void ewl_embed_thaw(Ewl_Embed *e);
00172
00173 void ewl_embed_dnd_aware_set(Ewl_Embed *embed);
00174 void ewl_embed_dnd_aware_remove(Ewl_Embed *embed);
00175
00176 void ewl_embed_selection_text_set(Ewl_Embed *emb, const char *txt);
00177
00178 void ewl_embed_cache_cleanup(Ewl_Embed *emb);
00179
00180
00181
00182
00183 void ewl_embed_cb_realize(Ewl_Widget *w, void *ev_data, void *user_data);
00184 void ewl_embed_cb_unrealize(Ewl_Widget *w, void *ev_data, void *user_data);
00185 void ewl_embed_cb_configure(Ewl_Widget *w, void *ev_data, void *user_data);
00186 void ewl_embed_cb_focus_out(Ewl_Widget *w, void *ev_data, void *user_data);
00187 void ewl_embed_cb_destroy(Ewl_Widget *w, void *ev_data, void *user_data);
00188
00193 #endif