Hey, I want to check if a given part's type is SWALLOW before using it to 
swallow an object. 

I couldn't find a way to do it without using Edje_Edit.h. Sice this is for the 
Edje book I wouldn't want  to encourage Edje_Edit for regular application 
development. Or is promoting the usage of Edje_Edit in applications a good 
idea?

My approach was to add a new function to Edje that return the part type as an 
unsigned char (like Edje_Edit does) and to move the macros EDJE_PART_TYPE_* 
from edje_private.h to Edje.h .

I attached a patch showing the changes.
Thanks and good bye.
Index: src/lib/Edje.h
===================================================================
RCS file: /cvs/e/e17/libs/edje/src/lib/Edje.h,v
retrieving revision 1.52
diff -u -r1.52 Edje.h
--- src/lib/Edje.h	26 Aug 2007 12:54:51 -0000	1.52
+++ src/lib/Edje.h	16 Apr 2008 13:53:35 -0000
@@ -24,6 +24,16 @@
 # endif
 #endif

+#define EDJE_PART_TYPE_NONE      0
+#define EDJE_PART_TYPE_RECTANGLE 1
+#define EDJE_PART_TYPE_TEXT      2
+#define EDJE_PART_TYPE_IMAGE     3
+#define EDJE_PART_TYPE_SWALLOW   4
+#define EDJE_PART_TYPE_TEXTBLOCK 5
+#define EDJE_PART_TYPE_GRADIENT  6
+#define EDJE_PART_TYPE_GROUP     7
+#define EDJE_PART_TYPE_LAST      8
+
 /* FIXDOC: Define these? */
 enum _Edje_Message_Type
 {
@@ -195,7 +205,8 @@
    EAPI Evas_Object *edje_object_add                 (Evas *evas);

    /* edje_util.c */
-   EAPI const char  *edje_object_data_get            (Evas_Object *obj, const char *key);
+   EAPI const char    *edje_object_data_get            (Evas_Object *obj, const char *key);
+   EAPI unsigned char  edje_object_part_type_get       (Evas_Object *obj, const char *part);

    /* edje_load.c */
    EAPI int          edje_object_file_set            (Evas_Object *obj, const char *file, const char *part);
Index: src/lib/edje_private.h
===================================================================
RCS file: /cvs/e/e17/libs/edje/src/lib/edje_private.h,v
retrieving revision 1.147
diff -u -r1.147 edje_private.h
--- src/lib/edje_private.h	1 Apr 2008 21:33:17 -0000	1.147
+++ src/lib/edje_private.h	16 Apr 2008 13:53:35 -0000
@@ -186,16 +186,6 @@
 #define EDJE_IMAGE_SOURCE_TYPE_EXTERNAL       3
 #define EDJE_IMAGE_SOURCE_TYPE_LAST           4

-#define EDJE_PART_TYPE_NONE      0
-#define EDJE_PART_TYPE_RECTANGLE 1
-#define EDJE_PART_TYPE_TEXT      2
-#define EDJE_PART_TYPE_IMAGE     3
-#define EDJE_PART_TYPE_SWALLOW   4
-#define EDJE_PART_TYPE_TEXTBLOCK 5
-#define EDJE_PART_TYPE_GRADIENT  6
-#define EDJE_PART_TYPE_GROUP     7
-#define EDJE_PART_TYPE_LAST      8
-
 #define EDJE_TEXT_EFFECT_NONE                0
 #define EDJE_TEXT_EFFECT_PLAIN               1
 #define EDJE_TEXT_EFFECT_OUTLINE             2
Index: src/lib/edje_util.c
===================================================================
RCS file: /cvs/e/e17/libs/edje/src/lib/edje_util.c,v
retrieving revision 1.106
diff -u -r1.106 edje_util.c
--- src/lib/edje_util.c	31 Mar 2008 21:38:51 -0000	1.106
+++ src/lib/edje_util.c	16 Apr 2008 13:53:36 -0000
@@ -697,6 +697,29 @@
    return 1;
 }
 
+/** Gets the type of a given part
+ * @param obj A valid Evas_Object handle
+ * @param part The part name to check
+ * @return An unsigned char representing the type of the part, this value can
+ * be checked agains the following macros, EDJE_PART_TYPE_NONE, 
+ * EDJE_PART_TYPE_RECTANGLE, EDJE_PART_TYPE_TEXT,EDJE_PART_TYPE_IMAGE, 
+ * EDJE_PART_TYPE_SWALLOW, EDJE_PART_TYPE_TEXTBLOCK,EDJE_PART_TYPE_GRADIENT or 
+ * EDJE_PART_TYPE_GROUP. The function returns the value of the macro 
+ * EDJE_PART_TYPE_LAST on failure.
+ */
+EAPI unsigned char
+edje_object_part_type_get(Evas_Object *obj, const char *part)
+{
+   Edje *ed;
+   Edje_Real_Part *rp;
+
+   ed = _edje_fetch(obj);
+   if ((!ed) || (!part)) return EDJE_PART_TYPE_LAST;
+   rp = _edje_real_part_recursive_get(ed, (char *)part);
+   if (!rp) return EDJE_PART_TYPE_LAST;
+   return rp->part->type;
+}
+
 /**
  * Gets the Evas_Object corresponding to a given part.
  * You should never modify the state of the returned object
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to