rimmed pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8d7ec4181e939d377e3dc75918005e4363ef472f

commit 8d7ec4181e939d377e3dc75918005e4363ef472f
Author: Vyacheslav Reutskiy <v.reuts...@samsung.com>
Date:   Tue Oct 11 15:50:10 2016 +0300

    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.
---
 src/lib/edje/Edje_Edit.h | 11 +++++++++++
 src/lib/edje/edje_edit.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 61 insertions(+)

diff --git a/src/lib/edje/Edje_Edit.h b/src/lib/edje/Edje_Edit.h
index 4727e0a..89502c3 100644
--- a/src/lib/edje/Edje_Edit.h
+++ b/src/lib/edje/Edje_Edit.h
@@ -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   ***********************************/
diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c
index 48bc714..7d89731 100644
--- a/src/lib/edje/edje_edit.c
+++ b/src/lib/edje/edje_edit.c
@@ -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

-- 


Reply via email to