aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/edje/src/lib/Edje.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libraries/edje/src/lib/Edje.h585
1 files changed, 368 insertions, 217 deletions
diff --git a/libraries/edje/src/lib/Edje.h b/libraries/edje/src/lib/Edje.h
index 6413014..1449d70 100644
--- a/libraries/edje/src/lib/Edje.h
+++ b/libraries/edje/src/lib/Edje.h
@@ -5,7 +5,7 @@ These routines are used for Edje.
5 5
6@mainpage Edje Library Documentation 6@mainpage Edje Library Documentation
7@version 1.1 7@version 1.1
8@date 2003-2011 8@date 2003-2012
9 9
10Please see the @ref authors page for contact details. 10Please see the @ref authors page for contact details.
11 11
@@ -19,7 +19,7 @@ Please see the @ref authors page for contact details.
19 19
20Edje is a complex graphical design & layout library. 20Edje is a complex graphical design & layout library.
21 21
22It doesn't pretend to do containing and regular layout like a widget 22It doesn't intend to do containing and regular layout like a widget
23set, but it is the base for such components. Based on the requirements 23set, but it is the base for such components. Based on the requirements
24of Enlightenment 0.17, Edje should serve all the purposes of creating 24of Enlightenment 0.17, Edje should serve all the purposes of creating
25visual elements (borders of windows, buttons, scrollbars, etc.) and 25visual elements (borders of windows, buttons, scrollbars, etc.) and
@@ -110,197 +110,11 @@ The application using Edje will then create an object in its Evas
110canvas and set the bundle file to use, specifying the @b group name to 110canvas and set the bundle file to use, specifying the @b group name to
111use. Edje will load such information and create all the required 111use. Edje will load such information and create all the required
112children objects with the specified properties as defined in each @b 112children objects with the specified properties as defined in each @b
113part of the given group. See the following annotated example: 113part of the given group. See the following example:
114@include edje_example.c
114 115
115@code 116The above example requires the following annotated source Edje file:
116 117@include edje_example.edc
117#include <Eina.h>
118#include <Evas.h>
119#include <Ecore.h>
120#include <Ecore_Evas.h>
121#include <Edje.h>
122
123#define WIDTH 320
124#define HEIGHT 240
125
126static Evas_Object *create_my_group(Evas *canvas, const char *text)
127{
128 Evas_Object *edje;
129
130 edje = edje_object_add(canvas);
131 if (!edje)
132 {
133 EINA_LOG_CRIT("could not create edje object!");
134 return NULL;
135 }
136
137 if (!edje_object_file_set(edje, "edje_example.edj", "my_group"))
138 {
139 int err = edje_object_load_error_get(edje);
140 const char *errmsg = edje_load_error_str(err);
141 EINA_LOG_ERR("could not load 'my_group' from edje_example.edj: %s",
142 errmsg);
143
144 evas_object_del(edje);
145 return NULL;
146 }
147
148 if (text)
149 {
150 if (!edje_object_part_text_set(edje, "text", text))
151 {
152 EINA_LOG_WARN("could not set the text. "
153 "Maybe part 'text' does not exist?");
154 }
155 }
156
157 evas_object_move(edje, 0, 0);
158 evas_object_resize(edje, WIDTH, HEIGHT);
159 evas_object_show(edje);
160 return edje;
161}
162
163int main(int argc, char *argv[])
164{
165 Ecore_Evas *window;
166 Evas *canvas;
167 Evas_Object *edje;
168 const char *text;
169
170 eina_init();
171 evas_init();
172 ecore_init();
173 ecore_evas_init();
174 edje_init();
175
176 window = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
177 if (!window)
178 {
179 EINA_LOG_CRIT("could not create window.");
180 return -1;
181 }
182 canvas = ecore_evas_get(window);
183
184 text = (argc > 1) ? argv[1] : NULL;
185
186 edje = create_my_group(canvas, text);
187 if (!edje)
188 return -2;
189
190 ecore_evas_show(window);
191 ecore_main_loop_begin();
192
193 evas_object_del(edje);
194 ecore_evas_free(window);
195
196 return 0;
197}
198@endcode
199
200It requires the following source Edje file:
201@code
202// compile: edje_cc edje_example.edc
203collections {
204 group {
205 name: "my_group"; // must be the same as in edje_example.c
206
207 parts {
208 part {
209 name: "background";
210 type: RECT; // plain boring rectangle
211 mouse_events: 0; // we don't need any mouse event on the background
212
213 // just one state "default"
214 description {
215 state: "default" 0.0; // must always exist
216 color: 255 255 255 255; // white
217
218 // define part coordinates:
219
220 rel1 { // top-left point at (0, 0) [WIDTH * 0 + 0, HEIGHT * 0 + 0]
221 relative: 0.0 0.0;
222 offset: 0 0;
223 }
224 rel2 { // bottom-right point at (WIDTH * 1.0 - 1, HEIGHT * 1.0 - 1)
225 relative: 1.0 1.0;
226 offset: -1 -1;
227 }
228 }
229 }
230
231 part {
232 name: "text";
233 type: TEXT;
234 mouse_events: 1; // we want to change the color on mouse-over
235
236 // 2 states, one "default" and another "over" to be used
237 // on mouse over effect
238
239 description {
240 state: "default" 0.0;
241 color: 255 0 0 255; // red
242
243 // define part coordinates:
244
245 rel1 { // top-left at (WIDTH * 0.1 + 5, HEIGHT * 0.2 + 10)
246 relative: 0.1 0.2;
247 offset: 5 10;
248 }
249 rel2 { // bottom-right at (WIDTH * 0.9 - 6, HEIGHT * 0.8 - 11)
250 relative: 0.9 0.8;
251 offset: -6 -11;
252 }
253
254 // define text specific state details
255 text {
256 font: "Sans"; // using fontconfig name!
257 size: 10;
258 text: "hello world";
259 }
260 }
261
262 description {
263 state: "over" 0.0;
264 inherit: "default" 0.0; // copy everything from "default" at this point
265
266 color: 0 255 0 255; // override color, now it is green
267 }
268 }
269
270 // do programs to change color on text mouse in/out (over)
271 programs {
272 program {
273 // what triggers this program:
274 signal: "mouse,in";
275 source: "text";
276
277 // what this program does:
278 action: STATE_SET "over" 0.0;
279 target: "text";
280
281 // do the state-set in a nice interpolation animation
282 // using linear time in 0.1 second
283 transition: LINEAR 0.1;
284 }
285
286 program {
287 // what triggers this program:
288 signal: "mouse,out";
289 source: "text";
290
291 // what this program does:
292 action: STATE_SET "default" 0.0;
293 target: "text";
294
295 // do the state-set in a nice interpolation animation
296 // using linear time in 0.1 second
297 transition: LINEAR 0.1;
298 }
299 }
300 }
301 }
302}
303@endcode
304 118
305 119
306One should save these files as edje_example.c and edje_example.edc then: 120One should save these files as edje_example.c and edje_example.edc then:
@@ -452,6 +266,10 @@ param in edje programs
452# undef EAPI 266# undef EAPI
453#endif 267#endif
454 268
269#ifdef HAVE_ECORE_IMF
270#include <Ecore_IMF.h>
271#endif
272
455#ifdef _WIN32 273#ifdef _WIN32
456# ifdef EFL_EDJE_BUILD 274# ifdef EFL_EDJE_BUILD
457# ifdef DLL_EXPORT 275# ifdef DLL_EXPORT
@@ -778,7 +596,7 @@ typedef enum _Edje_External_Param_Type
778{ 596{
779 EDJE_EXTERNAL_PARAM_TYPE_INT, /**< Parameter value is an integer. */ 597 EDJE_EXTERNAL_PARAM_TYPE_INT, /**< Parameter value is an integer. */
780 EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, /**< Parameter value is a double. */ 598 EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, /**< Parameter value is a double. */
781 EDJE_EXTERNAL_PARAM_TYPE_STRING, /**< Paramater value is a string. */ 599 EDJE_EXTERNAL_PARAM_TYPE_STRING, /**< Parameter value is a string. */
782 EDJE_EXTERNAL_PARAM_TYPE_BOOL, /**< Parameter value is boolean. */ 600 EDJE_EXTERNAL_PARAM_TYPE_BOOL, /**< Parameter value is boolean. */
783 EDJE_EXTERNAL_PARAM_TYPE_CHOICE, /**< Parameter value is one of a set of 601 EDJE_EXTERNAL_PARAM_TYPE_CHOICE, /**< Parameter value is one of a set of
784 predefined string choices. */ 602 predefined string choices. */
@@ -791,10 +609,10 @@ typedef enum _Edje_External_Param_Type
791 */ 609 */
792typedef enum _Edje_External_Param_Flags 610typedef enum _Edje_External_Param_Flags
793{ 611{
794 EDJE_EXTERNAL_PARAM_FLAGS_NONE = 0, /**< Propery is incapable of operations, this is used to catch bogus flags. */ 612 EDJE_EXTERNAL_PARAM_FLAGS_NONE = 0, /**< Property is incapable of operations, this is used to catch bogus flags. */
795 EDJE_EXTERNAL_PARAM_FLAGS_GET = (1 << 0), /**< Property can be read/get. */ 613 EDJE_EXTERNAL_PARAM_FLAGS_GET = (1 << 0), /**< Property can be read/get. */
796 EDJE_EXTERNAL_PARAM_FLAGS_SET = (1 << 1), /**< Property can be written/set. This only enables edje_object_part_external_param_set() and Embryo scripts. To enable the parameter being set from state description whenever it changes state, use #EDJE_EXTERNAL_PARAM_FLAGS_STATE. */ 614 EDJE_EXTERNAL_PARAM_FLAGS_SET = (1 << 1), /**< Property can be written/set. This only enables edje_object_part_external_param_set() and Embryo scripts. To enable the parameter being set from state description whenever it changes state, use #EDJE_EXTERNAL_PARAM_FLAGS_STATE. */
797 EDJE_EXTERNAL_PARAM_FLAGS_STATE = (1 << 2), /**< Property can be set from state dsecription. */ 615 EDJE_EXTERNAL_PARAM_FLAGS_STATE = (1 << 2), /**< Property can be set from state description. */
798 EDJE_EXTERNAL_PARAM_FLAGS_CONSTRUCTOR = (1 << 3), /**< This property is only set once when the object is constructed using its value from "default" 0.0 state description. Setting this overrides #EDJE_EXTERNAL_PARAM_FLAGS_STATE. */ 616 EDJE_EXTERNAL_PARAM_FLAGS_CONSTRUCTOR = (1 << 3), /**< This property is only set once when the object is constructed using its value from "default" 0.0 state description. Setting this overrides #EDJE_EXTERNAL_PARAM_FLAGS_STATE. */
799 EDJE_EXTERNAL_PARAM_FLAGS_REGULAR = (EDJE_EXTERNAL_PARAM_FLAGS_GET | 617 EDJE_EXTERNAL_PARAM_FLAGS_REGULAR = (EDJE_EXTERNAL_PARAM_FLAGS_GET |
800 EDJE_EXTERNAL_PARAM_FLAGS_SET | 618 EDJE_EXTERNAL_PARAM_FLAGS_SET |
@@ -817,6 +635,24 @@ typedef enum _Edje_Input_Panel_Layout
817 EDJE_INPUT_PANEL_LAYOUT_PASSWORD /**< Like normal, but no auto-correct, no auto-capitalization etc. @since 1.2 */ 635 EDJE_INPUT_PANEL_LAYOUT_PASSWORD /**< Like normal, but no auto-correct, no auto-capitalization etc. @since 1.2 */
818} Edje_Input_Panel_Layout; 636} Edje_Input_Panel_Layout;
819 637
638typedef enum _Edje_Input_Panel_Lang
639{
640 EDJE_INPUT_PANEL_LANG_AUTOMATIC, /**< Automatic @since 1.2 */
641 EDJE_INPUT_PANEL_LANG_ALPHABET /**< Alphabet @since 1.2 */
642} Edje_Input_Panel_Lang;
643
644typedef enum _Edje_Input_Panel_Return_Key_Type
645{
646 EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT, /**< Default @since 1.2 */
647 EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DONE, /**< Done @since 1.2 */
648 EDJE_INPUT_PANEL_RETURN_KEY_TYPE_GO, /**< Go @since 1.2 */
649 EDJE_INPUT_PANEL_RETURN_KEY_TYPE_JOIN, /**< Join @since 1.2 */
650 EDJE_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN, /**< Login @since 1.2 */
651 EDJE_INPUT_PANEL_RETURN_KEY_TYPE_NEXT, /**< Next @since 1.2 */
652 EDJE_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH, /**< Search or magnifier icon @since 1.2 */
653 EDJE_INPUT_PANEL_RETURN_KEY_TYPE_SEND /**< Send @since 1.2 */
654} Edje_Input_Panel_Return_Key_Type;
655
820/** 656/**
821 * @brief Converts type identifier to string nicer representation. 657 * @brief Converts type identifier to string nicer representation.
822 * 658 *
@@ -886,18 +722,18 @@ struct _Edje_External_Param_Info
886 used. */ 722 used. */
887 union { 723 union {
888 struct { 724 struct {
889 int def, /**< Default value for the paramter. */ 725 int def, /**< Default value for the parameter. */
890 min, /**< Minimum value it can have. */ 726 min, /**< Minimum value it can have. */
891 max, /**< Maximum value it can have. */ 727 max, /**< Maximum value it can have. */
892 step; /**< Values will be a multiple of this. */ 728 step; /**< Values will be a multiple of this. */
893 } i; /**< Info about integer type parametrs. Use #EDJE_EXTERNAL_INT_UNSET 729 } i; /**< Info about integer type parameters. Use #EDJE_EXTERNAL_INT_UNSET
894 on any of them to indicate they are not defined.*/ 730 on any of them to indicate they are not defined.*/
895 struct { 731 struct {
896 double def, /**< Default value for the paramter. */ 732 double def, /**< Default value for the parameter. */
897 min, /**< Minimum value it can have. */ 733 min, /**< Minimum value it can have. */
898 max, /**< Maximum value it can have. */ 734 max, /**< Maximum value it can have. */
899 step; /**< Values will be a multiple of this. */ 735 step; /**< Values will be a multiple of this. */
900 } d; /**< Info about double type parametrs. Use 736 } d; /**< Info about double type parameters. Use
901#EDJE_EXTERNAL_DOUBLE_UNSET on any of them to indicate they are not defined.*/ 737#EDJE_EXTERNAL_DOUBLE_UNSET on any of them to indicate they are not defined.*/
902 struct { 738 struct {
903 const char *def; /**< Default value. */ 739 const char *def; /**< Default value. */
@@ -1054,6 +890,7 @@ typedef void (*Edje_Signal_Cb) (void *data, Evas_Object *obj, c
1054typedef void (*Edje_Text_Change_Cb) (void *data, Evas_Object *obj, const char *part); 890typedef void (*Edje_Text_Change_Cb) (void *data, Evas_Object *obj, const char *part);
1055typedef void (*Edje_Message_Handler_Cb) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg); /**< Edje message handler callback functions's prototype definition. @c data will have the auxiliary data pointer set at the time the callback registration. @c obj will be a pointer the Edje object where the message comes from. @c type will identify the type of the given message and @c msg will be a pointer the message's contents, de facto, which depend on @c type. */ 891typedef void (*Edje_Message_Handler_Cb) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg); /**< Edje message handler callback functions's prototype definition. @c data will have the auxiliary data pointer set at the time the callback registration. @c obj will be a pointer the Edje object where the message comes from. @c type will identify the type of the given message and @c msg will be a pointer the message's contents, de facto, which depend on @c type. */
1056typedef void (*Edje_Text_Filter_Cb) (void *data, Evas_Object *obj, const char *part, Edje_Text_Filter_Type type, char **text); 892typedef void (*Edje_Text_Filter_Cb) (void *data, Evas_Object *obj, const char *part, Edje_Text_Filter_Type type, char **text);
893typedef void (*Edje_Markup_Filter_Cb) (void *data, Evas_Object *obj, const char *part, char **text);
1057typedef Evas_Object *(*Edje_Item_Provider_Cb) (void *data, Evas_Object *obj, const char *part, const char *item); 894typedef Evas_Object *(*Edje_Item_Provider_Cb) (void *data, Evas_Object *obj, const char *part, const char *item);
1058 895
1059/** 896/**
@@ -1187,7 +1024,7 @@ EAPI const char *edje_fontset_append_get (void);
1187 * edje_object_scale_set(), that factor will @b override the global 1024 * edje_object_scale_set(), that factor will @b override the global
1188 * one. 1025 * one.
1189 * 1026 *
1190 * Scaling affects the values of mininum/maximum @b part sizes, which 1027 * Scaling affects the values of minimum/maximum @b part sizes, which
1191 * are @b multiplied by it. Font sizes are scaled, too. 1028 * are @b multiplied by it. Font sizes are scaled, too.
1192 * 1029 *
1193 * @warning Only parts which, at EDC level, had the @c "scale" 1030 * @warning Only parts which, at EDC level, had the @c "scale"
@@ -1244,7 +1081,7 @@ EAPI void edje_password_show_last_timeout_set(double password_show_last_timeout)
1244 * 1081 *
1245 * @param obj A handle to an Edje object 1082 * @param obj A handle to an Edje object
1246 * @param scale The scaling factor (the default value is @c 0.0, 1083 * @param scale The scaling factor (the default value is @c 0.0,
1247 * meaning indivinual scaling @b not set) 1084 * meaning individual scaling @b not set)
1248 * 1085 *
1249 * This function sets an @b individual scaling factor on the @a obj 1086 * This function sets an @b individual scaling factor on the @a obj
1250 * Edje object. This property (or Edje's global scaling factor, when 1087 * Edje object. This property (or Edje's global scaling factor, when
@@ -1663,9 +1500,9 @@ EAPI void edje_box_layout_register (const char *name, Evas_Object
1663 * 1500 *
1664 * @note You can get a callback every time edje re-calculates the object 1501 * @note You can get a callback every time edje re-calculates the object
1665 * (either due to animation or some kind of signal or input). This is called 1502 * (either due to animation or some kind of signal or input). This is called
1666 * in-line just after the recalculation has occured. It is a good idea not 1503 * in-line just after the recalculation has occurred. It is a good idea not
1667 * to go and delete or alter the object inside this callbacks, simply make 1504 * to go and delete or alter the object inside this callbacks, simply make
1668 * a note that the recalculation has taken place and then do somethnig about 1505 * a note that the recalculation has taken place and then do something about
1669 * it outside the callback. to register a callback use code like: 1506 * it outside the callback. to register a callback use code like:
1670 * 1507 *
1671 * @code 1508 * @code
@@ -1883,7 +1720,7 @@ EAPI Eina_Bool edje_object_preload (Evas_Object *obj, Eina_Bool c
1883 * buttons on an interface, you'd be registering for notifications on 1720 * buttons on an interface, you'd be registering for notifications on
1884 * events of mouse buttons being pressed down on either of those parts 1721 * events of mouse buttons being pressed down on either of those parts
1885 * (those events all have the @c "mouse,down," common prefix on their 1722 * (those events all have the @c "mouse,down," common prefix on their
1886 * names, with a suffix giving the button number). The actual emisson 1723 * names, with a suffix giving the button number). The actual emission
1887 * and source strings of an event will be passed in as the @a emission 1724 * and source strings of an event will be passed in as the @a emission
1888 * and @a source parameters of the callback function (e.g. @c 1725 * and @a source parameters of the callback function (e.g. @c
1889 * "mouse,down,2" and @c "button.close"), for each of those events. 1726 * "mouse,down,2" and @c "button.close"), for each of those events.
@@ -2214,6 +2051,27 @@ EAPI Eina_Bool edje_object_text_class_set (Evas_Object *obj, const c
2214EAPI void edje_object_size_min_get (const Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh); 2051EAPI void edje_object_size_min_get (const Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh);
2215 2052
2216/** 2053/**
2054 * @brief Edje will automatically update the size hints on itself.
2055 *
2056 * @param obj A handle to an Edje object.
2057 * @param update Wether or not update the size hints.
2058 *
2059 * By default edje doesn't set size hints on itself. With this function
2060 * call, it will do so if update is true. Be carefully, it cost a lot to
2061 * trigger this feature as it will recalc the object every time it make
2062 * sense to be sure that's its minimal size hint is always accurate.
2063 */
2064EAPI void edje_object_update_hints_set(Evas_Object *obj, Eina_Bool update);
2065
2066/**
2067 * @brief Wether or not Edje will update size hints on itself.
2068 *
2069 * @param obj A handle to an Edje object.
2070 * @return @c true if does, @c false if it doesn't.
2071 */
2072EAPI Eina_Bool edje_object_update_hints_get(Evas_Object *obj);
2073
2074/**
2217 * @brief Get the maximum size specified -- as an EDC property -- for a 2075 * @brief Get the maximum size specified -- as an EDC property -- for a
2218 * given Edje object 2076 * given Edje object
2219 * 2077 *
@@ -2362,12 +2220,12 @@ EAPI Eina_Bool edje_object_part_exists (const Evas_Object *obj, c
2362 * @return A pointer to the Evas object implementing the given part, 2220 * @return A pointer to the Evas object implementing the given part,
2363 * or @c NULL on failure (e.g. the given part doesn't exist) 2221 * or @c NULL on failure (e.g. the given part doesn't exist)
2364 * 2222 *
2365 * This function gets a pointer the Evas object corresponding to a 2223 * This function gets a pointer of the Evas object corresponding to a
2366 * given part in the @p obj object's group. 2224 * given part in the @p obj object's group.
2367 * 2225 *
2368 * You should @b never modify the state of the returned object (with 2226 * You should @b never modify the state of the returned object (with
2369 * @c evas_object_move() or @c evas_object_hide() for example), 2227 * @c evas_object_move() or @c evas_object_hide() for example),
2370 * because it's meant to be managed be Edje, solely. You are safe to 2228 * because it's meant to be managed by Edje, solely. You are safe to
2371 * query information about its current state (with @c 2229 * query information about its current state (with @c
2372 * evas_object_visible_get() or @c evas_object_color_get() for 2230 * evas_object_visible_get() or @c evas_object_color_get() for
2373 * example), though. 2231 * example), though.
@@ -2448,6 +2306,43 @@ EAPI Eina_Bool edje_object_part_text_set (Evas_Object *obj, const c
2448EAPI const char *edje_object_part_text_get (const Evas_Object *obj, const char *part); 2306EAPI const char *edje_object_part_text_get (const Evas_Object *obj, const char *part);
2449 2307
2450/** 2308/**
2309 * @brief Set the style of the
2310 *
2311 * @param obj A valid Evas_Object handle
2312 * @param part The part name
2313 * @param style The style to set (textblock conventions).
2314 *
2315 * This function sets the style associated with the textblock part.
2316 *
2317 * @since 1.2.0
2318 */
2319EAPI void edje_object_part_text_style_user_push(Evas_Object *obj, const char *part, const char *style);
2320
2321/**
2322 * @brief Return the text of the object part.
2323 *
2324 * @param obj A valid Evas_Object handle
2325 * @param part The part name
2326 *
2327 * @return The text string
2328 *
2329 * This function returns the style associated with the textblock part.
2330 *
2331 * @since 1.2.0
2332 */
2333EAPI const char *edje_object_part_text_style_user_peek(const Evas_Object *obj, const char *part);
2334
2335/**
2336 * @brief Delete the top style form the user style stack.
2337 *
2338 * @param obj A valid Evas_Object handle
2339 * @param part The part name
2340 *
2341 * @since 1.2.0
2342 */
2343EAPI void edje_object_part_text_style_user_pop(Evas_Object *obj, const char *part);
2344
2345/**
2451 * @brief Sets the raw (non escaped) text for an object part. 2346 * @brief Sets the raw (non escaped) text for an object part.
2452 * 2347 *
2453 * @param obj A valid Evas Object handle 2348 * @param obj A valid Evas Object handle
@@ -2615,6 +2510,15 @@ EAPI Eina_Bool edje_object_part_text_item_geometry_get (const Evas_
2615EAPI void edje_object_part_text_cursor_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); 2510EAPI void edje_object_part_text_cursor_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
2616 2511
2617/** 2512/**
2513 * @brief Deletes the selection and emits a change event.
2514 *
2515 * @param obj A valid Evas_Object handle
2516 * @param part The part name
2517 * @since 1.2.0
2518 */
2519EAPI void edje_object_part_text_user_insert (const Evas_Object *obj, const char *part, const char *text);
2520
2521/**
2618 * @brief Enables selection if the entry is an EXPLICIT selection mode 2522 * @brief Enables selection if the entry is an EXPLICIT selection mode
2619 * type. 2523 * type.
2620 * 2524 *
@@ -2813,8 +2717,33 @@ EAPI void edje_object_part_text_cursor_pos_set (Evas_Ob
2813EAPI int edje_object_part_text_cursor_pos_get (const Evas_Object *obj, const char *part, Edje_Cursor cur); 2717EAPI int edje_object_part_text_cursor_pos_get (const Evas_Object *obj, const char *part, Edje_Cursor cur);
2814 2718
2815/** 2719/**
2720 * @brief Reset the input method context if needed.
2721 *
2722 * This can be necessary in the case where modifying the buffer would confuse on-going input method behavior
2723 *
2724 * @param obj A valid Evas_Object handle
2725 * @param part The part name
2726 * @since 1.2.0
2727 */
2728EAPI void edje_object_part_text_imf_context_reset (const Evas_Object *obj, const char *part);
2729
2730/**
2731 * @brief Get the input method context in entry.
2732 *
2733 * If ecore_imf was not available when edje was compiled, this function returns NULL
2734 * otherwise, the returned pointer is an Ecore_IMF *
2735 *
2736 * @param obj A valid Evas_Object handle
2737 * @param part The part name
2738 *
2739 * @return The input method context (Ecore_IMF_Context *) in entry
2740 * @since 1.2.0
2741 */
2742EAPI void *edje_object_part_text_imf_context_get (const Evas_Object *obj, const char *part);
2743
2744/**
2816 * @brief Set the layout of the input panel. 2745 * @brief Set the layout of the input panel.
2817 * 2746 *
2818 * The layout of the input panel or virtual keyboard can make it easier or 2747 * The layout of the input panel or virtual keyboard can make it easier or
2819 * harder to enter content. This allows you to hint what kind of input you 2748 * harder to enter content. This allows you to hint what kind of input you
2820 * are expecting to enter and thus have the input panel automatically 2749 * are expecting to enter and thus have the input panel automatically
@@ -2825,7 +2754,7 @@ EAPI int edje_object_part_text_cursor_pos_get (const E
2825 * @param layout layout type 2754 * @param layout layout type
2826 * @since 1.1 2755 * @since 1.1
2827 */ 2756 */
2828EAPI void edje_object_part_text_input_panel_layout_set (const Evas_Object *obj, const char *part, Edje_Input_Panel_Layout layout); 2757EAPI void edje_object_part_text_input_panel_layout_set (Evas_Object *obj, const char *part, Edje_Input_Panel_Layout layout);
2829 2758
2830/** 2759/**
2831 * @brief Get the layout of the input panel. 2760 * @brief Get the layout of the input panel.
@@ -2848,7 +2777,7 @@ EAPI Edje_Input_Panel_Layout edje_object_part_text_input_panel_layout_get (const
2848 * @param autocapital_type The type of autocapitalization 2777 * @param autocapital_type The type of autocapitalization
2849 * @since 1.1.0 2778 * @since 1.1.0
2850 */ 2779 */
2851EAPI void edje_object_part_text_autocapital_type_set (const Evas_Object *obj, const char *part, Edje_Text_Autocapital_Type autocapital_type); 2780EAPI void edje_object_part_text_autocapital_type_set (Evas_Object *obj, const char *part, Edje_Text_Autocapital_Type autocapital_type);
2852 2781
2853/** 2782/**
2854 * @brief Retrieves the autocapitalization type 2783 * @brief Retrieves the autocapitalization type
@@ -2861,6 +2790,26 @@ EAPI void edje_object_part_text_autocapital_type_set (const Evas_
2861EAPI Edje_Text_Autocapital_Type edje_object_part_text_autocapital_type_get (const Evas_Object *obj, const char *part); 2790EAPI Edje_Text_Autocapital_Type edje_object_part_text_autocapital_type_get (const Evas_Object *obj, const char *part);
2862 2791
2863/** 2792/**
2793 * @brief Set whether the prediction is allowed or not.
2794 *
2795 * @param obj A valid Evas_Object handle
2796 * @param part The part name
2797 * @param prediction If true, the prediction feature is allowed.
2798 * @since 1.2.0
2799 */
2800EAPI void edje_object_part_text_prediction_allow_set (Evas_Object *obj, const char *part, Eina_Bool prediction);
2801
2802/**
2803 * @brief Get whether the prediction is allowed or not.
2804 *
2805 * @param obj A valid Evas_Object handle
2806 * @param part The part name
2807 * @return EINA_TRUE if prediction feature is allowed.
2808 * @since 1.2.0
2809 */
2810EAPI Eina_Bool edje_object_part_text_prediction_allow_get (const Evas_Object *obj, const char *part);
2811
2812/**
2864 * @brief Sets the attribute to show the input panel automatically. 2813 * @brief Sets the attribute to show the input panel automatically.
2865 * 2814 *
2866 * @param obj A valid Evas_Object handle 2815 * @param obj A valid Evas_Object handle
@@ -2868,7 +2817,7 @@ EAPI Edje_Text_Autocapital_Type edje_object_part_text_autocapital_type_get (cons
2868 * @param enabled If true, the input panel is appeared when entry is clicked or has a focus 2817 * @param enabled If true, the input panel is appeared when entry is clicked or has a focus
2869 * @since 1.1.0 2818 * @since 1.1.0
2870 */ 2819 */
2871EAPI void edje_object_part_text_input_panel_enabled_set (const Evas_Object *obj, const char *part, Eina_Bool enabled); 2820EAPI void edje_object_part_text_input_panel_enabled_set (Evas_Object *obj, const char *part, Eina_Bool enabled);
2872 2821
2873/** 2822/**
2874 * @brief Retrieve the attribute to show the input panel automatically. 2823 * @brief Retrieve the attribute to show the input panel automatically.
@@ -2882,6 +2831,125 @@ EAPI void edje_object_part_text_input_panel_enabled_set (const Evas_
2882EAPI Eina_Bool edje_object_part_text_input_panel_enabled_get (const Evas_Object *obj, const char *part); 2831EAPI Eina_Bool edje_object_part_text_input_panel_enabled_get (const Evas_Object *obj, const char *part);
2883 2832
2884/** 2833/**
2834 * @brief Show the input panel (virtual keyboard) based on the input panel property such as layout, autocapital types, and so on.
2835 *
2836 * Note that input panel is shown or hidden automatically according to the focus state.
2837 * This API can be used in the case of manually controlling by using edje_object_part_text_input_panel_enabled_set.
2838 *
2839 * @param obj A valid Evas_Object handle
2840 * @param part The part name
2841 * @since 1.2.0
2842 */
2843EAPI void edje_object_part_text_input_panel_show(const Evas_Object *obj, const char *part);
2844
2845/**
2846 * @brief Hide the input panel (virtual keyboard).
2847 * @see edje_object_part_text_input_panel_show
2848 *
2849 * Note that input panel is shown or hidden automatically according to the focus state.
2850 * This API can be used in the case of manually controlling by using edje_object_part_text_input_panel_enabled_set.
2851 *
2852 * @param obj A valid Evas_Object handle
2853 * @param part The part name
2854 * @since 1.2.0
2855 */
2856EAPI void edje_object_part_text_input_panel_hide(const Evas_Object *obj, const char *part);
2857
2858/**
2859 * Set the language mode of the input panel.
2860 *
2861 * This API can be used if you want to show the Alphabet keyboard.
2862 *
2863 * @param obj A valid Evas_Object handle
2864 * @param part The part name
2865 * @param lang the language to be set to the input panel.
2866 * @since 1.2.0
2867 */
2868EAPI void edje_object_part_text_input_panel_language_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Lang lang);
2869
2870/**
2871 * Get the language mode of the input panel.
2872 *
2873 * See @ref edje_object_part_text_input_panel_language_set for more details.
2874 *
2875 * @param obj A valid Evas_Object handle
2876 * @param part The part name
2877 * @return input panel language type
2878 * @since 1.2.0
2879 */
2880EAPI Edje_Input_Panel_Lang edje_object_part_text_input_panel_language_get(const Evas_Object *obj, const char *part);
2881
2882/**
2883 * Set the input panel-specific data to deliver to the input panel.
2884 *
2885 * This API is used by applications to deliver specific data to the input panel.
2886 * The data format MUST be negotiated by both application and the input panel.
2887 * The size and format of data are defined by the input panel.
2888 *
2889 * @param obj A valid Evas_Object handle
2890 * @param part The part name
2891 * @param data The specific data to be set to the input panel.
2892 * @param len the length of data, in bytes, to send to the input panel
2893 * @since 1.2.0
2894 */
2895EAPI void edje_object_part_text_input_panel_imdata_set(Evas_Object *obj, const char *part, const void *data, int len);
2896
2897/**
2898 * Get the specific data of the current active input panel.
2899 *
2900 * @param obj A valid Evas_Object handle
2901 * @param part The part name
2902 * @param data The specific data to be got from the input panel
2903 * @param len The length of data
2904 * @since 1.2.0
2905 */
2906EAPI void edje_object_part_text_input_panel_imdata_get(const Evas_Object *obj, const char *part, void *data, int *len);
2907
2908/**
2909 * Set the "return" key type. This type is used to set string or icon on the "return" key of the input panel.
2910 *
2911 * An input panel displays the string or icon associated with this type
2912 *
2913 * @param obj A valid Evas_Object handle
2914 * @param part The part name
2915 * @param return_key_type The type of "return" key on the input panel
2916 * @since 1.2.0
2917 */
2918EAPI void edje_object_part_text_input_panel_return_key_type_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Return_Key_Type return_key_type);
2919
2920/**
2921 * Get the "return" key type.
2922 *
2923 * @see edje_object_part_text_input_panel_return_key_type_set() for more details
2924 *
2925 * @param obj A valid Evas_Object handle
2926 * @param part The part name
2927 * @return The type of "return" key on the input panel
2928 * @since 1.2.0
2929 */
2930EAPI Edje_Input_Panel_Return_Key_Type edje_object_part_text_input_panel_return_key_type_get(const Evas_Object *obj, const char *part);
2931
2932/**
2933 * Set the return key on the input panel to be disabled.
2934 *
2935 * @param obj A valid Evas_Object handle
2936 * @param part The part name
2937 * @param disabled The state
2938 * @since 1.2.0
2939 */
2940EAPI void edje_object_part_text_input_panel_return_key_disabled_set(Evas_Object *obj, const char *part, Eina_Bool disabled);
2941
2942/**
2943 * Get whether the return key on the input panel should be disabled or not.
2944 *
2945 * @param obj A valid Evas_Object handle
2946 * @param part The part name
2947 * @return EINA_TRUE if it should be disabled
2948 * @since 1.2.0
2949 */
2950EAPI Eina_Bool edje_object_part_text_input_panel_return_key_disabled_get(const Evas_Object *obj, const char *part);
2951
2952/**
2885 * Add a filter function for newly inserted text. 2953 * Add a filter function for newly inserted text.
2886 * 2954 *
2887 * Whenever text is inserted (not the same as set) into the given @p part, 2955 * Whenever text is inserted (not the same as set) into the given @p part,
@@ -2897,8 +2965,20 @@ EAPI Eina_Bool edje_object_part_text_input_panel_enabled_get (const Evas_
2897 * will make Edje break out of the filter cycle and reject the inserted 2965 * will make Edje break out of the filter cycle and reject the inserted
2898 * text. 2966 * text.
2899 * 2967 *
2968 * @warning This function will be deprecated because of difficulty in use.
2969 * The type(format, text, or markup) of text should be always
2970 * checked in the filter function for correct filtering.
2971 * Please use edje_object_text_markup_filter_callback_add() instead. There
2972 * is no need to check the type of text in the filter function
2973 * because the text is always markup.
2974 * @warning If you use this function with
2975 * edje_object_text_markup_filter_callback_add() together, all
2976 * Edje_Text_Filter_Cb functions and Edje_Markup_Filter_Cb functions
2977 * will be executed, and then filtered text will be inserted.
2978 *
2900 * @see edje_object_text_insert_filter_callback_del 2979 * @see edje_object_text_insert_filter_callback_del
2901 * @see edje_object_text_insert_filter_callback_del_full 2980 * @see edje_object_text_insert_filter_callback_del_full
2981 * @see edje_object_text_markup_filter_callback_add
2902 * 2982 *
2903 * @param obj A valid Evas_Object handle 2983 * @param obj A valid Evas_Object handle
2904 * @param part The part name 2984 * @param part The part name
@@ -2920,7 +3000,7 @@ EAPI void edje_object_text_insert_filter_callback_add (Evas_Ob
2920 * @param part The part name 3000 * @param part The part name
2921 * @param func The function callback to remove 3001 * @param func The function callback to remove
2922 * 3002 *
2923 * @return The user data pointer if succesful, or NULL otherwise 3003 * @return The user data pointer if successful, or NULL otherwise
2924 */ 3004 */
2925EAPI void *edje_object_text_insert_filter_callback_del (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func); 3005EAPI void *edje_object_text_insert_filter_callback_del (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func);
2926 3006
@@ -2939,11 +3019,82 @@ EAPI void *edje_object_text_insert_filter_callback_del (Evas_Ob
2939 * @param func The function callback to remove 3019 * @param func The function callback to remove
2940 * @param data The data passed to the callback function 3020 * @param data The data passed to the callback function
2941 * 3021 *
2942 * @return The same data pointer if succesful, or NULL otherwise 3022 * @return The same data pointer if successful, or NULL otherwise
2943 */ 3023 */
2944EAPI void *edje_object_text_insert_filter_callback_del_full (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data); 3024EAPI void *edje_object_text_insert_filter_callback_del_full (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data);
2945 3025
2946/** 3026/**
3027 * Add a markup filter function for newly inserted text.
3028 *
3029 * Whenever text is inserted (not the same as set) into the given @p part,
3030 * the list of markup filter functions will be called to decide if and how
3031 * the new text will be accepted.
3032 * The text parameter in the @p func filter is always markup. It can be
3033 * modified by the user and it's up to him to free the one passed if he's to
3034 * change the pointer. If doing so, the newly set text should be malloc'ed,
3035 * as once all the filters are called Edje will free it.
3036 * If the text is to be rejected, freeing it and setting the pointer to NULL
3037 * will make Edje break out of the filter cycle and reject the inserted
3038 * text.
3039 * This function is different from edje_object_text_insert_filter_callback_add()
3040 * in that the text parameter in the @p fucn filter is always markup.
3041 *
3042 * @warning If you use this function with
3043 * edje_object_text_insert_filter_callback_add() togehter, all
3044 * Edje_Text_Filter_Cb functions and Edje_Markup_Filter_Cb functions
3045 * will be executed, and then filtered text will be inserted.
3046 *
3047 * @see edje_object_text_markup_filter_callback_del
3048 * @see edje_object_text_markup_filter_callback_del_full
3049 * @see edje_object_text_insert_filter_callback_add
3050 *
3051 * @param obj A valid Evas_Object handle
3052 * @param part The part name
3053 * @param func The callback function that will act as markup filter
3054 * @param data User provided data to pass to the filter function
3055 * @since 1.2.0
3056 */
3057EAPI void edje_object_text_markup_filter_callback_add(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data);
3058
3059/**
3060 * Delete a function from the markup filter list.
3061 *
3062 * Delete the given @p func filter from the list in @p part. Returns
3063 * the user data pointer given when added.
3064 *
3065 * @see edje_object_text_markup_filter_callback_add
3066 * @see edje_object_text_markup_filter_callback_del_full
3067 *
3068 * @param obj A valid Evas_Object handle
3069 * @param part The part name
3070 * @param func The function callback to remove
3071 *
3072 * @return The user data pointer if successful, or NULL otherwise
3073 * @since 1.2.0
3074 */
3075EAPI void *edje_object_text_markup_filter_callback_del(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func);
3076
3077/**
3078 * Delete a function and matching user data from the markup filter list.
3079 *
3080 * Delete the given @p func filter and @p data user data from the list
3081 * in @p part.
3082 * Returns the user data pointer given when added.
3083 *
3084 * @see edje_object_text_markup_filter_callback_add
3085 * @see edje_object_text_markup_filter_callback_del
3086 *
3087 * @param obj A valid Evas_Object handle
3088 * @param part The part name
3089 * @param func The function callback to remove
3090 * @param data The data passed to the callback function
3091 *
3092 * @return The same data pointer if successful, or NULL otherwise
3093 * @since 1.2.0
3094 */
3095EAPI void *edje_object_text_markup_filter_callback_del_full(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data);
3096
3097/**
2947 * @brief Swallows an object into the edje. 3098 * @brief Swallows an object into the edje.
2948 * 3099 *
2949 * @param obj A valid Evas_Object handle 3100 * @param obj A valid Evas_Object handle
@@ -3244,7 +3395,7 @@ EAPI Eina_Bool edje_object_part_external_param_set (Evas_Ob
3244 * 3395 *
3245 * Parts of type external may carry extra properties that have 3396 * Parts of type external may carry extra properties that have
3246 * meanings defined by the external plugin. For instance, it may be a 3397 * meanings defined by the external plugin. For instance, it may be a
3247 * string that defines a button label. This property can be modifed by 3398 * string that defines a button label. This property can be modified by
3248 * state parameters, by explicit calls to 3399 * state parameters, by explicit calls to
3249 * edje_object_part_external_param_set() or getting the actual object 3400 * edje_object_part_external_param_set() or getting the actual object
3250 * with edje_object_part_external_object_get() and calling native 3401 * with edje_object_part_external_object_get() and calling native
@@ -3850,8 +4001,8 @@ EAPI const Edje_External_Param_Info *edje_external_param_info_get (const char
3850 * This sets the parameters of the perspective transformation. X, Y and Z 4001 * This sets the parameters of the perspective transformation. X, Y and Z
3851 * values are used. The px and py points specify the "infinite distance" point 4002 * values are used. The px and py points specify the "infinite distance" point
3852 * in the 3D conversion (where all lines converge to like when artists draw 4003 * in the 3D conversion (where all lines converge to like when artists draw
3853 * 3D by hand). The @p z0 value specifis the z value at which there is a 1:1 4004 * 3D by hand). The @p z0 value specifies the z value at which there is a 1:1
3854 * mapping between spatial coorinates and screen coordinates. Any points 4005 * mapping between spatial coordinates and screen coordinates. Any points
3855 * on this z value will not have their X and Y values modified in the transform. 4006 * on this z value will not have their X and Y values modified in the transform.
3856 * Those further away (Z value higher) will shrink into the distance, and 4007 * Those further away (Z value higher) will shrink into the distance, and
3857 * those less than this value will expand and become bigger. The @p foc value 4008 * those less than this value will expand and become bigger. The @p foc value
@@ -3861,8 +4012,8 @@ EAPI const Edje_External_Param_Info *edje_external_param_info_get (const char
3861 * control and @p foc must be greater than 0. 4012 * control and @p foc must be greater than 0.
3862 * 4013 *
3863 * @param m map to change. 4014 * @param m map to change.
3864 * @param px The pespective distance X coordinate 4015 * @param px The perspective distance X coordinate
3865 * @param py The pespective distance Y coordinate 4016 * @param py The perspective distance Y coordinate
3866 * @param z0 The "0" z plane value 4017 * @param z0 The "0" z plane value
3867 * @param foc The focal distance 4018 * @param foc The focal distance
3868 */ 4019 */