Create string tightly when retrive string from cbhm callback event
[framework/web/webkit-efl.git] / Source / WebKit2 / UIProcess / API / efl / ewk_context_menu.h
1 /*
2  * Copyright (C) 2012 Samsung Electronics
3  *
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.
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  * Library General Public License for more details.
13  *
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.
18  */
19
20 /**
21  * @file    ewk_context_menu.h
22  * @brief   Describes the context menu API.
23  */
24
25 #ifndef ewk_context_menu_h
26 #define ewk_context_menu_h
27
28 #include <Eina.h>
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34 /**
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
38  */
39 enum {
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,
126 /* #endif */
127 /* #if ENABLE(TIZEN_WEBKIT2_CONTEXT_MENU_TEXT_SELECTION_MODE) */
128     EWK_CONTEXT_MENU_ITEM_TAG_TEXT_SELECTION_MODE,
129 /* #endif */
130 /* #if ENABLE(TIZEN_WEBKIT2_CONTEXT_MENU_CLIPBOARD) */
131     EWK_CONTEXT_MENU_ITEM_TAG_CLIPBOARD,
132 /* #endif */
133 /* #if ENABLE(TIZEN_DRAG_SUPPORT) */
134     EWK_CONTEXT_MENU_ITEM_TAG_DRAG,
135 /* #endif */
136     EWK_CONTEXT_MENU_ITEM_BASE_APPLICATION_TAG = 10000
137 };
138 /** Creates a type name for Ewk_Context_Menu_Item_Tag */
139 typedef uint32_t Ewk_Context_Menu_Item_Tag;
140
141 /**
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
145  */
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
151 };
152 /** Creates a type name for _Ewk_Context_Menu_Item_Type */
153 typedef enum _Ewk_Context_Menu_Item_Type Ewk_Context_Menu_Item_Type;
154
155 /** Creates a type name for _Ewk_Context_Menu */
156 typedef struct _Ewk_Context_Menu Ewk_Context_Menu;
157
158 /** Creates a type name for _Ewk_Context_Menu_Item */
159 typedef struct _Ewk_Context_Menu_Item Ewk_Context_Menu_Item;
160
161 /**
162  * Counts the number of the context menu item.
163  *
164  * @param menu the context menu object
165  *
166  * @return number of current context menu item
167  */
168 EAPI unsigned ewk_context_menu_item_count(Ewk_Context_Menu* menu);
169
170 /**
171  * Returns the nth item in a context menu.
172  *
173  * @param menu The context menu object
174  * @param n The number of the item
175  *
176  * @return The nth item of context menu
177  */
178 EAPI Ewk_Context_Menu_Item* ewk_context_menu_nth_item_get(Ewk_Context_Menu* menu, unsigned int n);
179
180 /**
181  * Removes the context menu item from the context menu object.
182  *
183  * @param menu the context menu object
184  * @param item the context menu item to remove
185  *
186  * @return @c EINA_TRUE on successful request or @c EINA_FALSE on failure
187  */
188 EAPI Eina_Bool ewk_context_menu_item_remove(Ewk_Context_Menu* menu, Ewk_Context_Menu_Item* item);
189
190 /**
191  * Adds the context menu item to the context menu object.
192  *
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
197  *
198  * @return @c EINA_TRUE on successful request or @c EINA_FALSE on failure
199  */
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);
201
202 // #if ENABLE(TIZEN_WEBKIT2_CONTEXT_MENU_ICON_TYPE_SUPPORT)
203 /**
204  * Adds the context menu item to the context menu object.
205  *
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
211  *
212  * @return @c EINA_TRUE on successful request or @c EINA_FALSE on failure
213  */
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)
216
217 /**
218  * Returns the tag of context menu item.
219  *
220  * @param item The context menu item object
221  *
222  * @return The tag of context menu item
223  */
224 EAPI Ewk_Context_Menu_Item_Tag ewk_context_menu_item_tag_get(Ewk_Context_Menu_Item* item);
225
226 /**
227  * Returns the type of context menu item.
228  *
229  * @param item The context menu item object
230  *
231  * @return The type of context menu item
232  */
233 EAPI Ewk_Context_Menu_Item_Type ewk_context_menu_item_type_get(Ewk_Context_Menu_Item* item);
234
235 /**
236  * Returns the item is enabled.
237  *
238  * @param item The context menu item object to get enabled state
239  *
240  * @return EINA_TRUE if it is enabled, @c EINA_FALSE if not or on failure
241  */
242 EAPI Eina_Bool ewk_context_menu_item_enabled_get(const Ewk_Context_Menu_Item* item);
243
244 /**
245  * Returns the link url string of context menu item.
246  *
247  * @param menu the context menu item object
248  *
249  * @return current link url string on success or @c 0 on failure
250  */
251 EAPI const char* ewk_context_menu_item_link_url_get(Ewk_Context_Menu_Item* item);
252
253 /**
254  * Returns the image url string of context menu item.
255  *
256  * @param menu the context menu item object
257  *
258  * @return current image url string on success or @c 0 on failure
259  */
260 EAPI const char* ewk_context_menu_item_image_url_get(Ewk_Context_Menu_Item* item);
261
262 #ifdef __cplusplus
263 }
264 #endif
265
266 #endif // ewk_context_menu_h