Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/edje

Dir     : e17/libs/edje/src/lib


Modified Files:
        Edje.h edje_data.c edje_load.c edje_private.h edje_util.c 


Log Message:


you can add arbitary key/value pair strings to either 1 the edje file .eet as
a whole and/or to each collection in the edje .eet file (different
namespoaces with each collection having its own namespace) :) this shoudl
make Rbdpngn happy :)

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/Edje.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- Edje.h      27 Jul 2003 13:16:51 -0000      1.16
+++ Edje.h      5 Aug 2003 14:33:35 -0000       1.17
@@ -13,13 +13,15 @@
    void         edje_freeze                     (void);
    void         edje_thaw                       (void);
    
-   Evas_List    *edje_file_collection_list      (const char *file);
+   Evas_List   *edje_file_collection_list       (const char *file);
    void         edje_file_collection_list_free  (Evas_List *lst);
+   char        *edje_file_data_get              (const char *file, const char *key);
    
    void         edje_extern_object_min_size_set (Evas_Object *obj, double minw, 
double minh);
    void         edje_extern_object_max_size_set (Evas_Object *obj, double maxw, 
double maxh);
    
    Evas_Object *edje_object_add                 (Evas *evas);
+   const char  *edje_object_data_get            (Evas_Object *obj, const char *key);
    void         edje_object_file_set            (Evas_Object *o, const char *file, 
const char *part);
    void         edje_object_file_get            (Evas_Object *o, const char **file, 
const char **part);
    void         edje_object_signal_callback_add (Evas_Object *o, const char 
*emission, const char *source, void (*func) (void *data, Evas_Object *o, const char 
*emission, const char *source), void *data);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_data.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- edje_data.c 27 Jul 2003 13:16:51 -0000      1.8
+++ edje_data.c 5 Aug 2003 14:33:35 -0000       1.9
@@ -2,6 +2,7 @@
 #include "edje_private.h"
 
 Eet_Data_Descriptor *_edje_edd_edje_file = NULL;
+Eet_Data_Descriptor *_edje_edd_edje_data = NULL;
 Eet_Data_Descriptor *_edje_edd_edje_image_directory = NULL;
 Eet_Data_Descriptor *_edje_edd_edje_image_directory_entry = NULL;
 Eet_Data_Descriptor *_edje_edd_edje_program = NULL;
@@ -51,6 +52,13 @@
      NEWD("Edje_Part_Collection_Directory",
          Edje_Part_Collection_Directory);
    EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection_directory, 
Edje_Part_Collection_Directory, "entries", entries, 
_edje_edd_edje_part_collection_directory_entry);
+
+   /* generic data attachment */
+   _edje_edd_edje_data =
+     NEWD("Edje_Data",
+         Edje_Data);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_data, Edje_Data, "key", key, 
EET_T_STRING);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_data, Edje_Data, "value", value, 
EET_T_STRING);
    
    /* the main file directory */
    _edje_edd_edje_file = 
@@ -58,6 +66,7 @@
          Edje_File);
    EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_file, Edje_File, "image_dir", 
image_dir, _edje_edd_edje_image_directory);
    EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_file, Edje_File, "collection_dir", 
collection_dir, _edje_edd_edje_part_collection_directory);   
+   EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_file, Edje_File, "data", data, 
_edje_edd_edje_data);
 
    /* parts & programs - loaded induvidually */
    _edje_edd_edje_program_target = 
@@ -177,6 +186,7 @@
          Edje_Part_Collection);
    EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection, Edje_Part_Collection, 
"programs", programs, _edje_edd_edje_program);
    EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection, Edje_Part_Collection, 
"parts", parts, _edje_edd_edje_part);
+   EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection, Edje_Part_Collection, 
"data", data, _edje_edd_edje_data);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, 
Edje_Part_Collection, "prop.min.w", prop.min.w, EET_T_INT);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, 
Edje_Part_Collection, "prop.min.h", prop.min.h, EET_T_INT);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, 
Edje_Part_Collection, "prop.max.w", prop.max.w, EET_T_INT);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_load.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- edje_load.c 3 Aug 2003 07:00:03 -0000       1.16
+++ edje_load.c 5 Aug 2003 14:33:35 -0000       1.17
@@ -235,6 +235,51 @@
      }
 }
 
+char *
+edje_file_data_get(const char *file, const char *key)
+{
+   Eet_File *ef = NULL;
+   Edje_File *ed_file;
+   Evas_List *l;
+   char *str = NULL;
+   
+   ed_file = evas_hash_find(_edje_file_hash, file);
+   if (!ed_file)
+     {
+       ef = eet_open((char *)file, EET_FILE_MODE_READ);
+       if (!ef) return NULL;
+       ed_file = eet_data_read(ef, _edje_edd_edje_file, "edje_file");
+       if (!ed_file)
+         {
+            eet_close(ef);
+            return NULL;
+         }
+       eet_close(ef);
+       ed_file->path = strdup(file);
+       ed_file->collection_hash = NULL;
+       ed_file->references = 1;
+       _edje_file_hash = evas_hash_add(_edje_file_hash, ed_file->path, ed_file);
+     }
+   else
+     ed_file->references++;
+   printf("beh\n");
+   for (l = ed_file->data; l; l = l->next)
+     {
+       Edje_Data *di;
+       
+       di = l->data;
+       if (!strcmp(di->key, key))
+         {
+            printf("STR: %s\n", di->key);
+            str = strdup(di->value);
+            break;
+         }
+     }
+   ed_file->references--;   
+   if (ed_file->references <= 0) _edje_file_free(ed_file);
+   return str;
+}
+
 void
 _edje_file_add(Edje *ed)
 {
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_private.h,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -3 -r1.38 -r1.39
--- edje_private.h      5 Aug 2003 13:38:44 -0000       1.38
+++ edje_private.h      5 Aug 2003 14:33:35 -0000       1.39
@@ -60,13 +60,13 @@
  *     or,  STR "my_string" == "smelly";
  *     ...
  * 
- * ? key/value pair config values per colelction and per edje file
  * ? add containering (hbox, vbox, table, wrapping multi-line hbox & vbox)
  * ? text entry widget (single line only)
  * ? reduce linked list walking and list_nth calls
  */
 
 typedef struct _Edje_File                            Edje_File;
+typedef struct _Edje_Data                            Edje_Data;
 typedef struct _Edje_Image_Directory                 Edje_Image_Directory;
 typedef struct _Edje_Image_Directory_Entry           Edje_Image_Directory_Entry;
 typedef struct _Edje_Program                         Edje_Program;
@@ -123,6 +123,7 @@
    
    Edje_Image_Directory           *image_dir;
    Edje_Part_Collection_Directory *collection_dir;
+   Evas_List                      *data;
    
    Evas_Hash                      *collection_hash;
    int                             references;
@@ -130,6 +131,14 @@
 
 /*----------*/
 
+struct _Edje_Data
+{
+   char *key;
+   char *value;
+};
+
+/*----------*/
+
 struct _Edje_Image_Directory
 {
    Evas_List *entries; /* a list of Edje_Image_Directory_Entry */
@@ -199,6 +208,7 @@
 {
    Evas_List *programs; /* a list of Edje_Program */
    Evas_List *parts; /* a list of Edje_Part */
+   Evas_List *data;
    
    int        id; /* the collection id */
    
@@ -557,6 +567,7 @@
 
 
 extern Eet_Data_Descriptor *_edje_edd_edje_file;
+extern Eet_Data_Descriptor *_edje_edd_edje_data;
 extern Eet_Data_Descriptor *_edje_edd_edje_image_directory;
 extern Eet_Data_Descriptor *_edje_edd_edje_image_directory_entry;
 extern Eet_Data_Descriptor *_edje_edd_edje_program;
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_util.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- edje_util.c 30 Jul 2003 02:58:22 -0000      1.16
+++ edje_util.c 5 Aug 2003 14:33:35 -0000       1.17
@@ -19,6 +19,26 @@
      edje_object_thaw((Evas_Object *)(l->data));
 }
 
+const char *
+edje_object_data_get(Evas_Object *obj, const char *key)
+{
+   Edje *ed;
+   Evas_List *l;
+   
+   ed = _edje_fetch(obj);
+   if ((!ed) || (!key))
+     return NULL;
+   if (!ed->collection) return NULL;
+   for (l = ed->collection->data; l; l = l->next)
+     {
+       Edje_Data *di;
+       
+       di = l->data;
+       if (!strcmp(di->key, key)) return (const char *)di->value;
+     }
+   return NULL;
+}
+
 int
 edje_object_freeze(Evas_Object *obj)
 {
@@ -540,7 +560,6 @@
    if (val_ret) *val_ret = 0;
    return "";
 }
-
 
 
 




-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to