diff options
Diffstat (limited to 'libraries/ecore/src/lib/ecore_imf')
-rw-r--r-- | libraries/ecore/src/lib/ecore_imf/Ecore_IMF.h | 143 | ||||
-rw-r--r-- | libraries/ecore/src/lib/ecore_imf/Makefile.in | 20 | ||||
-rw-r--r-- | libraries/ecore/src/lib/ecore_imf/ecore_imf_context.c | 402 | ||||
-rw-r--r-- | libraries/ecore/src/lib/ecore_imf/ecore_imf_private.h | 3 |
4 files changed, 505 insertions, 63 deletions
diff --git a/libraries/ecore/src/lib/ecore_imf/Ecore_IMF.h b/libraries/ecore/src/lib/ecore_imf/Ecore_IMF.h index adea35d..1757d79 100644 --- a/libraries/ecore/src/lib/ecore_imf/Ecore_IMF.h +++ b/libraries/ecore/src/lib/ecore_imf/Ecore_IMF.h | |||
@@ -33,6 +33,12 @@ | |||
33 | extern "C" { | 33 | extern "C" { |
34 | #endif | 34 | #endif |
35 | 35 | ||
36 | /** | ||
37 | * @addtogroup Ecore_IMF_Context_Group | ||
38 | * | ||
39 | * @{ | ||
40 | */ | ||
41 | |||
36 | /* Events sent by the Input Method */ | 42 | /* Events sent by the Input Method */ |
37 | typedef struct _Ecore_IMF_Event_Preedit_Start Ecore_IMF_Event_Preedit_Start; | 43 | typedef struct _Ecore_IMF_Event_Preedit_Start Ecore_IMF_Event_Preedit_Start; |
38 | typedef struct _Ecore_IMF_Event_Preedit_End Ecore_IMF_Event_Preedit_End; | 44 | typedef struct _Ecore_IMF_Event_Preedit_End Ecore_IMF_Event_Preedit_End; |
@@ -66,25 +72,41 @@ EAPI extern int ECORE_IMF_EVENT_DELETE_SURROUNDING; | |||
66 | 72 | ||
67 | typedef void (*Ecore_IMF_Event_Cb) (void *data, Ecore_IMF_Context *ctx, void *event_info); | 73 | typedef void (*Ecore_IMF_Event_Cb) (void *data, Ecore_IMF_Context *ctx, void *event_info); |
68 | 74 | ||
75 | /** | ||
76 | * @enum _Ecore_IMF_Callback_Type | ||
77 | * @typedef Ecore_IMF_Callback_Type | ||
78 | * | ||
79 | * Ecore IMF Event callback types. | ||
80 | * | ||
81 | * @see ecore_imf_context_event_callback_add() | ||
82 | */ | ||
69 | typedef enum | 83 | typedef enum |
70 | { | 84 | { |
71 | ECORE_IMF_CALLBACK_PREEDIT_START, | 85 | ECORE_IMF_CALLBACK_PREEDIT_START, /**< "PREEDIT_START" is called when a new preediting sequence starts. */ |
72 | ECORE_IMF_CALLBACK_PREEDIT_END, | 86 | ECORE_IMF_CALLBACK_PREEDIT_END, /**< "PREEDIT_END" is called when a preediting sequence has been completed or canceled. */ |
73 | ECORE_IMF_CALLBACK_PREEDIT_CHANGED, | 87 | ECORE_IMF_CALLBACK_PREEDIT_CHANGED, /**< "PREEDIT_CHANGED" is called whenever the preedit sequence currently being entered has changed. */ |
74 | ECORE_IMF_CALLBACK_COMMIT, | 88 | ECORE_IMF_CALLBACK_COMMIT, /**< "COMMIT" is called when a complete input sequence has been entered by the user */ |
75 | ECORE_IMF_CALLBACK_DELETE_SURROUNDING | 89 | ECORE_IMF_CALLBACK_DELETE_SURROUNDING /**< "DELETE_SURROUNDING" is called when the input method needs to delete all or part of the context surrounding the cursor */ |
76 | } Ecore_IMF_Callback_Type; | 90 | } Ecore_IMF_Callback_Type; |
77 | 91 | ||
92 | /** | ||
93 | * @enum _Ecore_IMF_Event_Type | ||
94 | * @typedef Ecore_IMF_Event_Type | ||
95 | * | ||
96 | * Ecore IMF event types. | ||
97 | * | ||
98 | * @see ecore_imf_context_filter_event() | ||
99 | */ | ||
78 | typedef enum | 100 | typedef enum |
79 | { | 101 | { |
80 | ECORE_IMF_EVENT_MOUSE_DOWN, | 102 | ECORE_IMF_EVENT_MOUSE_DOWN, /**< Mouse Down event */ |
81 | ECORE_IMF_EVENT_MOUSE_UP, | 103 | ECORE_IMF_EVENT_MOUSE_UP, /**< Mouse Up event */ |
82 | ECORE_IMF_EVENT_MOUSE_IN, | 104 | ECORE_IMF_EVENT_MOUSE_IN, /**< Mouse In event */ |
83 | ECORE_IMF_EVENT_MOUSE_OUT, | 105 | ECORE_IMF_EVENT_MOUSE_OUT, /**< Mouse Out event */ |
84 | ECORE_IMF_EVENT_MOUSE_MOVE, | 106 | ECORE_IMF_EVENT_MOUSE_MOVE, /**< Mouse Move event */ |
85 | ECORE_IMF_EVENT_MOUSE_WHEEL, | 107 | ECORE_IMF_EVENT_MOUSE_WHEEL, /**< Mouse Wheel event */ |
86 | ECORE_IMF_EVENT_KEY_DOWN, | 108 | ECORE_IMF_EVENT_KEY_DOWN, /**< Key Down event */ |
87 | ECORE_IMF_EVENT_KEY_UP | 109 | ECORE_IMF_EVENT_KEY_UP /**< Key Up event */ |
88 | } Ecore_IMF_Event_Type; | 110 | } Ecore_IMF_Event_Type; |
89 | 111 | ||
90 | typedef enum | 112 | typedef enum |
@@ -123,22 +145,46 @@ typedef enum | |||
123 | ECORE_IMF_INPUT_MODE_AUTOCAP = 1 << 30 | 145 | ECORE_IMF_INPUT_MODE_AUTOCAP = 1 << 30 |
124 | } Ecore_IMF_Input_Mode; | 146 | } Ecore_IMF_Input_Mode; |
125 | 147 | ||
148 | /** | ||
149 | * @enum _Ecore_IMF_Preedit_Type | ||
150 | * @typedef Ecore_IMF_Preedit_Type | ||
151 | * | ||
152 | * Ecore IMF Preedit style types | ||
153 | * | ||
154 | * @see ecore_imf_context_preedit_string_with_attributes_get() | ||
155 | */ | ||
126 | typedef enum | 156 | typedef enum |
127 | { | 157 | { |
128 | ECORE_IMF_PREEDIT_TYPE_NONE, | 158 | ECORE_IMF_PREEDIT_TYPE_NONE, /**< None style */ |
129 | ECORE_IMF_PREEDIT_TYPE_SUB1, | 159 | ECORE_IMF_PREEDIT_TYPE_SUB1, /**< Substring style 1 */ |
130 | ECORE_IMF_PREEDIT_TYPE_SUB2, | 160 | ECORE_IMF_PREEDIT_TYPE_SUB2, /**< Substring style 2 */ |
131 | ECORE_IMF_PREEDIT_TYPE_SUB3 | 161 | ECORE_IMF_PREEDIT_TYPE_SUB3 /**< Substring style 3 */ |
132 | } Ecore_IMF_Preedit_Type; | 162 | } Ecore_IMF_Preedit_Type; |
133 | 163 | ||
164 | /** | ||
165 | * @enum _Ecore_IMF_Autocapital_Type | ||
166 | * @typedef Ecore_IMF_Autocapital_Type | ||
167 | * | ||
168 | * Autocapitalization Types. | ||
169 | * | ||
170 | * @see ecore_imf_context_autocapital_type_set() | ||
171 | */ | ||
134 | typedef enum | 172 | typedef enum |
135 | { | 173 | { |
136 | ECORE_IMF_AUTOCAPITAL_TYPE_NONE, | 174 | ECORE_IMF_AUTOCAPITAL_TYPE_NONE, /**< No auto-capitalization when typing */ |
137 | ECORE_IMF_AUTOCAPITAL_TYPE_WORD, | 175 | ECORE_IMF_AUTOCAPITAL_TYPE_WORD, /**< Autocapitalize each word typed */ |
138 | ECORE_IMF_AUTOCAPITAL_TYPE_SENTENCE, | 176 | ECORE_IMF_AUTOCAPITAL_TYPE_SENTENCE, /**< Autocapitalize the start of each sentence */ |
139 | ECORE_IMF_AUTOCAPITAL_TYPE_ALLCHARACTER | 177 | ECORE_IMF_AUTOCAPITAL_TYPE_ALLCHARACTER, /**< Autocapitalize all letters */ |
140 | } Ecore_IMF_Autocapital_Type; | 178 | } Ecore_IMF_Autocapital_Type; |
141 | 179 | ||
180 | /** | ||
181 | * @enum _Ecore_IMF_Input_Panel_Layout | ||
182 | * @typedef Ecore_IMF_Input_Panel_Layout | ||
183 | * | ||
184 | * Input panel (virtual keyboard) layout types. | ||
185 | * | ||
186 | * @see ecore_imf_context_input_panel_layout_set() | ||
187 | */ | ||
142 | typedef enum | 188 | typedef enum |
143 | { | 189 | { |
144 | ECORE_IMF_INPUT_PANEL_LAYOUT_NORMAL, /**< Default layout */ | 190 | ECORE_IMF_INPUT_PANEL_LAYOUT_NORMAL, /**< Default layout */ |
@@ -155,12 +201,40 @@ typedef enum | |||
155 | ECORE_IMF_INPUT_PANEL_LAYOUT_PASSWORD /**< Like normal, but no auto-correct, no auto-capitalization etc. @since 1.2 */ | 201 | ECORE_IMF_INPUT_PANEL_LAYOUT_PASSWORD /**< Like normal, but no auto-correct, no auto-capitalization etc. @since 1.2 */ |
156 | } Ecore_IMF_Input_Panel_Layout; | 202 | } Ecore_IMF_Input_Panel_Layout; |
157 | 203 | ||
204 | /** | ||
205 | * @enum _Ecore_IMF_Input_Panel_Lang | ||
206 | * @typedef Ecore_IMF_Input_Panel_Lang | ||
207 | * | ||
208 | * Input panel (virtual keyboard) language modes. | ||
209 | * | ||
210 | * @see ecore_imf_context_input_panel_language_set() | ||
211 | */ | ||
158 | typedef enum | 212 | typedef enum |
159 | { | 213 | { |
160 | ECORE_IMF_INPUT_PANEL_LANG_AUTOMATIC, /**< Automatic */ | 214 | ECORE_IMF_INPUT_PANEL_LANG_AUTOMATIC, /**< Automatic @since 1.2 */ |
161 | ECORE_IMF_INPUT_PANEL_LANG_ALPHABET /**< Alphabet */ | 215 | ECORE_IMF_INPUT_PANEL_LANG_ALPHABET /**< Alphabet @since 1.2 */ |
162 | } Ecore_IMF_Input_Panel_Lang; | 216 | } Ecore_IMF_Input_Panel_Lang; |
163 | 217 | ||
218 | /** | ||
219 | * @enum _Ecore_IMF_Input_Panel_Return_Key_Type | ||
220 | * @typedef Ecore_IMF_Input_Panel_Return_Key_Type | ||
221 | * | ||
222 | * "Return" Key types on the input panel (virtual keyboard). | ||
223 | * | ||
224 | * @see ecore_imf_context_input_panel_return_key_type_set() | ||
225 | */ | ||
226 | typedef enum | ||
227 | { | ||
228 | ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT, /**< Default @since 1.2 */ | ||
229 | ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_DONE, /**< Done @since 1.2 */ | ||
230 | ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_GO, /**< Go @since 1.2 */ | ||
231 | ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_JOIN, /**< Join @since 1.2 */ | ||
232 | ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN, /**< Login @since 1.2 */ | ||
233 | ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_NEXT, /**< Next @since 1.2 */ | ||
234 | ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH, /**< Search or magnifier icon @since 1.2 */ | ||
235 | ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_SEND /**< Send @since 1.2 */ | ||
236 | } Ecore_IMF_Input_Panel_Return_Key_Type; | ||
237 | |||
164 | struct _Ecore_IMF_Event_Preedit_Start | 238 | struct _Ecore_IMF_Event_Preedit_Start |
165 | { | 239 | { |
166 | Ecore_IMF_Context *ctx; | 240 | Ecore_IMF_Context *ctx; |
@@ -314,9 +388,9 @@ union _Ecore_IMF_Event | |||
314 | 388 | ||
315 | struct _Ecore_IMF_Preedit_Attr | 389 | struct _Ecore_IMF_Preedit_Attr |
316 | { | 390 | { |
317 | Ecore_IMF_Preedit_Type preedit_type; | 391 | Ecore_IMF_Preedit_Type preedit_type; /**< preedit style type */ |
318 | unsigned int start_index; | 392 | unsigned int start_index; /**< start index of the range (in bytes) */ |
319 | unsigned int end_index; | 393 | unsigned int end_index; /**< end index of the range (in bytes) */ |
320 | }; | 394 | }; |
321 | 395 | ||
322 | struct _Ecore_IMF_Context_Class | 396 | struct _Ecore_IMF_Context_Class |
@@ -345,6 +419,11 @@ struct _Ecore_IMF_Context_Class | |||
345 | void (*input_panel_language_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Lang lang); | 419 | void (*input_panel_language_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Lang lang); |
346 | Ecore_IMF_Input_Panel_Lang (*input_panel_language_get) (Ecore_IMF_Context *ctx); | 420 | Ecore_IMF_Input_Panel_Lang (*input_panel_language_get) (Ecore_IMF_Context *ctx); |
347 | void (*cursor_location_set) (Ecore_IMF_Context *ctx, int x, int y, int w, int h); | 421 | void (*cursor_location_set) (Ecore_IMF_Context *ctx, int x, int y, int w, int h); |
422 | void (*input_panel_imdata_set)(Ecore_IMF_Context *ctx, const void* data, int len); | ||
423 | void (*input_panel_imdata_get)(Ecore_IMF_Context *ctx, void* data, int *len); | ||
424 | void (*input_panel_return_key_type_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Return_Key_Type return_key_type); | ||
425 | void (*input_panel_return_key_disabled_set) (Ecore_IMF_Context *ctx, Eina_Bool disabled); | ||
426 | void (*input_panel_caps_lock_mode_set) (Ecore_IMF_Context *ctx, Eina_Bool mode); | ||
348 | }; | 427 | }; |
349 | 428 | ||
350 | struct _Ecore_IMF_Context_Info | 429 | struct _Ecore_IMF_Context_Info |
@@ -418,6 +497,14 @@ EAPI void ecore_imf_context_input_panel_language_set(Ec | |||
418 | EAPI Ecore_IMF_Input_Panel_Lang ecore_imf_context_input_panel_language_get(Ecore_IMF_Context *ctx); | 497 | EAPI Ecore_IMF_Input_Panel_Lang ecore_imf_context_input_panel_language_get(Ecore_IMF_Context *ctx); |
419 | EAPI void ecore_imf_context_input_panel_enabled_set(Ecore_IMF_Context *ctx, Eina_Bool enable); | 498 | EAPI void ecore_imf_context_input_panel_enabled_set(Ecore_IMF_Context *ctx, Eina_Bool enable); |
420 | EAPI Eina_Bool ecore_imf_context_input_panel_enabled_get(Ecore_IMF_Context *ctx); | 499 | EAPI Eina_Bool ecore_imf_context_input_panel_enabled_get(Ecore_IMF_Context *ctx); |
500 | EAPI void ecore_imf_context_input_panel_imdata_set(Ecore_IMF_Context *ctx, const void *data, int len); | ||
501 | EAPI void ecore_imf_context_input_panel_imdata_get(Ecore_IMF_Context *ctx, void *data, int *len); | ||
502 | EAPI void ecore_imf_context_input_panel_return_key_type_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Return_Key_Type return_key_type); | ||
503 | EAPI Ecore_IMF_Input_Panel_Return_Key_Type ecore_imf_context_input_panel_return_key_type_get(Ecore_IMF_Context *ctx); | ||
504 | EAPI void ecore_imf_context_input_panel_return_key_disabled_set(Ecore_IMF_Context *ctx, Eina_Bool disabled); | ||
505 | EAPI Eina_Bool ecore_imf_context_input_panel_return_key_disabled_get(Ecore_IMF_Context *ctx); | ||
506 | EAPI void ecore_imf_context_input_panel_caps_lock_mode_set(Ecore_IMF_Context *ctx, Eina_Bool mode); | ||
507 | EAPI Eina_Bool ecore_imf_context_input_panel_caps_lock_mode_get(Ecore_IMF_Context *ctx); | ||
421 | 508 | ||
422 | /* The following entry points must be exported by each input method module | 509 | /* The following entry points must be exported by each input method module |
423 | */ | 510 | */ |
@@ -433,3 +520,7 @@ EAPI Eina_Bool ecore_imf_context_input_panel_enabled_get(Eco | |||
433 | #endif | 520 | #endif |
434 | 521 | ||
435 | #endif | 522 | #endif |
523 | |||
524 | /** | ||
525 | * @} | ||
526 | */ | ||
diff --git a/libraries/ecore/src/lib/ecore_imf/Makefile.in b/libraries/ecore/src/lib/ecore_imf/Makefile.in index 9f91360..4d71b5d 100644 --- a/libraries/ecore/src/lib/ecore_imf/Makefile.in +++ b/libraries/ecore/src/lib/ecore_imf/Makefile.in | |||
@@ -50,16 +50,15 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \ | |||
50 | $(top_srcdir)/m4/efl_path_max.m4 $(top_srcdir)/m4/efl_tests.m4 \ | 50 | $(top_srcdir)/m4/efl_path_max.m4 $(top_srcdir)/m4/efl_tests.m4 \ |
51 | $(top_srcdir)/m4/efl_threads.m4 $(top_srcdir)/m4/gettext.m4 \ | 51 | $(top_srcdir)/m4/efl_threads.m4 $(top_srcdir)/m4/gettext.m4 \ |
52 | $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ | 52 | $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ |
53 | $(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lib-ld.m4 \ | 53 | $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ |
54 | $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ | 54 | $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ |
55 | $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ | 55 | $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ |
56 | $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ | 56 | $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ |
57 | $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ | 57 | $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ |
58 | $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ | 58 | $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac |
59 | $(top_srcdir)/configure.ac | ||
60 | am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ | 59 | am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ |
61 | $(ACLOCAL_M4) | 60 | $(ACLOCAL_M4) |
62 | mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs | 61 | mkinstalldirs = $(install_sh) -d |
63 | CONFIG_HEADER = $(top_builddir)/config.h | 62 | CONFIG_HEADER = $(top_builddir)/config.h |
64 | CONFIG_CLEAN_FILES = | 63 | CONFIG_CLEAN_FILES = |
65 | CONFIG_CLEAN_VPATH_FILES = | 64 | CONFIG_CLEAN_VPATH_FILES = |
@@ -193,6 +192,8 @@ EVAS_LIBS = @EVAS_LIBS@ | |||
193 | EVIL_CFLAGS = @EVIL_CFLAGS@ | 192 | EVIL_CFLAGS = @EVIL_CFLAGS@ |
194 | EVIL_LIBS = @EVIL_LIBS@ | 193 | EVIL_LIBS = @EVIL_LIBS@ |
195 | EXEEXT = @EXEEXT@ | 194 | EXEEXT = @EXEEXT@ |
195 | EXOTIC_CFLAGS = @EXOTIC_CFLAGS@ | ||
196 | EXOTIC_LIBS = @EXOTIC_LIBS@ | ||
196 | FGREP = @FGREP@ | 197 | FGREP = @FGREP@ |
197 | GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ | 198 | GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ |
198 | GLIB_CFLAGS = @GLIB_CFLAGS@ | 199 | GLIB_CFLAGS = @GLIB_CFLAGS@ |
@@ -248,6 +249,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
248 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 249 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
249 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 250 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
250 | PKG_CONFIG = @PKG_CONFIG@ | 251 | PKG_CONFIG = @PKG_CONFIG@ |
252 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
253 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
251 | POSUB = @POSUB@ | 254 | POSUB = @POSUB@ |
252 | RANLIB = @RANLIB@ | 255 | RANLIB = @RANLIB@ |
253 | SCIM_CFLAGS = @SCIM_CFLAGS@ | 256 | SCIM_CFLAGS = @SCIM_CFLAGS@ |
@@ -258,6 +261,7 @@ SDL_LIBS = @SDL_LIBS@ | |||
258 | SED = @SED@ | 261 | SED = @SED@ |
259 | SET_MAKE = @SET_MAKE@ | 262 | SET_MAKE = @SET_MAKE@ |
260 | SHELL = @SHELL@ | 263 | SHELL = @SHELL@ |
264 | SHM_OPEN_LIBS = @SHM_OPEN_LIBS@ | ||
261 | SSL_CFLAGS = @SSL_CFLAGS@ | 265 | SSL_CFLAGS = @SSL_CFLAGS@ |
262 | SSL_LIBS = @SSL_LIBS@ | 266 | SSL_LIBS = @SSL_LIBS@ |
263 | STRIP = @STRIP@ | 267 | STRIP = @STRIP@ |
diff --git a/libraries/ecore/src/lib/ecore_imf/ecore_imf_context.c b/libraries/ecore/src/lib/ecore_imf/ecore_imf_context.c index b65ee26..423c461 100644 --- a/libraries/ecore/src/lib/ecore_imf/ecore_imf_context.c +++ b/libraries/ecore/src/lib/ecore_imf/ecore_imf_context.c | |||
@@ -143,6 +143,32 @@ ecore_imf_context_default_id_by_canvas_type_get(const char *canvas_type) | |||
143 | * @return Return a #Ecore_IMF_Context_Info for the Input Method Context with @p id; | 143 | * @return Return a #Ecore_IMF_Context_Info for the Input Method Context with @p id; |
144 | * on failure it returns NULL. | 144 | * on failure it returns NULL. |
145 | * @ingroup Ecore_IMF_Context_Group | 145 | * @ingroup Ecore_IMF_Context_Group |
146 | * | ||
147 | * Example | ||
148 | * @code | ||
149 | * | ||
150 | * const char *ctx_id; | ||
151 | * const Ecore_IMF_Context_Info *ctx_info; | ||
152 | * Ecore_IMF_Context *imf_context; | ||
153 | * ctx_id = ecore_imf_context_default_id_get(); | ||
154 | * if (ctx_id) | ||
155 | * { | ||
156 | * ctx_info = ecore_imf_context_info_by_id_get(ctx_id); | ||
157 | * if (!ctx_info->canvas_type || | ||
158 | * strcmp(ctx_info->canvas_type, "evas") == 0) | ||
159 | * { | ||
160 | * imf_context = ecore_imf_context_add(ctx_id); | ||
161 | * } | ||
162 | * else | ||
163 | * { | ||
164 | * ctx_id = ecore_imf_context_default_id_by_canvas_type_get("evas"); | ||
165 | * if (ctx_id) | ||
166 | * { | ||
167 | * imf_context = ecore_imf_context_add(ctx_id); | ||
168 | * } | ||
169 | * } | ||
170 | * } | ||
171 | * @endcode | ||
146 | */ | 172 | */ |
147 | EAPI const Ecore_IMF_Context_Info * | 173 | EAPI const Ecore_IMF_Context_Info * |
148 | ecore_imf_context_info_by_id_get(const char *id) | 174 | ecore_imf_context_info_by_id_get(const char *id) |
@@ -188,6 +214,10 @@ ecore_imf_context_add(const char *id) | |||
188 | * set on the immodule */ | 214 | * set on the immodule */ |
189 | ecore_imf_context_input_panel_enabled_set(ctx, EINA_TRUE); | 215 | ecore_imf_context_input_panel_enabled_set(ctx, EINA_TRUE); |
190 | 216 | ||
217 | /* default input panel layout type is NORMAL type, so let's make sure it's | ||
218 | * set on the immodule */ | ||
219 | ecore_imf_context_input_panel_layout_set(ctx, ECORE_IMF_INPUT_PANEL_LAYOUT_NORMAL); | ||
220 | |||
191 | /* default input_mode is ECORE_IMF_INPUT_MODE_FULL, so let's make sure it's | 221 | /* default input_mode is ECORE_IMF_INPUT_MODE_FULL, so let's make sure it's |
192 | * set on the immodule */ | 222 | * set on the immodule */ |
193 | ecore_imf_context_input_mode_set(ctx, ECORE_IMF_INPUT_MODE_FULL); | 223 | ecore_imf_context_input_mode_set(ctx, ECORE_IMF_INPUT_MODE_FULL); |
@@ -403,7 +433,7 @@ ecore_imf_context_preedit_string_get(Ecore_IMF_Context *ctx, char **str, int *cu | |||
403 | } | 433 | } |
404 | 434 | ||
405 | /** | 435 | /** |
406 | * Retrieve the current preedit string, atrributes and | 436 | * Retrieve the current preedit string, attributes and |
407 | * cursor position for the Input Method Context. | 437 | * cursor position for the Input Method Context. |
408 | * | 438 | * |
409 | * @param ctx An #Ecore_IMF_Context. | 439 | * @param ctx An #Ecore_IMF_Context. |
@@ -413,6 +443,49 @@ ecore_imf_context_preedit_string_get(Ecore_IMF_Context *ctx, char **str, int *cu | |||
413 | * @param cursor_pos Location to store position of cursor (in characters) | 443 | * @param cursor_pos Location to store position of cursor (in characters) |
414 | * within the preedit string. | 444 | * within the preedit string. |
415 | * @ingroup Ecore_IMF_Context_Group | 445 | * @ingroup Ecore_IMF_Context_Group |
446 | * | ||
447 | * Example | ||
448 | * @code | ||
449 | * char *preedit_string; | ||
450 | * int cursor_pos; | ||
451 | * Eina_List *attrs = NULL, *l = NULL; | ||
452 | * Ecore_IMF_Preedit_Attr *attr; | ||
453 | * | ||
454 | * ecore_imf_context_preedit_string_with_attributes_get(imf_context, | ||
455 | * &preedit_string, | ||
456 | * &attrs, &cursor_pos); | ||
457 | * if (!preedit_string) return; | ||
458 | * | ||
459 | * if (strlen(preedit_string) > 0) | ||
460 | * { | ||
461 | * if (attrs) | ||
462 | * { | ||
463 | * EINA_LIST_FOREACH(attrs, l, attr) | ||
464 | * { | ||
465 | * if (attr->preedit_type == ECORE_IMF_PREEDIT_TYPE_SUB1) | ||
466 | * { | ||
467 | * // Something to do | ||
468 | * } | ||
469 | * else if (attr->preedit_type == ECORE_IMF_PREEDIT_TYPE_SUB2) | ||
470 | * { | ||
471 | * // Something to do | ||
472 | * } | ||
473 | * else if (attr->preedit_type == ECORE_IMF_PREEDIT_TYPE_SUB3) | ||
474 | * { | ||
475 | * // Something to do | ||
476 | * } | ||
477 | * } | ||
478 | * } | ||
479 | * } | ||
480 | * | ||
481 | * // delete attribute list | ||
482 | * if (attrs) | ||
483 | * { | ||
484 | * EINA_LIST_FREE(attrs, attr) free(attr); | ||
485 | * } | ||
486 | * | ||
487 | * free(preedit_string); | ||
488 | * @endcode | ||
416 | * @since 1.1.0 | 489 | * @since 1.1.0 |
417 | */ | 490 | */ |
418 | EAPI void | 491 | EAPI void |
@@ -440,6 +513,18 @@ ecore_imf_context_preedit_string_with_attributes_get(Ecore_IMF_Context *ctx, cha | |||
440 | * | 513 | * |
441 | * @param ctx An #Ecore_IMF_Context. | 514 | * @param ctx An #Ecore_IMF_Context. |
442 | * @ingroup Ecore_IMF_Context_Group | 515 | * @ingroup Ecore_IMF_Context_Group |
516 | * | ||
517 | * Example | ||
518 | * @code | ||
519 | * static void | ||
520 | * _focus_in_cb(void *data, Evas_Object *o, const char *emission, const char *source) | ||
521 | * { | ||
522 | * ecore_imf_context_reset(imf_context); | ||
523 | * ecore_imf_context_focus_in(imf_context); | ||
524 | * } | ||
525 | * | ||
526 | * evas_object_event_callback_add(obj, EVAS_CALLBACK_FOCUS_IN, _focus_in_cb, ed); | ||
527 | * @endcode | ||
443 | */ | 528 | */ |
444 | EAPI void | 529 | EAPI void |
445 | ecore_imf_context_focus_in(Ecore_IMF_Context *ctx) | 530 | ecore_imf_context_focus_in(Ecore_IMF_Context *ctx) |
@@ -459,6 +544,18 @@ ecore_imf_context_focus_in(Ecore_IMF_Context *ctx) | |||
459 | * | 544 | * |
460 | * @param ctx An #Ecore_IMF_Context. | 545 | * @param ctx An #Ecore_IMF_Context. |
461 | * @ingroup Ecore_IMF_Context_Group | 546 | * @ingroup Ecore_IMF_Context_Group |
547 | * | ||
548 | * Example | ||
549 | * @code | ||
550 | * static void | ||
551 | * _focus_out_cb(void *data, Evas_Object *o, const char *emission, const char *source) | ||
552 | * { | ||
553 | * ecore_imf_context_reset(imf_context); | ||
554 | * ecore_imf_context_focus_out(imf_context); | ||
555 | * } | ||
556 | * | ||
557 | * evas_object_event_callback_add(obj, EVAS_CALLBACK_FOCUS_OUT, _focus_out_cb, ed); | ||
558 | * @endcode | ||
462 | */ | 559 | */ |
463 | EAPI void | 560 | EAPI void |
464 | ecore_imf_context_focus_out(Ecore_IMF_Context *ctx) | 561 | ecore_imf_context_focus_out(Ecore_IMF_Context *ctx) |
@@ -479,6 +576,18 @@ ecore_imf_context_focus_out(Ecore_IMF_Context *ctx) | |||
479 | * | 576 | * |
480 | * @param ctx An #Ecore_IMF_Context. | 577 | * @param ctx An #Ecore_IMF_Context. |
481 | * @ingroup Ecore_IMF_Context_Group | 578 | * @ingroup Ecore_IMF_Context_Group |
579 | * | ||
580 | * Example | ||
581 | * @code | ||
582 | * static void | ||
583 | * _focus_out_cb(void *data, Evas_Object *o, const char *emission, const char *source) | ||
584 | * { | ||
585 | * ecore_imf_context_reset(imf_context); | ||
586 | * ecore_imf_context_focus_out(imf_context); | ||
587 | * } | ||
588 | * | ||
589 | * evas_object_event_callback_add(obj, EVAS_CALLBACK_FOCUS_OUT, _focus_out_cb, ed); | ||
590 | * @endcode | ||
482 | */ | 591 | */ |
483 | EAPI void | 592 | EAPI void |
484 | ecore_imf_context_reset(Ecore_IMF_Context *ctx) | 593 | ecore_imf_context_reset(Ecore_IMF_Context *ctx) |
@@ -515,10 +624,12 @@ ecore_imf_context_cursor_position_set(Ecore_IMF_Context *ctx, int cursor_pos) | |||
515 | /** | 624 | /** |
516 | * Notify the Input Method Context that a change in the cursor | 625 | * Notify the Input Method Context that a change in the cursor |
517 | * location has been made. The location is relative to the canvas. | 626 | * location has been made. The location is relative to the canvas. |
627 | * The cursor location can be used to determine the position of | ||
628 | * candidate word window in the immodule. | ||
518 | * | 629 | * |
519 | * @param ctx An #Ecore_IMF_Context. | 630 | * @param ctx An #Ecore_IMF_Context. |
520 | * @param x cursor x position. | 631 | * @param x cursor x position. |
521 | * @param x cursor y position. | 632 | * @param y cursor y position. |
522 | * @param w cursor width. | 633 | * @param w cursor width. |
523 | * @param h cursor height. | 634 | * @param h cursor height. |
524 | * @ingroup Ecore_IMF_Context_Group | 635 | * @ingroup Ecore_IMF_Context_Group |
@@ -605,7 +716,7 @@ ecore_imf_context_prediction_allow_get(Ecore_IMF_Context *ctx) | |||
605 | } | 716 | } |
606 | 717 | ||
607 | /** | 718 | /** |
608 | * Set the autocapitalization type on the immodule. | 719 | * Set the autocapitalization type on the immodule. |
609 | * | 720 | * |
610 | * @param ctx An #Ecore_IMF_Context. | 721 | * @param ctx An #Ecore_IMF_Context. |
611 | * @param autocapital_type the autocapitalization type. | 722 | * @param autocapital_type the autocapitalization type. |
@@ -732,6 +843,28 @@ ecore_imf_context_input_mode_get(Ecore_IMF_Context *ctx) | |||
732 | * @param event The event itself. | 843 | * @param event The event itself. |
733 | * @return EINA_TRUE if the event was handled; otherwise EINA_FALSE. | 844 | * @return EINA_TRUE if the event was handled; otherwise EINA_FALSE. |
734 | * @ingroup Ecore_IMF_Context_Group | 845 | * @ingroup Ecore_IMF_Context_Group |
846 | * | ||
847 | * Example | ||
848 | * @code | ||
849 | * static void | ||
850 | * _key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) | ||
851 | * { | ||
852 | * Evas_Event_Key_Down *ev = event_info; | ||
853 | * if (!ev->keyname) return; | ||
854 | * | ||
855 | * if (imf_context) | ||
856 | * { | ||
857 | * Ecore_IMF_Event_Key_Down ecore_ev; | ||
858 | * ecore_imf_evas_event_key_down_wrap(ev, &ecore_ev); | ||
859 | * if (ecore_imf_context_filter_event(imf_context, | ||
860 | * ECORE_IMF_EVENT_KEY_DOWN, | ||
861 | * (Ecore_IMF_Event *)&ecore_ev)) | ||
862 | * return; | ||
863 | * } | ||
864 | * } | ||
865 | * | ||
866 | * evas_object_event_callback_add(obj, EVAS_CALLBACK_KEY_DOWN, _key_down_cb, data); | ||
867 | * @endcode | ||
735 | */ | 868 | */ |
736 | EAPI Eina_Bool | 869 | EAPI Eina_Bool |
737 | ecore_imf_context_filter_event(Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type type, Ecore_IMF_Event *event) | 870 | ecore_imf_context_filter_event(Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type type, Ecore_IMF_Event *event) |
@@ -839,7 +972,7 @@ EAPI void *ecore_imf_context_data_get(Ecore_IMF_Context *ctx) | |||
839 | * If the function returns EINA_TRUE, then you must free | 972 | * If the function returns EINA_TRUE, then you must free |
840 | * the result stored in this location with free(). | 973 | * the result stored in this location with free(). |
841 | * @param cursor_pos Location to store the position in characters of | 974 | * @param cursor_pos Location to store the position in characters of |
842 | * the insertion cursor within @text. | 975 | * the insertion cursor within @p text. |
843 | * @return EINA_TRUE if surrounding text was provided; otherwise EINA_FALSE. | 976 | * @return EINA_TRUE if surrounding text was provided; otherwise EINA_FALSE. |
844 | * @ingroup Ecore_IMF_Context_Module_Group | 977 | * @ingroup Ecore_IMF_Context_Module_Group |
845 | */ | 978 | */ |
@@ -877,6 +1010,8 @@ _ecore_imf_event_free_preedit(void *data __UNUSED__, void *event) | |||
877 | * Adds ECORE_IMF_EVENT_PREEDIT_START to the event queue. | 1010 | * Adds ECORE_IMF_EVENT_PREEDIT_START to the event queue. |
878 | * | 1011 | * |
879 | * ECORE_IMF_EVENT_PREEDIT_START should be added when a new preedit sequence starts. | 1012 | * ECORE_IMF_EVENT_PREEDIT_START should be added when a new preedit sequence starts. |
1013 | * It's asynchronous method to put event to the event queue. | ||
1014 | * ecore_imf_context_event_callback_call() can be used as synchronous method. | ||
880 | * | 1015 | * |
881 | * @param ctx An #Ecore_IMF_Context. | 1016 | * @param ctx An #Ecore_IMF_Context. |
882 | * @ingroup Ecore_IMF_Context_Module_Group | 1017 | * @ingroup Ecore_IMF_Context_Module_Group |
@@ -903,6 +1038,8 @@ ecore_imf_context_preedit_start_event_add(Ecore_IMF_Context *ctx) | |||
903 | * Adds ECORE_IMF_EVENT_PREEDIT_END to the event queue. | 1038 | * Adds ECORE_IMF_EVENT_PREEDIT_END to the event queue. |
904 | * | 1039 | * |
905 | * ECORE_IMF_EVENT_PREEDIT_END should be added when a new preedit sequence has been completed or canceled. | 1040 | * ECORE_IMF_EVENT_PREEDIT_END should be added when a new preedit sequence has been completed or canceled. |
1041 | * It's asynchronous method to put event to the event queue. | ||
1042 | * ecore_imf_context_event_callback_call() can be used as synchronous method. | ||
906 | * | 1043 | * |
907 | * @param ctx An #Ecore_IMF_Context. | 1044 | * @param ctx An #Ecore_IMF_Context. |
908 | * @ingroup Ecore_IMF_Context_Module_Group | 1045 | * @ingroup Ecore_IMF_Context_Module_Group |
@@ -928,6 +1065,9 @@ ecore_imf_context_preedit_end_event_add(Ecore_IMF_Context *ctx) | |||
928 | /** | 1065 | /** |
929 | * Adds ECORE_IMF_EVENT_PREEDIT_CHANGED to the event queue. | 1066 | * Adds ECORE_IMF_EVENT_PREEDIT_CHANGED to the event queue. |
930 | * | 1067 | * |
1068 | * It's asynchronous method to put event to the event queue. | ||
1069 | * ecore_imf_context_event_callback_call() can be used as synchronous method. | ||
1070 | * | ||
931 | * @param ctx An #Ecore_IMF_Context. | 1071 | * @param ctx An #Ecore_IMF_Context. |
932 | * @ingroup Ecore_IMF_Context_Module_Group | 1072 | * @ingroup Ecore_IMF_Context_Module_Group |
933 | */ | 1073 | */ |
@@ -962,6 +1102,9 @@ _ecore_imf_event_free_commit(void *data __UNUSED__, void *event) | |||
962 | /** | 1102 | /** |
963 | * Adds ECORE_IMF_EVENT_COMMIT to the event queue. | 1103 | * Adds ECORE_IMF_EVENT_COMMIT to the event queue. |
964 | * | 1104 | * |
1105 | * It's asynchronous method to put event to the event queue. | ||
1106 | * ecore_imf_context_event_callback_call() can be used as synchronous method. | ||
1107 | * | ||
965 | * @param ctx An #Ecore_IMF_Context. | 1108 | * @param ctx An #Ecore_IMF_Context. |
966 | * @param str The committed string. | 1109 | * @param str The committed string. |
967 | * @ingroup Ecore_IMF_Context_Module_Group | 1110 | * @ingroup Ecore_IMF_Context_Module_Group |
@@ -999,6 +1142,9 @@ _ecore_imf_event_free_delete_surrounding(void *data __UNUSED__, void *event) | |||
999 | * by adding the ECORE_IMF_EVENT_DELETE_SURROUNDING to the event queue. | 1142 | * by adding the ECORE_IMF_EVENT_DELETE_SURROUNDING to the event queue. |
1000 | * Note that offset and n_chars are in characters not in bytes. | 1143 | * Note that offset and n_chars are in characters not in bytes. |
1001 | * | 1144 | * |
1145 | * It's asynchronous method to put ECORE_IMF_EVENT_DELETE_SURROUNDING event to the event queue. | ||
1146 | * ecore_imf_context_event_callback_call() can be used as synchronous method. | ||
1147 | * | ||
1002 | * @param ctx An #Ecore_IMF_Context. | 1148 | * @param ctx An #Ecore_IMF_Context. |
1003 | * @param offset The start offset of surrounding to be deleted. | 1149 | * @param offset The start offset of surrounding to be deleted. |
1004 | * @param n_chars The number of characters to be deleted. | 1150 | * @param n_chars The number of characters to be deleted. |
@@ -1041,8 +1187,20 @@ ecore_imf_context_delete_surrounding_event_add(Ecore_IMF_Context *ctx, int offse | |||
1041 | * @param func The (callback) function to be called when the event is | 1187 | * @param func The (callback) function to be called when the event is |
1042 | * triggered | 1188 | * triggered |
1043 | * @param data The data pointer to be passed to @p func | 1189 | * @param data The data pointer to be passed to @p func |
1044 | * @ingroup Ecore_IMF_Context_Module_Group | 1190 | * @ingroup Ecore_IMF_Context_Group |
1045 | * @since 1.2.0 | 1191 | * @since 1.2.0 |
1192 | * | ||
1193 | * Example | ||
1194 | * @code | ||
1195 | * static void | ||
1196 | * _imf_event_commit_cb(void *data, Ecore_IMF_Context *ctx, void *event_info) | ||
1197 | * { | ||
1198 | * char *commit_str = event_info; | ||
1199 | * // something to do | ||
1200 | * } | ||
1201 | * | ||
1202 | * ecore_imf_context_event_callback_add(en->imf_context, ECORE_IMF_CALLBACK_COMMIT, _imf_event_commit_cb, data); | ||
1203 | * @endcode | ||
1046 | */ | 1204 | */ |
1047 | EAPI void | 1205 | EAPI void |
1048 | ecore_imf_context_event_callback_add(Ecore_IMF_Context *ctx, Ecore_IMF_Callback_Type type, Ecore_IMF_Event_Cb func, const void *data) | 1206 | ecore_imf_context_event_callback_add(Ecore_IMF_Context *ctx, Ecore_IMF_Callback_Type type, Ecore_IMF_Event_Cb func, const void *data) |
@@ -1079,10 +1237,10 @@ ecore_imf_context_event_callback_add(Ecore_IMF_Context *ctx, Ecore_IMF_Callback_ | |||
1079 | * @see ecore_imf_context_event_callback_add() for more details | 1237 | * @see ecore_imf_context_event_callback_add() for more details |
1080 | * | 1238 | * |
1081 | * @param ctx Ecore_IMF_Context to remove a callback from. | 1239 | * @param ctx Ecore_IMF_Context to remove a callback from. |
1082 | * @param type The type of event that was trigerring the callback | 1240 | * @param type The type of event that was triggering the callback |
1083 | * @param func The (callback) function that was to be called when the event was triggered | 1241 | * @param func The (callback) function that was to be called when the event was triggered |
1084 | * @return the data pointer | 1242 | * @return the data pointer |
1085 | * @ingroup Ecore_IMF_Context_Module_Group | 1243 | * @ingroup Ecore_IMF_Context_Group |
1086 | * @since 1.2.0 | 1244 | * @since 1.2.0 |
1087 | */ | 1245 | */ |
1088 | EAPI void * | 1246 | EAPI void * |
@@ -1096,7 +1254,7 @@ ecore_imf_context_event_callback_del(Ecore_IMF_Context *ctx, Ecore_IMF_Callback_ | |||
1096 | { | 1254 | { |
1097 | ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, | 1255 | ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, |
1098 | "ecore_imf_context_event_callback_del"); | 1256 | "ecore_imf_context_event_callback_del"); |
1099 | return; | 1257 | return NULL; |
1100 | } | 1258 | } |
1101 | 1259 | ||
1102 | if (!func) return NULL; | 1260 | if (!func) return NULL; |
@@ -1106,7 +1264,7 @@ ecore_imf_context_event_callback_del(Ecore_IMF_Context *ctx, Ecore_IMF_Callback_ | |||
1106 | { | 1264 | { |
1107 | if ((fn) && (fn->func == func) && (fn->type == type)) | 1265 | if ((fn) && (fn->func == func) && (fn->type == type)) |
1108 | { | 1266 | { |
1109 | void *tmp = fn->data; | 1267 | void *tmp = (void *)fn->data; |
1110 | free(fn); | 1268 | free(fn); |
1111 | ctx->callbacks = eina_list_remove_list(ctx->callbacks, l); | 1269 | ctx->callbacks = eina_list_remove_list(ctx->callbacks, l); |
1112 | return tmp; | 1270 | return tmp; |
@@ -1156,11 +1314,11 @@ ecore_imf_context_event_callback_call(Ecore_IMF_Context *ctx, Ecore_IMF_Callback | |||
1156 | * Ask the Input Method Context to show the control panel of using Input Method. | 1314 | * Ask the Input Method Context to show the control panel of using Input Method. |
1157 | * | 1315 | * |
1158 | * @param ctx An #Ecore_IMF_Context. | 1316 | * @param ctx An #Ecore_IMF_Context. |
1159 | * @ingroup Ecore_IMF_Context_IMControl_Group | 1317 | * @ingroup Ecore_IMF_Context_Group |
1160 | * @since 1.1.0 | 1318 | * @since 1.1.0 |
1161 | */ | 1319 | */ |
1162 | EAPI void | 1320 | EAPI void |
1163 | ecore_imf_context_control_panel_show (Ecore_IMF_Context *ctx) | 1321 | ecore_imf_context_control_panel_show(Ecore_IMF_Context *ctx) |
1164 | { | 1322 | { |
1165 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | 1323 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) |
1166 | { | 1324 | { |
@@ -1176,11 +1334,11 @@ ecore_imf_context_control_panel_show (Ecore_IMF_Context *ctx) | |||
1176 | * Ask the Input Method Context to hide the control panel of using Input Method. | 1334 | * Ask the Input Method Context to hide the control panel of using Input Method. |
1177 | * | 1335 | * |
1178 | * @param ctx An #Ecore_IMF_Context. | 1336 | * @param ctx An #Ecore_IMF_Context. |
1179 | * @ingroup Ecore_IMF_Context_IMControl_Group | 1337 | * @ingroup Ecore_IMF_Context_Group |
1180 | * @since 1.1.0 | 1338 | * @since 1.1.0 |
1181 | */ | 1339 | */ |
1182 | EAPI void | 1340 | EAPI void |
1183 | ecore_imf_context_control_panel_hide (Ecore_IMF_Context *ctx) | 1341 | ecore_imf_context_control_panel_hide(Ecore_IMF_Context *ctx) |
1184 | { | 1342 | { |
1185 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | 1343 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) |
1186 | { | 1344 | { |
@@ -1196,7 +1354,7 @@ ecore_imf_context_control_panel_hide (Ecore_IMF_Context *ctx) | |||
1196 | * Ask the Input Method Context to show the input panel (virtual keyboard). | 1354 | * Ask the Input Method Context to show the input panel (virtual keyboard). |
1197 | * | 1355 | * |
1198 | * @param ctx An #Ecore_IMF_Context. | 1356 | * @param ctx An #Ecore_IMF_Context. |
1199 | * @ingroup Ecore_IMF_Context_IMControl_Group | 1357 | * @ingroup Ecore_IMF_Context_Group |
1200 | * @since 1.1.0 | 1358 | * @since 1.1.0 |
1201 | */ | 1359 | */ |
1202 | EAPI void | 1360 | EAPI void |
@@ -1216,7 +1374,7 @@ ecore_imf_context_input_panel_show(Ecore_IMF_Context *ctx) | |||
1216 | * Ask the Input Method Context to hide the input panel. | 1374 | * Ask the Input Method Context to hide the input panel. |
1217 | * | 1375 | * |
1218 | * @param ctx An #Ecore_IMF_Context. | 1376 | * @param ctx An #Ecore_IMF_Context. |
1219 | * @ingroup Ecore_IMF_Context_IMControl_Group | 1377 | * @ingroup Ecore_IMF_Context_Group |
1220 | * @since 1.1.0 | 1378 | * @since 1.1.0 |
1221 | */ | 1379 | */ |
1222 | EAPI void | 1380 | EAPI void |
@@ -1236,12 +1394,12 @@ ecore_imf_context_input_panel_hide(Ecore_IMF_Context *ctx) | |||
1236 | * Set the layout of the input panel. | 1394 | * Set the layout of the input panel. |
1237 | * | 1395 | * |
1238 | * @param ctx An #Ecore_IMF_Context. | 1396 | * @param ctx An #Ecore_IMF_Context. |
1239 | * @param layout see #ECORE_IMF_INPUT_PANEL_LAYOUT | 1397 | * @param layout see #Ecore_IMF_Input_Panel_Layout |
1240 | * @ingroup Ecore_IMF_Context_IMControl_Group | 1398 | * @ingroup Ecore_IMF_Context_Group |
1241 | * @since 1.1.0 | 1399 | * @since 1.1.0 |
1242 | */ | 1400 | */ |
1243 | EAPI void | 1401 | EAPI void |
1244 | ecore_imf_context_input_panel_layout_set (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Layout layout) | 1402 | ecore_imf_context_input_panel_layout_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Layout layout) |
1245 | { | 1403 | { |
1246 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | 1404 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) |
1247 | { | 1405 | { |
@@ -1261,11 +1419,11 @@ ecore_imf_context_input_panel_layout_set (Ecore_IMF_Context *ctx, Ecore_IMF_Inpu | |||
1261 | * | 1419 | * |
1262 | * @param ctx An #Ecore_IMF_Context. | 1420 | * @param ctx An #Ecore_IMF_Context. |
1263 | * @return layout see #Ecore_IMF_Input_Panel_Layout | 1421 | * @return layout see #Ecore_IMF_Input_Panel_Layout |
1264 | * @ingroup Ecore_IMF_Context_IMControl_Group | 1422 | * @ingroup Ecore_IMF_Context_Group |
1265 | * @since 1.1.0 | 1423 | * @since 1.1.0 |
1266 | */ | 1424 | */ |
1267 | EAPI Ecore_IMF_Input_Panel_Layout | 1425 | EAPI Ecore_IMF_Input_Panel_Layout |
1268 | ecore_imf_context_input_panel_layout_get (Ecore_IMF_Context *ctx) | 1426 | ecore_imf_context_input_panel_layout_get(Ecore_IMF_Context *ctx) |
1269 | { | 1427 | { |
1270 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | 1428 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) |
1271 | { | 1429 | { |
@@ -1275,9 +1433,7 @@ ecore_imf_context_input_panel_layout_get (Ecore_IMF_Context *ctx) | |||
1275 | } | 1433 | } |
1276 | 1434 | ||
1277 | if (ctx->klass->input_panel_layout_get) | 1435 | if (ctx->klass->input_panel_layout_get) |
1278 | { | 1436 | return ctx->input_panel_layout; |
1279 | return ctx->input_panel_layout; | ||
1280 | } | ||
1281 | else | 1437 | else |
1282 | return ECORE_IMF_INPUT_PANEL_LAYOUT_INVALID; | 1438 | return ECORE_IMF_INPUT_PANEL_LAYOUT_INVALID; |
1283 | } | 1439 | } |
@@ -1288,11 +1444,11 @@ ecore_imf_context_input_panel_layout_get (Ecore_IMF_Context *ctx) | |||
1288 | * | 1444 | * |
1289 | * @param ctx An #Ecore_IMF_Context. | 1445 | * @param ctx An #Ecore_IMF_Context. |
1290 | * @param lang the language to be set to the input panel. | 1446 | * @param lang the language to be set to the input panel. |
1291 | * @ingroup Ecore_IMF_Context_IMControl_Group | 1447 | * @ingroup Ecore_IMF_Context_Group |
1292 | * @since 1.1.0 | 1448 | * @since 1.1.0 |
1293 | */ | 1449 | */ |
1294 | EAPI void | 1450 | EAPI void |
1295 | ecore_imf_context_input_panel_language_set (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Lang lang) | 1451 | ecore_imf_context_input_panel_language_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Lang lang) |
1296 | { | 1452 | { |
1297 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | 1453 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) |
1298 | { | 1454 | { |
@@ -1312,11 +1468,11 @@ ecore_imf_context_input_panel_language_set (Ecore_IMF_Context *ctx, Ecore_IMF_In | |||
1312 | * | 1468 | * |
1313 | * @param ctx An #Ecore_IMF_Context. | 1469 | * @param ctx An #Ecore_IMF_Context. |
1314 | * @return Ecore_IMF_Input_Panel_Lang | 1470 | * @return Ecore_IMF_Input_Panel_Lang |
1315 | * @ingroup Ecore_IMF_Context_IMControl_Group | 1471 | * @ingroup Ecore_IMF_Context_Group |
1316 | * @since 1.1.0 | 1472 | * @since 1.1.0 |
1317 | */ | 1473 | */ |
1318 | EAPI Ecore_IMF_Input_Panel_Lang | 1474 | EAPI Ecore_IMF_Input_Panel_Lang |
1319 | ecore_imf_context_input_panel_language_get (Ecore_IMF_Context *ctx) | 1475 | ecore_imf_context_input_panel_language_get(Ecore_IMF_Context *ctx) |
1320 | { | 1476 | { |
1321 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | 1477 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) |
1322 | { | 1478 | { |
@@ -1338,7 +1494,7 @@ ecore_imf_context_input_panel_language_get (Ecore_IMF_Context *ctx) | |||
1338 | * @since 1.1.0 | 1494 | * @since 1.1.0 |
1339 | */ | 1495 | */ |
1340 | EAPI void | 1496 | EAPI void |
1341 | ecore_imf_context_input_panel_enabled_set (Ecore_IMF_Context *ctx, | 1497 | ecore_imf_context_input_panel_enabled_set(Ecore_IMF_Context *ctx, |
1342 | Eina_Bool enabled) | 1498 | Eina_Bool enabled) |
1343 | { | 1499 | { |
1344 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | 1500 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) |
@@ -1360,7 +1516,7 @@ ecore_imf_context_input_panel_enabled_set (Ecore_IMF_Context *ctx, | |||
1360 | * @since 1.1.0 | 1516 | * @since 1.1.0 |
1361 | */ | 1517 | */ |
1362 | EAPI Eina_Bool | 1518 | EAPI Eina_Bool |
1363 | ecore_imf_context_input_panel_enabled_get (Ecore_IMF_Context *ctx) | 1519 | ecore_imf_context_input_panel_enabled_get(Ecore_IMF_Context *ctx) |
1364 | { | 1520 | { |
1365 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | 1521 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) |
1366 | { | 1522 | { |
@@ -1372,3 +1528,191 @@ ecore_imf_context_input_panel_enabled_get (Ecore_IMF_Context *ctx) | |||
1372 | return ctx->input_panel_enabled; | 1528 | return ctx->input_panel_enabled; |
1373 | } | 1529 | } |
1374 | 1530 | ||
1531 | /** | ||
1532 | * Set the input panel-specific data to deliver to the input panel. | ||
1533 | * This API is used by applications to deliver specific data to the input panel. | ||
1534 | * The data format MUST be negotiated by both application and the input panel. | ||
1535 | * The size and format of data are defined by the input panel. | ||
1536 | * | ||
1537 | * @param ctx An #Ecore_IMF_Context. | ||
1538 | * @param data The specific data to be set to the input panel. | ||
1539 | * @param len the length of data, in bytes, to send to the input panel | ||
1540 | * @ingroup Ecore_IMF_Context_Group | ||
1541 | * @since 1.2.0 | ||
1542 | */ | ||
1543 | EAPI void | ||
1544 | ecore_imf_context_input_panel_imdata_set(Ecore_IMF_Context *ctx, const void *data, int len) | ||
1545 | { | ||
1546 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | ||
1547 | { | ||
1548 | ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, | ||
1549 | "ecore_imf_context_input_panel_imdata_set"); | ||
1550 | return; | ||
1551 | } | ||
1552 | |||
1553 | if (!data) return; | ||
1554 | |||
1555 | if (ctx->klass->input_panel_imdata_set) | ||
1556 | ctx->klass->input_panel_imdata_set(ctx, data, len); | ||
1557 | } | ||
1558 | |||
1559 | /** | ||
1560 | * Get the specific data of the current active input panel. | ||
1561 | * | ||
1562 | * @param ctx An #Ecore_IMF_Context. | ||
1563 | * @param data The specific data to be got from the input panel | ||
1564 | * @param len The length of data | ||
1565 | * @ingroup Ecore_IMF_Context_Group | ||
1566 | * @since 1.2.0 | ||
1567 | */ | ||
1568 | EAPI void | ||
1569 | ecore_imf_context_input_panel_imdata_get(Ecore_IMF_Context *ctx, void *data, int *len) | ||
1570 | { | ||
1571 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | ||
1572 | { | ||
1573 | ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, | ||
1574 | "ecore_imf_context_input_panel_imdata_get"); | ||
1575 | return; | ||
1576 | } | ||
1577 | |||
1578 | if (!data) return; | ||
1579 | |||
1580 | if (ctx->klass->input_panel_imdata_get) | ||
1581 | ctx->klass->input_panel_imdata_get(ctx, data, len); | ||
1582 | } | ||
1583 | |||
1584 | /** | ||
1585 | * Set the "return" key type. This type is used to set string or icon on the "return" key of the input panel. | ||
1586 | * | ||
1587 | * An input panel displays the string or icon associated with this type | ||
1588 | * | ||
1589 | * @param ctx An #Ecore_IMF_Context. | ||
1590 | * @param return_key_type The type of "return" key on the input panel | ||
1591 | * @ingroup Ecore_IMF_Context_Group | ||
1592 | * @since 1.2.0 | ||
1593 | */ | ||
1594 | EAPI void | ||
1595 | ecore_imf_context_input_panel_return_key_type_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Return_Key_Type return_key_type) | ||
1596 | { | ||
1597 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | ||
1598 | { | ||
1599 | ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, | ||
1600 | "ecore_imf_context_input_panel_return_key_type_set"); | ||
1601 | return; | ||
1602 | } | ||
1603 | |||
1604 | ctx->input_panel_return_key_type = return_key_type; | ||
1605 | if (ctx->klass->input_panel_return_key_type_set) ctx->klass->input_panel_return_key_type_set(ctx, return_key_type); | ||
1606 | } | ||
1607 | |||
1608 | /** | ||
1609 | * Get the "return" key type. | ||
1610 | * | ||
1611 | * @see ecore_imf_context_input_panel_return_key_type_set() for more details | ||
1612 | * | ||
1613 | * @param ctx An #Ecore_IMF_Context. | ||
1614 | * @return The type of "return" key on the input panel | ||
1615 | * @ingroup Ecore_IMF_Context_Group | ||
1616 | * @since 1.2.0 | ||
1617 | */ | ||
1618 | EAPI Ecore_IMF_Input_Panel_Return_Key_Type | ||
1619 | ecore_imf_context_input_panel_return_key_type_get(Ecore_IMF_Context *ctx) | ||
1620 | { | ||
1621 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | ||
1622 | { | ||
1623 | ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, | ||
1624 | "ecore_imf_context_input_panel_return_key_type_get"); | ||
1625 | return EINA_FALSE; | ||
1626 | } | ||
1627 | |||
1628 | return ctx->input_panel_return_key_type; | ||
1629 | } | ||
1630 | |||
1631 | /** | ||
1632 | * Set the return key on the input panel to be disabled. | ||
1633 | * | ||
1634 | * @param ctx An #Ecore_IMF_Context. | ||
1635 | * @param disabled The state | ||
1636 | * @ingroup Ecore_IMF_Context_Group | ||
1637 | * @since 1.2.0 | ||
1638 | */ | ||
1639 | EAPI void | ||
1640 | ecore_imf_context_input_panel_return_key_disabled_set(Ecore_IMF_Context *ctx, Eina_Bool disabled) | ||
1641 | { | ||
1642 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | ||
1643 | { | ||
1644 | ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, | ||
1645 | "ecore_imf_context_input_panel_return_key_disabled_set"); | ||
1646 | return; | ||
1647 | } | ||
1648 | |||
1649 | ctx->input_panel_return_key_disabled = disabled; | ||
1650 | if (ctx->klass->input_panel_return_key_disabled_set) ctx->klass->input_panel_return_key_disabled_set(ctx, disabled); | ||
1651 | } | ||
1652 | |||
1653 | /** | ||
1654 | * Get whether the return key on the input panel should be disabled or not. | ||
1655 | * | ||
1656 | * @param ctx An #Ecore_IMF_Context. | ||
1657 | * @return EINA_TRUE if it should be disabled | ||
1658 | * @ingroup Ecore_IMF_Context_Group | ||
1659 | * @since 1.2.0 | ||
1660 | */ | ||
1661 | EAPI Eina_Bool | ||
1662 | ecore_imf_context_input_panel_return_key_disabled_get(Ecore_IMF_Context *ctx) | ||
1663 | { | ||
1664 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | ||
1665 | { | ||
1666 | ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, | ||
1667 | "ecore_imf_context_input_panel_return_key_disabled_get"); | ||
1668 | return EINA_FALSE; | ||
1669 | } | ||
1670 | |||
1671 | return ctx->input_panel_return_key_disabled; | ||
1672 | } | ||
1673 | |||
1674 | /** | ||
1675 | * Set the caps lock mode on the input panel. | ||
1676 | * | ||
1677 | * @param ctx An #Ecore_IMF_Context. | ||
1678 | * @param mode Turn on caps lock on the input panel if EINA_TRUE | ||
1679 | * @ingroup Ecore_IMF_Context_Group | ||
1680 | * @since 1.2.0 | ||
1681 | */ | ||
1682 | EAPI void | ||
1683 | ecore_imf_context_input_panel_caps_lock_mode_set(Ecore_IMF_Context *ctx, Eina_Bool mode) | ||
1684 | { | ||
1685 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | ||
1686 | { | ||
1687 | ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, | ||
1688 | "ecore_imf_context_input_panel_caps_lock_mode_set"); | ||
1689 | return; | ||
1690 | } | ||
1691 | |||
1692 | if (ctx->klass->input_panel_caps_lock_mode_set) | ||
1693 | ctx->klass->input_panel_caps_lock_mode_set(ctx, mode); | ||
1694 | |||
1695 | ctx->input_panel_caps_lock_mode = mode; | ||
1696 | } | ||
1697 | |||
1698 | /** | ||
1699 | * Get the caps lock mode on the input panel. | ||
1700 | * | ||
1701 | * @param ctx An #Ecore_IMF_Context. | ||
1702 | * @return EINA_TRUE if the caps lock is turned on. | ||
1703 | * @ingroup Ecore_IMF_Context_Group | ||
1704 | * @since 1.2.0 | ||
1705 | */ | ||
1706 | EAPI Eina_Bool | ||
1707 | ecore_imf_context_input_panel_caps_lock_mode_get(Ecore_IMF_Context *ctx) | ||
1708 | { | ||
1709 | if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) | ||
1710 | { | ||
1711 | ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, | ||
1712 | "ecore_imf_context_input_panel_caps_lock_mode_get"); | ||
1713 | return EINA_FALSE; | ||
1714 | } | ||
1715 | |||
1716 | return ctx->input_panel_caps_lock_mode; | ||
1717 | } | ||
1718 | |||
diff --git a/libraries/ecore/src/lib/ecore_imf/ecore_imf_private.h b/libraries/ecore/src/lib/ecore_imf/ecore_imf_private.h index d9dae80..b4ff0f2 100644 --- a/libraries/ecore/src/lib/ecore_imf/ecore_imf_private.h +++ b/libraries/ecore/src/lib/ecore_imf/ecore_imf_private.h | |||
@@ -52,8 +52,11 @@ struct _Ecore_IMF_Context | |||
52 | Ecore_IMF_Autocapital_Type autocapital_type; | 52 | Ecore_IMF_Autocapital_Type autocapital_type; |
53 | Ecore_IMF_Input_Panel_Layout input_panel_layout; | 53 | Ecore_IMF_Input_Panel_Layout input_panel_layout; |
54 | Ecore_IMF_Input_Panel_Lang input_panel_lang; | 54 | Ecore_IMF_Input_Panel_Lang input_panel_lang; |
55 | Ecore_IMF_Input_Panel_Return_Key_Type input_panel_return_key_type; | ||
55 | Eina_Bool allow_prediction : 1; | 56 | Eina_Bool allow_prediction : 1; |
56 | Eina_Bool input_panel_enabled : 1; | 57 | Eina_Bool input_panel_enabled : 1; |
58 | Eina_Bool input_panel_return_key_disabled : 1; | ||
59 | Eina_Bool input_panel_caps_lock_mode : 1; | ||
57 | }; | 60 | }; |
58 | 61 | ||
59 | struct _Ecore_IMF_Module | 62 | struct _Ecore_IMF_Module |