edje: Edje_Edit - add functions that provide the ability to set and get source for proxy parts state

Summary:
This commit contains two new functions that provide the ability to set and get
source property of proxy parts state:
edje_edit_state_proxy_source_get() and edje_edit_state_proxy_source_set().
Also it contains the implementation of printing source data on
edc code generation.

@feature

Reviewers: cedric, Hermet, seoz, raster, reutskiy.v.v

CC: reutskiy.v.v, cedric

Differential Revision: https://phab.enlightenment.org/D1061

Signed-off-by: Cedric BAIL <c.bail@partner.samsung.com>
This commit is contained in:
Kateryna Fesyna 2014-06-23 11:23:07 +02:00 committed by Cedric BAIL
parent 7c8764bf39
commit 244d42b280
2 changed files with 91 additions and 0 deletions

View File

@ -3519,6 +3519,39 @@ edje_edit_state_map_rotation_center_get(Evas_Object *obj, const char *part, cons
EAPI Eina_Bool
edje_edit_state_map_rotation_center_set(Evas_Object *obj, const char *part, const char *state, double value, const char *source_part);
/** Set the source part for given part state.
*
* Set source causes the part to use another part content as the content
* of this part.
*
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state.
* @param value The state value.
* @param source_part The name of part to be set as source. If NULL is passed, the source will be unset.
*
* @return @c EINA_TRUE in case of success, @c EINA_FALSE otherwise.
* @see edje_edit_state_proxy_source_get()
* @since 1.11
*/
EAPI Eina_Bool
edje_edit_state_proxy_source_set(Evas_Object *obj, const char *part, const char *state, double value, const char *source_name);
/** Get the source name for given state of part.
*
* @note The returned string should be freed with @c eina_stringshare_del().
* @param obj Object being edited.
* @param part Part that contain state.
* @param state The name of the state.
* @param value The state value.
*
* @return The name of the source part in case of success. Otherwise returns NULL.
* @see edje_edit_state_proxy_source_set()
* @since 1.11
*/
EAPI Eina_Stringshare *
edje_edit_state_proxy_source_get(Evas_Object *obj, const char *part, const char *state, double value);
//@}
/******************************************************************************/
/************************** TEXT API ************************************/

View File

@ -508,6 +508,21 @@ _edje_part_id_find(Edje *ed, const char *part)
return -1;
}
static const char *
_edje_part_name_find(Edje *ed, int id)
{
unsigned int i;
if (id < 0) return NULL;
for (i = 0; i < ed->table_parts_size; i++)
{
Edje_Real_Part *rp = ed->table_parts[i];
if (rp->part->id == id)
return rp->part->name;
}
return NULL;
}
static void
_edje_part_description_id_set(int type, Edje_Part_Description_Common *c, int old_id, int new_id)
{
@ -6558,6 +6573,41 @@ edje_edit_state_text_size_range_min_max_set(Evas_Object *obj, const char *part,
return EINA_TRUE;
}
EAPI Eina_Bool
edje_edit_state_proxy_source_set(Evas_Object *obj, const char *part, const char *state, double value, const char *source_name)
{
GET_PD_OR_RETURN(EINA_FALSE);
if (rp->part->type != EDJE_PART_TYPE_PROXY)
return EINA_FALSE;
Edje_Part_Description_Proxy *proxy_part = (Edje_Part_Description_Proxy*) pd;
if (source_name)
{
int source_id = _edje_part_id_find(ed, source_name);
if (source_id < 0)
return EINA_FALSE;
proxy_part->proxy.id = source_id;
}
else proxy_part->proxy.id = -1;
return EINA_TRUE;
}
EAPI Eina_Stringshare *
edje_edit_state_proxy_source_get(Evas_Object *obj, const char *part, const char *state, double value)
{
GET_PD_OR_RETURN(NULL);
if (rp->part->type != EDJE_PART_TYPE_PROXY)
return NULL;
Edje_Part_Description_Proxy *proxy_part = (Edje_Part_Description_Proxy*) pd;
const char * source_name;
source_name = _edje_part_name_find(ed, proxy_part->proxy.id);
return eina_stringshare_add(source_name);
}
/****************/
/* IMAGES API */
/****************/
@ -9501,6 +9551,14 @@ _edje_generate_source_of_state(Evas_Object *obj, const char *part, const char *s
pro = (Edje_Part_Description_Proxy *) pd;
if (pro->proxy.id >= 0)
{
const char * source_name;
source_name = _edje_part_name_find(ed, pro->proxy.id);
if (source_name)
BUF_APPENDF(I5"source: \"%s\";\n", source_name);
}
//Fill
BUF_APPEND(I5"fill {\n");