raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=2155e8a3fb5e16eb5e6743b47a929e7395698c8e
commit 2155e8a3fb5e16eb5e6743b47a929e7395698c8e Author: Vorobiov Vitalii <vi.vorob...@samsung.com> Date: Thu Jul 3 16:59:16 2014 +0900 edje_edit: Add edje_edit_part_item_aspect_mode functions. Summary: Add two main functions for TABLE and BOX part items: - edje_edit_part_item_aspect_mode_get - edje_edit_part_item_aspect_mode_set Also add support to generate source code of changed aspect mode for an item @feature Reviewers: cedric, Hermet, seoz, raster CC: reutskiy.v.v, cedric Differential Revision: https://phab.enlightenment.org/D1075 --- src/lib/edje/Edje_Edit.h | 39 +++++++++++++++++++++++++++++ src/lib/edje/edje_edit.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 103 insertions(+), 1 deletion(-) diff --git a/src/lib/edje/Edje_Edit.h b/src/lib/edje/Edje_Edit.h index f5b3ced..b21f459 100644 --- a/src/lib/edje/Edje_Edit.h +++ b/src/lib/edje/Edje_Edit.h @@ -1911,6 +1911,45 @@ EAPI Eina_Bool edje_edit_part_item_aspect_h_set(Evas_Object *obj, const char *pa */ EAPI int edje_edit_part_item_prefer_w_get(Evas_Object *obj, const char *part, const char *item); +/** Get aspect mode for an item of TABLE or BOX. + * + * This may return next values: + * - EDJE_ASPECT_CONTROL_NONE + * - EDJE_ASPECT_CONTROL_NEITHER + * - EDJE_ASPECT_CONTROL_HORIZONTAL + * - EDJE_ASPECT_CONTROL_VERTICAL + * - EDJE_ASPECT_CONTROL_BOTH + * + * @param obj Object being edited. + * @param part Part that contain item. + * @param item The name of the item to set aspect mode. + * + * @return One of possible enum Edje_Aspect_Control. + * @since 1.11 + */ +EAPI Edje_Aspect_Control +edje_edit_part_item_aspect_mode_get(Evas_Object *obj, const char *part, const char *item); + +/** Set aspect mode for an item of TABLE or BOX. + * + * Mode may be next: + * - EDJE_ASPECT_CONTROL_NONE + * - EDJE_ASPECT_CONTROL_NEITHER + * - EDJE_ASPECT_CONTROL_HORIZONTAL + * - EDJE_ASPECT_CONTROL_VERTICAL + * - EDJE_ASPECT_CONTROL_BOTH + * + * @param obj Object being edited. + * @param part Part that contain item. + * @param item The name of the item to set aspect mode. + * @param mode One of possible enum from Edje_Aspect_Control: + + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + * @since 1.11 + */ +EAPI Eina_Bool +edje_edit_part_item_aspect_mode_set(Evas_Object *obj, const char *part, const char *item, Edje_Aspect_Control mode); + /** Set the prefer width value of a part's item. * * @param obj Object being edited. diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c index d62939a..bb34cc1 100644 --- a/src/lib/edje/edje_edit.c +++ b/src/lib/edje/edje_edit.c @@ -4245,6 +4245,67 @@ FUNC_PART_ITEM_INT(aspect, h, 0); FUNC_PART_ITEM_INT(prefer, w, 0); FUNC_PART_ITEM_INT(prefer, h, 0); +EAPI Edje_Aspect_Control +edje_edit_part_item_aspect_mode_get(Evas_Object *obj, const char *part, const char *item_name) +{ + Edje_Part *ep; + unsigned int i; + Edje_Pack_Element *item = NULL; + + if ((!obj) || (!part) || (!item_name)) + return EDJE_ASPECT_CONTROL_NONE; + + GET_RP_OR_RETURN(EDJE_ASPECT_CONTROL_NONE); + + ep = rp->part; + for (i = 0; i < ep->items_count; ++i) + { + if (ep->items[i]->name && (!strcmp(ep->items[i]->name, item_name))) + { + item = ep->items[i]; + break; + } + } + if (!item) return EDJE_ASPECT_CONTROL_NONE; + + return item->aspect.mode; + +} + +EAPI Eina_Bool +edje_edit_part_item_aspect_mode_set(Evas_Object *obj, const char *part, const char *item_name, Edje_Aspect_Control mode) +{ + Edje_Part *ep; + unsigned int i; + Edje_Pack_Element *item = NULL; + + if ((!obj) || (!part) || (!item_name)) + return EINA_FALSE; + + GET_RP_OR_RETURN(EINA_FALSE); + + if ((rp->part->type != EDJE_PART_TYPE_BOX) && + (rp->part->type != EDJE_PART_TYPE_TABLE)) + return EINA_FALSE; + + ep = rp->part; + + for (i = 0; i < ep->items_count; ++i) + { + if (ep->items[i]->name && (!strcmp(ep->items[i]->name, item_name))) + { + item = ep->items[i]; + break; + } + } + if (!item) return EINA_FALSE; + + item->aspect.mode = mode; + + return EINA_TRUE; + +} + EAPI Eina_Bool edje_edit_part_item_padding_get(Evas_Object *obj, const char *part, const char *item_name, int *l, int *r, int *t, int *b) { @@ -9039,6 +9100,7 @@ static const char *effects[] = {"NONE", "PLAIN", "OUTLINE", "SOFT_OUTLINE", "SHA static const char *shadow_direction[] = {"BOTTOM_RIGHT", "BOTTOM", "BOTTOM_LEFT", "LEFT", "TOP_LEFT", "TOP", "TOP_RIGHT", "RIGHT"}; static const char *prefers[] = {"NONE", "VERTICAL", "HORIZONTAL", "BOTH"}; static const char *entry_mode[] = {"NONE", "PLAIN", "EDITABLE", "PASSWORD"}; +static const char *aspect_mode[] = {"NONE", "NEITHER", "HORIZONTAL", "VERTICAL", "BOTH"}; static Eina_Bool _edje_generate_source_of_group(Edje *ed, Edje_Part_Collection_Directory_Entry *pce, Eina_Strbuf *buf); @@ -9976,7 +10038,8 @@ _edje_generate_source_of_part(Evas_Object *obj, Edje_Part *ep, Eina_Strbuf *buf) BUF_APPENDF(I7"min: %d %d;\n", item->min.h, item->min.h); if ((item->max.w != -1) || (item->max.h != -1)) BUF_APPENDF(I7"max: %d %d;\n", item->max.h, item->max.h); - //TODO aspect mode + if (item->aspect.mode) + BUF_APPENDF(I7"aspect_mode: \"%s\";\n", aspect_mode[item->aspect.mode]); if ((item->aspect.w != 0) || (item->aspect.h != 0)) BUF_APPENDF(I7"aspect: %d %d;\n", item->aspect.h, item->aspect.h); if ((item->prefer.w != 0) || (item->prefer.h != 0)) --