diff options
author | Maksym Volodin <m.volodin@samsung.com> | 2014-06-23 11:17:51 +0200 |
---|---|---|
committer | Cedric BAIL <c.bail@partner.samsung.com> | 2014-06-23 11:33:24 +0200 |
commit | 748e5487636e8137be8cebf08e7bf10a7b76ed84 (patch) | |
tree | 377349056765808f3b0dfc4f8e0ea5d6dc887059 | |
parent | cdc477e2f7d4c04be90c1f4c277802210aa0b2d0 (diff) | |
download | efl-748e5487636e8137be8cebf08e7bf10a7b76ed84.tar.gz |
edje: Edje_Edit - add edje_edit_part_item_del.
Summary:
Delete exist item from part. This part should have BOX or TABLE type.
In parametr - name of exist item to delete it from BOX or TABLE.
@feature
Reviewers: cedric, Hermet, seoz, raster, reutskiy.v.v
CC: reutskiy.v.v, cedric
Differential Revision: https://phab.enlightenment.org/D1070
Signed-off-by: Cedric BAIL <c.bail@partner.samsung.com>
-rw-r--r-- | src/lib/edje/Edje_Edit.h | 11 | ||||
-rw-r--r-- | src/lib/edje/edje_edit.c | 53 |
2 files changed, 64 insertions, 0 deletions
diff --git a/src/lib/edje/Edje_Edit.h b/src/lib/edje/Edje_Edit.h index 3f4bde430d..9efa97360f 100644 --- a/src/lib/edje/Edje_Edit.h +++ b/src/lib/edje/Edje_Edit.h @@ -1664,6 +1664,17 @@ EAPI Eina_Bool edje_edit_part_item_append(Evas_Object *obj, const char *part, co */ EAPI Eina_List * edje_edit_part_items_list_get(Evas_Object *obj, const char *part); +/** Delete item from box or table part. + * + * @param obj Object being edited. + * @param part Part to delete exist item. This part should have BOX or TABLE type. + * @param item_name Name of exist item to delete it from BOX or TABLE. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + * @since 1.11 + */ +EAPI Eina_Bool edje_edit_part_item_del(Evas_Object *obj, const char *part, const char* name); + /** Set source for item from table or box items. * * @param obj Object being edited. diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c index e51cdab86b..aa8416548a 100644 --- a/src/lib/edje/edje_edit.c +++ b/src/lib/edje/edje_edit.c @@ -3901,6 +3901,59 @@ edje_edit_part_items_list_get(Evas_Object *obj, const char *part) } EAPI Eina_Bool +edje_edit_part_item_del(Evas_Object *obj, const char *part, const char* name) +{ + Edje_Part *ep; + Edje_Pack_Element *item; + unsigned int i; + GET_RP_OR_RETURN(EINA_FALSE); + /* There is only Box and Table is allowed. */ + if ((rp->part->type != EDJE_PART_TYPE_BOX) && + (rp->part->type != EDJE_PART_TYPE_TABLE)) + return EINA_FALSE; + ep = rp->part; + if (!ed->file) return EINA_FALSE; + + for (i = 0; i < ep->items_count; ++i) + { + item = ep->items[i]; + if (!strcmp(name, item->name)) + break; + } + if (i == ep->items_count) + { + WRN("Unable to delete item \"%s\". It does not exist.", name); + return EINA_FALSE; + } + + { + Edje_Pack_Element **tmp; + _edje_if_string_free(ed, item->name); + --ep->items_count; + + while (i < ep->items_count) + { + ep->items[i] = ep->items[i + 1]; + i++; + } + + tmp = realloc(ep->items, sizeof(Edje_Pack_Element *) * ep->items_count); + if (!tmp) + { + free(item); + return EINA_FALSE; + } + ep->items = tmp; + } + + GET_EED_OR_RETURN(EINA_FALSE); + _edje_edit_flag_script_dirty(eed, EINA_TRUE); + + return EINA_TRUE; +} + + +EAPI Eina_Bool edje_edit_part_item_source_set(Evas_Object *obj, const char *part, const char *item_name, const char *source_group) { Edje_Part *ep; |