summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Makefile_Edje.am3
-rw-r--r--src/lib/edje/Edje.h6425
-rw-r--r--src/lib/edje/Edje_Common.h1971
-rw-r--r--src/lib/edje/Edje_Eo.h2220
-rw-r--r--src/lib/edje/Edje_Legacy.h2614
5 files changed, 6815 insertions, 6418 deletions
diff --git a/src/Makefile_Edje.am b/src/Makefile_Edje.am
index 950a814..f33cd7c 100644
--- a/src/Makefile_Edje.am
+++ b/src/Makefile_Edje.am
@@ -17,6 +17,9 @@ EDJE_COMMON_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
17installed_edjemainheadersdir = $(includedir)/edje-@VMAJ@ 17installed_edjemainheadersdir = $(includedir)/edje-@VMAJ@
18dist_installed_edjemainheaders_DATA = \ 18dist_installed_edjemainheaders_DATA = \
19lib/edje/Edje.h \ 19lib/edje/Edje.h \
20lib/edje/Edje_Common.h \
21lib/edje/Edje_Eo.h \
22lib/edje/Edje_Legacy.h \
20lib/edje/Edje_Edit.h 23lib/edje/Edje_Edit.h
21 24
22lib_edje_libedje_la_SOURCES = \ 25lib_edje_libedje_la_SOURCES = \
diff --git a/src/lib/edje/Edje.h b/src/lib/edje/Edje.h
index 749b1d4..266200a 100644
--- a/src/lib/edje/Edje.h
+++ b/src/lib/edje/Edje.h
@@ -202,19 +202,6 @@ param in edje programs
202 * These routines are used for Edje. 202 * These routines are used for Edje.
203 */ 203 */
204 204
205/**
206 * @defgroup Edje_General_Group Edje General
207 * @ingroup Edje
208 *
209 * @brief This group discusses functions that have general purposes or affect Edje as a whole.
210 *
211 * Besides containing the initialize and shutdown functions of the library, which should
212 * always be called when we are using Edje, this module contains some other utilities that
213 * could be used in many contexts or should do their jobs independent of the context inside Edje.
214 *
215 * @{
216 */
217
218#ifndef _EDJE_H 205#ifndef _EDJE_H
219#define _EDJE_H 206#define _EDJE_H
220 207
@@ -260,6411 +247,13 @@ extern "C" {
260#define EDJE_VERSION_MAJOR 1 247#define EDJE_VERSION_MAJOR 1
261#define EDJE_VERSION_MINOR 8 248#define EDJE_VERSION_MINOR 8
262 249
263typedef struct _Edje_Version 250#include "Edje_Common.h"
264{ 251#ifndef EFL_NOLEGACY_API_SUPPORT
265 int major; 252#include "Edje_Legacy.h"
266 int minor; 253#endif
267 int micro; 254#ifdef EFL_EO_API_SUPPORT
268 int revision; 255#include "Edje_Eo.h"
269} Edje_Version; 256#endif
270
271EAPI extern Edje_Version *edje_version;
272
273/**
274 * @brief Initialize the Edje library.
275 *
276 * @return The new init count. The initial value is zero.
277 *
278 * This function initializes the Edje library, making the proper calls
279 * to internal initialization functions. It will also initialize its
280 * @b dependencies, making calls to @c eina_init(), @c ecore_init(),
281 * @c embryo_init() and @c eet_init(). So, there is no need to call
282 * those functions again, in your code. To shutdown Edje there is the
283 * function edje_shutdown().
284 *
285 * @see edje_shutdown()
286 * @see eina_init()
287 * @see ecore_init()
288 * @see embryo_init()
289 * @see eet_init()
290 *
291 */
292EAPI int edje_init (void);
293
294/**
295 * @brief Shutdown the Edje library.
296 *
297 * @return The number of times the library has been initialised
298 * without being shutdown.
299 *
300 * This function shuts down the Edje library. It will also call the
301 * shutdown functions of its @b dependencies, which are @c
302 * eina_shutdown(), @c ecore_shutdown(), @c embryo_shutdown() and @c
303 * eet_shutdown(), so there is no need to call these functions again,
304 * in your code.
305 *
306 * @see edje_init()
307 * @see eina_shutdown()
308 * @see ecore_shutdown()
309 * @see embryo_shutdown()
310 * @see eet_shutdown()
311 *
312 */
313EAPI int edje_shutdown (void);
314
315/**
316 * @brief Set the edje append fontset.
317 *
318 * @param fonts The fontset to append.
319 *
320 * This function sets the edje append fontset.
321 *
322 */
323EAPI void edje_fontset_append_set (const char *fonts);
324
325/**
326 * Get data from the file level data block of an edje file
327 * @param file The path to the .edj file
328 * @param key The data key
329 * @return The string value of the data or NULL if no key is found.
330 * Must be freed by the user when no longer needed.
331 *
332 * If an edje file test.edj is built from the following edc:
333 *
334 * data {
335 * item: "key1" "value1";
336 * item: "key2" "value2";
337 * }
338 * collections { ... }
339 *
340 * Then, edje_file_data_get("test.edj", "key1") will return "value1"
341 */
342EAPI char *edje_file_data_get (const char *file, const char *key);
343
344/**
345 * @brief Load a new module in Edje.
346 * @param module The name of the module that will be added to Edje.
347 * @return EINA_TRUE if the module was successfully loaded. Otherwise, EINA_FALSE.
348 *
349 * Modules are used to add functionality to Edje.
350 * So, when a module is loaded, its functionality should be available for use.
351 *
352 */
353EAPI Eina_Bool edje_module_load (const char *module);
354
355/**
356 * @brief Retrieves all modules that can be loaded.
357 * @return A list of all loadable modules.
358 *
359 * This function retrieves all modules that can be loaded by edje_module_load().
360 *
361 * @see edje_module_load().
362 *
363 */
364EAPI const Eina_List *edje_available_modules_get (void);
365
366/**
367 * @brief Get the edje append fontset.
368 *
369 * @return The edje append fontset.
370 *
371 * This function returns the edje append fontset set by
372 * edje_fontset_append_set() function.
373 *
374 * @see edje_fontset_append_set().
375 *
376 */
377EAPI const char *edje_fontset_append_get (void);
378
379/**
380 * @brief Set the file cache size.
381 *
382 * @param count The file cache size in edje file units. Default is 16.
383 *
384 * This function sets the file cache size. Edje keeps this cache in
385 * order to prevent duplicates of edje file entries in memory. The
386 * file cache size can be retrieved with edje_file_cache_get().
387 *
388 * @see edje_file_cache_get()
389 * @see edje_file_cache_flush()
390 *
391 */
392EAPI void edje_file_cache_set (int count);
393
394/**
395 * @brief Return the file cache size.
396 *
397 * @return The file cache size in edje file units. Default is 16.
398 *
399 * This function returns the file cache size set by
400 * edje_file_cache_set().
401 *
402 * @see edje_file_cache_set()
403 * @see edje_file_cache_flush()
404 *
405 */
406EAPI int edje_file_cache_get (void);
407
408/**
409 * @brief Clean the file cache.
410 *
411 * This function cleans the file cache entries, but keeps this cache's
412 * size to the last value set.
413 *
414 * @see edje_file_cache_set()
415 * @see edje_file_cache_get()
416 *
417 */
418EAPI void edje_file_cache_flush (void);
419
420/**
421 * @brief Set the collection cache size.
422 *
423 * @param count The collection cache size, in edje object units. Default is 16.
424 *
425 * This function sets the collection cache size. Edje keeps this cache
426 * in order to prevent duplicates of edje {collection,group,part}
427 * entries in memory. The collection cache size can be retrieved with
428 * edje_collection_cache_get().
429 *
430 * @see edje_collection_cache_get()
431 * @see edje_collection_cache_flush()
432 *
433 */
434EAPI void edje_collection_cache_set (int count);
435
436/**
437 * @brief Return the collection cache size.
438 *
439 * @return The collection cache size, in edje object units. Default is 16.
440 *
441 * This function returns the collection cache size set by
442 * edje_collection_cache_set().
443 *
444 * @see edje_collection_cache_set()
445 * @see edje_collection_cache_flush()
446 *
447 */
448EAPI int edje_collection_cache_get (void);
449
450/**
451 * @brief Clean the collection cache.
452 *
453 * This function cleans the collection cache, but keeps this cache's
454 * size to the last value set.
455 *
456 * @see edje_collection_cache_set()
457 * @see edje_collection_cache_get()
458 *
459 */
460EAPI void edje_collection_cache_flush (void);
461
462/**
463 * @}
464 */
465
466/**
467 * @defgroup Edje_External_Group Edje External
468 * @ingroup Edje
469 *
470 * @brief This group discusses functions of the external section of Edje.
471 *
472 * The programmer can create new types for parts, that will be called generically
473 * EXTERNALS as they are not native of Edje. The developer must also create
474 * plugins that will define the meaning of each extra properties carried by
475 * these parts of type EXTERNAL.
476 *
477 * As long as there are new types properly registered with the plugins created,
478 * the user can use the parts of type EXTERNAL as all the parts of native types.
479 *
480 * @{
481 */
482
483/**
484 * The possible types the parameters of an EXTERNAL part can be.
485 */
486typedef enum _Edje_External_Param_Type
487{
488 EDJE_EXTERNAL_PARAM_TYPE_INT, /**< Parameter value is an integer. */
489 EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, /**< Parameter value is a double. */
490 EDJE_EXTERNAL_PARAM_TYPE_STRING, /**< Parameter value is a string. */
491 EDJE_EXTERNAL_PARAM_TYPE_BOOL, /**< Parameter value is boolean. */
492 EDJE_EXTERNAL_PARAM_TYPE_CHOICE, /**< Parameter value is one of a set of
493 predefined string choices. */
494 EDJE_EXTERNAL_PARAM_TYPE_MAX /**< Sentinel. Don't use. */
495} Edje_External_Param_Type;
496
497/**
498 * Flags that determine how a parameter may be accessed in different
499 * circumstances.
500 */
501typedef enum _Edje_External_Param_Flags
502{
503 EDJE_EXTERNAL_PARAM_FLAGS_NONE = 0, /**< Property is incapable of operations, this is used to catch bogus flags. */
504 EDJE_EXTERNAL_PARAM_FLAGS_GET = (1 << 0), /**< Property can be read/get. */
505 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. */
506 EDJE_EXTERNAL_PARAM_FLAGS_STATE = (1 << 2), /**< Property can be set from state description. */
507 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. */
508 EDJE_EXTERNAL_PARAM_FLAGS_REGULAR = (EDJE_EXTERNAL_PARAM_FLAGS_GET |
509 EDJE_EXTERNAL_PARAM_FLAGS_SET |
510 EDJE_EXTERNAL_PARAM_FLAGS_STATE) /**< Convenience flag that sets property as GET, SET and STATE. */
511} Edje_External_Param_Flags;
512
513/**
514 * @brief Converts type identifier to string nicer representation.
515 *
516 * This may be used to debug or other informational purposes.
517 *
518 * @param type the identifier to convert.
519 * @return the string with the string representation, or @c "(unknown)".
520 */
521EAPI const char *edje_external_param_type_str(Edje_External_Param_Type type) EINA_PURE;
522
523/**
524 * Struct that holds parameters for parts of type EXTERNAL.
525 */
526struct _Edje_External_Param
527{
528 const char *name; /**< The name of the parameter. */
529 Edje_External_Param_Type type; /**< The type of the parameter. This defines
530 which of the next three variables holds
531 the value for it. */
532 // XXX these could be in a union, but eet doesn't support them (or does it?)
533 int i; /**< Used by both integer and boolean */
534 double d; /**< Used by double */
535 const char *s; /**< Used by both string and choice */
536};
537/**
538 * Struct that holds parameters for parts of type EXTERNAL.
539 */
540typedef struct _Edje_External_Param Edje_External_Param;
541
542/**
543 * Helper macro to indicate an EXTERNAL's integer parameter is undefined.
544 */
545#define EDJE_EXTERNAL_INT_UNSET INT_MAX
546/**
547 * Helper macro to indicate an EXTERNAL's double parameter is undefined.
548 */
549#define EDJE_EXTERNAL_DOUBLE_UNSET DBL_MAX
550
551/**
552 * Struct holding information about an EXTERNAL part's parameters.
553 *
554 * When creating types to use with EXTERNAL parts, an array of this type is
555 * used to describe the different parameters the object uses.
556 *
557 * This struct holds the name, type and flags that define how and when the
558 * parameter is used, as well as information specific to each type, like the
559 * maximum or minimum value, that can be used by editors to restrict the
560 * range of values to set for each parameter.
561 */
562typedef struct _Edje_External_Param_Info Edje_External_Param_Info;
563
564/**
565 * Struct holding information about an EXTERNAL part's parameters.
566 *
567 * When creating types to use with EXTERNAL parts, an array of this type is
568 * used to describe the different parameters the object uses.
569 *
570 * This struct holds the name, type and flags that define how and when the
571 * parameter is used, as well as information specific to each type, like the
572 * maximum or minimum value, that can be used by editors to restrict the
573 * range of values to set for each parameter.
574 */
575struct _Edje_External_Param_Info
576{
577 const char *name; /**< Name of the parameter. */
578 Edje_External_Param_Type type; /**< Type of the parameter. */
579 Edje_External_Param_Flags flags; /**< Flags indicating how this parameter is
580 used. */
581 union {
582 struct {
583 int def, /**< Default value for the parameter. */
584 min, /**< Minimum value it can have. */
585 max, /**< Maximum value it can have. */
586 step; /**< Values will be a multiple of this. */
587 } i; /**< Info about integer type parameters. Use #EDJE_EXTERNAL_INT_UNSET
588 on any of them to indicate they are not defined.*/
589 struct {
590 double def, /**< Default value for the parameter. */
591 min, /**< Minimum value it can have. */
592 max, /**< Maximum value it can have. */
593 step; /**< Values will be a multiple of this. */
594 } d; /**< Info about double type parameters. Use
595#EDJE_EXTERNAL_DOUBLE_UNSET on any of them to indicate they are not defined.*/
596 struct {
597 const char *def; /**< Default value. */
598 const char *accept_fmt; /**< Not implemented. */
599 const char *deny_fmt; /**< Not implemented */
600 } s; /**< Info about string type parameters. NULL indicates undefined. */
601 struct {
602 int def; /**< Default value. */
603 const char *false_str; /**< String shown by editors to indicate the false state. */
604 const char *true_str; /**< String shown by editors to indicate the true state. */
605 } b; /**< Info about boolean type parameters.*/
606 struct {
607 const char *def; /**< Default value. */
608 const char **choices; /* Array of strings, each represents a
609 valid value for this parameter. The
610 last element of the array must be
611 NULL. */
612 char *(*def_get)(void *data, const Edje_External_Param_Info *info); /** return malloc() memory with the default choice, should be used if def is NULL. First parameter is Edje_External_Type::data */
613 char **(*query)(void *data, const Edje_External_Param_Info *info); /** NULL terminated array of strings, memory is dynamically allocated and should be freed with free() for array and each element. First parameter is Edje_External_Type::data */
614 } c; /**< Info about choice type parameters. */
615 } info;
616};
617
618#define EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, min, max, step, flags) \
619 {name, EDJE_EXTERNAL_PARAM_TYPE_INT, flags, {.i = {def, min, max, step}}}
620#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, min, max, step, flags) \
621 {name, EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, flags, {.d = {def, min, max, step}}}
622#define EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, accept, deny, flags) \
623 {name, EDJE_EXTERNAL_PARAM_TYPE_STRING, flags, {.s = {def, accept, deny}}}
624#define EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, false_str, true_str, flags) \
625 {name, EDJE_EXTERNAL_PARAM_TYPE_BOOL, flags, {.b = {def, false_str, true_str}}}
626#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL_FLAGS(name, def, choices, flags) \
627 {name, EDJE_EXTERNAL_PARAM_TYPE_CHOICE, flags, {.c = {def, choices, NULL, NULL}}}
628#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL_FLAGS(name, def_get, query, flags) \
629 {name, EDJE_EXTERNAL_PARAM_TYPE_CHOICE, flags, {.c = {NULL, NULL, def_get, query}}}
630
631#define EDJE_EXTERNAL_PARAM_INFO_INT_FULL(name, def, min, max, step) \
632 EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, min, max, step, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
633#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL(name, def, min, max, step) \
634 EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, min, max, step, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
635#define EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, accept, deny) \
636 EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, accept, deny, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
637#define EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, false_str, true_str) \
638 EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, false_str, true_str, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
639#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL(name, def, choices) \
640 EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL_FLAGS(name, def, choices, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
641#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL(name, def_get, query) \
642 EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL_FLAGS(name, def_get, query, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
643
644#define EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, def) \
645 EDJE_EXTERNAL_PARAM_INFO_INT_FULL(name, def, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET)
646#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT(name, def) \
647 EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL(name, def, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET)
648#define EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, def) \
649 EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, NULL, NULL)
650#define EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, def) \
651 EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, "false", "true")
652
653#define EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT_FLAGS(name, def, flags) \
654 EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, flags)
655#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT_FLAGS(name, def, flags) \
656 EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, flags)
657#define EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT_FLAGS(name, def, flags) \
658 EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, NULL, NULL, flags)
659#define EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT_FLAGS(name, def, flags) \
660 EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, "false", "true", flags)
661
662#define EDJE_EXTERNAL_PARAM_INFO_INT(name) \
663 EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, 0)
664#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE(name) \
665 EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT(name, 0.0)
666#define EDJE_EXTERNAL_PARAM_INFO_STRING(name) \
667 EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, NULL)
668#define EDJE_EXTERNAL_PARAM_INFO_BOOL(name) \
669 EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, 0)
670
671#define EDJE_EXTERNAL_PARAM_INFO_INT_FLAGS(name, flags) \
672 EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT_FLAGS(name, 0, flags)
673#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FLAGS(name, flags) \
674 EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT_FLAGS(name, 0.0, flags)
675#define EDJE_EXTERNAL_PARAM_INFO_STRING_FLAGS(name, flags) \
676 EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT_FLAGS(name, NULL, flags)
677#define EDJE_EXTERNAL_PARAM_INFO_BOOL_FLAGS(name, flags) \
678 EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT_FLAGS(name, 0, flags)
679
680#define EDJE_EXTERNAL_PARAM_INFO_SENTINEL {NULL, 0, 0, {.s = {NULL, NULL, NULL}}}
681
682#define EDJE_EXTERNAL_TYPE_ABI_VERSION (3)
683
684/**
685 * @struct _Edje_External_Type
686 *
687 * @brief Information about an external type to be used.
688 *
689 * This structure provides information on how to display and modify a
690 * third party Evas_Object in Edje.
691 *
692 * Some function pointers are not really used by Edje, but provide
693 * means for Edje users to better interact with such objects. For
694 * instance, an editor may use label_get() and icon_get() to list all
695 * registered external types.
696 *
697 * @note The function pointers provided in this structure must check
698 * for errors and invalid or out-of-range values as for
699 * performance reasons Edje will not enforce hints provided as
700 * #Edje_External_Param_Info in the member parameters_info.
701 */
702struct _Edje_External_Type
703{
704 unsigned int abi_version; /**< always use:
705 * - #EDJE_EXTERNAL_TYPE_ABI_VERSION to declare.
706 * - edje_external_type_abi_version_get() to check.
707 */
708 const char *module; /**< Name of the module that holds these definitions,
709 as used in the externals {} block of a theme
710 definition. */
711 const char *module_name; /**< Canonical name of the module, for displaying
712 in edition programs, for example. */
713 Evas_Object *(*add) (void *data, Evas *evas, Evas_Object *parent, const Eina_List *params, const char *part_name); /**< Creates the object to be used by Edje as the part. @p part_name is the name of the part that holds the object and can be used to forward callbacks from the object as signals from Edje. @p params is the list of #Edje_External_Param, not parsed, from the default state of the part. Parameters of type #EDJE_EXTERNAL_PARAM_FLAGS_CONSTRUCTOR should be set on
714 the object here. */
715 void (*state_set) (void *data, Evas_Object *obj, const void *from_params, const void *to_params, float pos); /**< Called upon state changes, including the initial "default" 0.0 state. Parameters are the value returned by params_parse(). The @p pos parameter is a value between 0.0 and 1.0 indicating the position in time within the state transition. */
716 void (*signal_emit) (void *data, Evas_Object *obj, const char *emission, const char *source); /**< Feed a signal emitted with emission originally set as part_name:signal to this object (without the "part_name:" prefix) */
717 Eina_Bool (*param_set) (void *data, Evas_Object *obj, const Edje_External_Param *param); /**< Dynamically change a parameter of this external, called by scripts and user code. Returns @c EINA_TRUE on success */
718 Eina_Bool (*param_get) (void *data, const Evas_Object *obj, Edje_External_Param *param); /**< Dynamically fetch a parameter of this external, called by scripts and user code. Returns @c EINA_TRUE on success. (Must check parameter name and type!) */
719 Evas_Object *(*content_get) (void *data, const Evas_Object *obj, const char *content); /**< Dynamically fetch a sub object of this external, called by scripts and user code. Returns @c Evas_Object * on success. (Must check parameter name and type!) */
720 void *(*params_parse) (void *data, Evas_Object *obj, const Eina_List *params); /**< Parses the list of parameters, converting into a friendly representation. Used with state_set() */
721 void (*params_free) (void *params); /**< Free parameters parsed with params_parse() */
722
723 /* The following callbacks aren't used by Edje itself, but by UI design
724 tools instead */
725 const char *(*label_get) (void *data); /**< Get a label to use to identify this EXTERNAL. (For editors) */
726 const char *(*description_get) (void *data); /**< Get a user friendly description of this EXTERNAL. (For editors) */
727 Evas_Object *(*icon_add) (void *data, Evas *e); /**< Get an icon to use to identify this EXTERNAL. (For editors) */
728 Evas_Object *(*preview_add) (void *data, Evas *e); /**< Get a preview of the EXTERNAL object in use. (For editors) */
729 const char *(*translate) (void *data, const char *orig); /**< called to translate parameters_info name properties for use in user interfaces that support internationalization (i18n) (For editors) */
730
731 Edje_External_Param_Info *parameters_info; /**< An array of #Edje_External_Param_Info describing the different parameters this EXTERNAL may have. The last element in the array must be #EDJE_EXTERNAL_PARAM_INFO_SENTINEL. */
732 void *data; /**< Private user data that will be passed to all of the class functions. */
733};
734typedef struct _Edje_External_Type Edje_External_Type;
735
736/**
737 * Convenience struct used to mass-register types of EXTERNAL objects.
738 *
739 * Used with edje_external_type_array_register().
740 */
741struct _Edje_External_Type_Info
742{
743 const char *name; /**< The name of the type to register. */
744 const Edje_External_Type *info; /**< The type definition. */
745};
746
747typedef struct _Edje_External_Type_Info Edje_External_Type_Info;
748
749/**
750 * @}
751 */
752
753#define EDJE_OBJ_CLASS edje_object_class_get()
754
755const Eo_Class *edje_object_class_get(void) EINA_CONST;
756
757extern EAPI Eo_Op EDJE_OBJ_BASE_ID;
758
759enum
760{
761 EDJE_OBJ_SUB_ID_SCALE_SET,
762 EDJE_OBJ_SUB_ID_SCALE_GET,
763 EDJE_OBJ_SUB_ID_MIRRORED_GET,
764 EDJE_OBJ_SUB_ID_MIRRORED_SET,
765 EDJE_OBJ_SUB_ID_DATA_GET,
766 EDJE_OBJ_SUB_ID_FREEZE,
767 EDJE_OBJ_SUB_ID_THAW,
768 EDJE_OBJ_SUB_ID_COLOR_CLASS_SET,
769 EDJE_OBJ_SUB_ID_COLOR_CLASS_GET,
770 EDJE_OBJ_SUB_ID_TEXT_CLASS_SET,
771 EDJE_OBJ_SUB_ID_PART_EXISTS,
772 EDJE_OBJ_SUB_ID_PART_OBJECT_GET,
773 EDJE_OBJ_SUB_ID_PART_GEOMETRY_GET,
774 EDJE_OBJ_SUB_ID_ITEM_PROVIDER_SET,
775 EDJE_OBJ_SUB_ID_TEXT_CHANGE_CB_SET,
776 EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_PUSH,
777 EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_POP,
778 EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_PEEK,
779 EDJE_OBJ_SUB_ID_PART_TEXT_SET,
780 EDJE_OBJ_SUB_ID_PART_TEXT_GET,
781 EDJE_OBJ_SUB_ID_PART_TEXT_ESCAPED_SET,
782 EDJE_OBJ_SUB_ID_PART_TEXT_UNESCAPED_SET,
783 EDJE_OBJ_SUB_ID_PART_TEXT_UNESCAPED_GET,
784 EDJE_OBJ_SUB_ID_PART_TEXT_SELECTION_GET,
785 EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_NONE,
786 EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ALL,
787 EDJE_OBJ_SUB_ID_PART_TEXT_INSERT,
788 EDJE_OBJ_SUB_ID_PART_TEXT_APPEND,
789 EDJE_OBJ_SUB_ID_PART_TEXT_ANCHOR_LIST_GET,
790 EDJE_OBJ_SUB_ID_PART_TEXT_ANCHOR_GEOMETRY_GET,
791 EDJE_OBJ_SUB_ID_PART_TEXT_ITEM_LIST_GET,
792 EDJE_OBJ_SUB_ID_PART_TEXT_ITEM_GEOMETRY_GET,
793 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_GEOMETRY_GET,
794 EDJE_OBJ_SUB_ID_PART_TEXT_USER_INSERT,
795 EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ALLOW_SET,
796 EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ABORT,
797 EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_BEGIN,
798 EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_EXTEND,
799 EDJE_OBJ_SUB_ID_PART_TEXT_IMF_CONTEXT_GET,
800 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_NEXT,
801 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_PREV,
802 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_UP,
803 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_DOWN,
804 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_BEGIN_SET,
805 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_END_SET,
806 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_COPY,
807 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_LINE_BEGIN_SET,
808 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_LINE_END_SET,
809 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_COORD_SET,
810 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_IS_FORMAT_GET,
811 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_IS_VISIBLE_FORMAT_GET,
812 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_CONTENT_GET,
813 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_POS_SET,
814 EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_POS_GET,
815 EDJE_OBJ_SUB_ID_PART_TEXT_IMF_CONTEXT_RESET,
816 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LAYOUT_SET,
817 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LAYOUT_GET,
818 EDJE_OBJ_SUB_ID_PART_TEXT_AUTOCAPITAL_TYPE_SET,
819 EDJE_OBJ_SUB_ID_PART_TEXT_AUTOCAPITAL_TYPE_GET,
820 EDJE_OBJ_SUB_ID_PART_TEXT_PREDICTION_ALLOW_SET,
821 EDJE_OBJ_SUB_ID_PART_TEXT_PREDICTION_ALLOW_GET,
822 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_ENABLED_SET,
823 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_ENABLED_GET,
824 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_SHOW,
825 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_HIDE,
826 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LANGUAGE_SET,
827 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LANGUAGE_GET,
828 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_IMDATA_SET,
829 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_IMDATA_GET,
830 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_TYPE_SET,
831 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_TYPE_GET,
832 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_DISABLED_SET,
833 EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_DISABLED_GET,
834 EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_ADD,
835 EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_DEL,
836 EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_DEL_FULL,
837 EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_ADD,
838 EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_DEL,
839 EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_DEL_FULL,
840 EDJE_OBJ_SUB_ID_PART_SWALLOW,
841 EDJE_OBJ_SUB_ID_PART_UNSWALLOW,
842 EDJE_OBJ_SUB_ID_PART_SWALLOW_GET,
843 EDJE_OBJ_SUB_ID_SIZE_MIN_GET,
844 EDJE_OBJ_SUB_ID_SIZE_MAX_GET,
845 EDJE_OBJ_SUB_ID_CALC_FORCE,
846 EDJE_OBJ_SUB_ID_SIZE_MIN_CALC,
847 EDJE_OBJ_SUB_ID_PARTS_EXTENDS_CALC,
848 EDJE_OBJ_SUB_ID_SIZE_MIN_RESTRICTED_CALC,
849 EDJE_OBJ_SUB_ID_PART_STATE_GET,
850 EDJE_OBJ_SUB_ID_PART_DRAG_DIR_GET,
851 EDJE_OBJ_SUB_ID_PART_DRAG_VALUE_SET,
852 EDJE_OBJ_SUB_ID_PART_DRAG_VALUE_GET,
853 EDJE_OBJ_SUB_ID_PART_DRAG_SIZE_SET,
854 EDJE_OBJ_SUB_ID_PART_DRAG_SIZE_GET,
855 EDJE_OBJ_SUB_ID_PART_DRAG_STEP_SET,
856 EDJE_OBJ_SUB_ID_PART_DRAG_STEP_GET,
857 EDJE_OBJ_SUB_ID_PART_DRAG_PAGE_SET,
858 EDJE_OBJ_SUB_ID_PART_DRAG_PAGE_GET,
859 EDJE_OBJ_SUB_ID_PART_DRAG_STEP,
860 EDJE_OBJ_SUB_ID_PART_DRAG_PAGE,
861 EDJE_OBJ_SUB_ID_PART_BOX_APPEND,
862 EDJE_OBJ_SUB_ID_PART_BOX_PREPEND,
863 EDJE_OBJ_SUB_ID_PART_BOX_INSERT_BEFORE,
864 EDJE_OBJ_SUB_ID_PART_BOX_INSERT_AT,
865 EDJE_OBJ_SUB_ID_PART_BOX_REMOVE,
866 EDJE_OBJ_SUB_ID_PART_BOX_REMOVE_AT,
867 EDJE_OBJ_SUB_ID_PART_BOX_REMOVE_ALL,
868 EDJE_OBJ_SUB_ID_ACCESS_PART_LIST_GET,
869 EDJE_OBJ_SUB_ID_PART_TABLE_CHILD_GET,
870 EDJE_OBJ_SUB_ID_PART_TABLE_PACK,
871 EDJE_OBJ_SUB_ID_PART_TABLE_UNPACK,
872 EDJE_OBJ_SUB_ID_PART_TABLE_COL_ROW_SIZE_GET,
873 EDJE_OBJ_SUB_ID_PART_TABLE_CLEAR,
874 EDJE_OBJ_SUB_ID_PERSPECTIVE_SET,
875 EDJE_OBJ_SUB_ID_PERSPECTIVE_GET,
876 EDJE_OBJ_SUB_ID_PRELOAD,
877 EDJE_OBJ_SUB_ID_UPDATE_HINTS_SET,
878 EDJE_OBJ_SUB_ID_UPDATE_HINTS_GET,
879
880 EDJE_OBJ_SUB_ID_PART_EXTERNAL_OBJECT_GET,
881 EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_SET,
882 EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_GET,
883 EDJE_OBJ_SUB_ID_PART_EXTERNAL_CONTENT_GET,
884 EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_TYPE_GET,
885
886 EDJE_OBJ_SUB_ID_FILE_SET,
887 EDJE_OBJ_SUB_ID_FILE_GET,
888 EDJE_OBJ_SUB_ID_LOAD_ERROR_GET,
889
890 EDJE_OBJ_SUB_ID_MESSAGE_SEND,
891 EDJE_OBJ_SUB_ID_MESSAGE_HANDLER_SET,
892 EDJE_OBJ_SUB_ID_MESSAGE_SIGNAL_PROCESS,
893
894 EDJE_OBJ_SUB_ID_SIGNAL_CALLBACK_ADD,
895 EDJE_OBJ_SUB_ID_SIGNAL_CALLBACK_DEL,
896 EDJE_OBJ_SUB_ID_SIGNAL_EMIT,
897 EDJE_OBJ_SUB_ID_PLAY_SET,
898 EDJE_OBJ_SUB_ID_PLAY_GET,
899 EDJE_OBJ_SUB_ID_ANIMATION_SET,
900 EDJE_OBJ_SUB_ID_ANIMATION_GET,
901
902 EDJE_OBJ_SUB_ID_LAST
903};
904
905#define EDJE_OBJ_ID(sub_id) (EDJE_OBJ_BASE_ID + sub_id)
906
907
908/**
909 * @def edje_obj_scale_set
910 * @since 1.8
911 *
912 * @brief Set the scaling factor for a given Edje object.
913 *
914 * @param[in] scale
915 * @param[out] ret
916 *
917 * @see edje_object_scale_set
918 */
919#define edje_obj_scale_set(scale, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SCALE_SET), EO_TYPECHECK(double, scale), EO_TYPECHECK(Eina_Bool *, ret)
920
921/**
922 * @def edje_obj_scale_get
923 * @since 1.8
924 *
925 * @brief Get a given Edje object's scaling factor.
926 *
927 * @param[out] ret
928 *
929 * @see edje_object_scale_get
930 */
931#define edje_obj_scale_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SCALE_GET), EO_TYPECHECK(double *, ret)
932
933/**
934 * @def edje_obj_mirrored_get
935 * @since 1.8
936 *
937 * @brief Get the RTL orientation for this object.
938 *
939 * @param[out] ret
940 *
941 * @see edje_object_mirrored_get
942 */
943#define edje_obj_mirrored_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MIRRORED_GET), EO_TYPECHECK(Eina_Bool *, ret)
944
945/**
946 * @def edje_obj_mirrored_set
947 * @since 1.8
948 *
949 * @brief Set the RTL orientation for this object.
950 *
951 * @param[in] rtl
952 *
953 * @see edje_object_mirrored_set
954 */
955#define edje_obj_mirrored_set(rtl) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MIRRORED_SET), EO_TYPECHECK(Eina_Bool, rtl)
956
957/**
958 * @def edje_obj_data_get
959 * @since 1.8
960 *
961 * @brief Retrieve an <b>EDC data field's value</b> from a given Edje.
962 *
963 * @param[in] key
964 * @param[out] ret
965 *
966 * @see edje_object_data_get
967 */
968#define edje_obj_data_get(key, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_DATA_GET), EO_TYPECHECK(const char *, key), EO_TYPECHECK(const char **, ret)
969
970/**
971 * @def edje_obj_freeze
972 * @since 1.8
973 *
974 * @brief Freezes the Edje object.
975 *
976 * @param[out] ret
977 *
978 * @see edje_object_freeze
979 */
980#define edje_obj_freeze(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_FREEZE), EO_TYPECHECK(int *, ret)
981
982/**
983 * @def edje_obj_thaw
984 * @since 1.8
985 *
986 * @brief Thaws the Edje object.
987 *
988 * @param[out] ret
989 *
990 * @see edje_object_thaw
991 */
992#define edje_obj_thaw(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_THAW), EO_TYPECHECK(int *, ret)
993
994/**
995 * @def edje_obj_color_class_set
996 * @since 1.8
997 *
998 * @brief Sets the object color class.
999 *
1000 * @param[in] color_class
1001 * @param[in] r
1002 * @param[in] g
1003 * @param[in] b
1004 * @param[in] a
1005 * @param[in] r2
1006 * @param[in] g2
1007 * @param[in] b2
1008 * @param[in] a2
1009 * @param[in] r3
1010 * @param[in] g3
1011 * @param[in] b3
1012 * @param[in] a3
1013 * @param[out] ret
1014 *
1015 * @see edje_object_color_class_set
1016 */
1017#define edje_obj_color_class_set(color_class, r, g, b, a, r2, g2, b2, a2, r3, g3, b3, a3, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_COLOR_CLASS_SET), EO_TYPECHECK(const char *, color_class), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a), EO_TYPECHECK(int, r2), EO_TYPECHECK(int, g2), EO_TYPECHECK(int, b2), EO_TYPECHECK(int, a2), EO_TYPECHECK(int, r3), EO_TYPECHECK(int, g3), EO_TYPECHECK(int, b3), EO_TYPECHECK(int, a3), EO_TYPECHECK(Eina_Bool *, ret)
1018
1019/**
1020 * @def edje_obj_color_class_get
1021 * @since 1.8
1022 *
1023 * @brief Gets the object color class.
1024 *
1025 * @param[in] color_class
1026 * @param[out] r
1027 * @param[out] g
1028 * @param[out] b
1029 * @param[out] a
1030 * @param[out] r2
1031 * @param[out] g2
1032 * @param[out] b2
1033 * @param[out] a2
1034 * @param[out] r3
1035 * @param[out] g3
1036 * @param[out] b3
1037 * @param[out] a3
1038 * @param[out] ret
1039 *
1040 * @see edje_object_color_class_get
1041 */
1042#define edje_obj_color_class_get(color_class, r, g, b, a, r2, g2, b2, a2, r3, g3, b3, a3, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_COLOR_CLASS_GET), EO_TYPECHECK(const char *, color_class), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a), EO_TYPECHECK(int *, r2), EO_TYPECHECK(int *, g2), EO_TYPECHECK(int *, b2), EO_TYPECHECK(int *, a2), EO_TYPECHECK(int *, r3), EO_TYPECHECK(int *, g3), EO_TYPECHECK(int *, b3), EO_TYPECHECK(int *, a3), EO_TYPECHECK(Eina_Bool *, ret)
1043
1044/**
1045 * @def edje_obj_text_class_set
1046 * @since 1.8
1047 *
1048 * @brief Sets Edje text class.
1049 *
1050 * @param[in] text_class
1051 * @param[in] font
1052 * @param[in] size
1053 * @param[out] ret
1054 *
1055 * @see edje_object_text_class_set
1056 */
1057#define edje_obj_text_class_set(text_class, font, size, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_CLASS_SET), EO_TYPECHECK(const char *, text_class), EO_TYPECHECK(const char *, font), EO_TYPECHECK(Evas_Font_Size, size), EO_TYPECHECK(Eina_Bool *, ret)
1058
1059/**
1060 * @def edje_obj_part_exists
1061 * @since 1.8
1062 *
1063 * @brief Check if an Edje part exists in a given Edje object's group
1064 *
1065 * @param[in] part
1066 * @param[out] ret
1067 *
1068 * @see edje_object_part_exists
1069 */
1070#define edje_obj_part_exists(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXISTS), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool *, ret)
1071
1072/**
1073 * @def edje_obj_part_object_get
1074 * @since 1.8
1075 *
1076 * @brief Get a handle to the Evas object implementing a given Edje
1077 *
1078 * @param[in] part
1079 * @param[out] ret
1080 *
1081 * @see edje_object_part_object_get
1082 */
1083#define edje_obj_part_object_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_OBJECT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const Evas_Object **, ret)
1084
1085/**
1086 * @def edje_obj_part_geometry_get
1087 * @since 1.8
1088 *
1089 * @brief Retrieve the geometry of a given Edje part, in a given Edje
1090 *
1091 * @param[in] part
1092 * @param[out] x
1093 * @param[out] y
1094 * @param[out] w
1095 * @param[out] h
1096 * @param[out] ret
1097 *
1098 * @see edje_object_part_geometry_get
1099 */
1100#define edje_obj_part_geometry_get(part, x, y, w, h, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_GEOMETRY_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h), EO_TYPECHECK(Eina_Bool *, ret)
1101
1102/**
1103 * @def edje_obj_item_provider_set
1104 * @since 1.8
1105 *
1106 * @brief Set the function that provides item objects for named items in an edje entry text
1107 *
1108 * @param[in] func
1109 * @param[in] data
1110 *
1111 * @see edje_object_item_provider_set
1112 */
1113#define edje_obj_item_provider_set(func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_ITEM_PROVIDER_SET), EO_TYPECHECK(Edje_Item_Provider_Cb, func), EO_TYPECHECK(void *, data)
1114
1115/**
1116 * @def edje_obj_text_change_cb_set
1117 * @since 1.8
1118 *
1119 * @brief Set the object text callback.
1120 *
1121 * @param[in] func
1122 * @param[in] data
1123 *
1124 * @see edje_object_text_change_cb_set
1125 */
1126#define edje_obj_text_change_cb_set(func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_CHANGE_CB_SET), EO_TYPECHECK(Edje_Text_Change_Cb, func), EO_TYPECHECK(void *, data)
1127
1128/**
1129 * @def edje_obj_part_text_style_user_push
1130 * @since 1.8
1131 *
1132 * @brief Set the style of the part.
1133 *
1134 * @param[in] part
1135 * @param[in] style
1136 *
1137 * @see edje_object_part_text_style_user_push
1138 */
1139#define edje_obj_part_text_style_user_push(part, style) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_PUSH), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, style)
1140
1141/**
1142 * @def edje_obj_part_text_style_user_pop
1143 * @since 1.8
1144 *
1145 * @brief Delete the top style form the user style stack.
1146 *
1147 * @param[in] part
1148 *
1149 * @see edje_object_part_text_style_user_pop
1150 */
1151#define edje_obj_part_text_style_user_pop(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_POP), EO_TYPECHECK(const char *, part)
1152
1153/**
1154 * @def edje_obj_part_text_style_user_peek
1155 * @since 1.8
1156 *
1157 * @brief Return the text of the object part.
1158 *
1159 * @param[in] part
1160 * @param[out] ret
1161 *
1162 * @see edje_object_part_text_style_user_peek
1163 */
1164#define edje_obj_part_text_style_user_peek(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_PEEK), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char **, ret)
1165
1166/**
1167 * @def edje_obj_part_text_set
1168 * @since 1.8
1169 *
1170 * @brief Sets the text for an object part
1171 *
1172 * @param[in] part
1173 * @param[in] text
1174 * @param[out] ret
1175 *
1176 * @see edje_object_part_text_set
1177 */
1178#define edje_obj_part_text_set(part, text, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text), EO_TYPECHECK(Eina_Bool *, ret)
1179
1180/**
1181 * @def edje_obj_part_text_get
1182 * @since 1.8
1183 *
1184 * @brief Return the text of the object part.
1185 *
1186 * @param[in] part
1187 * @param[out] ret
1188 *
1189 * @see edje_object_part_text_get
1190 */
1191#define edje_obj_part_text_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char **, ret)
1192
1193/**
1194 * @def edje_obj_part_text_escaped_set
1195 * @since 1.8
1196 *
1197 * @brief Sets the text for an object part, but converts HTML escapes to UTF8
1198 *
1199 * @param[in] part
1200 * @param[in] text
1201 * @param[out] ret
1202 *
1203 * @see edje_object_part_text_escaped_set
1204 */
1205#define edje_obj_part_text_escaped_set(part, text, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ESCAPED_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text), EO_TYPECHECK(Eina_Bool *, ret)
1206
1207/**
1208 * @def edje_obj_part_text_unescaped_set
1209 * @since 1.8
1210 *
1211 * @brief Sets the raw (non escaped) text for an object part.
1212 *
1213 * @param[in] part
1214 * @param[in] text_to_escape
1215 * @param[out] ret
1216 *
1217 * @see edje_object_part_text_unescaped_set
1218 */
1219#define edje_obj_part_text_unescaped_set(part, text_to_escape, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_UNESCAPED_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text_to_escape), EO_TYPECHECK(Eina_Bool *, ret)
1220
1221/**
1222 * @def edje_obj_part_text_unescaped_get
1223 * @since 1.8
1224 *
1225 * @brief Returns the text of the object part, without escaping.
1226 *
1227 * @param[in] part
1228 * @param[out] ret
1229 *
1230 * @see edje_object_part_text_unescaped_get
1231 */
1232#define edje_obj_part_text_unescaped_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_UNESCAPED_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(char **, ret)
1233
1234/**
1235 * @def edje_obj_part_text_selection_get
1236 * @since 1.8
1237 *
1238 * @brief Return the selection text of the object part.
1239 *
1240 * @param[in] part
1241 * @param[out] ret
1242 *
1243 * @see edje_object_part_text_selection_get
1244 */
1245#define edje_obj_part_text_selection_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECTION_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char **, ret)
1246
1247/**
1248 * @def edje_obj_part_text_select_none
1249 * @since 1.8
1250 *
1251 * @brief Set the selection to be none.
1252 *
1253 * @param[in] part
1254 *
1255 * @see edje_object_part_text_select_none
1256 */
1257#define edje_obj_part_text_select_none(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_NONE), EO_TYPECHECK(const char *, part)
1258
1259/**
1260 * @def edje_obj_part_text_select_all
1261 * @since 1.8
1262 *
1263 * @brief Set the selection to be everything.
1264 *
1265 * @param[in] part
1266 *
1267 * @see edje_object_part_text_select_all
1268 */
1269#define edje_obj_part_text_select_all(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ALL), EO_TYPECHECK(const char *, part)
1270
1271/**
1272 * @def edje_obj_part_text_insert
1273 * @since 1.8
1274 *
1275 * @brief Insert text for an object part.
1276 *
1277 * @param[in] part
1278 * @param[in] text
1279 *
1280 * @see edje_object_part_text_insert
1281 */
1282#define edje_obj_part_text_insert(part, text) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INSERT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text)
1283
1284/**
1285 * @def edje_obj_part_text_append
1286 * @since 1.8
1287 *
1288 * @brief Insert text for an object part.
1289 *
1290 * @param[in] part
1291 * @param[in] text
1292 *
1293 * @see edje_object_part_text_append
1294 */
1295#define edje_obj_part_text_append(part, text) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_APPEND), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text)
1296
1297/**
1298 * @def edje_obj_part_text_anchor_list_get
1299 * @since 1.8
1300 *
1301 * @brief Return a list of char anchor names.
1302 *
1303 * @param[in] part
1304 * @param[out] ret
1305 *
1306 * @see edje_object_part_text_anchor_list_get
1307 */
1308#define edje_obj_part_text_anchor_list_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ANCHOR_LIST_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const Eina_List **, ret)
1309
1310/**
1311 * @def edje_obj_part_text_anchor_geometry_get
1312 * @since 1.8
1313 *
1314 * @brief Return a list of Evas_Textblock_Rectangle anchor rectangles.
1315 *
1316 * @param[in] part
1317 * @param[in] anchor
1318 * @param[out] ret
1319 *
1320 * @see edje_object_part_text_anchor_geometry_get
1321 */
1322#define edje_obj_part_text_anchor_geometry_get(part, anchor, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ANCHOR_GEOMETRY_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, anchor), EO_TYPECHECK(const Eina_List **, ret)
1323
1324/**
1325 * @def edje_obj_part_text_item_list_get
1326 * @since 1.8
1327 *
1328 * @brief Return a list of char item names.
1329 *
1330 * @param[in] part
1331 * @param[out] ret
1332 *
1333 * @see edje_object_part_text_item_list_get
1334 */
1335#define edje_obj_part_text_item_list_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ITEM_LIST_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const Eina_List **, ret)
1336
1337/**
1338 * @def edje_obj_part_text_item_geometry_get
1339 * @since 1.8
1340 *
1341 * @brief Return item geometry.
1342 *
1343 * @param[in] part
1344 * @param[in] item
1345 * @param[out] cx
1346 * @param[out] cy
1347 * @param[out] cw
1348 * @param[out] ch
1349 * @param[out] ret
1350 *
1351 * @see edje_object_part_text_item_geometry_get
1352 */
1353#define edje_obj_part_text_item_geometry_get(part, item, cx, cy, cw, ch, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ITEM_GEOMETRY_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, item), EO_TYPECHECK(Evas_Coord *, cx), EO_TYPECHECK(Evas_Coord *, cy), EO_TYPECHECK(Evas_Coord *, cw), EO_TYPECHECK(Evas_Coord *, ch), EO_TYPECHECK(Eina_Bool *, ret)
1354
1355/**
1356 * @def edje_obj_part_text_cursor_geometry_get
1357 * @since 1.8
1358 *
1359 * @brief Returns the cursor geometry of the part relative to the edje
1360 *
1361 * @param[in] part
1362 * @param[out] x
1363 * @param[out] y
1364 * @param[out] w
1365 * @param[out] h
1366 *
1367 * @see edje_object_part_text_cursor_geometry_get
1368 */
1369#define edje_obj_part_text_cursor_geometry_get(part, x, y, w, h) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_GEOMETRY_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
1370
1371/**
1372 * @def edje_obj_part_text_user_insert
1373 * @since 1.8
1374 *
1375 * @brief This function inserts text as if the user has inserted it.
1376 *
1377 * @param[in] part
1378 * @param[in] text
1379 *
1380 * @see edje_object_part_text_user_insert
1381 */
1382#define edje_obj_part_text_user_insert(part, text) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_USER_INSERT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text)
1383
1384/**
1385 * @def edje_obj_part_text_select_allow_set
1386 * @since 1.8
1387 *
1388 * @brief Enables selection if the entry is an EXPLICIT selection mode
1389 *
1390 * @param[in] part
1391 * @param[in] allow
1392 *
1393 * @see edje_object_part_text_select_allow_set
1394 */
1395#define edje_obj_part_text_select_allow_set(part, allow) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ALLOW_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, allow)
1396
1397/**
1398 * @def edje_obj_part_text_select_abort
1399 * @since 1.8
1400 *
1401 * @brief Aborts any selection action on a part.
1402 *
1403 * @param[in] part
1404 *
1405 * @see edje_object_part_text_select_abort
1406 */
1407#define edje_obj_part_text_select_abort(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ABORT), EO_TYPECHECK(const char *, part)
1408
1409/**
1410 * @def edje_obj_part_text_select_begin
1411 * @since 1.8
1412 *
1413 * @brief Starts selecting at current cursor position
1414 *
1415 * @param[in] part
1416 *
1417 * @see edje_object_part_text_select_begin
1418 */
1419#define edje_obj_part_text_select_begin(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_BEGIN), EO_TYPECHECK(const char *, part)
1420
1421/**
1422 * @def edje_obj_part_text_select_extend
1423 * @since 1.8
1424 *
1425 * @brief Extends the current selection to the current cursor position
1426 *
1427 * @param[in] part
1428 *
1429 * @see edje_object_part_text_select_extend
1430 */
1431#define edje_obj_part_text_select_extend(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_EXTEND), EO_TYPECHECK(const char *, part)
1432
1433/**
1434 * @def edje_obj_part_text_imf_context_get
1435 * @since 1.8
1436 *
1437 * @brief Get the input method context in entry.
1438 *
1439 * @param[in] part
1440 * @param[out] ret
1441 *
1442 * @see edje_object_part_text_imf_context_get
1443 */
1444#define edje_obj_part_text_imf_context_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_IMF_CONTEXT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(void **, ret)
1445
1446/**
1447 * @def edje_obj_part_text_cursor_next
1448 * @since 1.8
1449 *
1450 * @brief Advances the cursor to the next cursor position.
1451 *
1452 * @param[in] part
1453 * @param[in] cur
1454 * @param[out] ret
1455 *
1456 * @see edje_object_part_text_cursor_next
1457 */
1458#define edje_obj_part_text_cursor_next(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_NEXT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
1459
1460/**
1461 * @def edje_obj_part_text_cursor_prev
1462 * @since 1.8
1463 *
1464 * @brief Moves the cursor to the previous char
1465 *
1466 * @param[in] part
1467 * @param[in] cur
1468 * @param[out] ret
1469 *
1470 * @see edje_object_part_text_cursor_prev
1471 */
1472#define edje_obj_part_text_cursor_prev(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_PREV), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
1473
1474/**
1475 * @def edje_obj_part_text_cursor_up
1476 * @since 1.8
1477 *
1478 * @brief Move the cursor to the char above the current cursor position.
1479 *
1480 * @param[in] part
1481 * @param[in] cur
1482 * @param[out] ret
1483 *
1484 * @see edje_object_part_text_cursor_up
1485 */
1486#define edje_obj_part_text_cursor_up(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_UP), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
1487
1488/**
1489 * @def edje_obj_part_text_cursor_down
1490 * @since 1.8
1491 *
1492 * @brief Moves the cursor to the char below the current cursor position.
1493 *
1494 * @param[in] part
1495 * @param[in] cur
1496 * @param[out] ret
1497 *
1498 * @see edje_object_part_text_cursor_down
1499 */
1500#define edje_obj_part_text_cursor_down(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_DOWN), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
1501
1502/**
1503 * @def edje_obj_part_text_cursor_begin_set
1504 * @since 1.8
1505 *
1506 * @brief Moves the cursor to the beginning of the text part
1507 *
1508 * @param[in] part
1509 * @param[in] cur
1510 *
1511 * @see edje_object_part_text_cursor_begin_set
1512 */
1513#define edje_obj_part_text_cursor_begin_set(part, cur) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_BEGIN_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur)
1514
1515/**
1516 * @def edje_obj_part_text_cursor_end_set
1517 * @since 1.8
1518 *
1519 * @brief Moves the cursor to the end of the text part.
1520 *
1521 * @param[in] part
1522 * @param[in] cur
1523 *
1524 * @see edje_object_part_text_cursor_end_set
1525 */
1526#define edje_obj_part_text_cursor_end_set(part, cur) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_END_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur)
1527
1528/**
1529 * @def edje_obj_part_text_cursor_copy
1530 * @since 1.8
1531 *
1532 * @brief Copy the cursor to another cursor.
1533 *
1534 * @param[in] part
1535 * @param[in] src
1536 * @param[in] dst
1537 *
1538 * @see edje_object_part_text_cursor_copy
1539 */
1540#define edje_obj_part_text_cursor_copy(part, src, dst) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_COPY), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, src), EO_TYPECHECK(Edje_Cursor, dst)
1541
1542/**
1543 * @def edje_obj_part_text_cursor_line_begin_set
1544 * @since 1.8
1545 *
1546 * @brief Move the cursor to the beginning of the line.
1547 *
1548 * @param[in] part
1549 * @param[in] cur
1550 *
1551 * @see edje_object_part_text_cursor_line_begin_set
1552 */
1553#define edje_obj_part_text_cursor_line_begin_set(part, cur) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_LINE_BEGIN_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur)
1554
1555/**
1556 * @def edje_obj_part_text_cursor_line_end_set
1557 * @since 1.8
1558 *
1559 * @brief Move the cursor to the end of the line.
1560 *
1561 * @param[in] part
1562 * @param[in] cur
1563 *
1564 * @see edje_object_part_text_cursor_line_end_set
1565 */
1566#define edje_obj_part_text_cursor_line_end_set(part, cur) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_LINE_END_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur)
1567
1568/**
1569 * @def edje_obj_part_text_cursor_coord_set
1570 * @since 1.8
1571 *
1572 * Position the given cursor to a X,Y position.
1573 *
1574 * @param[in] part
1575 * @param[in] cur
1576 * @param[in] x
1577 * @param[in] y
1578 * @param[out] ret
1579 *
1580 * @see edje_object_part_text_cursor_coord_set
1581 */
1582#define edje_obj_part_text_cursor_coord_set(part, cur, x, y, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_COORD_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Eina_Bool *, ret)
1583
1584/**
1585 * @def edje_obj_part_text_cursor_is_format_get
1586 * @since 1.8
1587 *
1588 * @brief Returns whether the cursor points to a format.
1589 *
1590 * @param[in] part
1591 * @param[in] cur
1592 * @param[out] ret
1593 *
1594 * @see edje_object_part_text_cursor_is_format_get
1595 */
1596#define edje_obj_part_text_cursor_is_format_get(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_IS_FORMAT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
1597
1598/**
1599 * @def edje_obj_part_text_cursor_is_visible_format_get
1600 * @since 1.8
1601 *
1602 * @brief Return true if the cursor points to a visible format
1603 *
1604 * @param[in] part
1605 * @param[in] cur
1606 * @param[out] ret
1607 *
1608 * @see edje_object_part_text_cursor_is_visible_format_get
1609 */
1610#define edje_obj_part_text_cursor_is_visible_format_get(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_IS_VISIBLE_FORMAT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
1611
1612/**
1613 * @def edje_obj_part_text_cursor_content_get
1614 * @since 1.8
1615 *
1616 * @brief Returns the content (char) at the cursor position.
1617 *
1618 * @param[in] part
1619 * @param[in] cur
1620 * @param[out] ret
1621 *
1622 * @see edje_object_part_text_cursor_content_get
1623 */
1624#define edje_obj_part_text_cursor_content_get(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_CONTENT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(char **, ret)
1625
1626/**
1627 * @def edje_obj_part_text_cursor_pos_set
1628 * @since 1.8
1629 *
1630 * @brief Sets the cursor position to the given value
1631 *
1632 * @param[in] part
1633 * @param[in] cur
1634 * @param[in] pos
1635 *
1636 * @see edje_object_part_text_cursor_pos_set
1637 */
1638#define edje_obj_part_text_cursor_pos_set(part, cur, pos) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_POS_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(int, pos)
1639
1640/**
1641 * @def edje_obj_part_text_cursor_pos_get
1642 * @since 1.8
1643 *
1644 * @brief Retrieves the current position of the cursor
1645 *
1646 * @param[in] part
1647 * @param[in] cur
1648 * @param[out] ret
1649 *
1650 * @see edje_object_part_text_cursor_pos_get
1651 */
1652#define edje_obj_part_text_cursor_pos_get(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_POS_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(int *, ret)
1653
1654/**
1655 * @def edje_obj_part_text_imf_context_reset
1656 * @since 1.8
1657 *
1658 * @brief Reset the input method context if needed.
1659 *
1660 * @param[in] part
1661 *
1662 * @see edje_object_part_text_imf_context_reset
1663 */
1664#define edje_obj_part_text_imf_context_reset(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_IMF_CONTEXT_RESET), EO_TYPECHECK(const char *, part)
1665
1666/**
1667 * @def edje_obj_part_text_input_panel_layout_set
1668 * @since 1.8
1669 *
1670 * @brief Set the layout of the input panel.
1671 *
1672 * @param[in] part
1673 * @param[in] layout
1674 *
1675 * @see edje_object_part_text_input_panel_layout_set
1676 */
1677#define edje_obj_part_text_input_panel_layout_set(part, layout) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LAYOUT_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Layout, layout)
1678
1679/**
1680 * @def edje_obj_part_text_input_panel_layout_get
1681 * @since 1.8
1682 *
1683 * @brief Get the layout of the input panel.
1684 *
1685 * @param[in] part
1686 * @param[out] ret
1687 *
1688 * @see edje_object_part_text_input_panel_layout_get
1689 */
1690#define edje_obj_part_text_input_panel_layout_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LAYOUT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Layout *, ret)
1691
1692/**
1693 * @def edje_obj_part_text_autocapital_type_set
1694 * @since 1.8
1695 *
1696 * @brief Set the autocapitalization type on the immodule.
1697 *
1698 * @param[in] part
1699 * @param[in] autocapital_type
1700 *
1701 * @see edje_object_part_text_autocapital_type_set
1702 */
1703#define edje_obj_part_text_autocapital_type_set(part, autocapital_type) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_AUTOCAPITAL_TYPE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Autocapital_Type, autocapital_type)
1704
1705/**
1706 * @def edje_obj_part_text_autocapital_type_get
1707 * @since 1.8
1708 *
1709 * @brief Retrieves the autocapitalization type
1710 *
1711 * @param[in] part
1712 * @param[out] ret
1713 *
1714 * @see edje_object_part_text_autocapital_type_get
1715 */
1716#define edje_obj_part_text_autocapital_type_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_AUTOCAPITAL_TYPE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Autocapital_Type *, ret)
1717
1718/**
1719 * @def edje_obj_part_text_prediction_allow_set
1720 * @since 1.8
1721 *
1722 * @brief Set whether the prediction is allowed or not.
1723 *
1724 * @param[in] part
1725 * @param[in] prediction
1726 *
1727 * @see edje_object_part_text_prediction_allow_set
1728 */
1729#define edje_obj_part_text_prediction_allow_set(part, prediction) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_PREDICTION_ALLOW_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, prediction)
1730
1731/**
1732 * @def edje_obj_part_text_prediction_allow_get
1733 * @since 1.8
1734 *
1735 * @brief Get whether the prediction is allowed or not.
1736 *
1737 * @param[in] part
1738 * @param[out] ret
1739 *
1740 * @see edje_object_part_text_prediction_allow_get
1741 */
1742#define edje_obj_part_text_prediction_allow_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_PREDICTION_ALLOW_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool *, ret)
1743
1744/**
1745 * @def edje_obj_part_text_input_panel_enabled_set
1746 * @since 1.8
1747 *
1748 * @brief Sets the attribute to show the input panel automatically.
1749 *
1750 * @param[in] part
1751 * @param[in] enabled
1752 *
1753 * @see edje_object_part_text_input_panel_enabled_set
1754 */
1755#define edje_obj_part_text_input_panel_enabled_set(part, enabled) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_ENABLED_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, enabled)
1756
1757/**
1758 * @def edje_obj_part_text_input_panel_enabled_get
1759 * @since 1.8
1760 *
1761 * @brief Retrieve the attribute to show the input panel automatically.
1762 *
1763 * @param[in] part
1764 * @param[out] ret
1765 *
1766 * @see edje_object_part_text_input_panel_enabled_get
1767 */
1768#define edje_obj_part_text_input_panel_enabled_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_ENABLED_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool *, ret)
1769
1770/**
1771 * @def edje_obj_part_text_input_panel_show
1772 * @since 1.8
1773 *
1774 * @brief Show the input panel (virtual keyboard) based on the input panel property such as layout, autocapital types, and so on.
1775 *
1776 * @param[in] part
1777 *
1778 * @see edje_object_part_text_input_panel_show
1779 */
1780#define edje_obj_part_text_input_panel_show(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_SHOW), EO_TYPECHECK(const char *, part)
1781
1782/**
1783 * @def edje_obj_part_text_input_panel_hide
1784 * @since 1.8
1785 *
1786 * @brief Hide the input panel (virtual keyboard).
1787 *
1788 * @param[in] part
1789 *
1790 * @see edje_object_part_text_input_panel_hide
1791 */
1792#define edje_obj_part_text_input_panel_hide(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_HIDE), EO_TYPECHECK(const char *, part)
1793
1794/**
1795 * @def edje_obj_part_text_input_panel_language_set
1796 * @since 1.8
1797 *
1798 * Set the language mode of the input panel.
1799 *
1800 * @param[in] part
1801 * @param[in] lang
1802 *
1803 * @see edje_object_part_text_input_panel_language_set
1804 */
1805#define edje_obj_part_text_input_panel_language_set(part, lang) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LANGUAGE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Lang, lang)
1806
1807/**
1808 * @def edje_obj_part_text_input_panel_language_get
1809 * @since 1.8
1810 *
1811 * Get the language mode of the input panel.
1812 *
1813 * @param[in] part
1814 * @param[out] ret
1815 *
1816 * @see edje_object_part_text_input_panel_language_get
1817 */
1818#define edje_obj_part_text_input_panel_language_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LANGUAGE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Lang *, ret)
1819
1820/**
1821 * @def edje_obj_part_text_input_panel_imdata_set
1822 * @since 1.8
1823 *
1824 * Set the input panel-specific data to deliver to the input panel.
1825 *
1826 * @param[in] part
1827 * @param[in] data
1828 * @param[in] len
1829 *
1830 * @see edje_object_part_text_input_panel_imdata_set
1831 */
1832#define edje_obj_part_text_input_panel_imdata_set(part, data, len) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_IMDATA_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const void *, data), EO_TYPECHECK(int, len)
1833
1834/**
1835 * @def edje_obj_part_text_input_panel_imdata_get
1836 * @since 1.8
1837 *
1838 * Get the specific data of the current active input panel.
1839 *
1840 * @param[in] part
1841 * @param[in] data
1842 * @param[in] len
1843 *
1844 * @see edje_object_part_text_input_panel_imdata_get
1845 */
1846#define edje_obj_part_text_input_panel_imdata_get(part, data, len) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_IMDATA_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(void *, data), EO_TYPECHECK(int *, len)
1847
1848/**
1849 * @def edje_obj_part_text_input_panel_return_key_type_set
1850 * @since 1.8
1851 *
1852 * Set the "return" key type. This type is used to set string or icon on the "return" key of the input panel.
1853 *
1854 * @param[in] part
1855 * @param[out] return_key_type
1856 *
1857 * @see edje_object_part_text_input_panel_return_key_type_set
1858 */
1859#define edje_obj_part_text_input_panel_return_key_type_set(part, return_key_type) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_TYPE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Return_Key_Type, return_key_type)
1860
1861/**
1862 * @def edje_obj_part_text_input_panel_return_key_type_get
1863 * @since 1.8
1864 *
1865 * Get the "return" key type.
1866 *
1867 * @param[in] part
1868 * @param[out] ret
1869 *
1870 * @see edje_object_part_text_input_panel_return_key_type_get
1871 */
1872#define edje_obj_part_text_input_panel_return_key_type_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_TYPE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Return_Key_Type *, ret)
1873
1874/**
1875 * @def edje_obj_part_text_input_panel_return_key_disabled_set
1876 * @since 1.8
1877 *
1878 * Set the return key on the input panel to be disabled.
1879 *
1880 * @param[in] part
1881 * @param[in] disabled
1882 *
1883 * @see edje_object_part_text_input_panel_return_key_disabled_set
1884 */
1885#define edje_obj_part_text_input_panel_return_key_disabled_set(part, disabled) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_DISABLED_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, disabled)
1886
1887/**
1888 * @def edje_obj_part_text_input_panel_return_key_disabled_get
1889 * @since 1.8
1890 *
1891 * Get whether the return key on the input panel should be disabled or not.
1892 *
1893 * @param[in] part
1894 * @param[out] ret
1895 *
1896 * @see edje_object_part_text_input_panel_return_key_disabled_get
1897 */
1898#define edje_obj_part_text_input_panel_return_key_disabled_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_DISABLED_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool *, ret)
1899
1900/**
1901 * @def edje_obj_text_insert_filter_callback_add
1902 * @since 1.8
1903 *
1904 * Add a filter function for newly inserted text.
1905 *
1906 * @param[in] part
1907 * @param[in] func
1908 * @param[in] data
1909 *
1910 * @see edje_object_text_insert_filter_callback_add
1911 */
1912#define edje_obj_text_insert_filter_callback_add(part, func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_ADD), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Filter_Cb, func), EO_TYPECHECK(void *, data)
1913
1914/**
1915 * @def edje_obj_text_insert_filter_callback_del
1916 * @since 1.8
1917 *
1918 * Delete a function from the filter list.
1919 *
1920 * @param[in] part
1921 * @param[in] func
1922 * @param[out] ret
1923 *
1924 * @see edje_object_text_insert_filter_callback_del
1925 */
1926#define edje_obj_text_insert_filter_callback_del(part, func, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_DEL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Filter_Cb, func), EO_TYPECHECK(void **, ret)
1927
1928/**
1929 * @def edje_obj_text_insert_filter_callback_del_full
1930 * @since 1.8
1931 *
1932 * Delete a function and matching user data from the filter list.
1933 *
1934 * @param[in] part
1935 * @param[in] func
1936 * @param[in] data
1937 * @param[out] ret
1938 *
1939 * @see edje_object_text_insert_filter_callback_del_full
1940 */
1941#define edje_obj_text_insert_filter_callback_del_full(part, func, data, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_DEL_FULL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Filter_Cb, func), EO_TYPECHECK(void *, data), EO_TYPECHECK(void **, ret)
1942
1943/**
1944 * @def edje_obj_text_markup_filter_callback_add
1945 * @since 1.8
1946 *
1947 * Add a markup filter function for newly inserted text.
1948 *
1949 * @param[in] part
1950 * @param[in] func
1951 * @param[in] data
1952 *
1953 * @see edje_object_text_markup_filter_callback_add
1954 */
1955#define edje_obj_text_markup_filter_callback_add(part, func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_ADD), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Markup_Filter_Cb, func), EO_TYPECHECK(void *, data)
1956
1957/**
1958 * @def edje_obj_text_markup_filter_callback_del
1959 * @since 1.8
1960 *
1961 * Delete a function from the markup filter list.
1962 *
1963 * @param[in] part
1964 * @param[in] func
1965 * @param[out] ret
1966 *
1967 * @see edje_object_text_markup_filter_callback_del
1968 */
1969#define edje_obj_text_markup_filter_callback_del(part, func, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_DEL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Markup_Filter_Cb, func), EO_TYPECHECK(void **, ret)
1970
1971/**
1972 * @def edje_obj_text_markup_filter_callback_del_full
1973 * @since 1.8
1974 *
1975 * Delete a function and matching user data from the markup filter list.
1976 *
1977 * @param[in] part
1978 * @param[in] func
1979 * @param[in] data
1980 * @param[out] ret
1981 *
1982 * @see edje_object_text_markup_filter_callback_del_full
1983 */
1984#define edje_obj_text_markup_filter_callback_del_full(part, func, data, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_DEL_FULL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Markup_Filter_Cb, func), EO_TYPECHECK(void *, data), EO_TYPECHECK(void **, ret)
1985
1986/**
1987 * @def edje_obj_part_swallow
1988 * @since 1.8
1989 *
1990 * @brief "Swallows" an object into one of the Edje object SWALLOW
1991 *
1992 * @param[in] part
1993 * @param[in] obj_swallow
1994 * @param[out] ret
1995 *
1996 * @see edje_object_part_swallow
1997 */
1998#define edje_obj_part_swallow(part, obj_swallow, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_SWALLOW), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, obj_swallow), EO_TYPECHECK(Eina_Bool *, ret)
1999
2000/**
2001 * @def edje_obj_part_unswallow
2002 * @since 1.8
2003 *
2004 * @brief Unswallow an object.
2005 *
2006 * @param[in] obj_swallow
2007 *
2008 * @see edje_object_part_unswallow
2009 */
2010#define edje_obj_part_unswallow(obj_swallow) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_UNSWALLOW), EO_TYPECHECK(Evas_Object *, obj_swallow)
2011
2012/**
2013 * @def edje_obj_part_swallow_get
2014 * @since 1.8
2015 *
2016 * @brief Get the object currently swallowed by a part.
2017 *
2018 * @param[in] part
2019 * @param[out] ret
2020 *
2021 * @see edje_object_part_swallow_get
2022 */
2023#define edje_obj_part_swallow_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_SWALLOW_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object **, ret)
2024
2025/**
2026 * @def edje_obj_size_min_get
2027 * @since 1.8
2028 *
2029 * @brief Get the minimum size specified -- as an EDC property -- for a
2030 * given Edje object
2031 *
2032 * @param[out] minw
2033 * @param[out] minh
2034 *
2035 * @see edje_object_size_min_get
2036 */
2037#define edje_obj_size_min_get(minw, minh) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIZE_MIN_GET), EO_TYPECHECK(Evas_Coord *, minw), EO_TYPECHECK(Evas_Coord *, minh)
2038
2039/**
2040 * @def edje_obj_size_max_get
2041 * @since 1.8
2042 *
2043 * @brief Get the maximum size specified -- as an EDC property -- for a
2044 * given Edje object
2045 *
2046 * @param[out] maxw
2047 * @param[out] maxh
2048 *
2049 * @see edje_object_size_max_get
2050 */
2051#define edje_obj_size_max_get(maxw, maxh) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIZE_MAX_GET), EO_TYPECHECK(Evas_Coord *, maxw), EO_TYPECHECK(Evas_Coord *, maxh)
2052
2053/**
2054 * @def edje_obj_calc_force
2055 * @since 1.8
2056 *
2057 * @brief Force a Size/Geometry calculation.
2058 *
2059 *
2060 * @see edje_object_calc_force
2061 */
2062#define edje_obj_calc_force() EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_CALC_FORCE)
2063
2064/**
2065 * @def edje_obj_size_min_calc
2066 * @since 1.8
2067 *
2068 * @brief Calculate the minimum required size for a given Edje object.
2069 *
2070 * @param[out] minw
2071 * @param[out] minh
2072 *
2073 * @see edje_object_size_min_calc
2074 */
2075#define edje_obj_size_min_calc(minw, minh) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIZE_MIN_CALC), EO_TYPECHECK(Evas_Coord *, minw), EO_TYPECHECK(Evas_Coord *, minh)
2076
2077/**
2078 * @def edje_obj_parts_extends_calc
2079 * @since 1.8
2080 *
2081 * Calculate the geometry of the region, relative to a given Edje
2082 *
2083 * @param[out] x
2084 * @param[out] y
2085 * @param[out] w
2086 * @param[out] h
2087 * @param[out] ret
2088 *
2089 * @see edje_object_parts_extends_calc
2090 */
2091#define edje_obj_parts_extends_calc(x, y, w, h, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PARTS_EXTENDS_CALC), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h), EO_TYPECHECK(Eina_Bool *, ret)
2092
2093/**
2094 * @def edje_obj_size_min_restricted_calc
2095 * @since 1.8
2096 *
2097 * @brief Calculate the minimum required size for a given Edje object.
2098 *
2099 * @param[out] minw
2100 * @param[out] minh
2101 * @param[in] restrictedw
2102 * @param[in] restrictedh
2103 *
2104 * @see edje_object_size_min_restricted_calc
2105 */
2106#define edje_obj_size_min_restricted_calc(minw, minh, restrictedw, restrictedh) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIZE_MIN_RESTRICTED_CALC), EO_TYPECHECK(Evas_Coord *, minw), EO_TYPECHECK(Evas_Coord *, minh), EO_TYPECHECK(Evas_Coord, restrictedw), EO_TYPECHECK(Evas_Coord, restrictedh)
2107
2108/**
2109 * @def edje_obj_part_state_get
2110 * @since 1.8
2111 *
2112 * @brief Returns the state of the Edje part.
2113 *
2114 * @param[in] part
2115 * @param[out] val_ret
2116 * @param[out] ret
2117 *
2118 * @see edje_object_part_state_get
2119 */
2120#define edje_obj_part_state_get(part, val_ret, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_STATE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, val_ret), EO_TYPECHECK(const char **, ret)
2121
2122/**
2123 * @def edje_obj_part_drag_dir_get
2124 * @since 1.8
2125 *
2126 * @brief Determine dragable directions.
2127 *
2128 * @param[in] part
2129 * @param[out] ret
2130 *
2131 * @see edje_object_part_drag_dir_get
2132 */
2133#define edje_obj_part_drag_dir_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_DIR_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Drag_Dir *, ret)
2134
2135/**
2136 * @def edje_obj_part_drag_value_set
2137 * @since 1.8
2138 *
2139 * @brief Set the dragable object location.
2140 *
2141 * @param[in] part
2142 * @param[in] dx
2143 * @param[in] dy
2144 * @param[out] ret
2145 *
2146 * @see edje_object_part_drag_value_set
2147 */
2148#define edje_obj_part_drag_value_set(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_VALUE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
2149
2150/**
2151 * @def edje_obj_part_drag_value_get
2152 * @since 1.8
2153 *
2154 * @brief Get the dragable object location.
2155 *
2156 * @param[in] part
2157 * @param[out] dx
2158 * @param[out] dy
2159 * @param[out] ret
2160 *
2161 * @see edje_object_part_drag_value_get
2162 */
2163#define edje_obj_part_drag_value_get(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_VALUE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, dx), EO_TYPECHECK(double *, dy), EO_TYPECHECK(Eina_Bool *, ret)
2164
2165/**
2166 * @def edje_obj_part_drag_size_set
2167 * @since 1.8
2168 *
2169 * @brief Set the dragable object size.
2170 *
2171 * @param[in] part
2172 * @param[in] dw
2173 * @param[in] dh
2174 * @param[out] ret
2175 *
2176 * @see edje_object_part_drag_size_set
2177 */
2178#define edje_obj_part_drag_size_set(part, dw, dh, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_SIZE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dw), EO_TYPECHECK(double, dh), EO_TYPECHECK(Eina_Bool *, ret)
2179
2180/**
2181 * @def edje_obj_part_drag_size_get
2182 * @since 1.8
2183 *
2184 * @brief Get the dragable object size.
2185 *
2186 * @param[in] part
2187 * @param[out] dw
2188 * @param[out] dh
2189 * @param[out] ret
2190 *
2191 * @see edje_object_part_drag_size_get
2192 */
2193#define edje_obj_part_drag_size_get(part, dw, dh, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_SIZE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, dw), EO_TYPECHECK(double *, dh), EO_TYPECHECK(Eina_Bool *, ret)
2194
2195/**
2196 * @def edje_obj_part_drag_step_set
2197 * @since 1.8
2198 *
2199 * @brief Sets the drag step increment.
2200 *
2201 * @param[in] part
2202 * @param[in] dx
2203 * @param[in] dy
2204 * @param[out] ret
2205 *
2206 * @see edje_object_part_drag_step_set
2207 */
2208#define edje_obj_part_drag_step_set(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_STEP_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
2209
2210/**
2211 * @def edje_obj_part_drag_step_get
2212 * @since 1.8
2213 *
2214 * @brief Gets the drag step increment values.
2215 *
2216 * @param[in] part
2217 * @param[out] dx
2218 * @param[out] dy
2219 * @param[out] ret
2220 *
2221 * @see edje_object_part_drag_step_get
2222 */
2223#define edje_obj_part_drag_step_get(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_STEP_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, dx), EO_TYPECHECK(double *, dy), EO_TYPECHECK(Eina_Bool *, ret)
2224
2225/**
2226 * @def edje_obj_part_drag_page_set
2227 * @since 1.8
2228 *
2229 * @brief Sets the page step increments.
2230 *
2231 * @param[in] part
2232 * @param[in] dx
2233 * @param[in] dy
2234 * @param[out] ret
2235 *
2236 * @see edje_object_part_drag_page_set
2237 */
2238#define edje_obj_part_drag_page_set(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_PAGE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
2239
2240/**
2241 * @def edje_obj_part_drag_page_get
2242 * @since 1.8
2243 *
2244 * @brief Gets the page step increments.
2245 *
2246 * @param[in] part
2247 * @param[out] dx
2248 * @param[out] dy
2249 * @param[out] ret
2250 *
2251 * @see edje_object_part_drag_page_get
2252 */
2253#define edje_obj_part_drag_page_get(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_PAGE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, dx), EO_TYPECHECK(double *, dy), EO_TYPECHECK(Eina_Bool *, ret)
2254
2255/**
2256 * @def edje_obj_part_drag_step
2257 * @since 1.8
2258 *
2259 * @brief Steps the dragable x,y steps.
2260 *
2261 * @param[in] part
2262 * @param[in] dx
2263 * @param[in] dy
2264 * @param[out] ret
2265 *
2266 * @see edje_object_part_drag_step
2267 */
2268#define edje_obj_part_drag_step(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_STEP), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
2269
2270/**
2271 * @def edje_obj_part_drag_page
2272 * @since 1.8
2273 *
2274 * @brief Pages x,y steps.
2275 *
2276 * @param[in] part
2277 * @param[in] dx
2278 * @param[in] dy
2279 * @param[out] ret
2280 *
2281 * @see edje_object_part_drag_page
2282 */
2283#define edje_obj_part_drag_page(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_PAGE), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
2284
2285/**
2286 * @def edje_obj_part_box_append
2287 * @since 1.8
2288 *
2289 * @brief Appends an object to the box.
2290 *
2291 * @param[in] part
2292 * @param[in] child
2293 * @param[out] ret
2294 *
2295 * @see edje_object_part_box_append
2296 */
2297#define edje_obj_part_box_append(part, child, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_APPEND), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Eina_Bool *, ret)
2298
2299/**
2300 * @def edje_obj_part_box_prepend
2301 * @since 1.8
2302 *
2303 * @brief Prepends an object to the box.
2304 *
2305 * @param[in] part
2306 * @param[in] child
2307 * @param[out] ret
2308 *
2309 * @see edje_object_part_box_prepend
2310 */
2311#define edje_obj_part_box_prepend(part, child, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_PREPEND), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Eina_Bool *, ret)
2312
2313/**
2314 * @def edje_obj_part_box_insert_before
2315 * @since 1.8
2316 *
2317 * @brief Adds an object to the box.
2318 *
2319 * @param[in] part
2320 * @param[in] child
2321 * @param[in] reference
2322 * @param[out] ret
2323 *
2324 * @see edje_object_part_box_insert_before
2325 */
2326#define edje_obj_part_box_insert_before(part, child, reference, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_INSERT_BEFORE), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(const Evas_Object *, reference), EO_TYPECHECK(Eina_Bool *, ret)
2327
2328/**
2329 * @def edje_obj_part_box_insert_at
2330 * @since 1.8
2331 *
2332 * @brief Inserts an object to the box.
2333 *
2334 * @param[in] part
2335 * @param[in] child
2336 * @param[in] pos
2337 * @param[out] ret
2338 *
2339 * @see edje_object_part_box_insert_at
2340 */
2341#define edje_obj_part_box_insert_at(part, child, pos, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_INSERT_AT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(unsigned int, pos), EO_TYPECHECK(Eina_Bool *, ret)
2342
2343/**
2344 * @def edje_obj_part_box_remove
2345 * @since 1.8
2346 *
2347 * @brief Removes an object from the box.
2348 *
2349 * @param[in] part
2350 * @param[in] child
2351 * @param[out] ret
2352 *
2353 * @see edje_object_part_box_remove
2354 */
2355#define edje_obj_part_box_remove(part, child, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_REMOVE), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Evas_Object **, ret)
2356
2357/**
2358 * @def edje_obj_part_box_remove_at
2359 * @since 1.8
2360 *
2361 * @brief Removes an object from the box.
2362 *
2363 * @param[in] part
2364 * @param[in] pos
2365 * @param[out] ret
2366 *
2367 * @see edje_object_part_box_remove_at
2368 */
2369#define edje_obj_part_box_remove_at(part, pos, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_REMOVE_AT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(unsigned int, pos), EO_TYPECHECK(Evas_Object **, ret)
2370
2371/**
2372 * @def edje_obj_part_box_remove_all
2373 * @since 1.8
2374 *
2375 * @brief Removes all elements from the box.
2376 *
2377 * @param[in] part
2378 * @param[in] clear
2379 * @param[out] ret
2380 *
2381 * @see edje_object_part_box_remove_all
2382 */
2383#define edje_obj_part_box_remove_all(part, clear, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_REMOVE_ALL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, clear), EO_TYPECHECK(Eina_Bool *, ret)
2384
2385/**
2386 * @def edje_obj_access_part_list_get
2387 * @since 1.8
2388 *
2389 * @brief Retrieve a list all accessibility part names
2390 *
2391 * @param[out] ret
2392 *
2393 * @see edje_object_access_part_list_get
2394 */
2395#define edje_obj_access_part_list_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_ACCESS_PART_LIST_GET), EO_TYPECHECK(Eina_List **, ret)
2396
2397/**
2398 * @def edje_obj_part_table_child_get
2399 * @since 1.8
2400 *
2401 * @brief Retrieve a child from a table
2402 *
2403 * @param[in] part
2404 * @param[in] col
2405 * @param[in] row
2406 * @param[out] ret
2407 *
2408 * @see edje_object_part_table_child_get
2409 */
2410#define edje_obj_part_table_child_get(part, col, row, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_CHILD_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(unsigned int, col), EO_TYPECHECK(unsigned int, row), EO_TYPECHECK(Evas_Object **, ret)
2411
2412/**
2413 * @def edje_obj_part_table_pack
2414 * @since 1.8
2415 *
2416 * @brief Packs an object into the table.
2417 *
2418 * @param[in] part
2419 * @param[in] child_obj
2420 * @param[in] col
2421 * @param[in] row
2422 * @param[in] colspan
2423 * @param[in] rowspan
2424 * @param[out] ret
2425 *
2426 * @see edje_object_part_table_pack
2427 */
2428#define edje_obj_part_table_pack(part, child_obj, col, row, colspan, rowspan, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_PACK), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child_obj), EO_TYPECHECK(unsigned short, col), EO_TYPECHECK(unsigned short, row), EO_TYPECHECK(unsigned short, colspan), EO_TYPECHECK(unsigned short, rowspan), EO_TYPECHECK(Eina_Bool *, ret)
2429
2430/**
2431 * @def edje_obj_part_table_unpack
2432 * @since 1.8
2433 *
2434 * @brief Removes an object from the table.
2435 *
2436 * @param[in] part
2437 * @param[in] child_obj
2438 * @param[out] ret
2439 *
2440 * @see edje_object_part_table_unpack
2441 */
2442#define edje_obj_part_table_unpack(part, child_obj, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_UNPACK), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child_obj), EO_TYPECHECK(Eina_Bool *, ret)
2443
2444/**
2445 * @def edje_obj_part_table_col_row_size_get
2446 * @since 1.8
2447 *
2448 * @brief Gets the number of columns and rows the table has.
2449 *
2450 * @param[in] part
2451 * @param[out] cols
2452 * @param[out] rows
2453 * @param[out] ret
2454 *
2455 * @see edje_object_part_table_col_row_size_get
2456 */
2457#define edje_obj_part_table_col_row_size_get(part, cols, rows, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_COL_ROW_SIZE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(int *, cols), EO_TYPECHECK(int *, rows), EO_TYPECHECK(Eina_Bool *, ret)
2458
2459/**
2460 * @def edje_obj_part_table_clear
2461 * @since 1.8
2462 *
2463 * @brief Removes all object from the table.
2464 *
2465 * @param[in] part
2466 * @param[in] clear
2467 * @param[out] ret
2468 *
2469 * @see edje_object_part_table_clear
2470 */
2471#define edje_obj_part_table_clear(part, clear, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_CLEAR), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, clear), EO_TYPECHECK(Eina_Bool *, ret)
2472
2473/**
2474 * @def edje_obj_perspective_set
2475 * @since 1.8
2476 *
2477 * Set the given perspective object on this Edje object.
2478 *
2479 * @param[in] ps
2480 *
2481 * @see edje_object_perspective_set
2482 */
2483#define edje_obj_perspective_set(ps) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PERSPECTIVE_SET), EO_TYPECHECK(Edje_Perspective *, ps)
2484
2485/**
2486 * @def edje_obj_perspective_get
2487 * @since 1.8
2488 *
2489 * Get the current perspective used on this Edje object.
2490 *
2491 * @param[out] ret
2492 *
2493 * @see edje_object_perspective_get
2494 */
2495#define edje_obj_perspective_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PERSPECTIVE_GET), EO_TYPECHECK(const Edje_Perspective **, ret)
2496
2497/**
2498 * @def edje_obj_preload
2499 * @since 1.8
2500 *
2501 * @brief Preload the images on the Edje Object in the background.
2502 *
2503 * @param[in] cancel
2504 * @param[out] ret
2505 *
2506 * @see edje_object_preload
2507 */
2508#define edje_obj_preload(cancel, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PRELOAD), EO_TYPECHECK(Eina_Bool, cancel), EO_TYPECHECK(Eina_Bool *, ret)
2509
2510/**
2511 * @def edje_obj_update_hints_set
2512 * @since 1.8
2513 *
2514 * @brief Edje will automatically update the size hints on itself.
2515 *
2516 * @param[in] update
2517 *
2518 * @see edje_object_update_hints_set
2519 */
2520#define edje_obj_update_hints_set(update) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_UPDATE_HINTS_SET), EO_TYPECHECK(Eina_Bool, update)
2521
2522/**
2523 * @def edje_obj_update_hints_get
2524 * @since 1.8
2525 *
2526 * @brief Wether or not Edje will update size hints on itself.
2527 *
2528 * @param[out] ret
2529 *
2530 * @see edje_object_update_hints_get
2531 */
2532#define edje_obj_update_hints_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_UPDATE_HINTS_GET), EO_TYPECHECK(Eina_Bool *, ret)
2533
2534
2535/**
2536 * @def edje_obj_part_external_object_get
2537 * @since 1.8
2538 *
2539 * @brief Get the object created by this external part.
2540 *
2541 * @param[in] part
2542 * @param[out] ret
2543 *
2544 * @see edje_object_part_external_object_get
2545 */
2546#define edje_obj_part_external_object_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_OBJECT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object **, ret)
2547
2548/**
2549 * @def edje_obj_part_external_param_set
2550 * @since 1.8
2551 *
2552 * @brief Set the parameter for the external part.
2553 *
2554 * @param[in] part
2555 * @param[in] param
2556 * @param[out] ret
2557 *
2558 * @see edje_object_part_external_param_set
2559 */
2560#define edje_obj_part_external_param_set(part, param, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const Edje_External_Param *, param), EO_TYPECHECK(Eina_Bool *, ret)
2561
2562/**
2563 * @def edje_obj_part_external_param_get
2564 * @since 1.8
2565 *
2566 * @brief Get the parameter for the external part.
2567 *
2568 * @param[in] part
2569 * @param[out] param
2570 * @param[out] ret
2571 *
2572 * @see edje_object_part_external_param_get
2573 */
2574#define edje_obj_part_external_param_get(part, param, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_External_Param *, param), EO_TYPECHECK(Eina_Bool *, ret)
2575
2576/**
2577 * @def edje_obj_part_external_content_get
2578 * @since 1.8
2579 *
2580 * @brief Get an object contained in an part of type EXTERNAL
2581 *
2582 * @param[in] part
2583 * @param[out] content
2584 * @param[out] ret
2585 *
2586 * @see edje_object_part_external_content_get
2587 */
2588#define edje_obj_part_external_content_get(part, content, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_CONTENT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, content), EO_TYPECHECK(Evas_Object **, ret)
2589
2590/**
2591 * @def edje_obj_part_external_param_type_get
2592 * @since 1.8
2593 *
2594 * Facility to query the type of the given parameter of the given part.
2595 *
2596 * @param[in] part
2597 * @param[out] param
2598 * @param[out] ret
2599 *
2600 * @see edje_object_part_external_param_type_get
2601 */
2602#define edje_obj_part_external_param_type_get(part, param, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_TYPE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, param), EO_TYPECHECK(Edje_External_Param_Type *, ret)
2603
2604/**
2605 * @def edje_obj_file_set
2606 * @since 1.8
2607 *
2608 * @param[in] file in
2609 * @param[in] group in
2610 * @param[in] nested in
2611 * @param[out] ret out
2612 *
2613 * @see edje_object_file_set
2614 */
2615#define edje_obj_file_set(file, group, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_FILE_SET), EO_TYPECHECK(const char*, file), EO_TYPECHECK(const char *, group), EO_TYPECHECK(Eina_Bool *, ret)
2616
2617/**
2618 * @def edje_obj_file_get
2619 * @since 1.8
2620 *
2621 * @brief Get the file and group name that a given Edje object is bound to
2622 *
2623 * @param[out] file
2624 * @param[out] group
2625 *
2626 * @see edje_object_file_get
2627 */
2628#define edje_obj_file_get(file, group) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, group)
2629
2630/**
2631 * @def edje_obj_load_error_get
2632 * @since 1.8
2633 *
2634 * @brief Gets the (last) file loading error for a given Edje object
2635 *
2636 * @param[out] ret
2637 *
2638 * @see edje_object_load_error_get
2639 */
2640#define edje_obj_load_error_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_LOAD_ERROR_GET), EO_TYPECHECK(Edje_Load_Error *, ret)
2641
2642
2643/**
2644 * @def edje_obj_message_send
2645 * @since 1.8
2646 *
2647 * @brief Send an (Edje) message to a given Edje object
2648 *
2649 * @param[in] type
2650 * @param[in] id
2651 * @param[in] msg
2652 *
2653 * @see edje_object_message_send
2654 */
2655#define edje_obj_message_send(type, id, msg) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MESSAGE_SEND), EO_TYPECHECK(Edje_Message_Type, type), EO_TYPECHECK(int, id), EO_TYPECHECK(void *, msg)
2656
2657/**
2658 * @def edje_obj_message_handler_set
2659 * @since 1.8
2660 *
2661 * @brief Set an Edje message handler function for a given Edje object.
2662 *
2663 * @param[in] func
2664 * @param[in] data
2665 *
2666 * @see edje_object_message_handler_set
2667 */
2668#define edje_obj_message_handler_set(func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MESSAGE_HANDLER_SET), EO_TYPECHECK(Edje_Message_Handler_Cb, func), EO_TYPECHECK(void *, data)
2669
2670/**
2671 * @def edje_obj_message_signal_process
2672 * @since 1.8
2673 *
2674 * @brief Process an object's message queue.
2675 *
2676 *
2677 * @see edje_object_message_signal_process
2678 */
2679#define edje_obj_message_signal_process() EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MESSAGE_SIGNAL_PROCESS)
2680
2681
2682/**
2683 * @def edje_obj_signal_callback_add
2684 * @since 1.8
2685 *
2686 * @brief Add a callback for an arriving Edje signal, emitted by
2687 * a given Ejde object.
2688 *
2689 * @param[in] emission
2690 * @param[in] source
2691 * @param[in] func
2692 * @param[in] data
2693 *
2694 * @see edje_object_signal_callback_add
2695 */
2696#define edje_obj_signal_callback_add(emission, source, func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIGNAL_CALLBACK_ADD), EO_TYPECHECK(const char *, emission), EO_TYPECHECK(const char *, source), EO_TYPECHECK(Edje_Signal_Cb, func), EO_TYPECHECK(void *, data)
2697
2698/**
2699 * @def edje_obj_signal_callback_del
2700 * @since 1.8
2701 *
2702 * @brief Remove a signal-triggered callback from an object.
2703 *
2704 * @param[in] emission
2705 * @param[in] source
2706 * @param[in] func
2707 * @param[out] ret
2708 *
2709 * @see edje_object_signal_callback_del
2710 */
2711#define edje_obj_signal_callback_del(emission, source, func, data, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIGNAL_CALLBACK_DEL), EO_TYPECHECK(const char *, emission), EO_TYPECHECK(const char *, source), EO_TYPECHECK(Edje_Signal_Cb, func), EO_TYPECHECK(void *, data), EO_TYPECHECK(void **, ret)
2712
2713/**
2714 * @def edje_obj_signal_emit
2715 * @since 1.8
2716 *
2717 * @brief Send/emit an Edje signal to a given Edje object
2718 *
2719 * @param[in] emission
2720 * @param[in] source
2721 *
2722 * @see edje_object_signal_emit
2723 */
2724#define edje_obj_signal_emit(emission, source) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIGNAL_EMIT), EO_TYPECHECK(const char *, emission), EO_TYPECHECK(const char *, source)
2725
2726/**
2727 * @def edje_obj_play_set
2728 * @since 1.8
2729 *
2730 * @brief Set the Edje object to playing or paused states.
2731 *
2732 * @param[in] play
2733 *
2734 * @see edje_object_play_set
2735 */
2736#define edje_obj_play_set(play) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PLAY_SET), EO_TYPECHECK(Eina_Bool, play)
2737
2738/**
2739 * @def edje_obj_play_get
2740 * @since 1.8
2741 *
2742 * @brief Get the Edje object's state.
2743 *
2744 * @param[out] ret
2745 *
2746 * @see edje_object_play_get
2747 */
2748#define edje_obj_play_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PLAY_GET), EO_TYPECHECK(Eina_Bool *, ret)
2749
2750/**
2751 * @def edje_obj_animation_set
2752 * @since 1.8
2753 *
2754 * @brief Set the object's animation state.
2755 *
2756 * @param[in] on
2757 *
2758 * @see edje_object_animation_set
2759 */
2760#define edje_obj_animation_set(on) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_ANIMATION_SET), EO_TYPECHECK(Eina_Bool, on)
2761
2762/**
2763 * @def edje_obj_animation_get
2764 * @since 1.8
2765 *
2766 * @brief Get the Edje object's animation state.
2767 *
2768 * @param[out] ret
2769 *
2770 * @see edje_object_animation_get
2771 */
2772#define edje_obj_animation_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_ANIMATION_GET), EO_TYPECHECK(Eina_Bool *, ret)
2773
2774#define EDJE_EDIT_CLASS edje_edit_class_get()
2775
2776const Eo_Class *edje_edit_class_get(void) EINA_CONST;
2777
2778/**
2779 * @defgroup Edje_External_Part_Group Edje Use of External Parts
2780 *
2781 * @brief Functions to manipulate parts of type EXTERNAL.
2782 *
2783 * Edje supports parts of type EXTERNAL, which will call plugins defined by the user
2784 * to create and manipulate the object that's allocated in that part.
2785 *
2786 * Parts of type external may carry extra properties that have meanings defined
2787 * by the external plugin. For instance, it may be a string that defines a button
2788 * label and setting this property will change that label on the fly.
2789 *
2790 * @ingroup Edje_External_Group
2791 *
2792 * @{
2793 */
2794
2795/**
2796 * @brief Get the object created by this external part.
2797 *
2798 * Parts of type external creates the part object using information
2799 * provided by external plugins. It's somehow like "swallow"
2800 * (edje_object_part_swallow()), but it's all set automatically.
2801 *
2802 * This function returns the part created by such external plugins and
2803 * being currently managed by this Edje.
2804 *
2805 * @note Almost all swallow rules apply: you should not move, resize,
2806 * hide, show, set the color or clipper of such part. It's a bit
2807 * more restrictive as one must @b never delete this object!
2808 *
2809 * @param obj A valid Evas_Object handle
2810 * @param part The part name
2811 * @return The externally created object, or NULL if there is none or
2812 * part is not an external.
2813 */
2814EAPI Evas_Object *edje_object_part_external_object_get (const Evas_Object *obj, const char *part);
2815
2816/**
2817 * @brief Set the parameter for the external part.
2818 *
2819 * Parts of type external may carry extra properties that have
2820 * meanings defined by the external plugin. For instance, it may be a
2821 * string that defines a button label and setting this property will
2822 * change that label on the fly.
2823 *
2824 * @note external parts have parameters set when they change
2825 * states. Those parameters will never be changed by this
2826 * function. The interpretation of how state_set parameters and
2827 * param_set will interact is up to the external plugin.
2828 *
2829 * @note this function will not check if parameter value is valid
2830 * using #Edje_External_Param_Info minimum, maximum, valid
2831 * choices and others. However these should be checked by the
2832 * underlying implementation provided by the external
2833 * plugin. This is done for performance reasons.
2834 *
2835 * @param obj A valid Evas_Object handle
2836 * @param part The part name
2837 * @param param the parameter details, including its name, type and
2838 * actual value. This pointer should be valid, and the
2839 * parameter must exist in
2840 * #Edje_External_Type::parameters_info, with the exact type,
2841 * otherwise the operation will fail and @c EINA_FALSE will be
2842 * returned.
2843 *
2844 * @return @c EINA_TRUE if everything went fine, @c EINA_FALSE on errors.
2845 */
2846EAPI Eina_Bool edje_object_part_external_param_set (Evas_Object *obj, const char *part, const Edje_External_Param *param);
2847
2848/**
2849 * @brief Get the parameter for the external part.
2850 *
2851 * Parts of type external may carry extra properties that have
2852 * meanings defined by the external plugin. For instance, it may be a
2853 * string that defines a button label. This property can be modified by
2854 * state parameters, by explicit calls to
2855 * edje_object_part_external_param_set() or getting the actual object
2856 * with edje_object_part_external_object_get() and calling native
2857 * functions.
2858 *
2859 * This function asks the external plugin what is the current value,
2860 * independent on how it was set.
2861 *
2862 * @param obj A valid Evas_Object handle
2863 * @param part The part name
2864
2865 * @param param the parameter details. It is used as both input and
2866 * output variable. This pointer should be valid, and the
2867 * parameter must exist in
2868 * #Edje_External_Type::parameters_info, with the exact type,
2869 * otherwise the operation will fail and @c EINA_FALSE will be
2870 * returned.
2871 *
2872 * @return @c EINA_TRUE if everything went fine and @p param members
2873 * are filled with information, @c EINA_FALSE on errors and @p
2874 * param member values are not set or valid.
2875 */
2876EAPI Eina_Bool edje_object_part_external_param_get (const Evas_Object *obj, const char *part, Edje_External_Param *param);
2877
2878/**
2879 * @brief Get an object contained in an part of type EXTERNAL
2880 *
2881 * The @p content string must not be NULL. Its actual value depends on the
2882 * code providing the EXTERNAL.
2883 *
2884 * @param obj The Edje object
2885 * @param part The name of the part holding the EXTERNAL
2886 * @param content A string identifying which content from the EXTERNAL to get
2887 */
2888EAPI Evas_Object *edje_object_part_external_content_get (const Evas_Object *obj, const char *part, const char *content);
2889
2890/**
2891 * Facility to query the type of the given parameter of the given part.
2892 *
2893 * @param obj A valid Evas_Object handle
2894 * @param part The part name
2895 * @param param the parameter name to use.
2896 *
2897 * @return @c EDJE_EXTERNAL_PARAM_TYPE_MAX on errors, or another value
2898 * from #Edje_External_Param_Type on success.
2899 */
2900EAPI Edje_External_Param_Type edje_object_part_external_param_type_get (const Evas_Object *obj, const char *part, const char *param);
2901
2902/**
2903 * @}
2904 */
2905
2906/**
2907 * @defgroup Edje_External_Plugin_Development_Group Edje Development of External Plugins
2908 *
2909 * @brief Functions to register, unregister EXTERNAL types and develop the plugins.
2910 *
2911 * This group dicusses functions useful for the development of new plugins.
2912 * These functions deal with the newly EXTERNAL types by registering, unregistering and manipulating them.
2913 *
2914 * @ingroup Edje_External_Group
2915 *
2916 * @{
2917 */
2918
2919/**
2920 * Register a type to be used by EXTERNAL parts.
2921 *
2922 * Parts of type EXTERNAL will call user defined functions
2923 * to create and manipulate the object that's allocated in that part. This is
2924 * done by expecifying in the @c source property of the part the name of the
2925 * external to use, which must be one registered with this function.
2926 *
2927 * @param type_name name to register and be known by edje's "source:"
2928 * parameter of "type: EXTERNAL" parts.
2929 * @param type_info meta-information describing how to interact with it.
2930 *
2931 * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like
2932 * type already registered).
2933 *
2934 * @see edje_external_type_array_register()
2935 */
2936EAPI Eina_Bool edje_external_type_register (const char *type_name, const Edje_External_Type *type_info);
2937
2938/**
2939 * Unregister a previously registered EXTERNAL type.
2940 *
2941 * @param type_name name to unregister. It should have been registered with
2942 * edje_external_type_register() before.
2943 *
2944 * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like
2945 * type_name did not exist).
2946 *
2947 * @see edje_external_type_array_unregister()
2948 */
2949EAPI Eina_Bool edje_external_type_unregister (const char *type_name);
2950
2951/**
2952 * Register a batch of types and their information.
2953 *
2954 * When several types will be registered it is recommended to use this
2955 * function instead of several calls to edje_external_type_register(), as it
2956 * is faster.
2957 *
2958 * @note The contents of the array will be referenced directly for as long as
2959 * the type remains registered, so both the @c name and @c info in the
2960 * @p array must be kept alive during all this period (usually, the entire
2961 * program lifetime). The most common case would be to keep the array as a
2962 * @c static @c const type anyway.
2963 *
2964 * @param array @c NULL terminated array with type name and
2965 * information. Note that type name or information are
2966 * referenced directly, so they must be kept alive after
2967 * this function returns!
2968 *
2969 * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like
2970 * type already registered).
2971 *
2972 * @see edje_external_type_register()
2973 */
2974EAPI void edje_external_type_array_register (const Edje_External_Type_Info *array);
2975
2976/**
2977 * Unregister a batch of given external type previously registered.
2978 *
2979 * @param array @c NULL terminated array, should be the same as the
2980 * one used to register with edje_external_type_array_register()
2981 *
2982 * @see edje_external_type_unregister()
2983 */
2984EAPI void edje_external_type_array_unregister (const Edje_External_Type_Info *array);
2985
2986/**
2987 * Return the current ABI version for Edje_External_Type structure.
2988 *
2989 * Always check this number before accessing Edje_External_Type in
2990 * your own software. If the number is not the same, your software may
2991 * access invalid memory and crash, or just get garbage values.
2992 *
2993 * @warning @b NEVER, EVER define your own Edje_External_Type using the
2994 * return of this function as it will change as Edje library
2995 * (libedje.so) changes, but your type definition will
2996 * not. Instead, use #EDJE_EXTERNAL_TYPE_ABI_VERSION.
2997 *
2998 * Summary:
2999 * - use edje_external_type_abi_version_get() to check.
3000 * - use #EDJE_EXTERNAL_TYPE_ABI_VERSION to define/declare.
3001 *
3002 * @return The external ABI version the Edje library was compiled with. That
3003 * is, the value #EDJE_EXTERNAL_TYPE_ABI_VERSION had at that moment.
3004 */
3005EAPI unsigned int edje_external_type_abi_version_get (void) EINA_CONST;
3006
3007/**
3008 * Returns an interator of all the registered EXTERNAL types.
3009 *
3010 * Each item in the iterator is an @c Eina_Hash_Tuple which has the type
3011 * of the external in the @c key and #Edje_External_Type as @c data.
3012 *
3013 * @code
3014 * const Eina_Hash_Tuple *tuple;
3015 * Eina_Iterator *itr;
3016 * const Eina_List *l, *modules;
3017 * const char *s;
3018 *
3019 * modules = edje_available_modules_get();
3020 * EINA_LIST_FOREACH(modules, l, s)
3021 * {
3022 * if (!edje_module_load(s))
3023 * printf("Error loading edje module: %s\n", s);
3024 * }
3025 *
3026 * itr = edje_external_iterator_get();
3027 * EINA_ITERATOR_FOREACH(itr, tuple)
3028 * {
3029 * const char *name = tuple->key;
3030 * const Edje_External_Type *type = tuple->data;
3031 *
3032 * if ((!type) ||
3033 * (type->abi_version != edje_external_type_abi_version_get()))
3034 * {
3035 * printf("Error: invalid type %p (abi: %d, expected: %d)\n",
3036 * type, type ? type->abi_version : 0,
3037 * edje_external_type_abi_version_get());
3038 * continue;
3039 * }
3040 *
3041 * printf("%s: %s (%s) label='%s' desc='%s'\n",
3042 * name, type->module, type->module_name,
3043 * type->label_get ? type->label_get(type->data) : "",
3044 * type->description_get ? type->description_get(type->data) : "");
3045 * }
3046 *
3047 * @endcode
3048 */
3049EAPI Eina_Iterator *edje_external_iterator_get (void);
3050
3051/**
3052 * Conevenience function to find a specific parameter in a list of them.
3053 *
3054 * @param params The list of parameters for the external
3055 * @param key The parameter to look for
3056 *
3057 * @return The matching #Edje_External_Param or NULL if it's not found.
3058 */
3059EAPI Edje_External_Param *edje_external_param_find (const Eina_List *params, const char *key);
3060
3061/**
3062 * Get the value of the given parameter of integer type.
3063 *
3064 * Look for the @p key parameter in the @p params list and return its value in
3065 * @p ret. If the parameter is found and is of type
3066 * #EDJE_EXTERNAL_PARAM_TYPE_INT, its value will be stored in the int pointed
3067 * by @p ret, returning EINA_TRUE. In any other case, the function returns
3068 * EINA_FALSE.
3069 *
3070 * @param params List of parameters where to look
3071 * @param key Name of the parameter to fetch
3072 * @param ret Int pointer where to store the value, must not be NULL.
3073 *
3074 * @return EINA_TRUE if the parameter was found and is of integer type,
3075 * EINA_FALSE otherwise.
3076 */
3077EAPI Eina_Bool edje_external_param_int_get (const Eina_List *params, const char *key, int *ret);
3078
3079/**
3080 * Get the value of the given parameter of double type.
3081 *
3082 * Look for the @p key parameter in the @p params list and return its value in
3083 * @p ret. If the parameter is found and is of type
3084 * #EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, its value will be stored in the double
3085 * pointed by @p ret, returning EINA_TRUE. In any other case, the function
3086 * returns EINA_FALSE.
3087 *
3088 * @param params List of parameters where to look
3089 * @param key Name of the parameter to fetch
3090 * @param ret Double pointer where to store the value, must not be NULL.
3091 *
3092 * @return EINA_TRUE if the parameter was found and is of double type,
3093 * EINA_FALSE otherwise.
3094 */
3095EAPI Eina_Bool edje_external_param_double_get (const Eina_List *params, const char *key, double *ret);
3096
3097/**
3098 * Get the value of the given parameter of string type.
3099 *
3100 * Look for the @p key parameter in the @p params list and return its value in
3101 * @p ret. If the parameter is found and is of type
3102 * #EDJE_EXTERNAL_PARAM_TYPE_STRING, its value will be stored in the pointer
3103 * pointed by @p ret, returning EINA_TRUE. In any other case, the function
3104 * returns EINA_FALSE.
3105 *
3106 * The string stored in @p ret must not be freed or modified.
3107 *
3108 * @param params List of parameters where to look
3109 * @param key Name of the parameter to fetch
3110 * @param ret String pointer where to store the value, must not be NULL.
3111 *
3112 * @return EINA_TRUE if the parameter was found and is of string type,
3113 * EINA_FALSE otherwise.
3114 */
3115EAPI Eina_Bool edje_external_param_string_get (const Eina_List *params, const char *key, const char **ret);
3116
3117/**
3118 * Get the value of the given parameter of boolean type.
3119 *
3120 * Look for the @p key parameter in the @p params list and return its value in
3121 * @p ret. If the parameter is found and is of type
3122 * #EDJE_EXTERNAL_PARAM_TYPE_BOOL, its value will be stored in the Eina_Bool
3123 * pointed by @p ret, returning EINA_TRUE. In any other case, the function
3124 * returns EINA_FALSE.
3125 *
3126 * @param params List of parameters where to look
3127 * @param key Name of the parameter to fetch
3128 * @param ret Eina_Bool pointer where to store the value, must not be NULL.
3129 *
3130 * @return EINA_TRUE if the parameter was found and is of boolean type,
3131 * EINA_FALSE otherwise.
3132 */
3133EAPI Eina_Bool edje_external_param_bool_get (const Eina_List *params, const char *key, Eina_Bool *ret);
3134
3135/**
3136 * Get the value of the given parameter of choice type.
3137 *
3138 * Look for the @p key parameter in the @p params list and return its value in
3139 * @p ret. If the parameter is found and is of type
3140 * #EDJE_EXTERNAL_PARAM_TYPE_CHOICE, its value will be stored in the string
3141 * pointed by @p ret, returning EINA_TRUE. In any other case, the function
3142 * returns EINA_FALSE.
3143 *
3144 * The string stored in @p ret must not be freed or modified.
3145 *
3146 * @param params List of parameters where to look
3147 * @param key Name of the parameter to fetch
3148 * @param ret String pointer where to store the value, must not be NULL.
3149 *
3150 * @return EINA_TRUE if the parameter was found and is of integer type,
3151 * EINA_FALSE otherwise.
3152 */
3153EAPI Eina_Bool edje_external_param_choice_get (const Eina_List *params, const char *key, const char **ret);
3154
3155/**
3156 * Get the array of parameters information about a type given its name.
3157 *
3158 * @note the type names and other strings are static, that means they are
3159 * @b NOT translated. One must use
3160 * Edje_External_Type::translate() to translate those.
3161 *
3162 * @return the NULL terminated array, or @c NULL if type is unknown or
3163 * it does not have any parameter information.
3164 *
3165 * @see edje_external_type_get()
3166 */
3167EAPI const Edje_External_Param_Info *edje_external_param_info_get (const char *type_name);
3168
3169/**
3170 * Get the #Edje_External_Type that defines an EXTERNAL type registered with
3171 * the name @p type_name.
3172 */
3173EAPI const Edje_External_Type *edje_external_type_get (const char *type_name);
3174
3175/**
3176 * @}
3177 */
3178
3179/**
3180 * @defgroup Edje_Object_Group Edje Object
3181 * @ingroup Edje
3182 *
3183 * @brief This group discusses functions that deal with Edje layouts and its components
3184 *
3185 * An important thing to know about this group is that there is no
3186 * Edje_Object in @b code. What we refer here as object are layouts (or themes)
3187 * defined by groups, and parts, both declared in EDC files. They are of
3188 * type Evas_Object as the other native objects of Evas, but they only exist
3189 * in Edje, so that is why we are calling them "edje objects".
3190 *
3191 * With the Edje Object Group functions we can deal with layouts by managing
3192 * its aspect, content, message and signal exchange and animation, among others.
3193 *
3194 * @{
3195 */
3196
3197/**
3198 * @brief Instantiate a new Edje object
3199 *
3200 * @param evas A valid Evas handle, the canvas to place the new object
3201 * in
3202 * @return A handle to the new object created or @c NULL, on errors.
3203 *
3204 * This function creates a new Edje smart object, returning its @c
3205 * Evas_Object handle. An Edje object is useless without a (source)
3206 * file set to it, so you'd most probably call edje_object_file_set()
3207 * afterwards, like in:
3208 * @code
3209 * Evas_Object *edje;
3210 *
3211 * edje = edje_object_add(canvas);
3212 * if (!edje)
3213 * {
3214 * fprintf(stderr, "could not create edje object!\n");
3215 * return NULL;
3216 * }
3217 *
3218 * if (!edje_object_file_set(edje, "theme.edj", "group_name"))
3219 * {
3220 * int err = edje_object_load_error_get(edje);
3221 * const char *errmsg = edje_load_error_str(err);
3222 * fprintf(stderr, "could not load 'group_name' from theme.edj: %s",
3223 * errmsg);
3224 *
3225 * evas_object_del(edje);
3226 * return NULL;
3227 * }
3228 *
3229 * @endcode
3230 *
3231 * @note You can get a callback every time edje re-calculates the object
3232 * (either due to animation or some kind of signal or input). This is called
3233 * in-line just after the recalculation has occurred. It is a good idea not
3234 * to go and delete or alter the object inside this callbacks, simply make
3235 * a note that the recalculation has taken place and then do something about
3236 * it outside the callback. to register a callback use code like:
3237 *
3238 * @code
3239 * evas_object_smart_callback_add(edje_obj, "recalc", my_cb, my_cb_data);
3240 * @endcode
3241 *
3242 * @see evas_object_smart_callback_add()
3243 *
3244 * @note Before creating the first Edje object in your code, remember
3245 * to initialize the library, with edje_init(), or unexpected behavior
3246 * might occur.
3247 */
3248EAPI Evas_Object *edje_object_add (Evas *evas);
3249
3250/**
3251 * @brief Preload the images on the Edje Object in the background.
3252 *
3253 * @param obj A handle to an Edje object
3254 * @param cancel @c EINA_FALSE will add it the preloading work queue,
3255 * @c EINA_TRUE will remove it (if it was issued before).
3256 * @return @c EINA_FASLE if obj was not a valid Edje object
3257 * otherwise @c EINA_TRUE
3258 *
3259 * This function requests the preload of all data images (on the given
3260 * object) in the background. The work is queued before being processed
3261 * (because there might be other pending requests of this type).
3262 * It emits a signal "preload,done" when finished.
3263 *
3264 * @note Use @c EINA_TRUE on scenarios where you don't need
3265 * the image data preloaded anymore.
3266 */
3267EAPI Eina_Bool edje_object_preload (Evas_Object *obj, Eina_Bool cancel);
3268
3269/**
3270 * @}
3271 */
3272
3273/**
3274 * @defgroup Edje_Object_Scale Edje Scale
3275 *
3276 * @brief Functions that deal with scaling objects
3277 *
3278 * Edje allows one to build scalable interfaces. Scaling factors,
3279 * which are set to neutral (@c 1.0) values by default (no scaling,
3280 * actual sizes), are of two types: @b global and @b individual.
3281 *
3282 * Scaling affects the values of minimum/maximum @b part sizes, which
3283 * are @b multiplied by it. Font sizes are scaled, too.
3284 *
3285 * @ingroup Edje_Object_Group
3286 *
3287 * @{
3288 */
3289
3290/**
3291 * @brief Set Edje's global scaling factor.
3292 *
3293 * @param scale The global scaling factor (the default value is @c 1.0)
3294 *
3295 * Edje's global scaling factor will affect all its objects which
3296 * hadn't their individual scaling factors altered from the default
3297 * value (which is zero). If they had it set differently, by
3298 * edje_object_scale_set(), that factor will @b override the global
3299 * one.
3300 *
3301 * @warning Only parts which, at EDC level, had the @c "scale"
3302 * property set to @c 1, will be affected by this function. Check the
3303 * complete @ref edcref "syntax reference" for EDC files.
3304 *
3305 * @see edje_scale_get().
3306 */
3307EAPI void edje_scale_set (double scale);
3308
3309/**
3310 * @brief Retrieve Edje's global scaling factor.
3311 *
3312 * @return The global scaling factor
3313 *
3314 * This function returns Edje's global scaling factor.
3315 *
3316 * @see edje_scale_set() for more details
3317 *
3318 */
3319EAPI double edje_scale_get (void);
3320
3321/**
3322 * @brief Set the scaling factor for a given Edje object.
3323 *
3324 * @param obj A handle to an Edje object
3325 * @param scale The scaling factor (the default value is @c 0.0,
3326 * meaning individual scaling @b not set)
3327 *
3328 * This function sets an @b individual scaling factor on the @a obj
3329 * Edje object. This property (or Edje's global scaling factor, when
3330 * applicable), will affect this object's part sizes. If @p scale is
3331 * not zero, than the individual scaling will @b override any global
3332 * scaling set, for the object @p obj's parts. Put it back to zero to
3333 * get the effects of the global scaling again.
3334 *
3335 * @warning Only parts which, at EDC level, had the @c "scale"
3336 * property set to @c 1, will be affected by this function. Check the
3337 * complete @ref edcref "syntax reference" for EDC files.
3338 *
3339 * @see edje_object_scale_get()
3340 * @see edje_scale_get() for more details
3341 */
3342EAPI Eina_Bool edje_object_scale_set (Evas_Object *obj, double scale);
3343
3344/**
3345 * @brief Get a given Edje object's scaling factor.
3346 *
3347 * @param obj A handle to an Edje object
3348 *
3349 * This function returns the @c individual scaling factor set on the
3350 * @a obj Edje object.
3351 *
3352 * @see edje_object_scale_set() for more details
3353 *
3354 */
3355EAPI double edje_object_scale_get (const Evas_Object *obj);
3356
3357/**
3358 * @}
3359 */
3360
3361/**
3362 * @defgroup Edje_Object_Color_Class Edje Class: Color
3363 *
3364 * @brief Functions that deal with Color Classes
3365 *
3366 * Sometimes we want to change the color of two or more parts equally and
3367 * that's when we use color classes.
3368 *
3369 * If one or more parts are assigned with a color class, when we set color
3370 * values to this class it will cause all these parts to have their colors
3371 * multiplied by the values. Setting values to a color class at a process level
3372 * will affect all parts with that color class, while at a object level will
3373 * affect only the parts inside an specified object.
3374 *
3375 * @ingroup Edje_Object_Group
3376 *
3377 * @{
3378 */
3379
3380/**
3381 * @brief Set Edje color class.
3382 *
3383 * @param color_class
3384 * @param r Object Red value
3385 * @param g Object Green value
3386 * @param b Object Blue value
3387 * @param a Object Alpha value
3388 * @param r2 Outline Red value
3389 * @param g2 Outline Green value
3390 * @param b2 Outline Blue value
3391 * @param a2 Outline Alpha value
3392 * @param r3 Shadow Red value
3393 * @param g3 Shadow Green value
3394 * @param b3 Shadow Blue value
3395 * @param a3 Shadow Alpha value
3396 *
3397 * This function sets the color values for a process level color
3398 * class. This will cause all edje parts in the current process that
3399 * have the specified color class to have their colors multiplied by
3400 * these values. (Object level color classes set by
3401 * edje_object_color_class_set() will override the values set by this
3402 * function).
3403 *
3404 * The first color is the object, the second is the text outline, and
3405 * the third is the text shadow. (Note that the second two only apply
3406 * to text parts).
3407 *
3408 * Setting color emits a signal "color_class,set" with source being
3409 * the given color class in all objects.
3410 *
3411 * @see edje_color_class_set().
3412 *
3413 * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
3414 * half-transparent white is 255 255 255 128.
3415 */
3416EAPI Eina_Bool edje_color_class_set (const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3);
3417
3418/**
3419 * @brief Get Edje color class.
3420 *
3421 * @param color_class
3422 * @param r Object Red value
3423 * @param g Object Green value
3424 * @param b Object Blue value
3425 * @param a Object Alpha value
3426 * @param r2 Outline Red value
3427 * @param g2 Outline Green value
3428 * @param b2 Outline Blue value
3429 * @param a2 Outline Alpha value
3430 * @param r3 Shadow Red value
3431 * @param g3 Shadow Green value
3432 * @param b3 Shadow Blue value
3433 * @param a3 Shadow Alpha value
3434 *
3435 * @return EINA_TRUE if found or EINA_FALSE if not found and all
3436 * values are zeroed.
3437 *
3438 * This function gets the color values for a process level color
3439 * class. This value is the globally set and not per-object, that is,
3440 * the value that would be used by objects if they did not override with
3441 * edje_object_color_class_set().
3442 *
3443 * The first color is the object, the second is the text outline, and
3444 * the third is the text shadow. (Note that the second two only apply
3445 * to text parts).
3446 *
3447 * @see edje_color_class_set().
3448 *
3449 * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
3450 * half-transparent white is 255 255 255 128.
3451 */
3452EAPI Eina_Bool edje_color_class_get (const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3);
3453
3454/**
3455 * @brief Delete edje color class.
3456 *
3457 * @param color_class
3458 *
3459 * This function deletes any values at the process level for the
3460 * specified color class.
3461 * @note Deleting the color class will revert it to the
3462 * values defined in the theme file.
3463 *
3464 * Deleting the color class will emit the signal "color_class,del"
3465 * to all the Edje objects in the running program.
3466 */
3467EAPI void edje_color_class_del (const char *color_class);
3468
3469/**
3470 * @brief Lists color classes.
3471 *
3472 * @return A list of color class names (strings). These strings and
3473 * the list must be free()'d by the caller.
3474 *
3475 * This function lists all color classes known about by the current
3476 * process.
3477 *
3478 */
3479EAPI Eina_List *edje_color_class_list (void);
3480
3481/**
3482 * @brief Sets the object color class.
3483 *
3484 * @param obj A valid Evas_Object handle
3485 * @param color_class
3486 * @param r Object Red value
3487 * @param g Object Green value
3488 * @param b Object Blue value
3489 * @param a Object Alpha value
3490 * @param r2 Outline Red value
3491 * @param g2 Outline Green value
3492 * @param b2 Outline Blue value
3493 * @param a2 Outline Alpha value
3494 * @param r3 Shadow Red value
3495 * @param g3 Shadow Green value
3496 * @param b3 Shadow Blue value
3497 * @param a3 Shadow Alpha value
3498 *
3499 * This function sets the color values for an object level color
3500 * class. This will cause all edje parts in the specified object that
3501 * have the specified color class to have their colors multiplied by
3502 * these values.
3503 *
3504 * The first color is the object, the second is the text outline, and
3505 * the third is the text shadow. (Note that the second two only apply
3506 * to text parts).
3507 *
3508 * Setting color emits a signal "color_class,set" with source being
3509 * the given color.
3510 *
3511 * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
3512 * half-transparent white is 255 255 255 128.
3513 */
3514EAPI Eina_Bool edje_object_color_class_set (Evas_Object *obj, const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3);
3515
3516/**
3517 * @brief Gets the object color class.
3518 *
3519 * @param o A valid Evas_Object handle
3520 * @param color_class
3521 * @param r Object Red value
3522 * @param g Object Green value
3523 * @param b Object Blue value
3524 * @param a Object Alpha value
3525 * @param r2 Outline Red value
3526 * @param g2 Outline Green value
3527 * @param b2 Outline Blue value
3528 * @param a2 Outline Alpha value
3529 * @param r3 Shadow Red value
3530 * @param g3 Shadow Green value
3531 * @param b3 Shadow Blue value
3532 * @param a3 Shadow Alpha value
3533 *
3534 * @return EINA_TRUE if found or EINA_FALSE if not found and all
3535 * values are zeroed.
3536 *
3537 * This function gets the color values for an object level color
3538 * class. If no explicit object color is set, then global values will
3539 * be used.
3540 *
3541 * The first color is the object, the second is the text outline, and
3542 * the third is the text shadow. (Note that the second two only apply
3543 * to text parts).
3544 *
3545 * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
3546 * half-transparent white is 255 255 255 128.
3547 */
3548EAPI Eina_Bool edje_object_color_class_get (const Evas_Object *o, const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3);
3549
3550/**
3551 * @brief Delete the object color class.
3552 *
3553 * @param obj The edje object's reference.
3554 * @param color_class The color class to be deleted.
3555 *
3556 * This function deletes any values at the object level for the
3557 * specified object and color class.
3558 * @note Deleting the color class will revert it to the values
3559 * defined by edje_color_class_set() or the color class
3560 * defined in the theme file.
3561 *
3562 * Deleting the color class will emit the signal "color_class,del"
3563 * for the given Edje object.
3564 */
3565 EAPI void edje_object_color_class_del (Evas_Object *obj, const char *color_class);
3566
3567/**
3568 * @}
3569 */
3570
3571/**
3572 * @defgroup Edje_Object_Text_Class Edje Class: Text
3573 *
3574 * @brief Functions that deal with Text Classes
3575 *
3576 * Sometimes we want to change the text of two or more parts equally and
3577 * that's when we use text classes.
3578 *
3579 * If one or more parts are assigned with a text class, when we set font
3580 * attributes to this class will update all these parts with the new font
3581 * attributes. Setting values to a text class at a process level will affect
3582 * all parts with that text class, while at object level will affect only
3583 * the parts inside an specified object.
3584 *
3585 * @ingroup Edje_Object_Group
3586 *
3587 * @{
3588 */
3589
3590/**
3591 * @brief Set the Edje text class.
3592 *
3593 * @param text_class The text class name
3594 * @param font The font name
3595 * @param size The font size
3596 *
3597 * @return @c EINA_TRUE, on success or @c EINA_FALSE, on error
3598 *
3599 * This function updates all Edje members at the process level which
3600 * belong to this text class with the new font attributes.
3601 * If the @p size is 0 then the font size will be kept with the previous size.
3602 * If the @p size is less then 0 then the font size will be calculated in the
3603 * percentage. For example, if the @p size is -50, then the font size will be
3604 * scaled to half of the original size and if the @p size is -10 then the font
3605 * size will be scaled as much as 0.1x.
3606 *
3607 * @see edje_text_class_get().
3608 *
3609 */
3610EAPI Eina_Bool edje_text_class_set (const char *text_class, const char *font, Evas_Font_Size size);
3611
3612/**
3613 * @brief Delete the text class.
3614 *
3615 * @param text_class The text class name string
3616 *
3617 * This function deletes any values at the process level for the
3618 * specified text class.
3619 *
3620 */
3621EAPI void edje_text_class_del (const char *text_class);
3622
3623/**
3624 * @brief List text classes.
3625 *
3626 * @return A list of text class names (strings). These strings are
3627 * stringshares and the list must be free()'d by the caller.
3628 *
3629 * This function lists all text classes known about by the current
3630 * process.
3631 *
3632 */
3633EAPI Eina_List *edje_text_class_list (void);
3634
3635/**
3636 * @brief Sets Edje text class.
3637 *
3638 * @param obj A valid Evas_Object handle
3639 * @param text_class The text class name
3640 * @param font Font name
3641 * @param size Font Size
3642 *
3643 * @return @c EINA_TRUE, on success or @c EINA_FALSE, on error
3644 *
3645 * This function sets the text class for the Edje.
3646 *
3647 */
3648EAPI Eina_Bool edje_object_text_class_set (Evas_Object *obj, const char *text_class, const char *font, Evas_Font_Size size);
3649
3650/**
3651 * @}
3652 */
3653
3654/**
3655 * @defgroup Edje_Object_File Edje Object File
3656 *
3657 * @brief Functions to deals with EDJ files.
3658 *
3659 * Layouts in Edje are usually called themes and they are
3660 * created using the EDC language. The EDC language is declarative
3661 * and must be compiled before being used. The output of this
3662 * compilation is an EDJ file, this file can be loaded by Edje,
3663 * and the result is a edje object.
3664 *
3665 * This groups of functions interact with these EDJ files,
3666 * either by loading them or retrieving information of the EDC
3667 * file about objects.
3668 *
3669 * @ingroup Edje_Object_Group
3670 *
3671 * @{
3672 */
3673
3674typedef enum _Edje_Load_Error
3675{
3676 EDJE_LOAD_ERROR_NONE = 0, /**< No error happened, the loading was successful */
3677 EDJE_LOAD_ERROR_GENERIC = 1, /**< A generic error happened during the loading */
3678 EDJE_LOAD_ERROR_DOES_NOT_EXIST = 2, /**< The file pointed to did not exist */
3679 EDJE_LOAD_ERROR_PERMISSION_DENIED = 3, /**< Permission to read the given file was denied */
3680 EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = 4, /**< Resource allocation failed during the loading */
3681 EDJE_LOAD_ERROR_CORRUPT_FILE = 5, /**< The file pointed to was corrupt */
3682 EDJE_LOAD_ERROR_UNKNOWN_FORMAT = 6, /**< The file pointed to had an unknown format */
3683 EDJE_LOAD_ERROR_INCOMPATIBLE_FILE = 7, /**< The file pointed to is incompatible, i.e., it doesn't match the library's current version's format */
3684 EDJE_LOAD_ERROR_UNKNOWN_COLLECTION = 8, /**< The group/collection set to load from was @b not found in the file */
3685 EDJE_LOAD_ERROR_RECURSIVE_REFERENCE = 9 /**< The group/collection set to load from had <b>recursive references</b> on its components */
3686} Edje_Load_Error; /**< Edje file loading error codes one can get - see edje_load_error_str() too. */
3687
3688/**
3689 * Get a list of groups in an edje file
3690 * @param file The path to the edje file
3691 *
3692 * @return The Eina_List of group names (char *)
3693 *
3694 * Note: the list must be freed using edje_file_collection_list_free()
3695 * when you are done with it.
3696 */
3697EAPI Eina_List *edje_file_collection_list (const char *file);
3698
3699/**
3700 * Free file collection list
3701 * @param lst The Eina_List of groups
3702 *
3703 * Frees the list returned by edje_file_collection_list().
3704 */
3705EAPI void edje_file_collection_list_free (Eina_List *lst);
3706
3707/**
3708 * Determine whether a group matching glob exists in an edje file.
3709 * @param file The file path
3710 * @param glob A glob to match on
3711 *
3712 * @return 1 if a match is found, 0 otherwise
3713 */
3714EAPI Eina_Bool edje_file_group_exists (const char *file, const char *glob);
3715
3716/**
3717 * @brief Retrive an <b>EDC data field's value</b> from a given Edje
3718 * object's group.
3719 *
3720 * @param obj A handle to an Edje object
3721 * @param key The data field's key string
3722 * @return The data's value string. Must not be freed.
3723 *
3724 * This function fetches an EDC data field's value, which is declared
3725 * on the objects building EDC file, <b>under its group</b>. EDC data
3726 * blocks are most commonly used to pass arbitrary parameters from an
3727 * application's theme to its code.
3728 *
3729 * They look like the following:
3730 *
3731 * @code
3732 * collections {
3733 * group {
3734 * name: "a_group";
3735 * data {
3736 * item: "key1" "value1";
3737 * item: "key2" "value2";
3738 * }
3739 * }
3740 * }
3741 * @endcode
3742 *
3743 * EDC data fields always hold @b strings as values, hence the return
3744 * type of this function. Check the complete @ref edcref "syntax reference"
3745 * for EDC files.
3746 *
3747 * @warning Do not confuse this call with edje_file_data_get(), which
3748 * queries for a @b global EDC data field on an EDC declaration file.
3749 *
3750 * @see edje_object_file_set()
3751 */
3752EAPI const char *edje_object_data_get (const Evas_Object *obj, const char *key);
3753
3754/**
3755 * @brief Sets the @b EDJ file (and group within it) to load an Edje
3756 * object's contents from
3757 *
3758 * @param obj A handle to an Edje object
3759 * @param file The path to the EDJ file to load @p from
3760 * @param group The name of the group, in @p file, which implements an
3761 * Edje object
3762 * @return @c EINA_TRUE, on success or @c EINA_FALSE, on errors (check
3763 * edje_object_load_error_get() after this call to get errors causes)
3764 *
3765 * Edje expects EDJ files, which are theming objects' descriptions and
3766 * resources packed together in an EET file, to read Edje object
3767 * definitions from. They usually are created with the @c .edj
3768 * extension. EDJ files, in turn, are assembled from @b textual object
3769 * description files, where one describes Edje objects declaratively
3770 * -- the EDC files (see @ref edcref "the syntax" for those files).
3771 *
3772 * Those description files were designed so that many Edje object
3773 * definitions -- also called @b groups (or collections) -- could be
3774 * packed together <b>in the same EDJ file</b>, so that a whole
3775 * application's theme could be packed in one file only. This is the
3776 * reason for the @p group argument.
3777 *
3778 * Use this function after you instantiate a new Edje object, so that
3779 * you can "give him life", telling where to get its contents from.
3780 *
3781 * @see edje_object_add()
3782 * @see edje_object_file_get()
3783 */
3784EAPI Eina_Bool edje_object_file_set (Evas_Object *obj, const char *file, const char *group);
3785
3786/**
3787 * @brief Get the file and group name that a given Edje object is bound to
3788 *
3789 * @param obj A handle to an Edje object
3790 * @param file A pointer to a variable whero to store the <b>file's
3791 * path</b>
3792 * @param group A pointer to a variable where to store the <b>group
3793 * name</b> in
3794 *
3795 * This gets the EDJ file's path, with the respective group set for
3796 * the given Edje object. If @a obj is either not an Edje file, or has
3797 * not had its file/group set previously, by edje_object_file_set(),
3798 * then both @p file and @p group will be set to @c NULL, indicating
3799 * an error.
3800 *
3801 * @see edje_object_file_set()
3802 *
3803 * @note Use @c NULL pointers on the file/group components you're not
3804 * interested in: they'll be ignored by the function.
3805 */
3806EAPI void edje_object_file_get (const Evas_Object *obj, const char **file, const char **group);
3807
3808/**
3809 * @brief Gets the (last) file loading error for a given Edje object
3810 *
3811 * @param obj A handlet to an Edje object
3812 *
3813 * @return The Edje loading error, one of:
3814 * - #EDJE_LOAD_ERROR_NONE
3815 * - #EDJE_LOAD_ERROR_GENERIC
3816 * - #EDJE_LOAD_ERROR_DOES_NOT_EXIST
3817 * - #EDJE_LOAD_ERROR_PERMISSION_DENIED
3818 * - #EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED
3819 * - #EDJE_LOAD_ERROR_CORRUPT_FILE
3820 * - #EDJE_LOAD_ERROR_UNKNOWN_FORMAT
3821 * - #EDJE_LOAD_ERROR_INCOMPATIBLE_FILE
3822 * - #EDJE_LOAD_ERROR_UNKNOWN_COLLECTION
3823 * - #EDJE_LOAD_ERROR_RECURSIVE_REFERENCE
3824 *
3825 * This function is meant to be used after an Edje EDJ <b>file
3826 * loading</b>, what takes place with the edje_object_file_set()
3827 * function. If that function does not return @c EINA_TRUE, one should
3828 * check for the reason of failure with this one.
3829 *
3830 * @see edje_load_error_str()
3831 */
3832EAPI Edje_Load_Error edje_object_load_error_get (const Evas_Object *obj);
3833
3834/**
3835 * Converts the given Edje file load error code into a string
3836 * describing it in English.
3837 *
3838 * @param error the error code, a value in ::Edje_Load_Error.
3839 * @return Always returns a valid string. If the given @p error is not
3840 * supported, <code>"Unknown error"</code> is returned.
3841 *
3842 * edje_object_file_set() is a function which sets an error value,
3843 * afterwards, which can be fetched with
3844 * edje_object_load_error_get(). The function in question is meant
3845 * to be used in conjunction with the latter, for pretty-printing any
3846 * possible error cause.
3847 */
3848EAPI const char *edje_load_error_str (Edje_Load_Error error);
3849
3850/**
3851 * @}
3852 */
3853
3854/**
3855 * @defgroup Edje_Object_Communication_Interface_Signal Edje Communication Interface: Signal
3856 *
3857 * @brief Functions that deal with signals.
3858 *
3859 * Edje has two communication interfaces between @b code and @b theme.
3860 * Signals and messages.
3861 *
3862 * This group has functions that deal with signals. One can either
3863 * emit a signal from @b code to a @b theme or create handles for
3864 * the ones emitted from @b themes. Signals are identified by strings.
3865 *
3866 * @ingroup Edje_Object_Group
3867 *
3868 * @{
3869 */
3870
3871typedef void (*Edje_Signal_Cb) (void *data, Evas_Object *obj, const char *emission, const char *source); /**< Edje signal 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 signal comes from. @c emission will identify the exact signal's emission string and @c source the exact signal's source one. */
3872
3873/**
3874 * @brief Add a callback for an arriving Edje signal, emitted by
3875 * a given Edje object.
3876 *
3877 * @param obj A handle to an Edje object
3878 * @param emission The signal's "emission" string
3879 * @param source The signal's "source" string
3880 * @param func The callback function to be executed when the signal is
3881 * emitted.
3882 * @param data A pointer to data to pass in to @p func.
3883 *
3884 * Edje signals are one of the communication interfaces between
3885 * @b code and a given Edje object's @b theme. With signals, one can
3886 * communicate two string values at a time, which are:
3887 * - "emission" value: the name of the signal, in general
3888 * - "source" value: a name for the signal's context, in general
3889 *
3890 * Though there are those common uses for the two strings, one is free
3891 * to use them however they like.
3892 *
3893 * This function adds a callback function to a signal emitted by @a obj, to
3894 * be issued every time an EDC program like the following
3895 * @code
3896 * program {
3897 * name: "emit_example";
3898 * action: SIGNAL_EMIT "a_signal" "a_source";
3899 * }
3900 * @endcode
3901 * is run, if @p emission and @p source are given those same values,
3902 * here.
3903 *
3904 * Signal callback registration is powerful, in the way that @b blobs
3905 * may be used to match <b>multiple signals at once</b>. All the @c
3906 * "*?[\" set of @c fnmatch() operators can be used, both for @p
3907 * emission and @p source.
3908 *
3909 * Edje has @b internal signals it will emit, automatically, on
3910 * various actions taking place on group parts. For example, the mouse
3911 * cursor being moved, pressed, released, etc., over a given part's
3912 * area, all generate individual signals.
3913 *
3914 * By using something like
3915 * @code
3916 * edje_object_signal_callback_add(obj, "mouse,down,*", "button.*",
3917 * signal_cb, NULL);
3918 * @endcode
3919 * being @c "button.*" the pattern for the names of parts implementing
3920 * buttons on an interface, you'd be registering for notifications on
3921 * events of mouse buttons being pressed down on either of those parts
3922 * (those events all have the @c "mouse,down," common prefix on their
3923 * names, with a suffix giving the button number). The actual emission
3924 * and source strings of an event will be passed in as the @a emission
3925 * and @a source parameters of the callback function (e.g. @c
3926 * "mouse,down,2" and @c "button.close"), for each of those events.
3927 *
3928 * @note See @ref edcref "the syntax" for EDC files
3929 * @see edje_object_signal_emit() on how to emits Edje signals from
3930 * code to a an object
3931 * @see edje_object_signal_callback_del_full()
3932 */
3933EAPI void edje_object_signal_callback_add (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
3934
3935/**
3936 * @brief Remove a signal-triggered callback from an object.
3937 *
3938 * @param obj A valid Evas_Object handle.
3939 * @param emission The emission string.
3940 * @param source The source string.
3941 * @param func The callback function.
3942 * @return The data pointer
3943 *
3944 * This function removes a callback, previously attached to the
3945 * emittion of a signal, from the object @a obj. The parameters @a
3946 * emission, @a source and @a func must match exactly those passed to
3947 * a previous call to edje_object_signal_callback_add(). The data
3948 * pointer that was passed to this call will be returned.
3949 *
3950 * @see edje_object_signal_callback_add().
3951 * @see edje_object_signal_callback_del_full().
3952 *
3953 */
3954EAPI void *edje_object_signal_callback_del (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
3955
3956/**
3957 * @brief Unregister/delete a callback set for an arriving Edje
3958 * signal, emitted by a given Edje object.
3959 *
3960 * @param obj A handle to an Edje object
3961 * @param emission The signal's "emission" string
3962 * @param source The signal's "source" string
3963 * @param func The callback function passed on the callback's
3964 * registration
3965 * @param data The pointer given to be passed as data to @p func
3966 * @return @p data, on success or @c NULL, on errors (or if @p data
3967 * had this value)
3968 *
3969 * This function removes a callback, previously attached to the
3970 * emittion of a signal, from the object @a obj. The parameters
3971 * @a emission, @a source, @a func and @a data must match exactly those
3972 * passed to a previous call to edje_object_signal_callback_add(). The
3973 * data pointer that was passed to this call will be returned.
3974 *
3975 * @see edje_object_signal_callback_add().
3976 * @see edje_object_signal_callback_del().
3977 *
3978 */
3979EAPI void *edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
3980
3981/**
3982 * @brief Send/emit an Edje signal to a given Edje object
3983 *
3984 * @param obj A handle to an Edje object
3985 * @param emission The signal's "emission" string
3986 * @param source The signal's "source" string
3987 *
3988 * This function sends a signal to the object @a obj. An Edje program,
3989 * at @p obj's EDC specification level, can respond to a signal by
3990 * having declared matching @c 'signal' and @c 'source' fields on its
3991 * block (see @ref edcref "the syntax" for EDC files).
3992 *
3993 * As an example,
3994 * @code
3995 * edje_object_signal_emit(obj, "a_signal", "");
3996 * @endcode
3997 * would trigger a program which had an EDC declaration block like
3998 * @code
3999 * program {
4000 * name: "a_program";
4001 * signal: "a_signal";
4002 * source: "";
4003 * action: ...
4004 * }
4005 * @endcode
4006 *
4007 * @see edje_object_signal_callback_add() for more on Edje signals.
4008 */
4009EAPI void edje_object_signal_emit (Evas_Object *obj, const char *emission, const char *source);
4010
4011/**
4012 * @brief Get extra data passed to callbacks.
4013 *
4014 * @return the extra data for that callback.
4015 *
4016 * Some callbacks pass extra information. This function gives access to that
4017 * extra information. It's somehow like event_info in smart callbacks.
4018 *
4019 * @see edje_object_signal_callback_add() for more on Edje signals.
4020 * @since 1.1.0
4021 */
4022EAPI void * edje_object_signal_callback_extra_data_get(void);
4023
4024/**
4025 * @}
4026 */
4027
4028/**
4029 * @defgroup Edje_Object_Animation Edje Object Animation