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);
|
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 ***********************************/
|
/************************** ERROR API ***********************************/
|
||||||
|
|
|
@ -12791,6 +12791,56 @@ edje_edit_object_source_generate(Evas_Object *obj)
|
||||||
return _edje_edit_source_generate(obj, EINA_TRUE);
|
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
|
#undef COLLECT_RESOURCE
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
|
|
Loading…
Reference in New Issue