From: Vyacheslav Reutskiy Date: Tue, 11 Oct 2016 12:50:10 +0000 (+0300) Subject: edje_edit: add API for get source code of global block data X-Git-Tag: accepted/tizen/common/20161019.145824~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F09%2F92009%2F3;p=platform%2Fupstream%2Fefl.git edje_edit: add API for get source code of global block data This API is annex for edje_edit_object_source_generate. Together this API's provide a mechanism for generate source for custom groups from a edj file or more. Change-Id: I75787336b30d4d0fd94ad727a73e3ebed1001223 Signed-off-by: Vyacheslav Reutskiy --- diff --git a/src/lib/edje/Edje_Edit.h b/src/lib/edje/Edje_Edit.h index f5fc884..201c84a 100644 --- a/src/lib/edje/Edje_Edit.h +++ b/src/lib/edje/Edje_Edit.h @@ -7871,6 +7871,17 @@ EAPI const char * edje_edit_object_source_generate(Evas_Object *obj); EAPI char *edje_edit_full_source_generate(Evas_Object *obj); +/** + * Return source code of global block data. + * + * Remember to free the string with edje_edit_string_free() + * + * @param obj The object being edited + * + * @return Source code of global block data. + */ +EAPI const char * edje_edit_data_source_generate(Evas_Object *obj); + //@} /******************************************************************************/ /************************** ERROR API ***********************************/ diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c index 5bed61f..c77363b 100644 --- a/src/lib/edje/edje_edit.c +++ b/src/lib/edje/edje_edit.c @@ -12467,6 +12467,56 @@ edje_edit_object_source_generate(Evas_Object *obj) return _edje_edit_source_generate(obj, EINA_TRUE); } +EAPI const char * +edje_edit_data_source_generate(Evas_Object *obj) +{ + Eina_Strbuf *buf = NULL; + Eina_Bool ret = EINA_TRUE; + Eina_Stringshare *str = NULL; + const char *entry; + + GET_ED_OR_RETURN(NULL); + + if (!ed->file) return NULL; + + buf = eina_strbuf_new(); + + /* If data items exist, print them */ + if (ed->file->data) + { + Edje_String *es; + size_t data_len = 0; + char *escaped_entry = NULL; + char *escaped_string = NULL; + BUF_APPEND(I0 "data {\n"); + Eina_Iterator *it = eina_hash_iterator_key_new(ed->file->data); + EINA_ITERATOR_FOREACH(it, entry) + { + es = eina_hash_find(ed->file->data, entry); + str = edje_string_get(es); + if (!str) break; + data_len = strlen(str); + /* In case when data ends with '\n' character, this item recognize + * as data.file. This data will not generated into the source code + * of group. */ + if (str[data_len - 1] == '\n') continue; + escaped_entry = eina_str_escape(entry); + escaped_string = eina_str_escape(str); + BUF_APPENDF(I1 "item: \"%s\" \"%s\";\n", escaped_entry, escaped_string); + free(escaped_entry); + free(escaped_string); + } + eina_iterator_free(it); + BUF_APPEND(I0 "}\n\n"); + } + + /* return resulted source code of the group */ + if (ret) + str = eina_stringshare_add(eina_strbuf_string_get(buf)); + eina_strbuf_free(buf); + return str; +} + #undef COLLECT_RESOURCE /*