forked from enlightenment/efl
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.
This commit is contained in:
parent
49689708a6
commit
8d7ec4181e
|
@ -8163,6 +8163,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 ***********************************/
|
||||
|
|
|
@ -12791,6 +12791,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
|
||||
|
||||
static Eina_Bool
|
||||
|
|
Loading…
Reference in New Issue