Dirty copy/paste to delete individual targets from a program
authorsachiel <sachiel@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 25 Mar 2010 11:19:46 +0000 (11:19 +0000)
committersachiel <sachiel@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 25 Mar 2010 11:19:46 +0000 (11:19 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/edje@47444 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/Edje_Edit.h
src/lib/edje_edit.c

index 55f0550..9819b7f 100644 (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(
index 7025abe..f5fdf45 100644 (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)
 {