From f61c99539abe9261995203203d809f64c997ce9a Mon Sep 17 00:00:00 2001 From: ChunEon Park Date: Sun, 16 Mar 2014 12:31:08 +0900 Subject: [PATCH] ctxpopup - support image candidate list. --- src/bin/ctxpopup.c | 15 ++++++++++++++- src/bin/edc_parser.c | 13 +++++++++++++ src/bin/edj_viewer.c | 8 +++++++- src/include/ctxpopup.h | 1 + src/include/edj_viewer.h | 3 ++- 5 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/bin/ctxpopup.c b/src/bin/ctxpopup.c index 863f5e6..a778f2e 100644 --- a/src/bin/ctxpopup.c +++ b/src/bin/ctxpopup.c @@ -177,7 +177,20 @@ ctxpopup_candidate_list_create(Evas_Object *parent, attr_value *attr, EINA_LIST_FOREACH(parts, l, part) elm_ctxpopup_item_append(ctxpopup, part, NULL, ctxpopup_it_cb, data); - view_parts_list_free(parts); + view_string_list_free(parts); + break; + } + case ATTR_VALUE_IMAGE: + { + view_data *vd = edj_mgr_view_get(NULL); + if (!vd) goto err; + Eina_List *parts = view_images_list_get(vd); + Eina_List *l; + char *part; + EINA_LIST_FOREACH(parts, l, part) + elm_ctxpopup_item_append(ctxpopup, part, NULL, + ctxpopup_it_cb, data); + view_string_list_free(parts); break; } } diff --git a/src/bin/edc_parser.c b/src/bin/edc_parser.c index ab24995..24dbe3e 100644 --- a/src/bin/edc_parser.c +++ b/src/bin/edc_parser.c @@ -212,6 +212,19 @@ parser_type_init(parser_data *pd) attr->instring = EINA_TRUE; attr->value.type = ATTR_VALUE_PART; pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr); + + //Type: Image + attr = calloc(1, sizeof(parser_attr)); + attr->keyword = eina_stringshare_add("normal"); + attr->instring = EINA_TRUE; + attr->value.type = ATTR_VALUE_IMAGE; + pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr); + + attr = calloc(1, sizeof(parser_attr)); + attr->keyword = eina_stringshare_add("tween"); + attr->instring = EINA_TRUE; + attr->value.type = ATTR_VALUE_IMAGE; + pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr); } char *parser_name_get(parser_data *pd EINA_UNUSED, const char *cur) diff --git a/src/bin/edj_viewer.c b/src/bin/edj_viewer.c index f6ccb84..91a75d2 100644 --- a/src/bin/edj_viewer.c +++ b/src/bin/edj_viewer.c @@ -405,7 +405,13 @@ view_parts_list_get(view_data *vd) } void -view_parts_list_free(Eina_List *list) +view_string_list_free(Eina_List *list) { edje_edit_string_list_free(list); } + +Eina_List * +view_images_list_get(view_data *vd) +{ + edje_edit_images_list_get(vd->layout); +} diff --git a/src/include/ctxpopup.h b/src/include/ctxpopup.h index 91b9e06..3ef7cfc 100644 --- a/src/include/ctxpopup.h +++ b/src/include/ctxpopup.h @@ -4,6 +4,7 @@ typedef enum attr_value_type ATTR_VALUE_FLOAT = 2, ATTR_VALUE_CONSTANT = 4, ATTR_VALUE_PART = 8, + ATTR_VALUE_IMAGE = 16 } attr_value_type; struct attr_value_s diff --git a/src/include/edj_viewer.h b/src/include/edj_viewer.h index b2c57d5..a734372 100644 --- a/src/include/edj_viewer.h +++ b/src/include/edj_viewer.h @@ -10,4 +10,5 @@ Eina_Stringshare *view_group_name_get(view_data *vd); void *view_data_get(view_data *vd); void view_scale_set(view_data *vd, double scale); Eina_List *view_parts_list_get(view_data *vd); -void view_parts_list_free(Eina_List *list); +Eina_List *view_images_list_get(view_data *vd); +void view_string_list_free(Eina_List *list);