edje_edit: add API for get source code of global block data 09/92009/3
authorVyacheslav Reutskiy <v.reutskiy@samsung.com>
Tue, 11 Oct 2016 12:50:10 +0000 (15:50 +0300)
committerJaehyun Cho <jae_hyun.cho@samsung.com>
Mon, 17 Oct 2016 07:02:15 +0000 (00:02 -0700)
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 <v.reutskiy@samsung.com>
src/lib/edje/Edje_Edit.h
src/lib/edje/edje_edit.c

index f5fc884..201c84a 100644 (file)
@@ -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   ***********************************/
index 5bed61f..c77363b 100644 (file)
@@ -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
 
 /*