split up all elm headers. not perfect, but a big start
[framework/uifw/elementary.git] / src / lib / elm_web.h
1    /**
2     * @defgroup Web Web
3     *
4     * @image html img/widget/web/preview-00.png
5     * @image latex img/widget/web/preview-00.eps
6     *
7     * A web object is used for displaying web pages (HTML/CSS/JS)
8     * using WebKit-EFL. You must have compiled Elementary with
9     * ewebkit support.
10     *
11     * Signals that you can add callbacks for are:
12     * @li "download,request": A file download has been requested. Event info is
13     * a pointer to a Elm_Web_Download
14     * @li "editorclient,contents,changed": Editor client's contents changed
15     * @li "editorclient,selection,changed": Editor client's selection changed
16     * @li "frame,created": A new frame was created. Event info is an
17     * Evas_Object which can be handled with WebKit's ewk_frame API
18     * @li "icon,received": An icon was received by the main frame
19     * @li "inputmethod,changed": Input method changed. Event info is an
20     * Eina_Bool indicating whether it's enabled or not
21     * @li "js,windowobject,clear": JS window object has been cleared
22     * @li "link,hover,in": Mouse cursor is hovering over a link. Event info
23     * is a char *link[2], where the first string contains the URL the link
24     * points to, and the second one the title of the link
25     * @li "link,hover,out": Mouse cursor left the link
26     * @li "load,document,finished": Loading of a document finished. Event info
27     * is the frame that finished loading
28     * @li "load,error": Load failed. Event info is a pointer to
29     * Elm_Web_Frame_Load_Error
30     * @li "load,finished": Load finished. Event info is NULL on success, on
31     * error it's a pointer to Elm_Web_Frame_Load_Error
32     * @li "load,newwindow,show": A new window was created and is ready to be
33     * shown
34     * @li "load,progress": Overall load progress. Event info is a pointer to
35     * a double containing a value between 0.0 and 1.0
36     * @li "load,provisional": Started provisional load
37     * @li "load,started": Loading of a document started
38     * @li "menubar,visible,get": Queries if the menubar is visible. Event info
39     * is a pointer to Eina_Bool where the callback should set EINA_TRUE if
40     * the menubar is visible, or EINA_FALSE in case it's not
41     * @li "menubar,visible,set": Informs menubar visibility. Event info is
42     * an Eina_Bool indicating the visibility
43     * @li "popup,created": A dropdown widget was activated, requesting its
44     * popup menu to be created. Event info is a pointer to Elm_Web_Menu
45     * @li "popup,willdelete": The web object is ready to destroy the popup
46     * object created. Event info is a pointer to Elm_Web_Menu
47     * @li "ready": Page is fully loaded
48     * @li "scrollbars,visible,get": Queries visibility of scrollbars. Event
49     * info is a pointer to Eina_Bool where the visibility state should be set
50     * @li "scrollbars,visible,set": Informs scrollbars visibility. Event info
51     * is an Eina_Bool with the visibility state set
52     * @li "statusbar,text,set": Text of the statusbar changed. Even info is
53     * a string with the new text
54     * @li "statusbar,visible,get": Queries visibility of the status bar.
55     * Event info is a pointer to Eina_Bool where the visibility state should be
56     * set.
57     * @li "statusbar,visible,set": Informs statusbar visibility. Event info is
58     * an Eina_Bool with the visibility value
59     * @li "title,changed": Title of the main frame changed. Event info is a
60     * string with the new title
61     * @li "toolbars,visible,get": Queries visibility of toolbars. Event info
62     * is a pointer to Eina_Bool where the visibility state should be set
63     * @li "toolbars,visible,set": Informs the visibility of toolbars. Event
64     * info is an Eina_Bool with the visibility state
65     * @li "tooltip,text,set": Show and set text of a tooltip. Event info is
66     * a string with the text to show
67     * @li "uri,changed": URI of the main frame changed. Event info is a string
68     * with the new URI
69     * @li "view,resized": The web object internal's view changed sized
70     * @li "windows,close,request": A JavaScript request to close the current
71     * window was requested
72     * @li "zoom,animated,end": Animated zoom finished
73     *
74     * available styles:
75     * - default
76     *
77     * An example of use of web:
78     *
79     * - @ref web_example_01 TBD
80     */
81
82    /**
83     * @addtogroup Web
84     * @{
85     */
86
87    /**
88     * Structure used to report load errors.
89     *
90     * Load errors are reported as signal by elm_web. All the strings are
91     * temporary references and should @b not be used after the signal
92     * callback returns. If it's required, make copies with strdup() or
93     * eina_stringshare_add() (they are not even guaranteed to be
94     * stringshared, so must use eina_stringshare_add() and not
95     * eina_stringshare_ref()).
96     */
97    typedef struct _Elm_Web_Frame_Load_Error Elm_Web_Frame_Load_Error;
98
99    /**
100     * Structure used to report load errors.
101     *
102     * Load errors are reported as signal by elm_web. All the strings are
103     * temporary references and should @b not be used after the signal
104     * callback returns. If it's required, make copies with strdup() or
105     * eina_stringshare_add() (they are not even guaranteed to be
106     * stringshared, so must use eina_stringshare_add() and not
107     * eina_stringshare_ref()).
108     */
109    struct _Elm_Web_Frame_Load_Error
110      {
111         int code; /**< Numeric error code */
112         Eina_Bool is_cancellation; /**< Error produced by cancelling a request */
113         const char *domain; /**< Error domain name */
114         const char *description; /**< Error description (already localized) */
115         const char *failing_url; /**< The URL that failed to load */
116         Evas_Object *frame; /**< Frame object that produced the error */
117      };
118
119    /**
120     * The possibles types that the items in a menu can be
121     */
122    typedef enum _Elm_Web_Menu_Item_Type
123      {
124         ELM_WEB_MENU_SEPARATOR,
125         ELM_WEB_MENU_GROUP,
126         ELM_WEB_MENU_OPTION
127      } Elm_Web_Menu_Item_Type;
128
129    /**
130     * Structure describing the items in a menu
131     */
132    typedef struct _Elm_Web_Menu_Item Elm_Web_Menu_Item;
133
134    /**
135     * Structure describing the items in a menu
136     */
137    struct _Elm_Web_Menu_Item
138      {
139         const char *text; /**< The text for the item */
140         Elm_Web_Menu_Item_Type type; /**< The type of the item */
141      };
142
143    /**
144     * Structure describing the menu of a popup
145     *
146     * This structure will be passed as the @c event_info for the "popup,create"
147     * signal, which is emitted when a dropdown menu is opened. Users wanting
148     * to handle these popups by themselves should listen to this signal and
149     * set the @c handled property of the struct to @c EINA_TRUE. Leaving this
150     * property as @c EINA_FALSE means that the user will not handle the popup
151     * and the default implementation will be used.
152     *
153     * When the popup is ready to be dismissed, a "popup,willdelete" signal
154     * will be emitted to notify the user that it can destroy any objects and
155     * free all data related to it.
156     *
157     * @see elm_web_popup_selected_set()
158     * @see elm_web_popup_destroy()
159     */
160    typedef struct _Elm_Web_Menu Elm_Web_Menu;
161
162    /**
163     * Structure describing the menu of a popup
164     *
165     * This structure will be passed as the @c event_info for the "popup,create"
166     * signal, which is emitted when a dropdown menu is opened. Users wanting
167     * to handle these popups by themselves should listen to this signal and
168     * set the @c handled property of the struct to @c EINA_TRUE. Leaving this
169     * property as @c EINA_FALSE means that the user will not handle the popup
170     * and the default implementation will be used.
171     *
172     * When the popup is ready to be dismissed, a "popup,willdelete" signal
173     * will be emitted to notify the user that it can destroy any objects and
174     * free all data related to it.
175     *
176     * @see elm_web_popup_selected_set()
177     * @see elm_web_popup_destroy()
178     */
179    struct _Elm_Web_Menu
180      {
181         Eina_List *items; /**< List of #Elm_Web_Menu_Item */
182         int x; /**< The X position of the popup, relative to the elm_web object */
183         int y; /**< The Y position of the popup, relative to the elm_web object */
184         int width; /**< Width of the popup menu */
185         int height; /**< Height of the popup menu */
186
187         Eina_Bool handled : 1; /**< Set to @c EINA_TRUE by the user to indicate that the popup has been handled and the default implementation should be ignored. Leave as @c EINA_FALSE otherwise. */
188      };
189
190    typedef struct _Elm_Web_Download Elm_Web_Download;
191    struct _Elm_Web_Download
192      {
193         const char *url;
194      };
195
196    /**
197     * Types of zoom available.
198     */
199    typedef enum _Elm_Web_Zoom_Mode
200      {
201         ELM_WEB_ZOOM_MODE_MANUAL = 0, /**< Zoom controlled normally by elm_web_zoom_set */
202         ELM_WEB_ZOOM_MODE_AUTO_FIT, /**< Zoom until content fits in web object */
203         ELM_WEB_ZOOM_MODE_AUTO_FILL, /**< Zoom until content fills web object */
204         ELM_WEB_ZOOM_MODE_LAST
205      } Elm_Web_Zoom_Mode;
206
207    /**
208     * Opaque handler containing the features (such as statusbar, menubar, etc)
209     * that are to be set on a newly requested window.
210     */
211    typedef struct _Elm_Web_Window_Features Elm_Web_Window_Features;
212
213    /**
214     * Callback type for the create_window hook.
215     *
216     * The function parameters are:
217     * @li @p data User data pointer set when setting the hook function
218     * @li @p obj The elm_web object requesting the new window
219     * @li @p js Set to @c EINA_TRUE if the request was originated from
220     * JavaScript. @c EINA_FALSE otherwise.
221     * @li @p window_features A pointer of #Elm_Web_Window_Features indicating
222     * the features requested for the new window.
223     *
224     * The returned value of the function should be the @c elm_web widget where
225     * the request will be loaded. That is, if a new window or tab is created,
226     * the elm_web widget in it should be returned, and @b NOT the window
227     * object.
228     * Returning @c NULL should cancel the request.
229     *
230     * @see elm_web_window_create_hook_set()
231     */
232    typedef Evas_Object *(*Elm_Web_Window_Open)(void *data, Evas_Object *obj, Eina_Bool js, const Elm_Web_Window_Features *window_features);
233
234    /**
235     * Callback type for the JS alert hook.
236     *
237     * The function parameters are:
238     * @li @p data User data pointer set when setting the hook function
239     * @li @p obj The elm_web object requesting the new window
240     * @li @p message The message to show in the alert dialog
241     *
242     * The function should return the object representing the alert dialog.
243     * Elm_Web will run a second main loop to handle the dialog and normal
244     * flow of the application will be restored when the object is deleted, so
245     * the user should handle the popup properly in order to delete the object
246     * when the action is finished.
247     * If the function returns @c NULL the popup will be ignored.
248     *
249     * @see elm_web_dialog_alert_hook_set()
250     */
251    typedef Evas_Object *(*Elm_Web_Dialog_Alert)(void *data, Evas_Object *obj, const char *message);
252
253    /**
254     * Callback type for the JS confirm hook.
255     *
256     * The function parameters are:
257     * @li @p data User data pointer set when setting the hook function
258     * @li @p obj The elm_web object requesting the new window
259     * @li @p message The message to show in the confirm dialog
260     * @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
261     * the user selected @c Ok, @c EINA_FALSE otherwise.
262     *
263     * The function should return the object representing the confirm dialog.
264     * Elm_Web will run a second main loop to handle the dialog and normal
265     * flow of the application will be restored when the object is deleted, so
266     * the user should handle the popup properly in order to delete the object
267     * when the action is finished.
268     * If the function returns @c NULL the popup will be ignored.
269     *
270     * @see elm_web_dialog_confirm_hook_set()
271     */
272    typedef Evas_Object *(*Elm_Web_Dialog_Confirm)(void *data, Evas_Object *obj, const char *message, Eina_Bool *ret);
273
274    /**
275     * Callback type for the JS prompt hook.
276     *
277     * The function parameters are:
278     * @li @p data User data pointer set when setting the hook function
279     * @li @p obj The elm_web object requesting the new window
280     * @li @p message The message to show in the prompt dialog
281     * @li @p def_value The default value to present the user in the entry
282     * @li @p value Pointer where to store the value given by the user. Must
283     * be a malloc'ed string or @c NULL if the user cancelled the popup.
284     * @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
285     * the user selected @c Ok, @c EINA_FALSE otherwise.
286     *
287     * The function should return the object representing the prompt dialog.
288     * Elm_Web will run a second main loop to handle the dialog and normal
289     * flow of the application will be restored when the object is deleted, so
290     * the user should handle the popup properly in order to delete the object
291     * when the action is finished.
292     * If the function returns @c NULL the popup will be ignored.
293     *
294     * @see elm_web_dialog_prompt_hook_set()
295     */
296    typedef Evas_Object *(*Elm_Web_Dialog_Prompt)(void *data, Evas_Object *obj, const char *message, const char *def_value, char **value, Eina_Bool *ret);
297
298    /**
299     * Callback type for the JS file selector hook.
300     *
301     * The function parameters are:
302     * @li @p data User data pointer set when setting the hook function
303     * @li @p obj The elm_web object requesting the new window
304     * @li @p allows_multiple @c EINA_TRUE if multiple files can be selected.
305     * @li @p accept_types Mime types accepted
306     * @li @p selected Pointer where to store the list of malloc'ed strings
307     * containing the path to each file selected. Must be @c NULL if the file
308     * dialog is cancelled
309     * @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
310     * the user selected @c Ok, @c EINA_FALSE otherwise.
311     *
312     * The function should return the object representing the file selector
313     * dialog.
314     * Elm_Web will run a second main loop to handle the dialog and normal
315     * flow of the application will be restored when the object is deleted, so
316     * the user should handle the popup properly in order to delete the object
317     * when the action is finished.
318     * If the function returns @c NULL the popup will be ignored.
319     *
320     * @see elm_web_dialog_file selector_hook_set()
321     */
322    typedef Evas_Object *(*Elm_Web_Dialog_File_Selector)(void *data, Evas_Object *obj, Eina_Bool allows_multiple, Eina_List *accept_types, Eina_List **selected, Eina_Bool *ret);
323
324    /**
325     * Callback type for the JS console message hook.
326     *
327     * When a console message is added from JavaScript, any set function to the
328     * console message hook will be called for the user to handle. There is no
329     * default implementation of this hook.
330     *
331     * The function parameters are:
332     * @li @p data User data pointer set when setting the hook function
333     * @li @p obj The elm_web object that originated the message
334     * @li @p message The message sent
335     * @li @p line_number The line number
336     * @li @p source_id Source id
337     *
338     * @see elm_web_console_message_hook_set()
339     */
340    typedef void (*Elm_Web_Console_Message)(void *data, Evas_Object *obj, const char *message, unsigned int line_number, const char *source_id);
341
342    /**
343     * Add a new web object to the parent.
344     *
345     * @param parent The parent object.
346     * @return The new object or NULL if it cannot be created.
347     *
348     * @see elm_web_uri_set()
349     * @see elm_web_webkit_view_get()
350     */
351    EAPI Evas_Object                 *elm_web_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
352
353    /**
354     * Get internal ewk_view object from web object.
355     *
356     * Elementary may not provide some low level features of EWebKit,
357     * instead of cluttering the API with proxy methods we opted to
358     * return the internal reference. Be careful using it as it may
359     * interfere with elm_web behavior.
360     *
361     * @param obj The web object.
362     * @return The internal ewk_view object or NULL if it does not
363     *         exist. (Failure to create or Elementary compiled without
364     *         ewebkit)
365     *
366     * @see elm_web_add()
367     */
368    EAPI Evas_Object                 *elm_web_webkit_view_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
369
370    /**
371     * Sets the function to call when a new window is requested
372     *
373     * This hook will be called when a request to create a new window is
374     * issued from the web page loaded.
375     * There is no default implementation for this feature, so leaving this
376     * unset or passing @c NULL in @p func will prevent new windows from
377     * opening.
378     *
379     * @param obj The web object where to set the hook function
380     * @param func The hook function to be called when a window is requested
381     * @param data User data
382     */
383    EAPI void                         elm_web_window_create_hook_set(Evas_Object *obj, Elm_Web_Window_Open func, void *data);
384
385    /**
386     * Sets the function to call when an alert dialog
387     *
388     * This hook will be called when a JavaScript alert dialog is requested.
389     * If no function is set or @c NULL is passed in @p func, the default
390     * implementation will take place.
391     *
392     * @param obj The web object where to set the hook function
393     * @param func The callback function to be used
394     * @param data User data
395     *
396     * @see elm_web_inwin_mode_set()
397     */
398    EAPI void                         elm_web_dialog_alert_hook_set(Evas_Object *obj, Elm_Web_Dialog_Alert func, void *data);
399
400    /**
401     * Sets the function to call when an confirm dialog
402     *
403     * This hook will be called when a JavaScript confirm dialog is requested.
404     * If no function is set or @c NULL is passed in @p func, the default
405     * implementation will take place.
406     *
407     * @param obj The web object where to set the hook function
408     * @param func The callback function to be used
409     * @param data User data
410     *
411     * @see elm_web_inwin_mode_set()
412     */
413    EAPI void                         elm_web_dialog_confirm_hook_set(Evas_Object *obj, Elm_Web_Dialog_Confirm func, void *data);
414
415    /**
416     * Sets the function to call when an prompt dialog
417     *
418     * This hook will be called when a JavaScript prompt dialog is requested.
419     * If no function is set or @c NULL is passed in @p func, the default
420     * implementation will take place.
421     *
422     * @param obj The web object where to set the hook function
423     * @param func The callback function to be used
424     * @param data User data
425     *
426     * @see elm_web_inwin_mode_set()
427     */
428    EAPI void                         elm_web_dialog_prompt_hook_set(Evas_Object *obj, Elm_Web_Dialog_Prompt func, void *data);
429
430    /**
431     * Sets the function to call when an file selector dialog
432     *
433     * This hook will be called when a JavaScript file selector dialog is
434     * requested.
435     * If no function is set or @c NULL is passed in @p func, the default
436     * implementation will take place.
437     *
438     * @param obj The web object where to set the hook function
439     * @param func The callback function to be used
440     * @param data User data
441     *
442     * @see elm_web_inwin_mode_set()
443     */
444    EAPI void                         elm_web_dialog_file_selector_hook_set(Evas_Object *obj, Elm_Web_Dialog_File_Selector func, void *data);
445
446    /**
447     * Sets the function to call when a console message is emitted from JS
448     *
449     * This hook will be called when a console message is emitted from
450     * JavaScript. There is no default implementation for this feature.
451     *
452     * @param obj The web object where to set the hook function
453     * @param func The callback function to be used
454     * @param data User data
455     */
456    EAPI void                         elm_web_console_message_hook_set(Evas_Object *obj, Elm_Web_Console_Message func, void *data);
457
458    /**
459     * Gets the status of the tab propagation
460     *
461     * @param obj The web object to query
462     * @return EINA_TRUE if tab propagation is enabled, EINA_FALSE otherwise
463     *
464     * @see elm_web_tab_propagate_set()
465     */
466    EAPI Eina_Bool                    elm_web_tab_propagate_get(const Evas_Object *obj);
467
468    /**
469     * Sets whether to use tab propagation
470     *
471     * If tab propagation is enabled, whenever the user presses the Tab key,
472     * Elementary will handle it and switch focus to the next widget.
473     * The default value is disabled, where WebKit will handle the Tab key to
474     * cycle focus though its internal objects, jumping to the next widget
475     * only when that cycle ends.
476     *
477     * @param obj The web object
478     * @param propagate Whether to propagate Tab keys to Elementary or not
479     */
480    EAPI void                         elm_web_tab_propagate_set(Evas_Object *obj, Eina_Bool propagate);
481
482    /**
483     * Sets the URI for the web object
484     *
485     * It must be a full URI, with resource included, in the form
486     * http://www.enlightenment.org or file:///tmp/something.html
487     *
488     * @param obj The web object
489     * @param uri The URI to set
490     * @return EINA_TRUE if the URI could be, EINA_FALSE if an error occurred
491     */
492    EAPI Eina_Bool                    elm_web_uri_set(Evas_Object *obj, const char *uri);
493
494    /**
495     * Gets the current URI for the object
496     *
497     * The returned string must not be freed and is guaranteed to be
498     * stringshared.
499     *
500     * @param obj The web object
501     * @return A stringshared internal string with the current URI, or NULL on
502     * failure
503     */
504    EAPI const char                  *elm_web_uri_get(const Evas_Object *obj);
505
506    /**
507     * Gets the current title
508     *
509     * The returned string must not be freed and is guaranteed to be
510     * stringshared.
511     *
512     * @param obj The web object
513     * @return A stringshared internal string with the current title, or NULL on
514     * failure
515     */
516    EAPI const char                  *elm_web_title_get(const Evas_Object *obj);
517
518    /**
519     * Sets the background color to be used by the web object
520     *
521     * This is the color that will be used by default when the loaded page
522     * does not set it's own. Color values are pre-multiplied.
523     *
524     * @param obj The web object
525     * @param r Red component
526     * @param g Green component
527     * @param b Blue component
528     * @param a Alpha component
529     */
530    EAPI void                         elm_web_bg_color_set(Evas_Object *obj, int r, int g, int b, int a);
531
532    /**
533     * Gets the background color to be used by the web object
534     *
535     * This is the color that will be used by default when the loaded page
536     * does not set it's own. Color values are pre-multiplied.
537     *
538     * @param obj The web object
539     * @param r Red component
540     * @param g Green component
541     * @param b Blue component
542     * @param a Alpha component
543     */
544    EAPI void                         elm_web_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a);
545
546    /**
547     * Gets a copy of the currently selected text
548     *
549     * The string returned must be freed by the user when it's done with it.
550     *
551     * @param obj The web object
552     * @return A newly allocated string, or NULL if nothing is selected or an
553     * error occurred
554     */
555    EAPI char                        *elm_view_selection_get(const Evas_Object *obj);
556
557    /**
558     * Tells the web object which index in the currently open popup was selected
559     *
560     * When the user handles the popup creation from the "popup,created" signal,
561     * it needs to tell the web object which item was selected by calling this
562     * function with the index corresponding to the item.
563     *
564     * @param obj The web object
565     * @param index The index selected
566     *
567     * @see elm_web_popup_destroy()
568     */
569    EAPI void                         elm_web_popup_selected_set(Evas_Object *obj, int index);
570
571    /**
572     * Dismisses an open dropdown popup
573     *
574     * When the popup from a dropdown widget is to be dismissed, either after
575     * selecting an option or to cancel it, this function must be called, which
576     * will later emit an "popup,willdelete" signal to notify the user that
577     * any memory and objects related to this popup can be freed.
578     *
579     * @param obj The web object
580     * @return EINA_TRUE if the menu was successfully destroyed, or EINA_FALSE
581     * if there was no menu to destroy
582     */
583    EAPI Eina_Bool                    elm_web_popup_destroy(Evas_Object *obj);
584
585    /**
586     * Searches the given string in a document.
587     *
588     * @param obj The web object where to search the text
589     * @param string String to search
590     * @param case_sensitive If search should be case sensitive or not
591     * @param forward If search is from cursor and on or backwards
592     * @param wrap If search should wrap at the end
593     *
594     * @return @c EINA_TRUE if the given string was found, @c EINA_FALSE if not
595     * or failure
596     */
597    EAPI Eina_Bool                    elm_web_text_search(const Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap);
598
599    /**
600     * Marks matches of the given string in a document.
601     *
602     * @param obj The web object where to search text
603     * @param string String to match
604     * @param case_sensitive If match should be case sensitive or not
605     * @param highlight If matches should be highlighted
606     * @param limit Maximum amount of matches, or zero to unlimited
607     *
608     * @return number of matched @a string
609     */
610    EAPI unsigned int                 elm_web_text_matches_mark(Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit);
611
612    /**
613     * Clears all marked matches in the document
614     *
615     * @param obj The web object
616     *
617     * @return EINA_TRUE on success, EINA_FALSE otherwise
618     */
619    EAPI Eina_Bool                    elm_web_text_matches_unmark_all(Evas_Object *obj);
620
621    /**
622     * Sets whether to highlight the matched marks
623     *
624     * If enabled, marks set with elm_web_text_matches_mark() will be
625     * highlighted.
626     *
627     * @param obj The web object
628     * @param highlight Whether to highlight the marks or not
629     *
630     * @return EINA_TRUE on success, EINA_FALSE otherwise
631     */
632    EAPI Eina_Bool                    elm_web_text_matches_highlight_set(Evas_Object *obj, Eina_Bool highlight);
633
634    /**
635     * Gets whether highlighting marks is enabled
636     *
637     * @param The web object
638     *
639     * @return EINA_TRUE is marks are set to be highlighted, EINA_FALSE
640     * otherwise
641     */
642    EAPI Eina_Bool                    elm_web_text_matches_highlight_get(const Evas_Object *obj);
643
644    /**
645     * Gets the overall loading progress of the page
646     *
647     * Returns the estimated loading progress of the page, with a value between
648     * 0.0 and 1.0. This is an estimated progress accounting for all the frames
649     * included in the page.
650     *
651     * @param The web object
652     *
653     * @return A value between 0.0 and 1.0 indicating the progress, or -1.0 on
654     * failure
655     */
656    EAPI double                       elm_web_load_progress_get(const Evas_Object *obj);
657
658    /**
659     * Stops loading the current page
660     *
661     * Cancels the loading of the current page in the web object. This will
662     * cause a "load,error" signal to be emitted, with the is_cancellation
663     * flag set to EINA_TRUE.
664     *
665     * @param obj The web object
666     *
667     * @return EINA_TRUE if the cancel was successful, EINA_FALSE otherwise
668     */
669    EAPI Eina_Bool                    elm_web_stop(Evas_Object *obj);
670
671    /**
672     * Requests a reload of the current document in the object
673     *
674     * @param obj The web object
675     *
676     * @return EINA_TRUE on success, EINA_FALSE otherwise
677     */
678    EAPI Eina_Bool                    elm_web_reload(Evas_Object *obj);
679
680    /**
681     * Requests a reload of the current document, avoiding any existing caches
682     *
683     * @param obj The web object
684     *
685     * @return EINA_TRUE on success, EINA_FALSE otherwise
686     */
687    EAPI Eina_Bool                    elm_web_reload_full(Evas_Object *obj);
688
689    /**
690     * Goes back one step in the browsing history
691     *
692     * This is equivalent to calling elm_web_object_navigate(obj, -1);
693     *
694     * @param obj The web object
695     *
696     * @return EINA_TRUE on success, EINA_FALSE otherwise
697     *
698     * @see elm_web_history_enable_set()
699     * @see elm_web_back_possible()
700     * @see elm_web_forward()
701     * @see elm_web_navigate()
702     */
703    EAPI Eina_Bool                    elm_web_back(Evas_Object *obj);
704
705    /**
706     * Goes forward one step in the browsing history
707     *
708     * This is equivalent to calling elm_web_object_navigate(obj, 1);
709     *
710     * @param obj The web object
711     *
712     * @return EINA_TRUE on success, EINA_FALSE otherwise
713     *
714     * @see elm_web_history_enable_set()
715     * @see elm_web_forward_possible()
716     * @see elm_web_back()
717     * @see elm_web_navigate()
718     */
719    EAPI Eina_Bool                    elm_web_forward(Evas_Object *obj);
720
721    /**
722     * Jumps the given number of steps in the browsing history
723     *
724     * The @p steps value can be a negative integer to back in history, or a
725     * positive to move forward.
726     *
727     * @param obj The web object
728     * @param steps The number of steps to jump
729     *
730     * @return EINA_TRUE on success, EINA_FALSE on error or if not enough
731     * history exists to jump the given number of steps
732     *
733     * @see elm_web_history_enable_set()
734     * @see elm_web_navigate_possible()
735     * @see elm_web_back()
736     * @see elm_web_forward()
737     */
738    EAPI Eina_Bool                    elm_web_navigate(Evas_Object *obj, int steps);
739
740    /**
741     * Queries whether it's possible to go back in history
742     *
743     * @param obj The web object
744     *
745     * @return EINA_TRUE if it's possible to back in history, EINA_FALSE
746     * otherwise
747     */
748    EAPI Eina_Bool                    elm_web_back_possible(Evas_Object *obj);
749
750    /**
751     * Queries whether it's possible to go forward in history
752     *
753     * @param obj The web object
754     *
755     * @return EINA_TRUE if it's possible to forward in history, EINA_FALSE
756     * otherwise
757     */
758    EAPI Eina_Bool                    elm_web_forward_possible(Evas_Object *obj);
759
760    /**
761     * Queries whether it's possible to jump the given number of steps
762     *
763     * The @p steps value can be a negative integer to back in history, or a
764     * positive to move forward.
765     *
766     * @param obj The web object
767     * @param steps The number of steps to check for
768     *
769     * @return EINA_TRUE if enough history exists to perform the given jump,
770     * EINA_FALSE otherwise
771     */
772    EAPI Eina_Bool                    elm_web_navigate_possible(Evas_Object *obj, int steps);
773
774    /**
775     * Gets whether browsing history is enabled for the given object
776     *
777     * @param obj The web object
778     *
779     * @return EINA_TRUE if history is enabled, EINA_FALSE otherwise
780     */
781    EAPI Eina_Bool                    elm_web_history_enable_get(const Evas_Object *obj);
782
783    /**
784     * Enables or disables the browsing history
785     *
786     * @param obj The web object
787     * @param enable Whether to enable or disable the browsing history
788     */
789    EAPI void                         elm_web_history_enable_set(Evas_Object *obj, Eina_Bool enable);
790
791    /**
792     * Sets the zoom level of the web object
793     *
794     * Zoom level matches the Webkit API, so 1.0 means normal zoom, with higher
795     * values meaning zoom in and lower meaning zoom out. This function will
796     * only affect the zoom level if the mode set with elm_web_zoom_mode_set()
797     * is ::ELM_WEB_ZOOM_MODE_MANUAL.
798     *
799     * @param obj The web object
800     * @param zoom The zoom level to set
801     */
802    EAPI void                         elm_web_zoom_set(Evas_Object *obj, double zoom);
803
804    /**
805     * Gets the current zoom level set on the web object
806     *
807     * Note that this is the zoom level set on the web object and not that
808     * of the underlying Webkit one. In the ::ELM_WEB_ZOOM_MODE_MANUAL mode,
809     * the two zoom levels should match, but for the other two modes the
810     * Webkit zoom is calculated internally to match the chosen mode without
811     * changing the zoom level set for the web object.
812     *
813     * @param obj The web object
814     *
815     * @return The zoom level set on the object
816     */
817    EAPI double                       elm_web_zoom_get(const Evas_Object *obj);
818
819    /**
820     * Sets the zoom mode to use
821     *
822     * The modes can be any of those defined in ::Elm_Web_Zoom_Mode, except
823     * ::ELM_WEB_ZOOM_MODE_LAST. The default is ::ELM_WEB_ZOOM_MODE_MANUAL.
824     *
825     * ::ELM_WEB_ZOOM_MODE_MANUAL means the zoom level will be controlled
826     * with the elm_web_zoom_set() function.
827     * ::ELM_WEB_ZOOM_MODE_AUTO_FIT will calculate the needed zoom level to
828     * make sure the entirety of the web object's contents are shown.
829     * ::ELM_WEB_ZOOM_MODE_AUTO_FILL will calculate the needed zoom level to
830     * fit the contents in the web object's size, without leaving any space
831     * unused.
832     *
833     * @param obj The web object
834     * @param mode The mode to set
835     */
836    EAPI void                         elm_web_zoom_mode_set(Evas_Object *obj, Elm_Web_Zoom_Mode mode);
837
838    /**
839     * Gets the currently set zoom mode
840     *
841     * @param obj The web object
842     *
843     * @return The current zoom mode set for the object, or
844     * ::ELM_WEB_ZOOM_MODE_LAST on error
845     */
846    EAPI Elm_Web_Zoom_Mode            elm_web_zoom_mode_get(const Evas_Object *obj);
847
848    /**
849     * Shows the given region in the web object
850     *
851     * @param obj The web object
852     * @param x The x coordinate of the region to show
853     * @param y The y coordinate of the region to show
854     * @param w The width of the region to show
855     * @param h The height of the region to show
856     */
857    EAPI void                         elm_web_region_show(Evas_Object *obj, int x, int y, int w, int h);
858
859    /**
860     * Brings in the region to the visible area
861     *
862     * Like elm_web_region_show(), but it animates the scrolling of the object
863     * to show the area
864     *
865     * @param obj The web object
866     * @param x The x coordinate of the region to show
867     * @param y The y coordinate of the region to show
868     * @param w The width of the region to show
869     * @param h The height of the region to show
870     */
871    EAPI void                         elm_web_region_bring_in(Evas_Object *obj, int x, int y, int w, int h);
872
873    /**
874     * Sets the default dialogs to use an Inwin instead of a normal window
875     *
876     * If set, then the default implementation for the JavaScript dialogs and
877     * file selector will be opened in an Inwin. Otherwise they will use a
878     * normal separated window.
879     *
880     * @param obj The web object
881     * @param value EINA_TRUE to use Inwin, EINA_FALSE to use a normal window
882     */
883    EAPI void                         elm_web_inwin_mode_set(Evas_Object *obj, Eina_Bool value);
884
885    /**
886     * Gets whether Inwin mode is set for the current object
887     *
888     * @param obj The web object
889     *
890     * @return EINA_TRUE if Inwin mode is set, EINA_FALSE otherwise
891     */
892    EAPI Eina_Bool                    elm_web_inwin_mode_get(const Evas_Object *obj);
893
894    EAPI void                         elm_web_window_features_ref(Elm_Web_Window_Features *wf);
895    EAPI void                         elm_web_window_features_unref(Elm_Web_Window_Features *wf);
896    EAPI void                         elm_web_window_features_bool_property_get(const Elm_Web_Window_Features *wf, Eina_Bool *toolbar_visible, Eina_Bool *statusbar_visible, Eina_Bool *scrollbars_visible, Eina_Bool *menubar_visible, Eina_Bool *locationbar_visble, Eina_Bool *fullscreen);
897    EAPI void                         elm_web_window_features_int_property_get(const Elm_Web_Window_Features *wf, int *x, int *y, int *w, int *h);
898
899    /**
900     * @}
901     */
902