summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAharon Hillel <a.hillel@samsung.com>2013-04-11 12:48:20 +0300
committerDaniel Zaoui <daniel.zaoui@samsung.com>2013-04-24 22:42:20 +0300
commit637f7825be7036db39eeef8eda2c9541d1e0e7f6 (patch)
treed25d28c246d6ebac04078bb0c1da8edfed5e0a0c
parent0745e46d122ad58a57507f6aef3242e75fe9cfaa (diff)
edje: Split Edje headers
Now, Edje.h includes three new files: - Edje_Eo.h: Eo API functions (functions defines, enums, base id). - Edje_Legacy.h: contains the API functions related to objects - Edje_Common.h: common data (structs, enums...) + functions not related to objects. This phase is needed for the EFL 1.8 release to disable Eo APIs if we consider it is not enough mature to be used by applications.
-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.