efl/src/lib/edje/Edje_Edit.h

3540 lines
131 KiB
C

#ifndef _EDJE_EDIT_H
#define _EDJE_EDIT_H
#ifndef EDJE_EDIT_IS_UNSTABLE_AND_I_KNOW_ABOUT_IT
#error "Do not use the Edje_Edit API unless you know what you are doing. It's meant only for writing editors and nothing else."
#endif
#include <Edje.h>
#ifdef EAPI
# undef EAPI
#endif
#ifdef _WIN32
# ifdef EFL_EDJE_BUILD
# ifdef DLL_EXPORT
# define EAPI __declspec(dllexport)
# else
# define EAPI
# endif /* ! DLL_EXPORT */
# else
# define EAPI __declspec(dllimport)
# endif /* ! EFL_EDJE_BUILD */
#else
# ifdef __GNUC__
# if __GNUC__ >= 4
# define EAPI __attribute__ ((visibility("default")))
# else
# define EAPI
# endif
# else
# define EAPI
# endif
#endif
typedef enum _Edje_Edit_Image_Comp
{
EDJE_EDIT_IMAGE_COMP_RAW,
EDJE_EDIT_IMAGE_COMP_USER,
EDJE_EDIT_IMAGE_COMP_COMP,
EDJE_EDIT_IMAGE_COMP_LOSSY
} Edje_Edit_Image_Comp;
struct _Edje_Edit_Script_Error
{
const char *program_name; /* null == group shared script */
int line;
const char *error_str;
};
typedef struct _Edje_Edit_Script_Error Edje_Edit_Script_Error;
/**
* @file
* @brief Functions to deal with edje internal object. Don't use in standard
* situations. The use of any of the edje_edit_* functions can break your
* theme ability, remember that the program must be separated from the interface!
*
* This was intended ONLY for use in an actual edje editor program. Unless
* you are writing one of these, do NOT use this API here.
*
* The API can be used to query or set every part of an edje object in real time.
* You can manage every aspect of parts, part states, programs, script and whatever
* is contained in the edje file. For a reference of what all parameter means
* look at the complete @ref edcref.
*
* Don't forget to free all the strings and the lists returned by any edje_edit_*()
* functions using edje_edit_string_free() and edje_edit_string_list_free() when
* you don't need anymore.
*
* Example: print all the part in a loaded edje_object
* @code
* Eina_List *parts, *l;
* char *part;
*
* parts = edje_edit_parts_list_get(edje_object);
* EINA_LIST_FOREACH(parts, l, part)
* {
* printf("Part: %s\n", part);
* }
* edje_edit_string_list_free(parts);
* @endcode
*
* Example: Change the color of a rect inside an edje file
* @code
* Evas_Object *edje;
*
* edje = edje_edit_object_add(evas);
* edje_object_file_set(edje, "edj/file/name", "group to load");
* edje_edit_state_color_set(edje, "MyRectName", "default", 0.00, 255, 255, 0, 255);
* edje_edit_save(edje);
* @endcode
*
*/
#ifdef __cplusplus
extern "C" {
#endif
/******************************************************************************/
/************************** GENERAL API ***********************************/
/******************************************************************************/
/** @name General API
* General functions that don't fit in other cateories.
*/ //@{
/** Adds an editable Edje object to the canvas.
*
* An Edje_Edit object is, for the most part, a standard Edje object. Only
* difference is you can use the Edje_Edit API on them.
*
* @param e Evas canvas where to add the object.
*
* @return An Evas_Object of type Edje_Edit, or NULL if an error occurred.
*/
EAPI Evas_Object * edje_edit_object_add(Evas *e);
/** Free a generic Eina_List of (char *) allocated by an edje_edit_*_get() function.
*
* @param lst List of strings to free.
*/
EAPI void edje_edit_string_list_free(Eina_List *lst);
/** Free a generic string (char *) allocated by an edje_edit_*_get() function.
*
* @param str String to free.
*/
EAPI void edje_edit_string_free(const char *str);
/** Get the name of the program that compiled the edje file.
* Can be 'edje_cc' or 'edje_edit'
*
* @param obj Object being edited.
*
* @return Compiler stored in the Edje file
*/
EAPI const char * edje_edit_compiler_get(Evas_Object *obj);
/** Save the modified edje object back to his file.
*
* Use this function when you are done with your editing, all the change made
* to the current loaded group will be saved back to the original file.
*
* @note Source for the whole file will be auto generated and will overwrite
* any previously stored source.
*
* @param obj Object to save back to the file it was loaded from.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*
* @todo Add a way to check what the error actually was, the way Edje Load does.
*/
EAPI Eina_Bool edje_edit_save(Evas_Object *obj);
/** Saves every group back into the file.
*
* @param obj Object to save.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*
* @see edje_edit_save()
*/
EAPI Eina_Bool edje_edit_save_all(Evas_Object *obj);
/** Print on standard output many information about the internal status
* of the edje object.
*
* This is probably only useful to debug.
*
* @param obj Object being edited.
*/
EAPI void edje_edit_print_internal_status(Evas_Object *obj);
//@}
/******************************************************************************/
/************************** GROUPS API ************************************/
/******************************************************************************/
/** @name Groups API
* Functions to deal with groups property (see @ref edcref).
*/ //@{
/** Create a new empty group in the given edje.
*
* If a group with the same name exist none is created.
*
* @param obj Object being edited.
* @param name Name of the new group.
*
* @return EINA_TRUE if successfully added the group, EINA_FALSE if an error
* occurred or if a group with the same name exists.
*/
/**
* @brief Add an edje (empty) group to an edje object's group set.
*
* @param obj The pointer to edje object.
* @param name The name of the group.
*
* @return 1 If it could allocate memory to the part group added
* or zero if not.
*
* This function adds, at run time, one more group, which will reside
* in memory, to the group set found in the .edj file which @a obj was
* loaded with. This group can be manipulated by other API functions,
* like @c edje_edit_part_add(), for example. If desired, the new
* group can be actually committed the respective .edj by use of @c
* edje_edit_save().
*
*/
EAPI Eina_Bool edje_edit_group_add(Evas_Object *obj, const char *name);
/** Delete the specified group from the given edje.
*
* You can only delete a currently unused group.
* All the parts and the programs inside the group will be deleted as well,
* but not image or font embedded in the edje.
*
* @param obj Object being edited.
* @param group_name Name of group to delete.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
/**
* @brief Delete the specified group from the edje file.
*
* @param obj The pointer to the edje object.
* @param group_name Group to delete.
*
* @return @c EINA_TRUE on success, @c EINA_FALSE on failure.
*
* This function deletes the given group from the file @a obj is set to. This
* operation can't be undone as all references to the group are removed from
* the file.
* This function may fail if the group to be deleted is currently in use.
*
*/
EAPI Eina_Bool edje_edit_group_del(Evas_Object *obj, const char *group_name);
/** Check if a group with the given name exist in the edje.
*
* @param obj Object being edited.
* @param group Group name to check for.
*
* @return EINA_TRUE if group exists, EINA_FALSE if not.
*/
EAPI Eina_Bool edje_edit_group_exist(Evas_Object *obj, const char *group);
/** Set a new name for the current open group.
*
* You can only rename a group that is currently loaded
* Note that the relative getter function don't exist as it doesn't make sense ;)
* @param obj Object being edited.
* @param new_name New name for the group.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_group_name_set(Evas_Object *obj, const char *new_name);
/** Get the group minimum width.
*
* @param obj Object being edited.
*
* @return The minimum width set for the group. -1 if an error occurred.
*/
EAPI int edje_edit_group_min_w_get(Evas_Object *obj);
/** Set the group minimum width.
*
* @param obj Object being edited.
* @param w New minimum width for the group.
*/
EAPI void edje_edit_group_min_w_set(Evas_Object *obj, int w);
/** Get the group minimum height.
*
* @param obj Object being edited.
*
* @return The minimum height set for the group. -1 if an error occurred.
*/
EAPI int edje_edit_group_min_h_get(Evas_Object *obj);
/** Set the group minimum height.
*
* @param obj Object being edited.
* @param h New minimum height for the group.
*/
EAPI void edje_edit_group_min_h_set(Evas_Object *obj, int h);
/** Get the group maximum width.
*
* @param obj Object being edited.
*
* @return The maximum width set for the group. -1 if an error occurred.
*/
EAPI int edje_edit_group_max_w_get(Evas_Object *obj);
/** Set the group maximum width.
*
* @param obj Object being edited.
* @param w New maximum width for the group.
*/
EAPI void edje_edit_group_max_w_set(Evas_Object *obj, int w);
/** Get the group maximum height.
*
* @param obj Object being edited.
*
* @return The maximum height set for the group. -1 if an error occurred.
*/
EAPI int edje_edit_group_max_h_get(Evas_Object *obj);
/** Set the group maximum height.
*
* @param obj Object being edited.
* @param h New maximum height for the group.
*/
EAPI void edje_edit_group_max_h_set(Evas_Object *obj, int h);
//@}
/******************************************************************************/
/************************** DATA API **************************************/
/******************************************************************************/
/** @name Data API
* Functions to deal with data embedded in the edje (see @ref edcref).
*/ //@{
/** Retrieves a list with the item names inside the data block.
*
* @param obj Object being edited.
*
* @return List of strings, each being a name entry in the global data block for the file.
*/
EAPI Eina_List * edje_edit_data_list_get(Evas_Object *obj);
/** Create a new *global* data object in the given edje file.
*
* If another data entry with the same name exists, nothing is created and
* EINA_FALSE is returned.
*
* @param obj Object being edited.
* @param itemname Name for the new data entry.
* @param value Value for the new data entry.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_data_add(Evas_Object *obj, const char *itemname, const char *value);
/** Delete the given data object from edje.
*
* @param obj Object being edited.
* @param itemname Data entry to remove from the global data block.
*
* @return EINA_TRUE on success, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_data_del(Evas_Object *obj, const char *itemname);
/** Get the data associated with the given itemname.
*
* @param obj Object being edited.
* @param itemname Name of the data entry to fetch the value for.
*
* @return Value of the given entry, or NULL if not found.
*/
EAPI const char * edje_edit_data_value_get(Evas_Object *obj, const char *itemname);
/** Set the data associated with the given itemname.
*
* @param obj Object being edited.
* @param itemname Name of data entry to change the value.
* @param value New value for the entry.
*
* @return EINA_TRUE on success, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_data_value_set(Evas_Object *obj, const char *itemname, const char *value);
/** Change the name of the given data object.
*
* @param obj Object being edited.
* @param itemname Data entry to rename.
* @param newname New name for the data entry.
*
* @return EINA_TRUE on success, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_data_name_set(Evas_Object *obj, const char *itemname, const char *newname);
/** Retrieves a list with the item names inside the data block at the group level.
*
* @param obj Object being edited.
*
* @return List of strings, each being a name entry in the data block for the group.
*/
EAPI Eina_List * edje_edit_group_data_list_get(Evas_Object *obj);
/** Create a new data object in the given edje file *belonging to the current group*.
*
* If another data entry with the same name exists,
* nothing is created and EINA_FALSE is returned.
*
* @param obj Object being edited.
* @param itemname Name for the new data entry.
* @param value Value for the new data entry.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_group_data_add(Evas_Object *obj, const char *itemname, const char *value);
/** Delete the given data object from the group.
*
* @param obj Object being edited.
* @param itemname Name of the data entry to remove.
*
* @return EINA_TRUE on success, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_group_data_del(Evas_Object *obj, const char *itemname);
/** Get the data associated with the given itemname.
*
* @param obj Object being edited.
* @param itemname Name of the data entry.
*
* @return Value of the data entry or NULL if not found.
*/
EAPI const char * edje_edit_group_data_value_get(Evas_Object *obj, const char *itemname);
/** Set the data associated with the given itemname.
*
* @param obj Object being edited.
* @param itemname Name of the data entry to set the value.
* @param value Value to set for the data entry.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_group_data_value_set(Evas_Object *obj, const char *itemname, const char *value);
/** Change the name of the given data object.
*
* @param obj Object being edited.
* @param itemname Name of the data entry to rename.
* @param newname New name for the data entry.
*
* @return EINA_TRUE on success, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_group_data_name_set(Evas_Object *obj, const char *itemname, const char *newname);
//@}
/******************************************************************************/
/*********************** COLOR CLASSES API ********************************/
/******************************************************************************/
/** @name Color Classes API
* Functions to deal with Color Classes (see @ref edcref).
*/ //@{
/** Get the list of all the Color Classes in the given edje object.
*
* @param obj Object being edited.
*
* @return List of strings, each being one color class.
*/
EAPI Eina_List * edje_edit_color_classes_list_get(Evas_Object *obj);
/** Create a new color class object in the given edje.
*
* If another class with the same name exists nothing is created and EINA_FALSE is returned.
*
* @param obj Object being edited.
* @param name Name for the new color class.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_color_class_add(Evas_Object *obj, const char *name);
/** Delete the given class object from edje.
*
* @param obj Object being edited.
* @param name Color class to delete.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_color_class_del(Evas_Object *obj, const char *name);
/** Get all the colors that compose the class.
*
* You can pass NULL to colors you are not intrested in.
*
* @param obj Object being edited.
* @param class_name Color class to fetch values.
* @param r Red component of main color.
* @param g Green component of main color.
* @param b Blue component of main color.
* @param a Alpha component of main color.
* @param r2 Red component of secondary color.
* @param g2 Green component of secondary color.
* @param b2 Blue component of secondary color.
* @param a2 Alpha component of secondary color.
* @param r3 Red component of tertiary color.
* @param g3 Green component of tertiary color.
* @param b3 Blue component of tertiary color.
* @param a3 Alpha component of tertiary color.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_color_class_colors_get(Evas_Object *obj, const char *class_name, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3);
/** Set the colors for the given color class.
*
* If you set a color to -1 it will not be touched.
*
* @param obj Object being edited.
* @param class_name Color class to fetch values.
* @param r Red component of main color.
* @param g Green component of main color.
* @param b Blue component of main color.
* @param a Alpha component of main color.
* @param r2 Red component of secondary color.
* @param g2 Green component of secondary color.
* @param b2 Blue component of secondary color.
* @param a2 Alpha component of secondary color.
* @param r3 Red component of tertiary color.
* @param g3 Green component of tertiary color.
* @param b3 Blue component of tertiary color.
* @param a3 Alpha component of tertiary color.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_color_class_colors_set(Evas_Object *obj, const char *class_name, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3);
/** Change the name of a color class.
*
* @param obj Object being edited.
* @param name Color class to rename.
* @param newname New name for the color class.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_color_class_name_set(Evas_Object *obj, const char *name, const char *newname);
//@}
/******************************************************************************/
/************************** TEXT STYLES *************************************/
/******************************************************************************/
/** @name Text styles API
* Functions to deal with text styles (see @ref edcref).
*/ //@{
/** Get the list of all the text styles in the given edje object.
*
* @param obj Object being edited.
*
* @return List of strings, each being the name for a text style.
*/
EAPI Eina_List * edje_edit_styles_list_get(Evas_Object *obj);
/** Create a new text style object in the given edje.
*
* If another style with the same name exists nothing is created and EINA_FALSE is returned.
*
* @param obj Object being edited.
* @param style Name for the new style.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_style_add(Evas_Object *obj, const char *style);
/** Delete the given text style and all the child tags.
*
* @param obj Object being edited.
* @param style Style to delete.
*/
EAPI void edje_edit_style_del(Evas_Object *obj, const char *style);
/** Get the list of all the tags name in the given text style.
*
* @param obj Object being edited.
* @param style Style to get the tags for.
*
* @return List of strings, each being one tag in the given style.
*/
EAPI Eina_List * edje_edit_style_tags_list_get(Evas_Object *obj, const char *style);
/** Get the value of the given tag.
*
* @param obj Object being edited.
* @param style Style containing the tag being.
* @param tag Tag to get the value for.
*
* @return Value of the given tag.
*/
EAPI const char * edje_edit_style_tag_value_get(Evas_Object *obj, const char *style, const char *tag);
/** Set the value of the given tag.
*
* @param obj Object being edited.
* @param style Style containing the tag to change.
* @param tag Name of the tag to set the value for.
* @param new_value Value for the tag.
*/
EAPI void edje_edit_style_tag_value_set(Evas_Object *obj, const char *style, const char *tag, const char *new_value);
/** Set the name of the given tag.
*
* @param obj Object being edited.
* @param style Style containing the tag to rename.
* @param tag Tag to rename.
* @param new_name New name for the tag.
*/
EAPI void edje_edit_style_tag_name_set(Evas_Object *obj, const char *style, const char *tag, const char *new_name);
/** Add a new tag to the given text style.
*
* If another tag with the same name exists nothing is created and EINA_FALSE is returned.
*
* @param obj Object being edited.
* @param style Style where to add the new tag.
* @param tag_name Name for the new tag.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_style_tag_add(Evas_Object *obj, const char *style, const char *tag_name);
/** Delete the given tag.
*
* @param obj Object being edited.
* @param style Style from where to remove the tag.
* @param tag Tag to delete.
*/
EAPI void edje_edit_style_tag_del(Evas_Object *obj, const char *style, const char *tag);
//@}
/******************************************************************************/
/************************ EXTERNALS API ***********************************/
/******************************************************************************/
/** @name Externals API
* Functions to deal with list of external modules (see @ref edcref).
*/ //@{
/** Get the list of all the externals requested in the given edje object.
*
* @param obj Object being edited.
*
* @return List of strings, each being an entry in the block of automatically loaded external modules.
*/
EAPI Eina_List * edje_edit_externals_list_get(Evas_Object *obj);
/** Add an external module to be requested on edje load.
*
* @param obj Object being edited.
* @param external Name of the external module to add to the list of autoload.
*
* @return EINA_TRUE on success (or it was already there), EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_external_add(Evas_Object *obj, const char *external);
/** Delete the given external from the list.
*
* @param obj Object being edited.
* @param external Name of the external module to remove from the autoload list.
*
* @return EINA_TRUE on success, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_external_del(Evas_Object *obj, const char *external);
//@}
/******************************************************************************/
/************************** PARTS API *************************************/
/******************************************************************************/
/** @name Parts API
* Functions to deal with part objects (see @ref edcref).
*/ //@{
/** Get the list of all the parts in the given edje object.
*
* @param obj Object being edited.
*
* @return List of strings, each being the name for a part in the open group.
*/
EAPI Eina_List * edje_edit_parts_list_get(Evas_Object *obj);
/** Create a new part in the given edje.
*
* If another part with the same name just exists nothing is created and EINA_FALSE is returned.
* Note that this function also create a default description for the part.
*
* @param obj Object being edited.
* @param name Name for the new part.
* @param type Type of the new part. See @ref edcref for more info on this.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_part_add(Evas_Object *obj, const char *name, Edje_Part_Type type);
/** Create a new part of type EXTERNAL in the given edje.
*
* If another part with the same name just exists nothing is created and EINA_FALSE is returned.
* Note that this function also create a default description for the part.
*
* @param obj Object being edited.
* @param name Name for the new part.
* @param source The registered external type to use for this part.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_part_external_add(Evas_Object *obj, const char *name, const char *source);
/** Delete the given part from the edje.
*
* All the reference to this part will be zeroed.
*
* @param obj Object being edited.
* @param part Name of part to delete.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_part_del(Evas_Object *obj, const char *part);
/** Check if a part with the given name exist in the edje object.
*
* @param obj Object being edited.
* @param part Name of part to check for its existence.
*
* @return EINA_TRUE if the part exists, EINA_FALSE if not.
*/
EAPI Eina_Bool edje_edit_part_exist(Evas_Object *obj, const char *part);
/** Get the name of part stacked above the one passed.
*
* @param obj Object being edited.
* @param part Name of part of which to check the one above.
*
* @return Name of the part above. NULL if an error occurred or if @p part is
* the topmost part in the group.
*/
EAPI const char * edje_edit_part_above_get(Evas_Object *obj, const char *part);
/** Get the name of part stacked below the one passed.
*
* @param obj Object being edited.
* @param part Name of part of which to check the one below.
*
* @return Name of the part below. NULL if an error occurred or if @p part is
* the bottommost part in the group.
*/
EAPI const char * edje_edit_part_below_get(Evas_Object *obj, const char *part);
/** Move the given part below the previous one.
*
* @param obj Object being edited.
* @param part Name of part to move one step below.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_part_restack_below(Evas_Object *obj, const char *part);
/** Move the given part above the next one.
*
* @param obj Object being edited.
* @param part Name of part to move one step above.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_part_restack_above(Evas_Object *obj, const char *part);
/** Set a new name for part.
*
* Note that the relative getter function don't exist as it don't make sense ;)
*
* @param obj Object being edited.
* @param part Name of part to rename.
* @param new_name New name for the given part.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_part_name_set(Evas_Object *obj, const char *part, const char *new_name);
/** Get api's name of a part.
*
* @param obj Object being edited.
* @param part Name of the part.
*
* @return name of the api if successful, NULL otherwise.
*/
EAPI const char * edje_edit_part_api_name_get(Evas_Object *obj, const char *part);
/** Get api's description of a part.
*
* @param obj Object being edited.
* @param part Name of the part.
*
* @return description of the api if successful, NULL otherwise.
*/
EAPI const char * edje_edit_part_api_description_get(Evas_Object *obj, const char *part);
/** Set api's name of a part.
*
* @param obj Object being edited.
* @param part Name of the part.
* @param name New name for the api property.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_part_api_name_set(Evas_Object *obj, const char *part, const char *name);
/** Set api's description of a part.
*
* @param obj Object being edited.
* @param part Name of part.
* @param description New description for the api property.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_part_api_description_set(Evas_Object *obj, const char *part, const char *description);
/** Get the type of a part.
*
* @param obj Object being edited.
* @param part Name of part to get the type of.
*
* @return Type of the part. See @ref edcref for details.
*/
EAPI Edje_Part_Type edje_edit_part_type_get(Evas_Object *obj, const char *part);
/** Get the clip_to part.
*
* @param obj Object being edited.
* @param part Name of the part whose clipper to get.
*
* @return Name of the part @p part is clipped to. NULL is returned on errors and if the part don't have a clip.
*/
EAPI const char * edje_edit_part_clip_to_get(Evas_Object *obj, const char *part);
/** Set a part to clip part to.
*
* @param obj Object being edited.
* @param part Part to set the clipper to.
* @param clip_to Part to use as clipper, if NULL then the clipping value will be cancelled (unset clipping).
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_part_clip_to_set(Evas_Object *obj, const char *part, const char *clip_to);
/** Get the source of part.
*
* The meaning of this parameter varies depending on the type of the part.
* For GROUP parts, it's the name of another group in the Edje file which will
* be autoloaded and swallowed on this part.
* For TEXTBLOCK parts, it's the name of a group to be used for selection
* display under the text.
* For EXTERNAL parts, it's the name of the registered external widget to load
* and swallow on this part.
*
* @param obj Object being edited.
* @param part Part to get the source from.
*
* @return Content of the source parameter or NULL if nothing set or an error occurred.
*/
EAPI const char * edje_edit_part_source_get(Evas_Object *obj, const char *part);
/** Set the source of part.
*
* @param obj Object being edited.
* @param part Part to set the source of.
* @param source Value for the source parameter.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*
* @see edje_edit_part_source_get()
*
* @note You can't change the source for EXTERNAL parts, it's akin to changing
* the type of the part.
*
* NOTE: This is not applied now. You must reload the edje to see the change.
*/
EAPI Eina_Bool edje_edit_part_source_set(Evas_Object *obj, const char *part, const char *source);
/** Get the effect for a given part.
*
* Gets the effect used for parts of type TEXT. See @ref edcref for more details.
*
* @param obj Object being edited.
* @param part Part to get the effect of.
*
* @return The effect set for the part.
*/
EAPI Edje_Text_Effect edje_edit_part_effect_get(Evas_Object *obj, const char *part);
/** Set the effect for a given part.
*
* @param obj Object being edited.
* @param part Part to set the effect to. Only makes sense on type TEXT.
* @param effect Effect to set for the part.
*/
EAPI void edje_edit_part_effect_set(Evas_Object *obj, const char *part, Edje_Text_Effect effect);
/** Get the current selected state in part.
*
* @param obj Object being edited.
* @param part Part to get the selected state of.
* @param value Pointer to a double where the value of the state will be stored.
*
* @return The name of the currently selected state for the part.
*/
EAPI const char * edje_edit_part_selected_state_get(Evas_Object *obj, const char *part, double *value);
/** Set the current state in part.
*
* @param obj Object being edited.
* @param part Part to set the state of.
* @param state Name of the state to set.
* @param value Value of the state.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_part_selected_state_set(Evas_Object *obj, const char *part, const char *state, double value);
/** Get mouse_events for part.
*
* @param obj Object being edited.
* @param part Part to get if the mouse events is accepted.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_part_mouse_events_get(Evas_Object *obj, const char *part);
/** Set mouse_events for part.
*
* @param obj Object being edited.
* @param part The part to set if the mouse events is accepted.
* @param mouse_events EINA_TRUE if part will accept mouse events, EINA_FALSE otherwise.
*/
EAPI void edje_edit_part_mouse_events_set(Evas_Object *obj, const char *part, Eina_Bool mouse_events);
/** Get repeat_events for part.
*
* @param obj Object being edited.
* @param part Part to set if will pass all events to the other parts.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_part_repeat_events_get(Evas_Object *obj, const char *part);
/** Set repeat_events for part.
*
* @param obj Object being edited.
* @param part Part to set if will repeat all the received mouse events to other parts.
* @param repeat_events EINA_TRUE if the events received will propagate to other parts, EINA_FALSE otherwise
*/
EAPI void edje_edit_part_repeat_events_set(Evas_Object *obj, const char *part, Eina_Bool repeat_events);
/** Get ignore_flags for part.
*
* @param obj Object being edited.
* @param part Part to get which event_flags are being ignored.
*
* @return The Event flags set to the part.
*/
EAPI Evas_Event_Flags edje_edit_part_ignore_flags_get(Evas_Object *obj, const char *part);
/** Set ignore_flags for part.
*
* @param obj Object being edited.
* @param part Part to set which event flags will be ignored.
* @param ignore_flags The Event flags to be ignored by the part.
*/
EAPI void edje_edit_part_ignore_flags_set(Evas_Object *obj, const char *part, Evas_Event_Flags ignore_flags);
/** Set scale property for the part.
*
* This property tells Edje that the given part should be scaled by the
* Edje scale factor.
*
* @param obj Object being edited.
* @param part Part to set scale for.
* @param scale Scale value to set.
*/
EAPI void edje_edit_part_scale_set(Evas_Object *obj, const char *part, Eina_Bool scale);
/** Get scale for the part.
*
* @param obj Object being edited.
* @param part Part to get the scale value of.
*
* @return Whether scale is on (EINA_TRUE) or not.
*/
EAPI Eina_Bool edje_edit_part_scale_get(Evas_Object *obj, const char *part);
/** Get horizontal dragable state for part.
*
* @param obj Object being edited.
* @param part Part to get if can be dragged horizontally;
*
* @return 1 (or -1) if the part can be dragged horizontally, 0 otherwise.
*/
EAPI int edje_edit_part_drag_x_get(Evas_Object *obj, const char *part);
/** Set horizontal dragable state for part.
*
* @param obj Object being edited.
* @param part Part to set if should be dragged horizontally.
* @param drag 1 (or -1) if the part should be dragged horizontally, 0 otherwise.
*/
EAPI void edje_edit_part_drag_x_set(Evas_Object *obj, const char *part, int drag);
/** Get vertical dragable state for part.
*
* @param obj Object being edited.
* @param part Part to get if can be dragged vertically.
*
* @return 1 (or - 1) if the part can be dragged vertically, 0 otherwise.
*/
EAPI int edje_edit_part_drag_y_get(Evas_Object *obj, const char *part);
/** Set vertical dragable state for part.
*
* @param obj Object being edited.
* @param part Part to set if should be dragged vertically.
* @param drag 1 (or -1) of the part shpuld be dragged vertically, 0 otherwise.
*/
EAPI void edje_edit_part_drag_y_set(Evas_Object *obj, const char *part, int drag);
/** Get horizontal dragable step for part.
*
* @param obj Object being edited.
* @param part Part to get the drag horizontal step value.
*
* @return The step value.
*/
EAPI int edje_edit_part_drag_step_x_get(Evas_Object *obj, const char *part);
/** Set horizontal dragable state for part.
*
* @param obj Object being edited.
* @param part Part to set the drag horizontal step value.
* @param step The step the will be dragged.
*/
EAPI void edje_edit_part_drag_step_x_set(Evas_Object *obj, const char *part, int step);
/** Get vertical dragable step for part.
*
* @param obj Object being edited.
* @param part Part to get the drag vertical step value.
*
* @return The step value.
*/
EAPI int edje_edit_part_drag_step_y_get(Evas_Object *obj, const char *part);
/** Set vertical dragable state for part.
*
* @param obj Object being edited.
* @param part Part to set the drag vertical step value.
* @param step The step the will be dragged.
*/
EAPI void edje_edit_part_drag_step_y_set(Evas_Object *obj, const char *part, int step);
/** Get horizontal dragable count for part.
*
* @param obj Object being edited.
* @param part Part to get the drag horizontal count value.
*/
EAPI int edje_edit_part_drag_count_x_get(Evas_Object *obj, const char *part);
/** Set horizontal dragable count for part.
*
* @param obj Object being edited.
* @param part Part to set the drag horizontal count value.
* @param count The count value.
*/
EAPI void edje_edit_part_drag_count_x_set(Evas_Object *obj, const char *part, int count);
/** Get vertical dragable count for part.
*
* @param obj Object being edited.
* @param part Part to get the drag vertical count value.
*/
EAPI int edje_edit_part_drag_count_y_get(Evas_Object *obj, const char *part);
/** Set vertical dragable count for part.
*
* @param obj Object being edited.
* @param part Part to set the drag vertical count value.
* @param count The count value.
*/
EAPI void edje_edit_part_drag_count_y_set(Evas_Object *obj, const char *part, int count);
/** Get the name of the part that is used as 'confine' for the given draggies.
*
* @param obj Object being edited.
* @param part Part to get the name that is used as 'confine' for the given draggies.
*
* @return The name of the confine part or NULL (if unset).
*/
EAPI const char * edje_edit_part_drag_confine_get(Evas_Object *obj, const char *part);
/** Set the name of the part that is used as 'confine' for the given draggies.
*
* @param obj Object being edited.
* @param part Part to set the name that is used as 'confine' for the given draggies.
* @param confine The name of the confine part or NULL to unset confine.
*/
EAPI void edje_edit_part_drag_confine_set(Evas_Object *obj, const char *part, const char *confine);
/** Get the name of the part that is used as the receiver of the drag event.
*
* @param obj Object being edited.
* @param part Part to get the name that is used as the receiver of the drag event.
*
* @return The name of the part that will receive events, or NULL (if unset).
*/
EAPI const char * edje_edit_part_drag_event_get(Evas_Object *obj, const char *part);
/** Set the name of the part that will receive events from the given draggies.
*
* @param obj Object being edited.
* @param part Part to set the name that will receive events from the given draggies.
* @param event The name of the part that will receive events, or NULL to unset.
*/
EAPI void edje_edit_part_drag_event_set(Evas_Object *obj, const char *part, const char *event);
//@}
/******************************************************************************/
/************************** STATES API ************************************/
/******************************************************************************/
/** @name States API
* Functions to deal with part states (see @ref edcref).
*/ //@{
/** Get the list of all the states in the given part.
*
* @param obj Object being edited.
* @param part Part to get the states names list.
*
* @return An Eina_List* of string (char *)containing all the states names found
* in part, including the float value (ex: "default 0.00").
*
* Use edje_edit_string_list_free() when you don't need it anymore.
*/
EAPI Eina_List * edje_edit_part_states_list_get(Evas_Object *obj, const char *part);
/** Set a new name for the given state in the given part.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state Name of the state to rename.
* @param value Value of the state to rename.
* @param new_name The new name for the state.
* @param new_value The new value for the state.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_name_set(Evas_Object *obj, const char *part, const char *state, double value, const char *new_name, double new_value);
/** Create a new state to the give part.
*
* @param obj Object being edited.
* @param part Part to set the name of the new state.
* @param name Name for the new state (not including the state value).
* @param value The state value.
*
* @return EINA_TRUE if successfully, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_add(Evas_Object *obj, const char *part, const char *name, double value);
/** Delete the given part state from the edje.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The current name of the state (not including the state value).
* @param value The state value.
*
* @return EINA_TRUE if successfully, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_del(Evas_Object *obj, const char *part, const char *state, double value);
/** Check if a part state with the given name exist.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to check (not including the state value).
* @param value The state value.
*
* @return EINA_TRUE if the part state exist, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_exist(Evas_Object *obj, const char *part, const char *state, double value);
/** Copies the state @p from into @p to. If @p to doesn't exist it will be created.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param from State to copy from (not including state value).
* @param val_from The value of the state to copy from.
* @param to State to copy into (not including state value).
* @param val_to The value of the state to copy into.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_copy(Evas_Object *obj, const char *part, const char *from, double val_from, const char *to, double val_to);
/** Get the 'rel1 relative X' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get 'rel1 relative X' (not including the state value).
* @param value The state value.
*
* @return The 'rel1 relative X' value of the part state.
*/
EAPI double edje_edit_state_rel1_relative_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the 'rel1 relative Y' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get 'rel1 relative Y' (not including the state value).
* @param value The state value.
*
* @return The 'rel1 relative Y' value of the part state.
*/
EAPI double edje_edit_state_rel1_relative_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the 'rel2 relative X' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get 'rel2 relative X' (not including the state value).
* @param value The state value.
*
* @return The 'rel2 relative X' value of the part state.
*/
EAPI double edje_edit_state_rel2_relative_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the 'rel2 relative Y' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get 'rel2 relative Y' (not including the state value).
* @param value The state value.
*
* @return The 'rel2 relative Y' value of the part state.
*/
EAPI double edje_edit_state_rel2_relative_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the 'rel1 relative X' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set 'rel1 relative X' (not including the state value).
* @param value The state value.
* @param x The new 'rel1 relative X' value to set'.
*/
EAPI void edje_edit_state_rel1_relative_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x);
/** Set the 'rel1 relative Y' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set 'rel1 relative Y' (not including the state value).
* @param value The state value.
* @param y The new 'rel1 relative Y' value to set'.
*/
EAPI void edje_edit_state_rel1_relative_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y);
/** Set the 'rel2 relative X' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set 'rel2 relative X' (not including the state value).
* @param value The state value.
* @param x The new 'rel2 relative X' value to set'.
*/
EAPI void edje_edit_state_rel2_relative_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x);
/** Set the 'rel2 relative Y' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set 'rel2 relative Y' (not including the state value).
* @param value The state value.
* @param y The new 'rel2 relative Y' value to set'.
*/
EAPI void edje_edit_state_rel2_relative_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y);
/** Get the 'rel1 offset X' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get 'rel1 offset X' (not including the state value).
* @param value The state value.
*
* @return The 'rel1 offset X' value of the part state.
*/
EAPI int edje_edit_state_rel1_offset_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the 'rel1 offset Y' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get 'rel1 offset Y' (not including the state value).
* @param value The state value.
*
* @return The 'rel1 offset Y' value of the part state.
*/
EAPI int edje_edit_state_rel1_offset_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the 'rel2 offset X' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get 'rel2 offset X' (not including the state value).
* @param value The state value.
*
* @return The 'rel2 offset X' value of the part state.
*/
EAPI int edje_edit_state_rel2_offset_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the 'rel2 offset Y' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get 'rel2 offset Y' (not including the state value).
* @param value The state value.
*
* @return The 'rel2 offset Y' value of the part state.
*/
EAPI int edje_edit_state_rel2_offset_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the 'rel1 offset X' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set 'rel1 offset X' (not including the state value).
* @param value The state value.
* @param x The new 'rel1 offset X' value to set'.
*/
EAPI void edje_edit_state_rel1_offset_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x);
/** Set the 'rel1 offset Y' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set 'rel1 offset Y' (not including the state value).
* @param value The state value.
* @param y The new 'rel1 offset Y' value to set'.
*/
EAPI void edje_edit_state_rel1_offset_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y);
/** Set the 'rel2 offset X' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set 'rel2 offset X' (not including the state value).
* @param value The state value.
* @param x The new 'rel2 offset X' value to set'.
*/
EAPI void edje_edit_state_rel2_offset_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x);
/** Set the 'rel2 offset Y' value of state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set 'rel2 offset Y' (not including the state value).
* @param value The state value.
* @param y The new 'rel2 offset Y' value to set'.
*/
EAPI void edje_edit_state_rel2_offset_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y);
/** Get the part name rel1x is relative to.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The state that contain which the part name rel1x is relative to (not including the state value).
* @param value The state value.
*
* @return The part name rel1x is relative to or NULL if the part is relative to the whole interface.
*/
EAPI const char * edje_edit_state_rel1_to_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the part name rel1y is relative to.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The state that contain which the part name rel1y is relative to (not including the state value).
* @param value The state value.
*
* @return The part name rel1y is relative to or NULL if the part is relative to the whole interface.
*/
EAPI const char * edje_edit_state_rel1_to_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the part name rel2x is relative to.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The state that contain which the part name rel2x is relative to (not including the state value).
* @param value The state value.
*
* @return The part name rel2x is relative to or NULL if the part is relative to the whole interface.
*/
EAPI const char * edje_edit_state_rel2_to_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the part name rel2y is relative to.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The state that contain which the part name rel2y is relative to (not including the state value).
* @param value The state value.
*
* @return The part name rel2y is relative to or NULL if the part is relative to the whole interface.
*/
EAPI const char * edje_edit_state_rel2_to_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the part rel1x is relative to.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set rel1x is relative to (not including the state value).
* @param value The state value.
* @param rel_to The name of the part that is used as container/parent (NULL make the part relative to the whole interface).
*
* @return The part name rel1x is relative to or NULL if the part is relative to the whole interface.
*/
EAPI void edje_edit_state_rel1_to_x_set(Evas_Object *obj, const char *part, const char *state, double value, const char *rel_to);
/** Set the part rel1y is relative to.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set rel1y is relative to (not including the state value).
* @param value The state value.
* @param rel_to The name of the part that is used as container/parent (NULL make the part relative to the whole interface).
*
* @return The part name rel1y is relative to or NULL if the part is relative to the whole interface.
*/
EAPI void edje_edit_state_rel1_to_y_set(Evas_Object *obj, const char *part, const char *state, double value, const char *rel_to);
/** Set the part rel2x is relative to.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set rel2x is relative to (not including the state value).
* @param value The state value.
* @param rel_to The name of the part that is used as container/parent (NULL make the part relative to the whole interface).
*
* @return The part name rel2x is relative to or NULL if the part is relative to the whole interface.
*/
EAPI void edje_edit_state_rel2_to_x_set(Evas_Object *obj, const char *part, const char *state, double value, const char *rel_to);
/** Set the part rel2y is relative to.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set rel2y is relative to (not including the state value).
* @param value The state value.
* @param rel_to The name of the part that is used as container/parent (NULL make the part relative to the whole interface).
*
* @return The part name rel2y is relative to or NULL if the part is relative to the whole interface.
*/
EAPI void edje_edit_state_rel2_to_y_set(Evas_Object *obj, const char *part, const char *state, double value, const char *rel_to);
/** Get the color of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get color (not including the state value).
* @param value The state value.
* @param r A pointer to store the red value.
* @param g A pointer to store the green value.
* @param b A pointer to store the blue value.
* @param a A pointer to store the alpha value.
*/
EAPI void edje_edit_state_color_get(Evas_Object *obj, const char *part, const char *state, double value, int *r, int *g, int *b, int *a);
/** Get the color2 of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get color (not including the state value).
* @param value The state value.
* @param r A pointer to store the red value.
* @param g A pointer to store the green value.
* @param b A pointer to store the blue value.
* @param a A pointer to store the alpha value.
*/
EAPI void edje_edit_state_color2_get(Evas_Object *obj, const char *part, const char *state, double value, int *r, int *g, int *b, int *a);
/** Get the color3 of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get color (not including the state value).
* @param value The state value.
* @param r A pointer to store the red value.
* @param g A pointer to store the green value.
* @param b A pointer to store the blue value.
* @param a A pointer to store the alpha value.
*/
EAPI void edje_edit_state_color3_get(Evas_Object *obj, const char *part, const char *state, double value, int *r, int *g, int *b, int *a);
/** Set the color of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set color (not including the state value).
* @param value The state value.
* @param r The red value of the color.
* @param g The green value of the color.
* @param b The blue value of the color.
* @param a The alpha value of the color.
*/
EAPI void edje_edit_state_color_set(Evas_Object *obj, const char *part, const char *state, double value, int r, int g, int b, int a);
/** Set the color2 of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set color (not including the state value).
* @param value The state value.
* @param r The red value of the color.
* @param g The green value of the color.
* @param b The blue value of the color.
* @param a The alpha value of the color.
*/
EAPI void edje_edit_state_color2_set(Evas_Object *obj, const char *part, const char *state, double value, int r, int g, int b, int a);
/** Set the color3 of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set color (not including the state value).
* @param value The state value.
* @param r The red value of the color.
* @param g The green value of the color.
* @param b The blue value of the color.
* @param a The alpha value of the color.
*/
EAPI void edje_edit_state_color3_set(Evas_Object *obj, const char *part, const char *state, double value, int r, int g, int b, int a);
/** Get the horizontal align value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get horizontal align (not including the state value).
* @param value The state value.
*
* @return The horizontal align value for the given state
*/
EAPI double edje_edit_state_align_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the vertical align value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get horizontal align (not including the state value).
* @param value The state value.
*
* @return The vertical align value for the given state
*/
EAPI double edje_edit_state_align_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the horizontal align value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get horizontal align (not including the state value).
* @param value The state value.
* @param align The new vertical align value.
*/
EAPI void edje_edit_state_align_x_set(Evas_Object *obj, const char *part, const char *state, double value, double align);
/** Set the vertical align value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get vertical align (not including the state value).
* @param value The state value.
* @param align The new vertical align value.
*/
EAPI void edje_edit_state_align_y_set(Evas_Object *obj, const char *part, const char *state, double value, double align);
/** Get the minimum width value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get minimum width (not including the state value).
* @param value The state value.
*
* @return The minimum width value.
*/
EAPI int edje_edit_state_min_w_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the minimum width value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set minimum width (not including the state value).
* @param value The state value.
* @param min_w Minimum width value.
*/
EAPI void edje_edit_state_min_w_set(Evas_Object *obj, const char *part, const char *state, double value, int min_w);
/** Get the minimum height value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get minimum height (not including the state value).
* @param value The state value.
*
* @return The minimum height value.
*/
EAPI int edje_edit_state_min_h_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the minimum height value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set minimum height (not including the state value).
* @param value The state value.
* @param min_h Minimum height value.
*/
EAPI void edje_edit_state_min_h_set(Evas_Object *obj, const char *part, const char *state, double value, int min_h);
/** Get the maximum width value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get maximum width (not including the state value).
* @param value The state value.
*
* @return The maximum width value.
*/
EAPI int edje_edit_state_max_w_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the maximum width value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set maximum width (not including the state value).
* @param value The state value.
* @param max_w Maximum width value.
*/
EAPI void edje_edit_state_max_w_set(Evas_Object *obj, const char *part, const char *state, double value, int max_w);
/** Get the maximum height value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get maximum height (not including the state value).
* @param value The state value.
*
* @return The maximum height value.
*/
EAPI int edje_edit_state_max_h_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the maximum height value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set maximum height (not including the state value).
* @param value The state value.
* @param max_h Maximum height value.
*/
EAPI void edje_edit_state_max_h_set(Evas_Object *obj, const char *part, const char *state, double value, int max_h);
/** Get the minimum aspect value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get minimum aspect (not including the state value).
* @param value The state value.
*
* @return The minimum aspect
*/
EAPI double edje_edit_state_aspect_min_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the maximum aspect value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get maximum aspect (not including the state value).
* @param value The state value.
*
* @return The maximum aspect
*/
EAPI double edje_edit_state_aspect_max_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the minimum aspect value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set minimum aspect (not including the state value).
* @param value The state value.
* @param aspect Minimum aspect value.
*/
EAPI void edje_edit_state_aspect_min_set(Evas_Object *obj, const char *part, const char *state, double value, double aspect);
/** Set the maximum aspect value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set maximum aspect (not including the state value).
* @param value The state value.
* @param aspect Maximum aspect value.
*/
EAPI void edje_edit_state_aspect_max_set(Evas_Object *obj, const char *part, const char *state, double value, double aspect);
/** Get the aspect preference of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get aspect preference (not including the state value).
* @param value The state value.
*
* @return The aspect preference (0 = None, 1 = Vertical, 2 = Horizontal, 3 = Both)
*/
EAPI unsigned char edje_edit_state_aspect_pref_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the aspect preference of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set aspect preference (not
* including the state value).
* @param value The state value.
* @param pref The aspect preference to set (0 = None, 1 = Vertical, 2
* = Horizontal, 3 = Both)
*/
EAPI void edje_edit_state_aspect_pref_set(Evas_Object *obj, const char *part, const char *state, double value, unsigned char pref);
/** Get the fill horizontal origin relative value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get the fill horizontal origin relative to area (not including the state value).
* @param value The state value.
*
* @return The fill horizontal origin relative to area.
*/
EAPI double edje_edit_state_fill_origin_relative_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the fill vertical origin relative value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get fill vertical origin relative to area (not including the state value).
* @param value The state value.
*
* @return The fill vertical origin relative to area.
*/
EAPI double edje_edit_state_fill_origin_relative_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the fill horizontal origin offset value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get fill horizontal origin offset relative to area (not including the state value).
* @param value The state value.
*
* @return The fill horizontal origin offset relative to area.
*/
EAPI int edje_edit_state_fill_origin_offset_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the fill vertical origin offset value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get fill vertical origin offset relative to area (not including the state value).
* @param value The state value.
*
* @return The fill vertical origin offset value.
*/
EAPI int edje_edit_state_fill_origin_offset_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the fill horizontal origin relative value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set fill horizontal origin relative to area (not including the state value).
* @param value The state value.
* @param x The fill horizontal origin value.
*/
EAPI void edje_edit_state_fill_origin_relative_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x);
/** Set the fill horizontal origin relative value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set fill vertical origin relative to area (not including the state value).
* @param value The state value.
* @param y The fill vertical origin value.
*/
EAPI void edje_edit_state_fill_origin_relative_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y);
/** Set the fill horizontal origin offset value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set fill horizontal origin offset relative to area (not including the state value).
* @param value The state value.
* @param x The fill horizontal origin offset value.
*/
EAPI void edje_edit_state_fill_origin_offset_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x);
/** Set the fill vertical origin offset value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set fill vertical origin offset relative to area (not including the state value).
* @param value The state value.
* @param y The fill vertical origin offset value.
*/
EAPI void edje_edit_state_fill_origin_offset_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y);
/** Get the fill horizontal size relative value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get fill horizontal size relative to area (not including the state value).
* @param value The state value.
*
* @return The fill horizontal size relative to area.
*/
EAPI double edje_edit_state_fill_size_relative_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the fill vertical size relative value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get fill vertical size relative to area (not including the state value).
* @param value The state value.
*
* @return The fill vertical size relative to area.
*/
EAPI double edje_edit_state_fill_size_relative_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the fill horizontal size offset value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get fill horizontal size
* offset relative to area (not including the state value).
* @param value The state value.
*
* @return The fill horizontal size offset relative to area.
*/
EAPI int edje_edit_state_fill_size_offset_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the fill vertical size offset value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get fill vertical size offset
* relative to area (not including the state value).
* @param value The state value.
*
* @return The fill vertical size offset relative to area.
*/
EAPI int edje_edit_state_fill_size_offset_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the fill horizontal size relative value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set fill horizontal size
* relative value (not including the state value).
* @param value The state value.
* @param x The horizontal size relative value.
*/
EAPI void edje_edit_state_fill_size_relative_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x);
/** Set the fill vertical size relative value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set fill vertical size
* relative value (not including the state value).
* @param value The state value.
* @param x The vertical size relative value.
*/
EAPI void edje_edit_state_fill_size_relative_y_set(Evas_Object *obj, const char *part, const char *state, double value, double x);
/** Set the fill horizontal size offset value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set fill horizontal size
* offset relative value (not including the state value).
* @param value The state value.
* @param x The horizontal size offset value.
*/
EAPI void edje_edit_state_fill_size_offset_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x);
/** Set the fill vertical size offset value of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set fill vertical size offset
* relative value (not including the state value).
* @param value The state value.
* @param y The vertical size offset value.
*/
EAPI void edje_edit_state_fill_size_offset_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y);
/** Get the visibility of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get visibility (not including the state value).
* @param value The state value.
*
* @return EINA_TRUE if the state is visible, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_visible_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the visibility of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set visibility (not including the state value).
* @param value The state value.
* @param visible To set state visible (EINA_TRUE if the state is visible, EINA_FALSE otherwise)
*/
EAPI void edje_edit_state_visible_set(Evas_Object *obj, const char *part, const char *state, double value, Eina_Bool visible);
/** Get the color class of the given part state.
*
* Remember to free the string with edje_edit_string_free()
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get color class (not including the state value).
* @param value The state value.
*
* @return The current color class.
*/
EAPI const char *edje_edit_state_color_class_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the color class of the given part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set color class (not including the state value).
* @param value The state value.
* @param color_class The color class to assign.
*/
EAPI void edje_edit_state_color_class_set(Evas_Object *obj, const char *part, const char *state, double value, const char *color_class);
/** Get the list of parameters for an external part.
*
* DO NOT FREE THE LIST!
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get list of Edje_External_Param (not including the state value).
* @param value The state value.
*
* @return The list of Edje_External_Param.
*/
EAPI const Eina_List * edje_edit_state_external_params_list_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the external parameter type and value.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get external parameter (not including the state value).
* @param value The state value.
* @param param The name of the paramter to look for.
* @param type The type of the parameter will be stored here.
* @param val Pointer to value will be stored here - DO NOT FREE IT!
*
* @return EINA_TRUE if the parameter was found, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_external_param_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Edje_External_Param_Type *type, void **val);
/** Get external parameter of type INT.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get external parameter of type INT (not including the state value).
* @param value The state value.
* @param param The name of the paramter.
* @param val The value of the parameter.
*
* @return EINA_TRUE if successful. EINA_FALSE if not found or is of different type.
*/
EAPI Eina_Bool edje_edit_state_external_param_int_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, int *val);
/** Get external parameter of type BOOL.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get external parameter of type BOOL (not including the state value).
* @param value The state value.
* @param param The name of the paramter.
* @param val The value of the parameter.
*
* @return EINA_TRUE if successful. EINA_FALSE if not found or is of different type.
*/
EAPI Eina_Bool edje_edit_state_external_param_bool_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Eina_Bool *val);
/** Get external parameter of type DOUBLE.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get external parameter of type DOUBLE (not including the state value).
* @param value The state value.
* @param param The name of the paramter.
* @param val The value of the parameter.
*
* @return EINA_TRUE if successful. EINA_FALSE if not found or is of different type.
*/
EAPI Eina_Bool edje_edit_state_external_param_double_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, double *val);
/** Get external parameter of type STRING.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get external parameter of
* type STRING (not including the state value).
* @param value The state value.
* @param param The name of the paramter.
* @param val The value of the parameter.
*
* @return EINA_TRUE if successful. EINA_FALSE if not found or is of
* different type.
*/
EAPI Eina_Bool edje_edit_state_external_param_string_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char **val);
/** Get external parameter of type CHOICE.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get external parameter of
* type CHOICE (not including the state value).
* @param value The state value.
* @param param The name of the paramter.
* @param val The value of the parameter.
*
* @return EINA_TRUE if successful. EINA_FALSE if not found or is of
* different type.
*/
EAPI Eina_Bool edje_edit_state_external_param_choice_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char **val);
/** Set the external parameter type and value, adding it if it didn't
* exist before.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get external parameter (not
* including the state value).
* @param value The state value.
* @param param The name of the paramter set.
* @param type The type of the parameter.
*
* @return EINA_TRUE if it was set, EINA_FALSE otherwise.
*/
/**
* Arguments should have proper sized values matching their types:
* - EDJE_EXTERNAL_PARAM_TYPE_INT: int
* - EDJE_EXTERNAL_PARAM_TYPE_BOOL: int
* - EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: double
* - EDJE_EXTERNAL_PARAM_TYPE_STRING: char*
* - EDJE_EXTERNAL_PARAM_TYPE_CHOICE: char*
*
* @note: The validation of the parameter will occur only if the part
* is in the same state as the one being modified.
*/
EAPI Eina_Bool edje_edit_state_external_param_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Edje_External_Param_Type type, ...);
/** Set external parameter of type INT.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get external parameter of
* type INT (not including the state value).
* @param value The state value.
* @param param The name of the paramter.
* @param val Value will be stored here.
*
* @return EINA_TRUE if it was set, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_external_param_int_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, int val);
/** Set external parameter of type BOOL.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get external parameter of type BOOL (not including the state value).
* @param value The state value.
* @param param The name of the paramter.
* @param val Value will be stored here.
*
* @return EINA_TRUE if it was set, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_external_param_bool_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Eina_Bool val);
/** Set external parameter of type DOUBLE.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get external parameter of type DOUBLE (not including the state value).
* @param value The state value.
* @param param The name of the paramter.
* @param val Value will be stored here.
*
* @return EINA_TRUE if it was set, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_external_param_double_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, double val);
/** Set external parameter of type STRING.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get external parameter of type STRING (not including the state value).
* @param value The state value.
* @param param The name of the paramter.
* @param val Value will be stored here.
*
* @return EINA_TRUE if it was set, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_external_param_string_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char *val);
/** Set external parameter of type CHOICE.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get external parameter of type CHOICE (not including the state value).
* @param value The state value.
* @param param The name of the paramter.
* @param val Value will be stored here.
*
* @return EINA_TRUE if it was set, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_external_param_choice_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char *val);
//@}
/******************************************************************************/
/************************** TEXT API ************************************/
/******************************************************************************/
/** @name Text API
* Functions to deal with text objects (see @ref edcref).
*/ //@{
/** Get the text of a part state.
*
* Remember to free the returned string with edje_edit_string_free().
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get text (not including the state value).
* @param value The state value.
*
* @return A newly allocated string containing the text for the given state.
*/
EAPI const char * edje_edit_state_text_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the text of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set text (not including the state value).
* @param value The state value.
* @param text The new text to assign.
*/
EAPI void edje_edit_state_text_set(Evas_Object *obj, const char *part, const char *state, double value,const char *text);
/** Get font name for a given part state.
*
* @param obj Object being edited.
* @param part The name of the part to get the font of.
* @param state The state of the part to get the font of.
* @param value Value of the state.
*
* @return Font used by the part or NULL if error or nothing is set.
*/
EAPI const char * edje_edit_state_font_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set font name for a given part state.
*
* Font name can be any alias of an internal font in the Edje file and,
* if it doesn't match any, Edje will look for a font with the given name
* in the system fonts.
*
* @param obj Object being edited.
* @param part Part to set the font of.
* @param state State in which the font is set.
* @param value Value of the state.
* @param font The font name to use.
*/
EAPI void edje_edit_state_font_set(Evas_Object *obj, const char *part, const char *state, double value, const char *font);
/** Get the text size of a part state
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get text size (not including the state value).
* @param value The state value.
*
* @return The text size or -1 on errors.
*/
EAPI int edje_edit_state_text_size_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the text size of a part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set text size (not including the state value).
* @param value The state value.
* @param size The new font size to set (in pixel)
*/
EAPI void edje_edit_state_text_size_set(Evas_Object *obj, const char *part, const char *state, double value, int size);
/** Get the text horizontal align of a part state.
*
* The value range is from 0.0(right) to 1.0(left)
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get the text horizontal align (not including the state value).
* @param value The state value.
*
* @return The text horizont align value
*/
EAPI double edje_edit_state_text_align_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the text vertical align of a part state.
*
* The value range is from 0.0(top) to 1.0(bottom)
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get the text vertical align (not including the state value).
* @param value The state value.
*
* @return The text horizont align value
*/
EAPI double edje_edit_state_text_align_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the text horizontal align of a part state.
*
* The value range is from 0.0(right) to 1.0(left)
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set the text horizontal align (not including the state value).
* @param value The state value.
* @param align The new text horizontal align value
*/
EAPI void edje_edit_state_text_align_x_set(Evas_Object *obj, const char *part, const char *state, double value, double align);
/** Set the text vertical align of a part state.
*
* The value range is from 0.0(top) to 1.0(bottom)
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set the text vertical align (not including the state value).
* @param value The state value.
* @param align The new text vertical align value
*/
EAPI void edje_edit_state_text_align_y_set(Evas_Object *obj, const char *part, const char *state, double value, double align);
/** Get the text elipsis of a part state.
*
* The value range is from 0.0(right) to 1.0(left)
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get the text elipses value (not including the state value).
* @param value The state value.
*
* @return The text elipsis value
*/
EAPI double edje_edit_state_text_elipsis_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the text vertical align of a part state.
*
* The value range is from 0.0(right) to 1.0(left)
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set the text elipses value (not including the state value).
* @param value The state value.
* @param balance The position where to cut the string
*/
EAPI void edje_edit_state_text_elipsis_set(Evas_Object *obj, const char *part, const char *state, double value, double balance);
/** Get if the text part fit it's container horizontally
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get the if the text part fit it's container horizontally (not including the state value).
* @param value The state value.
*
* @return EINA_TRUE If the part fit it's container horizontally, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_text_fit_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set if the text part should fit it's container horizontally
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set the if the text part fit it's container horizontally (not including the state value).
* @param value The state value.
* @param fit EINA_TRUE to make the text fit it's container horizontally, EINA_FALSE otherwise.
*/
EAPI void edje_edit_state_text_fit_x_set(Evas_Object *obj, const char *part, const char *state, double value, Eina_Bool fit);
/** Get if the text part fit it's container vertically
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get the if the text part fit it's container vertically (not including the state value).
* @param value The state value.
*
* @return EINA_TRUE If the part fit it's container vertically, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_text_fit_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set if the text part should fit it's container vertically
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set the if the text part fit it's container vertically (not including the state value).
* @param value The state value.
* @param fit EINA_TRUE to make the text fit it's container vertically, EINA_FALSE otherwise.
*/
EAPI void edje_edit_state_text_fit_y_set(Evas_Object *obj, const char *part, const char *state, double value, Eina_Bool fit);
/** Get the list of all the fonts in the given edje.
*
* Use edje_edit_string_list_free() when you don't need the list anymore.
*
* @param obj Object being edited.
*
* @return A list containing all the fonts names found in the edje file.
*/
EAPI Eina_List * edje_edit_fonts_list_get(Evas_Object *obj);
/** Add a new font to the edje file.
*
* The newly created font will be available to all the groups in the edje, not only the current one.
*
* @param obj Object being edited.
* @param path The file path to load the font from.
* @param alias The alias for file, or NULL to use filename
*
* @return EINA_TRUE if font cat be loaded, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_font_add(Evas_Object *obj, const char *path, const char* alias);
/** Delete font from the edje file.
*
* The font will be removed from all the groups in the edje, not only the current one.
*
* @param obj Object being edited.
* @param alias The font alias
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise (including the
* case when the alias is not valid).
*/
EAPI Eina_Bool edje_edit_font_del(Evas_Object *obj, const char* alias);
/** Get font path for a given font alias.
*
* Remember to free the string with edje_edit_string_free()
*
* @param obj Object being edited.
* @param alias The font alias.
*
* @return The path of the given font alias.
*/
EAPI const char *edje_edit_font_path_get(Evas_Object *obj, const char *alias);
/** Get font name for a given part state.
*
* Remember to free the returned string using edje_edit_string_free().
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get the name of the font used (not including the state value).
* @param value The state value.
*
* @return The name of the font used in the given part state.
*/
EAPI const char * edje_edit_state_font_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set font name for a given part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set the name of the font that will be used (not including the state value).
* @param value The state value.
* @param font The name of the font to use in the given part state.
*/
EAPI void edje_edit_state_font_set(Evas_Object *obj, const char *part, const char *state, double value, const char *font);
//@}
/******************************************************************************/
/************************** IMAGES API ************************************/
/******************************************************************************/
/** @name Images API
* Functions to deal with image objects (see @ref edcref).
*/ //@{
/** Get the list of all the images in the given edje.
* Use edje_edit_string_list_free() when you don't need the list anymore.
*
* @param obj Object being edited.
*
* @return A List containing all images names found in the edje file.
*/
EAPI Eina_List * edje_edit_images_list_get(Evas_Object *obj);
/** Add an new image to the image collection
*
* This function add the given image inside the edje. Don't add a new image part
* but only put the image inside the edje file. It actually write directly to
* the file so you don't have to save.
* After you have to create a new image_part that use this image. Note that all
* the parts in the edje share the same image collection, thus you can/must use
* the same image for different part.
*
* The format of the image files that can be loaded depend on the evas engine on your system
*
* @param obj Object being edited.
* @param path The name of the image file to include in the edje.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_image_add(Evas_Object *obj, const char *path);
/** Delete an image from the image collection
*
* It actually write directly to the file so you don't have to save.
*
* @param obj Object being edited.
* @param name The name of the image file to include in the edje.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise (including the
* case when the name is not valid).
*/
EAPI Eina_Bool edje_edit_image_del(Evas_Object *obj, const char *name);
/** Add an image entry to the image collection
*
* This function adds the given image entry to the edje image collection. The
* image needs to be inside the eet already, with key name "images/id". After
* you have to create a new image_part that use this image, referring to it as
* "name". Note that all the parts in the edje share the same image collection,
* thus you can/must use the same image for different part.
*
* @param obj Object being edited.
* @param name The image entry name.
* @param id The image id.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_image_data_add(Evas_Object *obj, const char *name, int id);
/** Get normal image name for a given part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get the name that is being used (not including the state value).
* @param value The state value.
*
* @return The name of the image used by state.
*/
EAPI const char * edje_edit_state_image_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set normal image for a given part state.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set the image that will be used (not including the state value).
* @param value The state value.
* @param image The name of the image (must be an image contained in the edje file).
*/
EAPI void edje_edit_state_image_set(Evas_Object *obj, const char *part, const char *state, double value, const char *image);
/** Get image id for a given image name.
*
* @param obj Object being edited.
* @param image_name The image name.
*
* @return The id of the given image name.
*/
EAPI int edje_edit_image_id_get(Evas_Object *obj, const char *image_name);
/** Get compression type for the given image.
*
* @param obj Object being edited.
* @param image The name of the image.
*
* @return One of Image Compression types.
* (EDJE_EDIT_IMAGE_COMP_RAW, EDJE_EDIT_IMAGE_COMP_USER, EDJE_EDIT_IMAGE_COMP_COMP, EDJE_EDIT_IMAGE_COMP_LOSSY).
*/
EAPI Edje_Edit_Image_Comp edje_edit_image_compression_type_get(Evas_Object *obj, const char *image);
/** Get compression rate for the given image.
*
* @param obj Object being edited.
* @param image The name of the image.
*
* @return The compression rate (if the imnage is @c
* EDJE_EDIT_IMAGE_COMP_LOSSY) or < 0, on errors.
*/
EAPI int edje_edit_image_compression_rate_get(Evas_Object *obj, const char *image);
/** Get the image border of a part state.
*
* Pass NULL to any of [r,g,b,a] to get only the others.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get the image border (not
* including the state value).
* @param value The state value.
* @param l A pointer to store the left value
* @param r A pointer to store the right value
* @param t A pointer to store the top value
* @param b A pointer to store the bottom value
*/
EAPI void edje_edit_state_image_border_get(Evas_Object *obj, const char *part, const char *state, double value, int *l, int *r, int *t, int *b);
/** Set the image border of a part state.
*
* Pass -1 to any of [l,r,t,b] to leave the value untouched.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set the image border (not
* including the state value).
* @param value The state value.
* @param l Left border value (or -1).
* @param r Right border value (or -1).
* @param t Top border value (or -1).
* @param b Bottom border value (or -1).
*/
EAPI void edje_edit_state_image_border_set(Evas_Object *obj, const char *part, const char *state, double value, int l, int r, int t, int b);
/** Get if the image center should be draw.
*
* 1 means to draw the center, 0 to don't draw it.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get the image border fill (not including the state value).
* @param value The state value.
*
* @return 1 if the center of the bordered image is draw, 0 otherwise.
*/
EAPI unsigned char edje_edit_state_image_border_fill_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set if the image center should be draw.
*
* 1 means to draw the center, 0 to don't draw it.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to set the image border fill (not including the state value).
* @param value The state value.
* @param fill Fill to be se. 1 if the center of the bordered image is draw, 0 otherwise.
*/
EAPI void edje_edit_state_image_border_fill_set(Evas_Object *obj, const char *part, const char *state, double value, unsigned char fill);
/** Get the list of all the tweens images in the given part state.
*
* Use edje_edit_string_list_free() when you don't need it anymore.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to get the list of all the tweens images (not including the state value).
* @param value The state value.
*
* @return A string list containing all the image name that form a tween animation in the given part state.
*/
EAPI Eina_List * edje_edit_state_tweens_list_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Add a new tween frame to the given part state.
*
* The tween param must be the name of an existing image.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to add a new tween frame (not including the state value).
* @param value The state value.
* @param tween The name of the image to add.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_tween_add(Evas_Object *obj, const char *part, const char *state, double value, const char *tween);
/** Remove the first tween with the given name.
*
* The image is not removed from the edje.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state to del the tween (not including the state value).
* @param value The state value.
* @param tween The name of the image to del.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_tween_del(Evas_Object *obj, const char *part, const char *state, double value, const char *tween);
//@}
/******************************************************************************/
/************************* SPECTRUM API ***********************************/
/******************************************************************************/
/** @name Spectrum API
* Functions to manage spectrum (see @ref edcref).
*/ //@{
/** Get the list of all the spectrum in the given edje object.
*
* Use edje_edit_string_list_free() when you don't need it anymore.
*
* @param obj Object being edited.
*
* @return A list containing all the spectra names.
*/
EAPI Eina_List * edje_edit_spectrum_list_get(Evas_Object *obj);
/** Add a new spectra in the given edje object.
*
* @param obj Object being edited.
* @param name The name of the spectra to include in the edje.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_spectra_add(Evas_Object *obj, const char *name);
/** Delete the given spectra from the edje object.
*
* @param obj Object being edited.
* @param spectra The name of the spectra to delete.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_spectra_del(Evas_Object *obj, const char *spectra);
/** Change the name of the given spectra.
*
* @param obj Object being edited.
* @param spectra The name of the current spectra.
* @param name The new name to assign.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_spectra_name_set(Evas_Object *obj, const char *spectra, const char *name);
/** Get the number of stops in the given spectra.
*
* @param obj Object being edited.
* @param spectra The name of the spectra.
*
* @return The number of stops (or 0 on errors).
*/
EAPI int edje_edit_spectra_stop_num_get(Evas_Object *obj, const char *spectra);
/** Set the number of stops in the given spectra.
*
* @param obj Object being edited.
* @param spectra The name of the spectra.
* @param num The number of stops you want
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_spectra_stop_num_set(Evas_Object *obj, const char *spectra, int num);
/** Get the colors of the given stop.
*
* @param obj Object being edited.
* @param spectra The name of the spectra.
* @param stop_number The number of the stop,
* @param r Where to store the red color value,
* @param g Where to store the green color value,
* @param b Where to store the blue color value,
* @param a Where to store the alpha color value,
* @param d Where to store the delta stop value,
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_spectra_stop_color_get(Evas_Object *obj, const char *spectra, int stop_number, int *r, int *g, int *b, int *a, int *d);
/** Set the colors of the given stop.
*
* @param obj Object being edited.
* @param spectra The name of the spectra.
* @param stop_number The number of the stops,
* @param r The red color value to set,
* @param g The green color value to set,
* @param b The blue color value to set,
* @param a The alpha color value to set,
* @param d The delta stop value to set,
*/
EAPI Eina_Bool edje_edit_spectra_stop_color_set(Evas_Object *obj, const char *spectra, int stop_number, int r, int g, int b, int a, int d);
//@}
/******************************************************************************/
/************************* GRADIENT API ***********************************/
/******************************************************************************/
/** @name Gradient API
* Functions to deal with gradient objects (see @ref edcref).
*/ //@{
/** Get the type of gradient.
*
* Remember to free the string with edje_edit_string_free().
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to get the gradient type (not including the state value).
* @param value The state value.
*
* @return The type of gradient used in state.
* (linear, linear.diag, linear.codiag, radial, rectangular, angular, sinosoidal)
*/
EAPI const char * edje_edit_state_gradient_type_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the type of gradient.
*
* Gradient type can be on of the following: linear, linear.diag, linear.codiag, radial, rectangular, angular, sinusoidal
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to set the gradient type (not including the state value).
* @param value The state value.
* @param type The type of gradient to use.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_gradient_type_set(Evas_Object *obj, const char *part, const char *state, double value, const char *type);
/** Get if the current gradient use the fill properties or the gradient_rel as params.
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to set the gradient type (not including the state value).
* @param value The state value.
*
* @return EINA_TRUE if gradient use the fill properties, EINA_FALSE otherwise.
* */
EAPI Eina_Bool edje_edit_state_gradient_use_fill_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the spectra used by part state.
*
* Remember to free the string with edje_edit_string_free().
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to get the spectra name used (not including the state value).
* @param value The state value.
*
* @return The spectra name used in state.
*/
EAPI const char * edje_edit_state_gradient_spectra_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the spectra used by part state.
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to set the spectra (not including the state value).
* @param value The state value.
* @param spectra The spectra name to assign
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_gradient_spectra_set(Evas_Object *obj, const char *part, const char *state, double value, const char *spectra);
/** Get the angle of the gradient.
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to get the angle (not including the state value).
* @param value The state value.
*
* @return The angle of the gradient.
*/
EAPI int edje_edit_state_gradient_angle_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the angle of the gradient.
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to set the angle (not including the state value).
* @param value The state value.
* @param angle The angle to set.
*/
EAPI void edje_edit_state_gradient_angle_set(Evas_Object *obj, const char *part, const char *state, double value, int angle);
/** Get the gradient rel1 horizontal relative value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to get rel1 relative x value (not including the state value).
* @param value The state value.
*
* @return The gradient rel1 horizontal relative value.
*/
EAPI double edje_edit_state_gradient_rel1_relative_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the gradient rel1 vertical relative value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to get rel1 relative y value (not including the state value).
* @param value The state value.
*
* @return The gradient rel1 vertical relative value.
*/
EAPI double edje_edit_state_gradient_rel1_relative_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the gradient rel2 horizontal relative value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to get rel2 relative x value (not including the state value).
* @param value The state value.
*
* @return The gradient rel2 horizontal relative value.
*/
EAPI double edje_edit_state_gradient_rel2_relative_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the gradient rel2 vertical relative value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to get rel2 relative y value (not including the state value).
* @param value The state value.
*
* @return The gradient rel2 vertical relative value.
*/
EAPI double edje_edit_state_gradient_rel2_relative_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the gradient rel1 horizontal relative value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to set rel1 relative x value (not including the state value).
* @param value The state value.
* @param val The rel1 relative x to be set,
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise..
*/
EAPI Eina_Bool edje_edit_state_gradient_rel1_relative_x_set(Evas_Object *obj, const char *part, const char *state, double value, double val);
/** Set the gradient rel1 vertical relative value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to set rel1 relative y value (not including the state value).
* @param value The state value.
* @param val The rel1 relative y to be set,
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise..
*/
EAPI Eina_Bool edje_edit_state_gradient_rel1_relative_y_set(Evas_Object *obj, const char *part, const char *state, double value, double val);
/** Set the gradient rel2 horizontal relative value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to set rel2 relative x value (not including the state value).
* @param value The state value.
* @param val The rel2 relative x to be set,
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise..
*/
EAPI Eina_Bool edje_edit_state_gradient_rel2_relative_x_set(Evas_Object *obj, const char *part, const char *state, double value, double val);
/** Set the gradient rel2 vertical relative value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to set rel2 relative y value (not including the state value).
* @param value The state value.
* @param val The rel2 relative y to be set,
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise..
*/
EAPI Eina_Bool edje_edit_state_gradient_rel2_relative_y_set(Evas_Object *obj, const char *part, const char *state, double value, double val);
/** Get the gradient rel1 horizontal offset value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to get rel1 offset x value (not including the state value).
* @param value The state value.
*
* @return The gradient rel1 horizontal offset value.
*/
EAPI int edje_edit_state_gradient_rel1_offset_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the gradient rel1 vertical offset value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to get rel1 offset y value (not including the state value).
* @param value The state value.
*
* @return The gradient rel1 vertical offset value.
*/
EAPI int edje_edit_state_gradient_rel1_offset_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the gradient rel2 horizontal offset value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to get rel2 offset x value (not including the state value).
* @param value The state value.
*
* @return The gradient rel2 horizontal offset value.
*/
EAPI int edje_edit_state_gradient_rel2_offset_x_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Get the gradient rel2 vertical offset value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to get rel2 offset y value (not including the state value).
* @param value The state value.
*
* @return The gradient rel2 vertical offset value.
*/
EAPI int edje_edit_state_gradient_rel2_offset_y_get(Evas_Object *obj, const char *part, const char *state, double value);
/** Set the gradient rel1 horizontal offset value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to set rel1 offset x value (not including the state value).
* @param value The state value.
* @param val The rel1 offset x value.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_gradient_rel1_offset_x_set(Evas_Object *obj, const char *part, const char *state, double value, int val);
/** Set the gradient rel1 vertical offset value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to set rel1 offset y value (not including the state value).
* @param value The state value.
* @param val The rel1 offset y value.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_gradient_rel1_offset_y_set(Evas_Object *obj, const char *part, const char *state, double value, int val);
/** Set the gradient rel2 horizontal offset value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to set rel2 offset x value (not including the state value).
* @param value The state value.
* @param val The rel2 offset x value.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_gradient_rel2_offset_x_set(Evas_Object *obj, const char *part, const char *state, double value, int val);
/** Set the gradient rel2 vertical offset value
*
* @param obj Object being edited.
* @param part The part that contain state.
* @param state The name of the state to set rel2 offset y value (not including the state value).
* @param value The state value.
* @param val The rel2 offset y value.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_state_gradient_rel2_offset_y_set(Evas_Object *obj, const char *part, const char *state, double value, int val);
//@}
/******************************************************************************/
/************************* PROGRAMS API ***********************************/
/******************************************************************************/
/** @name Programs API
* Functions to deal with programs (see @ref edcref).
*/ //@{
/** Get the list of all the programs in the given edje object.
*
* Use edje_edit_string_list_free() when you don't need it anymore.
*
* @param obj Object being edited.
*
* @return A list containing all the program names.
*/
EAPI Eina_List * edje_edit_programs_list_get(Evas_Object *obj);
/** Add a new program to the edje file
*
* If a program with the same name just exist the function will fail.
*
* @param obj Object being edited.
* @param name The name of the new program.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_add(Evas_Object *obj, const char *name);
/** Remove the given program from the edje file.
*
* @param obj Object being edited.
* @param prog The name of the program to remove.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_del(Evas_Object *obj, const char *prog);
/** Check if a program with the given name exist in the edje object.
*
* @param obj Object being edited.
* @param prog The prog of the program that will be searched.
*
* @return EINA_TRUE if the program exist, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_exist(Evas_Object *obj, const char *prog);
/** Run the given program.
*
* @param obj Object being edited.
* @param prog The name of the program to execute.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_run(Evas_Object *obj, const char *prog);
/** Set a new name for the given program
*
* @param obj Object being edited.
* @param prog The current program name.
* @param new_name The new name to assign.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_name_set(Evas_Object *obj, const char *prog, const char *new_name);
/** Get source of a given program.
*
* Remember to free the returned string using edje_edit_string_free().
*
* @param obj Object being edited.
* @param prog The name of the program to get source.
*
* @return The source value por program.
*/
EAPI const char * edje_edit_program_source_get(Evas_Object *obj, const char *prog);
/** Set source of the given program.
*
* @param obj Object being edited.
* @param prog The name of the program to set source.
* @param source The new source value.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_source_set(Evas_Object *obj, const char *prog, const char *source);
/** Get signal of a given program.
*
* Remember to free the returned string using edje_edit_string_free().
*
* @param obj Object being edited.
* @param prog The name of the program to get the signal.
*
* @return The signal value for program.
*/
EAPI const char * edje_edit_program_signal_get(Evas_Object *obj, const char *prog);
/** Set signal of the given program.
*
* @param obj Object being edited.
* @param prog The name of the program to set the signal.
* @param signal The new signal value.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_signal_set(Evas_Object *obj, const char *prog, const char *signal);
/** Get in.from of a given program.
*
* @param obj Object being edited.
* @param prog The name of the program to get the delay.
*
* @return The delay.
*/
EAPI double edje_edit_program_in_from_get(Evas_Object *obj, const char *prog);
/** Set in.from of a given program.
*
* @param obj Object being edited.
* @param prog The name of the program to set the delay.
* @param seconds Number of seconds to delay the program execution
*
* */
EAPI Eina_Bool edje_edit_program_in_from_set(Evas_Object *obj, const char *prog, double seconds);
/** Get in.range of a given program.
*
* @param obj Object being edited.
* @param prog The name of the program to get random delay.
*
* @return The delay random.
*/
EAPI double edje_edit_program_in_range_get(Evas_Object *obj, const char *prog);
/** Set in.range of a given program.
*
* @param obj Object being edited.
* @param prog The name of the program to set random delay.
* @param seconds Max random number of seconds to delay.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_in_range_set(Evas_Object *obj, const char *prog, double seconds);
/** Get the action of a given program.
*
* @param obj Object being edited.
* @param prog The name of the program to get the action.
*
* @return The action type, or -1 on errors.
* Action can be one of EDJE_ACTION_TYPE_NONE, _STATE_SET, ACTION_STOP, SIGNAL_EMIT, DRAG_VAL_SET, _DRAG_VAL_STEP, _DRAG_VAL_PAGE, _SCRIPT
*/
EAPI Edje_Action_Type edje_edit_program_action_get(Evas_Object *obj, const char *prog);
/** Set the action of a given program.
*
* Action can be one of EDJE_ACTION_TYPE_NONE, _STATE_SET, ACTION_STOP, SIGNAL_EMIT, DRAG_VAL_SET, _DRAG_VAL_STEP, _DRAG_VAL_PAGE, _SCRIPT
*
* @param obj Object being edited.
* @param prog The name of the program to set the action.
* @param action The new action type.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_action_set(Evas_Object *obj, const char *prog, Edje_Action_Type action);
/** Get the list of the targets for the given program.
*
* Use edje_edit_string_list_free() when you don't need it anymore.
*
* @param obj Object being edited.
* @param prog The name of the progrem to get the list of the targets.
*
* @return A list with all the targets names, or NULL on error.
*/
EAPI Eina_List * edje_edit_program_targets_get(Evas_Object *obj, const char *prog);
/** Add a new target program to the list of 'targets' in the given program.
*
* If program action is @c EDJE_ACTION_TYPE_ACTION_STOP, then 'target'
* must be an existing program name. If it's @c
* EDJE_ACTION_TYPE_STATE_SET, then 'target' must be an existing part
* name.
*
* @param obj Object being edited.
* @param prog The name of the program to add a new target.
* @param target The name of the new target itself.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_target_add(Evas_Object *obj, const char *prog, const char *target);
/** Deletes a target from the list of 'targets' in the given program.
*
* If program action is EDJE_ACTION_TYPE_ACTION_STOP then 'target' must be an existing program name.
* If action is EDJE_ACTION_TYPE_STATE_SET then 'target' must be an existing part name.
*
* @param obj Object being edited.
* @param prog The name of the program to del a target from the list of targets.
* @param target The name of another program or another part.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_target_del(Evas_Object *obj, const char *prog, const char *target);
/** Clear the 'targets' list of the given program
*
* @param obj Object being edited.
* @param prog The name of the program to cleaar the 'targets' list.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_targets_clear(Evas_Object *obj, const char *prog);
/** Get the list of action that will be run after the give program
*
* Use edje_edit_string_list_free() when you don't need it anymore.
*
* @param obj Object being edited.
* @param prog The name of the program to get the list of actions
*
* @return A list with all program names. or NULL on error.
*/
EAPI Eina_List * edje_edit_program_afters_get(Evas_Object *obj, const char *prog);
/** Add a new program name to the list of 'afters' in the given program.
*
* All the programs listed in 'afters' will be executed after program execution.
*
* @param obj Object being edited.
* @param prog The name of the program that contains the list of afters
* @param after The name of another program to add to the afters list
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_after_add(Evas_Object *obj, const char *prog, const char *after);
/** Delete the given program from the list of 'afters' of the program.
*
* @param obj Object being edited.
* @param prog The name of the program from where to remove the after.
* @param after The name of the program to remove from the list of afters.
*
* @return EINA_TRUE is successful or not in the list, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_after_del(Evas_Object *obj, const char *prog, const char *after);
/** Clear the 'afters' list of the given program.
*
* @param obj Object being edited.
* @param prog The name of the program to clear the 'afters' list.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_afters_clear(Evas_Object *obj, const char *prog);
/** Get the state for the given program
*
* In a STATE_SET action this is the name of state to set.
* In a SIGNAL_EMIT action is the name of the signal to emit.
*
* @param obj Object being edited.
* @param prog The name of the program to get the state.
*
* @return The name of the state.
*/
EAPI const char * edje_edit_program_state_get(Evas_Object *obj, const char *prog);
/** Get api's name of a program.
*
* @param obj Object being edited.
* @param prog Name of program.
*
* @return name of the api if successful, NULL otherwise.
*/
EAPI const char * edje_edit_program_api_name_get(Evas_Object *obj, const char *prog);
/** Get api's description of a program.
*
* @param obj Object being edited.
* @param prog Name of program.
*
* @return description of the api if successful, NULL otherwise.
*/
EAPI const char * edje_edit_program_api_description_get(Evas_Object *obj, const char *prog);
/** Set api's name of a program.
*
* @param obj Object being edited.
* @param prog Name of the part.
* @param name New name for the api property.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_api_name_set(Evas_Object *obj, const char *prog, const char *name);
/** Set api's description of a program.
*
* @param obj Object being edited.
* @param prog Name of the program.
* @param description New description for the api property.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_api_description_set(Evas_Object *obj, const char *prog, const char *description);
/** Set the state for the given program
*
* In a STATE_SET action this is the name of state to set.
* In a SIGNAL_EMIT action is the name of the signal to emit.
*
* @param obj Object being edited.
* @param prog The name of the program to set a state.
* @param state The nameo of the state to set (not including the state value)
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_state_set(Evas_Object *obj, const char *prog, const char *state);
/** Get the value of state for the given program.
*
* In a STATE_SET action this is the value of state to set.
* Not used on SIGNAL_EMIT action.
*
* @param obj Object being edited.
* @param prog The name of the program to get the value of state.
*
* @return The value of state for the program.
*/
EAPI double edje_edit_program_value_get(Evas_Object *obj, const char *prog);
/** Set the value of state for the given program.
*
* In a STATE_SET action this is the value of state to set.
* Not used on SIGNAL_EMIT action.
*
* @param obj Object being edited.
* @param prog The name of the program to set the value of state.
* @param value The vale to set.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_value_set(Evas_Object *obj, const char *prog, double value);
/** Get the state2 for the given program
*
* In a STATE_SET action is not used
* In a SIGNAL_EMIT action is the source of the emitted signal.
*
* @param obj Object being edited.
* @param prog The name of the program to get the state2.
*
* @return The source to emit for the program.
*/
EAPI const char * edje_edit_program_state2_get(Evas_Object *obj, const char *prog);
/** Set the state2 for the given program
*
* In a STATE_SET action is not used
* In a SIGNAL_EMIT action is the source of the emitted signal.
*
* @param obj Object being edited.
* @param prog The name of the program to set the state2.
* @param state2 The name of the state to set.
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_state2_set(Evas_Object *obj, const char *prog, const char *state2);
/** Get the value of state2 for the given program.
*
* @param obj Object being edited.
* @param prog The name of the program to get the state2 value.
*
* @return The vale of the state2 for the program.
*/
EAPI double edje_edit_program_value2_get(Evas_Object *obj, const char *prog);
/** Set the value2 of state for the given program.
*
* This is used in DRAG_ACTION
*
* @param obj Object being edited.
* @param prog The name of the program to set the state2 value.
* @param value The value of the state2 to set.
*/
EAPI Eina_Bool edje_edit_program_value2_set(Evas_Object *obj, const char *prog, double value);
/** Get the type of transition to use when apply animations.
*
* Can be one of: EDJE_TWEEN_MODE_NONE, EDJE_TWEEN_MODE_LINEAR, EDJE_TWEEN_MODE_SINUSOIDAL, EDJE_TWEEN_MODE_ACCELERATE or EDJE_TWEEN_MODE_DECELERATE.
*
* @param obj Object being edited.
* @param prog The name of the program to get the transition.
*
* @return The type of transition used by program.
*/
EAPI Edje_Tween_Mode edje_edit_program_transition_get(Evas_Object *obj, const char *prog);
/** Set the type of transition to use when apply animations.
*
* Can be one of: EDJE_TWEEN_MODE_NONE, EDJE_TWEEN_MODE_LINEAR, EDJE_TWEEN_MODE_SINUSOIDAL, EDJE_TWEEN_MODE_ACCELERATE or EDJE_TWEEN_MODE_DECELERATE.
*
* @param obj Object being edited.
* @param prog The name of the program to set the transition.
* @param transition The transition type to set
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_transition_set(Evas_Object *obj, const char *prog, Edje_Tween_Mode transition);
/** Get the duration of the transition in seconds.
*
* @param obj Object being edited.
* @param prog The name of the program to get the transition time.
*
* @return The duration of the transition.
*/
EAPI double edje_edit_program_transition_time_get(Evas_Object *obj, const char *prog);
/** Set the duration of the transition in seconds.
*
* @param obj Object being edited.
* @param prog The name of the program to set the transition time.
* @param seconds The duration of the transition (in seconds).
*
* @return EINA_TRUE if successful, EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_edit_program_transition_time_set(Evas_Object *obj, const char *prog, double seconds);
EAPI const char * edje_edit_program_filter_part_get(Evas_Object *obj, const char *prog);
EAPI Eina_Bool edje_edit_program_filter_part_set(Evas_Object *obj, const char *prog, const char *filter_part);
//@}
/******************************************************************************/
/************************** SCRIPTS API ***********************************/
/******************************************************************************/
/** @name Scripts API
* Functions to deal with embryo scripts (see @ref edcref).
*/ //@{
/**
* Get the Embryo script for the group of the given object.
*
* Get the shared script for the group under edition. Shared script means
* the script {} block for the group, not counting what's in each program.
* It returns a malloc'd duplicate of the code, so users are free to modify
* the contents directly and they should remember to free() it when done.
* NULL will be returned if there's no script or an error occurred.
*
* @param obj Object being edited.
*
* @return The shared script code for this group.
*/
EAPI char *edje_edit_script_get(Evas_Object *obj);
/**
* Set the code for the group script.
*
* Set the Embryo source code for the shared script of the edited group.
* Note that changing the code itself will not update the running VM, you
* need to call edje_edit_script_compile for it to get updated.
*
* @param obj The object being edited
* @param code The Embryo source
*/
EAPI void edje_edit_script_set(Evas_Object *obj, const char *code);
/**
* Get the Embryo script for the given program.
*
* Get the script code for the given program. Like the group script, this
* function returns a duplicate of the code that the user can modify at will
* and must free when done using it.
* NULL will be returned if the program doesn't exist, doesn't have any
* script or is not of type script.
*
* @param obj Object being edited
* @param prog Program name
*
* @return The program script code
*/
EAPI char *edje_edit_script_program_get(Evas_Object *obj, const char *prog);
/**
* Set the Embryo script for the given program.
*
* Set the Embryo source code for the program @p prog. It must be an
* existing program of type EDJE_ACTION_TYPE_SCRIPT, or the function
* will fail and do nothing.
* Note that changing the code itself will not update the running VM, you
* need to call edje_edit_script_compile for it to get updated.
*
* @param obj The object being edited
* @param prog The program name.
* @param code The Embryo source
*/
EAPI void edje_edit_script_program_set(Evas_Object *obj, const char *prog, const char *code);
/**
* Compile the Embryo script for the given object
*
* If required, this function will process all script code for the group and
* build the bytecode, updating the running Embryo VM Program if the build
* is succesful.
*
* @param obj The object being edited
*
*/
EAPI Eina_Bool edje_edit_script_compile(Evas_Object *obj);
/**
* Get the list of errors resulting from the last script build
*
* Get the list of errors that resulted from the last attempt to rebuild
* the Embryo script for the edited group. This will be a standard Eina_List
* with Edje_Edit_Script_Error pointers as its data.
* The user should not do anything else but read the contents of this list.
* These errors can be the output of the embryo compiler, or internal errors
* generated by Edje_Edit if the preprocessing of the scripts failed.
*
* @param obj The object being edited
*
* @return A constant list of Edje_Edit_Script_Error, or NULL if there are none
*/
EAPI const Eina_List *edje_edit_script_error_list_get(Evas_Object *obj);
//@}
/******************************************************************************/
/************************** ERROR API ***********************************/
/******************************************************************************/
/** @name Error API
* to deal with error messages (see @ref edcref).
*/ //@{
EAPI extern Eina_Error EDJE_EDIT_ERROR_GROUP_CURRENTLY_USED;
EAPI extern Eina_Error EDJE_EDIT_ERROR_GROUP_REFERENCED;
EAPI extern Eina_Error EDJE_EDIT_ERROR_GROUP_DOES_NOT_EXIST;
#ifdef __cplusplus
}
#endif
#endif