2 * Copyright (C) 2012 Samsung Electronics
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public License
15 * along with this library; see the file COPYING.LIB. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
21 * @file ewk_context_menu.h
22 * @brief Describes the context menu API.
25 #ifndef ewk_context_menu_h
26 #define ewk_context_menu_h
35 * \enum Ewk_Context_Menu_Item_Tag
36 * @brief Provides the tags of items for the context menu.
37 * @info Keep this in sync with WKContextMenuItemTypes.h
40 EWK_CONTEXT_MENU_ITEM_TAG_NO_ACTION = 0,
41 EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK_IN_NEW_WINDOW,
42 EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_LINK_TO_DISK,
43 EWK_CONTEXT_MENU_ITEM_TAG_COPY_LINK_TO_CLIPBOARD,
44 EWK_CONTEXT_MENU_ITEM_TAG_OPEN_IMAGE_IN_NEW_WINDOW,
45 EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_IMAGE_TO_DISK,
46 EWK_CONTEXT_MENU_ITEM_TAG_COPY_IMAGE_TO_CLIPBOARD,
47 EWK_CONTEXT_MENU_ITEM_TAG_OPEN_FRAME_IN_NEW_WINDOW,
48 EWK_CONTEXT_MENU_ITEM_TAG_COPY,
49 EWK_CONTEXT_MENU_ITEM_TAG_GO_BACK,
50 EWK_CONTEXT_MENU_ITEM_TAG_GO_FORWARD,
51 EWK_CONTEXT_MENU_ITEM_TAG_STOP,
52 EWK_CONTEXT_MENU_ITEM_TAG_RELOAD,
53 EWK_CONTEXT_MENU_ITEM_TAG_CUT,
54 EWK_CONTEXT_MENU_ITEM_TAG_PASTE,
55 EWK_CONTEXT_MENU_ITEM_TAG_SPELLING_GUESS,
56 EWK_CONTEXT_MENU_ITEM_TAG_NO_GUESSES_FOUND,
57 EWK_CONTEXT_MENU_ITEM_TAG_IGNORE_SPELLING,
58 EWK_CONTEXT_MENU_ITEM_TAG_LEARN_SPELLING,
59 EWK_CONTEXT_MENU_ITEM_TAG_OTHER,
60 EWK_CONTEXT_MENU_ITEM_TAG_SEARCH_IN_SPOTLIGHT,
61 EWK_CONTEXT_MENU_ITEM_TAG_SEARCH_WEB,
62 EWK_CONTEXT_MENU_ITEM_TAG_LOOK_UP_IN_DICTIONARY,
63 EWK_CONTEXT_MENU_ITEM_TAG_OPEN_WITH_DEFAULT_APPLICATION,
64 EWK_CONTEXT_MENU_ITEM_TAG_PDF_ACTUAL_SIZE,
65 EWK_CONTEXT_MENU_ITEM_TAG_PDF_ZOOM_IN,
66 EWK_CONTEXT_MENU_ITEM_TAG_PDF_ZOOM_OUT,
67 EWK_CONTEXT_MENU_ITEM_TAG_PDF_AUTO_SIZE,
68 EWK_CONTEXT_MENU_ITEM_TAG_PDF_SINGLE_PAGE,
69 EWK_CONTEXT_MENU_ITEM_TAG_PDF_FACTING_PAGES,
70 EWK_CONTEXT_MENU_ITEM_TAG_PDF_CONTINUOUS,
71 EWK_CONTEXT_MENU_ITEM_TAG_PDF_NEXT_PAGE,
72 EWK_CONTEXT_MENU_ITEM_TAG_PDF_PREVIOUS_PAGE,
73 EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK,
74 EWK_CONTEXT_MENU_ITEM_TAG_IGNORE_GRAMMAR,
75 EWK_CONTEXT_MENU_ITEM_TAG_SPELLING_MENU,
76 EWK_CONTEXT_MENU_ITEM_TAG_SHOW_SPELLING_PANEL,
77 EWK_CONTEXT_MENU_ITEM_TAG_CHECK_SPELLING,
78 EWK_CONTEXT_MENU_ITEM_TAG_CHECK_SPELLING_WHILE_TYPING,
79 EWK_CONTEXT_MENU_ITEM_TAG_CHECK_GRAMMAR_WITH_SPELLING,
80 EWK_CONTEXT_MENU_ITEM_TAG_FONT_MENU,
81 EWK_CONTEXT_MENU_ITEM_TAG_SHOW_FONTS,
82 EWK_CONTEXT_MENU_ITEM_TAG_BOLD,
83 EWK_CONTEXT_MENU_ITEM_TAG_ITALIC,
84 EWK_CONTEXT_MENU_ITEM_TAG_UNDERLINE,
85 EWK_CONTEXT_MENU_ITEM_TAG_OUTLINE,
86 EWK_CONTEXT_MENU_ITEM_TAG_STYLES,
87 EWK_CONTEXT_MENU_ITEM_TAG_SHOW_COLORS,
88 EWK_CONTEXT_MENU_ITEM_TAG_SPEECH_MENU,
89 EWK_CONTEXT_MENU_ITEM_TAG_START_SPEAKING,
90 EWK_CONTEXT_MENU_ITEM_TAG_STOP_SPEAKING,
91 EWK_CONTEXT_MENU_ITEM_TAG_WRITING_DIRECTION_MENU,
92 EWK_CONTEXT_MENU_ITEM_TAG_DEFAULT_DIRECTION,
93 EWK_CONTEXT_MENU_ITEM_TAG_LEFT_TO_RIGHT,
94 EWK_CONTEXT_MENU_ITEM_TAG_RIGHT_TO_LEFT,
95 EWK_CONTEXT_MENU_ITEM_TAG_PDF_SINGLE_PAGE_SCROLLING,
96 EWK_CONTEXT_MENU_ITEM_TAG_PDF_FACING_PAGES_SCROLLING,
97 EWK_CONTEXT_MENU_ITEM_TAG_INSPECT_ELEMENT,
98 EWK_CONTEXT_MENU_ITEM_TAG_TEXT_DIRECTION_MENU,
99 EWK_CONTEXT_MENU_ITEM_TAG_TEXT_DIRECTION_DEFAULT,
100 EWK_CONTEXT_MENU_ITEM_TAG_TEXT_DIRECTION_LEFT_TO_RIGHT,
101 EWK_CONTEXT_MENU_ITEM_TAG_TEXT_DIRECTION_RIGHT_TO_LEFT,
102 EWK_CONTEXT_MENU_ITEM_TAG_CORRECT_SPELLING_AUTOMATICALLY,
103 EWK_CONTEXT_MENU_ITEM_TAG_SUBSTITUTIONS_MENU,
104 EWK_CONTEXT_MENU_ITEM_TAG_SHOW_SUBSTITUTIONS,
105 EWK_CONTEXT_MENU_ITEM_TAG_SMART_COPY_PASTE,
106 EWK_CONTEXT_MENU_ITEM_TAG_SMART_QUOTES,
107 EWK_CONTEXT_MENU_ITEM_TAG_SMART_DASHES,
108 EWK_CONTEXT_MENU_ITEM_TAG_SMART_LINKS,
109 EWK_CONTEXT_MENU_ITEM_TAG_TEXT_REPLACEMENT,
110 EWK_CONTEXT_MENU_ITEM_TAG_TRANSFORMATIONS_MENU,
111 EWK_CONTEXT_MENU_ITEM_TAG_MAKE_UPPER_CASE,
112 EWK_CONTEXT_MENU_ITEM_TAG_MAKE_LOWER_CASE,
113 EWK_CONTEXT_MENU_ITEM_TAG_CAPITALIZE,
114 EWK_CONTEXT_MENU_ITEM_TAG_CHANGE_BACK,
115 EWK_CONTEXT_MENU_ITEM_TAG_OPEN_MEDIA_IN_NEW_WINDOW,
116 EWK_CONTEXT_MENU_ITEM_TAG_COPY_MEDIA_LINK_TO_CLIPBOARD,
117 EWK_CONTEXT_MENU_ITEM_TAG_TOGGLE_MEDIA_CONTROLS,
118 EWK_CONTEXT_MENU_ITEM_TAG_TOGGLE_MEDIA_LOOP,
119 EWK_CONTEXT_MENU_ITEM_TAG_ENTER_VIDEO_FULLSCREEN,
120 EWK_CONTEXT_MENU_ITEM_TAG_MEDIA_PLAY_PAUSE,
121 EWK_CONTEXT_MENU_ITEM_TAG_MEDIA_MUTE,
122 EWK_CONTEXT_MENU_ITEM_TAG_DICTATION_ALTERNATIVE,
123 /* #if ENABLE(TIZEN_CONTEXT_MENU_SELECT) */
124 EWK_CONTEXT_MENU_ITEM_TAG_SELECT_ALL,
125 EWK_CONTEXT_MENU_ITEM_TAG_SELECT_WORD,
127 /* #if ENABLE(TIZEN_WEBKIT2_CONTEXT_MENU_TEXT_SELECTION_MODE) */
128 EWK_CONTEXT_MENU_ITEM_TAG_TEXT_SELECTION_MODE,
130 /* #if ENABLE(TIZEN_WEBKIT2_CONTEXT_MENU_CLIPBOARD) */
131 EWK_CONTEXT_MENU_ITEM_TAG_CLIPBOARD,
133 /* #if ENABLE(TIZEN_DRAG_SUPPORT) */
134 EWK_CONTEXT_MENU_ITEM_TAG_DRAG,
136 EWK_CONTEXT_MENU_ITEM_BASE_APPLICATION_TAG = 10000
138 /** Creates a type name for Ewk_Context_Menu_Item_Tag */
139 typedef uint32_t Ewk_Context_Menu_Item_Tag;
142 * \enum _Ewk_Context_Menu_Item_Type
143 * @brief Defines the types of the items for the context menu.
144 * @info Keep this in sync with WKContextMenuItemTypes.h
146 enum _Ewk_Context_Menu_Item_Type {
147 EWK_CONTEXT_MENU_ITEM_TYPE_ACTION,
148 EWK_CONTEXT_MENU_ITEM_TYPE_CHECKABLE_ACTION,
149 EWK_CONTEXT_MENU_ITEM_TYPE_SEPARATOR,
150 EWK_CONTEXT_MENU_ITEM_TYPE_SUBMENU
152 /** Creates a type name for _Ewk_Context_Menu_Item_Type */
153 typedef enum _Ewk_Context_Menu_Item_Type Ewk_Context_Menu_Item_Type;
155 /** Creates a type name for _Ewk_Context_Menu */
156 typedef struct _Ewk_Context_Menu Ewk_Context_Menu;
158 /** Creates a type name for _Ewk_Context_Menu_Item */
159 typedef struct _Ewk_Context_Menu_Item Ewk_Context_Menu_Item;
162 * Counts the number of the context menu item.
164 * @param menu the context menu object
166 * @return number of current context menu item
168 EAPI unsigned ewk_context_menu_item_count(Ewk_Context_Menu* menu);
171 * Returns the nth item in a context menu.
173 * @param menu The context menu object
174 * @param n The number of the item
176 * @return The nth item of context menu
178 EAPI Ewk_Context_Menu_Item* ewk_context_menu_nth_item_get(Ewk_Context_Menu* menu, unsigned int n);
181 * Removes the context menu item from the context menu object.
183 * @param menu the context menu object
184 * @param item the context menu item to remove
186 * @return @c EINA_TRUE on successful request or @c EINA_FALSE on failure
188 EAPI Eina_Bool ewk_context_menu_item_remove(Ewk_Context_Menu* menu, Ewk_Context_Menu_Item* item);
191 * Adds the context menu item to the context menu object.
193 * @param menu the context menu object
194 * @param tag the tag of context menu item
195 * @param title the title of context menu item
196 * @param enabled the enabled of context menu item
198 * @return @c EINA_TRUE on successful request or @c EINA_FALSE on failure
200 EAPI Eina_Bool ewk_context_menu_item_append_as_action(Ewk_Context_Menu* menu, Ewk_Context_Menu_Item_Tag tag, const char* title, Eina_Bool enabled);
202 // #if ENABLE(TIZEN_WEBKIT2_CONTEXT_MENU_ICON_TYPE_SUPPORT)
204 * Adds the context menu item to the context menu object.
206 * @param menu the context menu object
207 * @param tag the tag of context menu item
208 * @param title the title of context menu item
209 * @param icon_file the path of icon to be set on context menu item
210 * @param enabled the enabled of context menu item
212 * @return @c EINA_TRUE on successful request or @c EINA_FALSE on failure
214 EAPI Eina_Bool ewk_context_menu_item_append(Ewk_Context_Menu* menu, Ewk_Context_Menu_Item_Tag tag, const char* title, const char* icon_file, Eina_Bool enabled);
215 // #endif // #if ENABLE(TIZEN_WEBKIT2_CONTEXT_MENU_ICON_TYPE_SUPPORT)
218 * Returns the tag of context menu item.
220 * @param item The context menu item object
222 * @return The tag of context menu item
224 EAPI Ewk_Context_Menu_Item_Tag ewk_context_menu_item_tag_get(Ewk_Context_Menu_Item* item);
227 * Returns the type of context menu item.
229 * @param item The context menu item object
231 * @return The type of context menu item
233 EAPI Ewk_Context_Menu_Item_Type ewk_context_menu_item_type_get(Ewk_Context_Menu_Item* item);
236 * Returns the item is enabled.
238 * @param item The context menu item object to get enabled state
240 * @return EINA_TRUE if it is enabled, @c EINA_FALSE if not or on failure
242 EAPI Eina_Bool ewk_context_menu_item_enabled_get(const Ewk_Context_Menu_Item* item);
245 * Returns the link url string of context menu item.
247 * @param menu the context menu item object
249 * @return current link url string on success or @c 0 on failure
251 EAPI const char* ewk_context_menu_item_link_url_get(Ewk_Context_Menu_Item* item);
254 * Returns the image url string of context menu item.
256 * @param menu the context menu item object
258 * @return current image url string on success or @c 0 on failure
260 EAPI const char* ewk_context_menu_item_image_url_get(Ewk_Context_Menu_Item* item);
266 #endif // ewk_context_menu_h