Dirty copy/paste to delete individual targets from a program

SVN revision: 47444
This commit is contained in:
Iván Briano 2010-03-25 11:19:46 +00:00
parent b0af679619
commit 3f1e51e008
2 changed files with 51 additions and 0 deletions

View File

@ -2362,6 +2362,17 @@ edje_edit_program_target_add(
const char *target ///< The name of another program or another part
);
/**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.
*/
EAPI Eina_Bool ///@return 1 on success or 0 on errors
edje_edit_program_target_del(
Evas_Object *obj, ///< The edje object
const char *prog, ///< The program name
const char *target ///< The name of another program or another part
);
/**Clear the 'targets' list of the given program */
EAPI Eina_Bool ///@return 1 on success or 0 on errors
edje_edit_program_targets_clear(

View File

@ -5543,6 +5543,46 @@ edje_edit_program_target_add(Evas_Object *obj, const char *prog, const char *tar
return 1;
}
EAPI Eina_Bool
edje_edit_program_target_del(Evas_Object *obj, const char *prog, const char *target)
{
int id;
Eina_List *l;
Edje_Program_Target *t;
GET_ED_OR_RETURN(EINA_FALSE);
GET_EPR_OR_RETURN(EINA_FALSE);
if (epr->action == EDJE_ACTION_TYPE_STATE_SET)
{
/* the target is a part */
Edje_Real_Part *rp;
rp = _edje_real_part_get(ed, target);
if (!rp) return EINA_FALSE;
id = rp->part->id;
}
else if (epr->action == EDJE_ACTION_TYPE_ACTION_STOP)
{
/* the target is a program */
Edje_Program *tar;
tar = _edje_program_get_byname(obj, target);
if (!tar) return EINA_FALSE;
id = tar->id;
}
else
return EINA_FALSE;
EINA_LIST_FOREACH(epr->targets, l, t)
if (t->id == id)
break;
epr->targets = eina_list_remove_list(epr->targets, l);
free(t);
return EINA_TRUE;
}
EAPI Eina_List *
edje_edit_program_afters_get(Evas_Object *obj, const char *prog)
{