b41c78691d86b157427980b3c63acb8546a7c0c6
[platform/framework/web/crosswalk-tizen.git] /
1 /*
2  * Copyright (C) 2013-2016 Samsung Electronics.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
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  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this library; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  */
18
19 /**
20  * @file    ewk_context_menu.h
21  * @brief   Describes the context menu API.
22  */
23
24 #ifndef ewk_context_menu_h
25 #define ewk_context_menu_h
26
27 #include <Eina.h>
28 #include <tizen.h>
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34 /**
35  * @addtogroup WEBVIEW
36  * @{
37  */
38
39 /**
40  * \enum    _Ewk_Context_Menu_Item_Tag
41  * @brief   Enumeration that provides the tags of items for the context menu.
42  *
43  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 3.0 @endif
44  */
45 enum _Ewk_Context_Menu_Item_Tag{
46     EWK_CONTEXT_MENU_ITEM_TAG_NO_ACTION = 0,  /**< No action */
47     EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK_IN_NEW_WINDOW,  /**< Open link in new window */
48     EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_LINK_TO_DISK,  /**< Download link to disk */
49     EWK_CONTEXT_MENU_ITEM_TAG_COPY_LINK_TO_CLIPBOARD,  /**< Copy link to clipboard */
50     EWK_CONTEXT_MENU_ITEM_TAG_OPEN_IMAGE_IN_NEW_WINDOW,  /**< Open image in new window */
51     EWK_CONTEXT_MENU_ITEM_TAG_OPEN_IMAGE_IN_CURRENT_WINDOW,  /**< Open image in current window */
52     EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_IMAGE_TO_DISK,  /**< Download image to disk */
53     EWK_CONTEXT_MENU_ITEM_TAG_COPY_IMAGE_TO_CLIPBOARD,  /**< Copy image to clipboard */
54     EWK_CONTEXT_MENU_ITEM_TAG_OPEN_FRAME_IN_NEW_WINDOW,  /**< Open frame in new window */
55     EWK_CONTEXT_MENU_ITEM_TAG_COPY,  /**< Copy */
56     EWK_CONTEXT_MENU_ITEM_TAG_GO_BACK,  /**< Go back */
57     EWK_CONTEXT_MENU_ITEM_TAG_GO_FORWARD,  /**< Go forward */
58     EWK_CONTEXT_MENU_ITEM_TAG_STOP,  /**< Stop */
59     EWK_CONTEXT_MENU_ITEM_TAG_SHARE,  /**< Share */
60     EWK_CONTEXT_MENU_ITEM_TAG_RELOAD,  /**< Reload */
61     EWK_CONTEXT_MENU_ITEM_TAG_CUT,  /**< Cut  */
62     EWK_CONTEXT_MENU_ITEM_TAG_PASTE,  /**< Paste */
63     EWK_CONTEXT_MENU_ITEM_TAG_SPELLING_GUESS,  /**< Spelling guess */
64     EWK_CONTEXT_MENU_ITEM_TAG_NO_GUESSES_FOUND,  /**< Guess found */
65     EWK_CONTEXT_MENU_ITEM_TAG_IGNORE_SPELLING,  /**< Ignore spelling */
66     EWK_CONTEXT_MENU_ITEM_TAG_LEARN_SPELLING,  /**< Learn spelling */
67     EWK_CONTEXT_MENU_ITEM_TAG_OTHER,  /**< Other */
68     EWK_CONTEXT_MENU_ITEM_TAG_SEARCH_IN_SPOTLIGHT,  /**< Search in spotlight */
69     EWK_CONTEXT_MENU_ITEM_TAG_SEARCH_WEB,  /**< Search web */
70     EWK_CONTEXT_MENU_ITEM_TAG_LOOK_UP_IN_DICTIONARY,  /**< Look up in dictionary */
71     EWK_CONTEXT_MENU_ITEM_TAG_OPEN_WITH_DEFAULT_APPLICATION,  /**< Open with default application */
72     EWK_CONTEXT_MENU_ITEM_TAG_PDF_ACTUAL_SIZE,  /**< PDF actual size */
73     EWK_CONTEXT_MENU_ITEM_TAG_PDF_ZOOM_IN,  /**< PDF zoom in */
74     EWK_CONTEXT_MENU_ITEM_TAG_PDF_ZOOM_OUT,  /**< PDF zoom out */
75     EWK_CONTEXT_MENU_ITEM_TAG_PDF_AUTO_SIZE,  /**< PDF auto size */
76     EWK_CONTEXT_MENU_ITEM_TAG_PDF_SINGLE_PAGE,  /**< PDF single page */
77     EWK_CONTEXT_MENU_ITEM_TAG_PDF_FACTING_PAGES,  /**< PDF facting page */
78     EWK_CONTEXT_MENU_ITEM_TAG_PDF_CONTINUOUS,  /**< PDF continuous */
79     EWK_CONTEXT_MENU_ITEM_TAG_PDF_NEXT_PAGE,  /**< PDF next page */
80     EWK_CONTEXT_MENU_ITEM_TAG_PDF_PREVIOUS_PAGE,  /**< PDF previous page */
81     EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK,  /**< Open link */
82     EWK_CONTEXT_MENU_ITEM_TAG_IGNORE_GRAMMAR,  /**< Ignore grammar */
83     EWK_CONTEXT_MENU_ITEM_TAG_SPELLING_MENU,  /**< Spelling menu */
84     EWK_CONTEXT_MENU_ITEM_TAG_SHOW_SPELLING_PANEL,  /**< Show spelling panel */
85     EWK_CONTEXT_MENU_ITEM_TAG_CHECK_SPELLING,  /**< Check spelling */
86     EWK_CONTEXT_MENU_ITEM_TAG_CHECK_SPELLING_WHILE_TYPING,  /**< Check spelling white typing */
87     EWK_CONTEXT_MENU_ITEM_TAG_CHECK_GRAMMAR_WITH_SPELLING,  /**< Check grammar with spelling */
88     EWK_CONTEXT_MENU_ITEM_TAG_FONT_MENU,  /**< Font menu */
89     EWK_CONTEXT_MENU_ITEM_TAG_SHOW_FONTS,  /**< Show fonts */
90     EWK_CONTEXT_MENU_ITEM_TAG_BOLD,  /**< Bold */
91     EWK_CONTEXT_MENU_ITEM_TAG_ITALIC,  /**< Italic */
92     EWK_CONTEXT_MENU_ITEM_TAG_UNDERLINE,  /**< Underline */
93     EWK_CONTEXT_MENU_ITEM_TAG_OUTLINE,  /**< Outline */
94     EWK_CONTEXT_MENU_ITEM_TAG_STYLES,  /**< Style */
95     EWK_CONTEXT_MENU_ITEM_TAG_SHOW_COLORS,  /**< Show colors */
96     EWK_CONTEXT_MENU_ITEM_TAG_SPEECH_MENU,  /**< Speech menu */
97     EWK_CONTEXT_MENU_ITEM_TAG_START_SPEAKING,  /**< Start speaking */
98     EWK_CONTEXT_MENU_ITEM_TAG_STOP_SPEAKING,  /**< Stop speaking */
99     EWK_CONTEXT_MENU_ITEM_TAG_WRITING_DIRECTION_MENU,  /**< Writing direction menu */
100     EWK_CONTEXT_MENU_ITEM_TAG_DEFAULT_DIRECTION,  /**< Default direction */
101     EWK_CONTEXT_MENU_ITEM_TAG_LEFT_TO_RIGHT,  /**< Left to right */
102     EWK_CONTEXT_MENU_ITEM_TAG_RIGHT_TO_LEFT,  /**< Right to left */
103     EWK_CONTEXT_MENU_ITEM_TAG_PDF_SINGLE_PAGE_SCROLLING,  /**< PDF single page scrolling */
104     EWK_CONTEXT_MENU_ITEM_TAG_PDF_FACING_PAGES_SCROLLING,  /**< PDF facing page scrolling */
105     EWK_CONTEXT_MENU_ITEM_TAG_INSPECT_ELEMENT,  /**< Inspect element */
106     EWK_CONTEXT_MENU_ITEM_TAG_TEXT_DIRECTION_MENU,  /**< Text direction menu */
107     EWK_CONTEXT_MENU_ITEM_TAG_TEXT_DIRECTION_DEFAULT,  /**< Text direction default */
108     EWK_CONTEXT_MENU_ITEM_TAG_TEXT_DIRECTION_LEFT_TO_RIGHT,  /**< Text direction left to right */
109     EWK_CONTEXT_MENU_ITEM_TAG_TEXT_DIRECTION_RIGHT_TO_LEFT,  /**< Text direction right to left */
110     EWK_CONTEXT_MENU_ITEM_TAG_CORRECT_SPELLING_AUTOMATICALLY,  /**< Correct spelling automatically */
111     EWK_CONTEXT_MENU_ITEM_TAG_SUBSTITUTIONS_MENU,  /**< Substitutions menu */
112     EWK_CONTEXT_MENU_ITEM_TAG_SHOW_SUBSTITUTIONS,  /**< Show substitutions */
113     EWK_CONTEXT_MENU_ITEM_TAG_SMART_COPY_PASTE,  /**< Smart copy paste */
114     EWK_CONTEXT_MENU_ITEM_TAG_SMART_QUOTES,  /**< Smart quotes */
115     EWK_CONTEXT_MENU_ITEM_TAG_SMART_DASHES,  /**< Smart dashes */
116     EWK_CONTEXT_MENU_ITEM_TAG_SMART_LINKS,  /**< Smart links */
117     EWK_CONTEXT_MENU_ITEM_TAG_TEXT_REPLACEMENT,  /**< Text replacement */
118     EWK_CONTEXT_MENU_ITEM_TAG_TRANSFORMATIONS_MENU,  /**< Transformation menu */
119     EWK_CONTEXT_MENU_ITEM_TAG_MAKE_UPPER_CASE,  /**< Make upper case */
120     EWK_CONTEXT_MENU_ITEM_TAG_MAKE_LOWER_CASE,  /**< Make lower case */
121     EWK_CONTEXT_MENU_ITEM_TAG_CAPITALIZE,  /**< Capitalize */
122     EWK_CONTEXT_MENU_ITEM_TAG_CHANGE_BACK,  /**< Change back */
123     EWK_CONTEXT_MENU_ITEM_TAG_OPEN_MEDIA_IN_NEW_WINDOW,  /**< Open media in new window */
124     EWK_CONTEXT_MENU_ITEM_TAG_COPY_MEDIA_LINK_TO_CLIPBOARD,  /**< Copy media link to clipboard */
125     EWK_CONTEXT_MENU_ITEM_TAG_TOGGLE_MEDIA_CONTROLS,  /**< Toggle media controls */
126     EWK_CONTEXT_MENU_ITEM_TAG_TOGGLE_MEDIA_LOOP,  /**< Toggle media loop */
127     EWK_CONTEXT_MENU_ITEM_TAG_ENTER_VIDEO_FULLSCREEN,  /**< Enter video fullscreen */
128     EWK_CONTEXT_MENU_ITEM_TAG_MEDIA_PLAY_PAUSE,  /**< Media play pause */
129     EWK_CONTEXT_MENU_ITEM_TAG_MEDIA_MUTE,  /**< Media mute */
130     EWK_CONTEXT_MENU_ITEM_TAG_DICTATION_ALTERNATIVE,  /**< Dictation alternative */
131     EWK_CONTEXT_MENU_ITEM_TAG_SELECT_ALL,  /**< Select all */
132     EWK_CONTEXT_MENU_ITEM_TAG_SELECT_WORD,  /**< Select word */
133     EWK_CONTEXT_MENU_ITEM_TAG_TEXT_SELECTION_MODE,  /**< Text selection mode */
134     EWK_CONTEXT_MENU_ITEM_TAG_CLIPBOARD,  /**< Clipboard */
135     EWK_CONTEXT_MENU_ITEM_TAG_DRAG,  /**< Drag */
136     EWK_CONTEXT_MENU_ITEM_TAG_TRANSLATE,  /**< Translate */
137     EWK_CONTEXT_MENU_ITEM_TAG_COPY_LINK_DATA,  /**< Copy lnk data */
138     EWK_CONTEXT_MENU_ITEM_BASE_APPLICATION_TAG = 10000  /**< If app want to add customized item, use enum value after #EWK_CONTEXT_MENU_ITEM_BASE_APPLICATION_TAG */
139 };
140
141 /**
142  * @brief The structure type that creates a type name for Ewk_Context_Menu_Item_Tag.
143  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 3.0 @endif
144  */
145 typedef uint32_t Ewk_Context_Menu_Item_Tag;
146
147 /**
148  * @brief The structure type that creates a type name for _Ewk_Context_Menu.
149  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 3.0 @endif
150  */
151 typedef struct _Ewk_Context_Menu Ewk_Context_Menu;
152
153 /**
154  * @brief The structure type that creates a type name for _Ewk_Context_Menu_Item.
155  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 3.0 @endif
156  */
157 typedef struct _Ewk_Context_Menu_Item Ewk_Context_Menu_Item;
158
159 /**
160  * @brief Counts the number of the context menu item.
161  *
162  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 3.0 @endif
163  *
164  * @param[in] menu The context menu object
165  *
166  * @return The number of current context menu item
167  */
168 EXPORT_API unsigned ewk_context_menu_item_count(Ewk_Context_Menu* menu);
169
170 /**
171  * @brief Returns the nth item in a context menu.
172  *
173  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 3.0 @endif
174  *
175  * @param[in] menu The context menu object
176  * @param[in] n The number of the item
177  *
178  * @return The nth item of context menu
179  */
180 EXPORT_API Ewk_Context_Menu_Item* ewk_context_menu_nth_item_get(Ewk_Context_Menu* menu, unsigned int n);
181
182 /**
183  * @brief Removes the context menu item from the context menu object.
184  *
185  * @remarks If all context menu items are removed, neither context menu nor\n
186  *          selection handles will be shown.
187  *
188  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 3.0 @endif
189  *
190  * @param[in] menu The context menu object
191  * @param[in] item The context menu item to remove
192  *
193  * @return @c EINA_TRUE on successful request,\n
194  *         otherwise @c EINA_FALSE on failure
195  */
196 EXPORT_API Eina_Bool ewk_context_menu_item_remove(Ewk_Context_Menu* menu, Ewk_Context_Menu_Item* item);
197
198 /**
199  * @if MOBILE
200  * @brief Adds the context menu item to the context menu object.
201  *
202  * @since_tizen 2.3
203  *
204  * @param[in] menu The context menu object
205  * @param[in] tag The tag of context menu item
206  * @param[in] title The title of context menu item
207  * @param[in] enabled If @c true the context menu item is enabled,\n
208  *                    otherwise @c false
209  *
210  * @return @c EINA_TRUE on successful request,\n
211  *         otherwise @c EINA_FALSE on failure
212  * @endif
213  */
214 EXPORT_API 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);
215
216 /**
217  * @if MOBILE
218  * @brief Adds the context menu item to the context menu object.
219  *
220  * @since_tizen 2.3
221  *
222  * @param[in] menu The context menu object
223  * @param[in] tag The tag of context menu item
224  * @param[in] title The title of context menu item
225  * @param[in] icon_file The path of icon to be set on context menu item
226  * @param[in] enabled If @c true the context menu item is enabled,\n
227  *                    otherwise @c false
228  *
229  * @return @c EINA_TRUE on successful request,\n
230  *         otherwise @c EINA_FALSE on failure
231  * @endif
232  */
233 EXPORT_API 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);
234
235 /**
236  * @brief Returns the tag of context menu item.
237  *
238  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 3.0 @endif
239  *
240  * @param[in] item The context menu item object
241  *
242  * @return The tag of context menu item
243  */
244 EXPORT_API Ewk_Context_Menu_Item_Tag ewk_context_menu_item_tag_get(Ewk_Context_Menu_Item* item);
245
246 /**
247  * @if MOBILE
248  * @brief Returns the link url string of context menu item.
249  *
250  * @since_tizen 2.3
251  *
252  * @param[in] item The context menu item object
253  *
254  * @return The current link url string on success,\n
255  *         otherwise @c 0 on failure
256  * @endif
257  */
258 EXPORT_API const char* ewk_context_menu_item_link_url_get(Ewk_Context_Menu_Item* item);
259
260 /**
261  * @if MOBILE
262  * @brief Returns the image url string of context menu item.
263  *
264  * @since_tizen 2.3
265  *
266  * @param[in] item The context menu item object
267  *
268  * @return The current image url string on success,\n
269  *         otherwise @c 0 on failure
270  * @endif
271  */
272 EXPORT_API const char* ewk_context_menu_item_image_url_get(Ewk_Context_Menu_Item* item);
273
274 /**
275 * @}
276 */
277
278 #ifdef __cplusplus
279 }
280 #endif
281
282 #endif // ewk_context_menu_h