Enlightenment CVS committal

Author  : rephorm
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_gadget.c e_gadget.h 


Log Message:

pass a single struct to e_gadget_new() instead of a ton of functions.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_gadget.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_gadget.c  3 Dec 2005 15:39:25 -0000       1.2
+++ e_gadget.c  18 Dec 2005 07:37:53 -0000      1.3
@@ -11,37 +11,55 @@
 static void _e_gadget_face_menu_init(E_Gadget_Face *face);
 static void _e_gadget_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
 
-
+/**
+ * Create a new gadget. Takes an E_Gadget_Api struct.
+ * The module and name fields of the api struct are required. The rest are
+ * optional, however in order to be useful, at least func_face_init and
+ * func_face_free should be defined. The possible fields api fields are:
+ *
+ * E_Module *module - the module that contains this gadget
+ * char *name - a unique name for this module
+ * void (*func_face_init) (void *data, E_Gadget_Face *gadget_face) - 
+ *    A function that initializes the gadget's face. All evas objects should 
+ *    be drawn on gadget_face->evas.
+ * void (*func_face_free) (void *data, E_Gadget_Face *gadget_face) -
+ *    A function that frees all memory allocated in func_face_init
+ * void (*func_change) (void *data, E_Gadget_Face *gadget_face,
+ *                     E_Gadman_Client *gmc, E_Gadman_Change change) -
+ *    A function that is called whenever the gadget is resized.
+ * void (*func_menu_init) (void *data, E_Gadget *gadget) -
+ *    A function that initializes the gadget's main menu. 
+ * void (*func_face_menu_init) (void *data, E_Gadget_Face *gadget_face) -
+ *    A function that initializes the gadget's face menu. This is displayed
+ *    when the user right clicks on the gadget's face.
+ * void *data - a pointer to some data to be passed to all callbacks.
+ * 
+ */
 E_Gadget *
-e_gadget_new(E_Module *module,
-            const char *name,
-            void (*func_face_init) (void *data, E_Gadget_Face *gadget_face),
-            void (*func_face_free) (void *data, E_Gadget_Face *gadget_face),
-            void (*func_change) (void *data, E_Gadget_Face *gadget_face, 
E_Gadman_Client *gmc, E_Gadman_Change change),
-            void (*func_menu_init) (void *data, E_Gadget *gadget),
-            void (*func_face_menu_init) (void *data, E_Gadget_Face 
*gadget_face),
-            void *data)
+e_gadget_new(E_Gadget_Api *api)
 {
    E_Gadget *gad;
    Evas_List *managers, *l = NULL, *l2 = NULL;
    char buf[1024];
    int gadget_count = 0;
 
+   if (!api || !api->module || !api->name) return NULL;
+
    gad = E_OBJECT_ALLOC(E_Gadget, E_GADGET_TYPE, _e_gadget_free);
    if (!gad) return NULL;
 
-   gad->module = module;
+
+   gad->module = api->module;
    e_object_ref(E_OBJECT(gad->module));
 
-   if(!name) return NULL;
-   gad->name = evas_stringshare_add(name);
+   gad->name = evas_stringshare_add(api->name);
 
-   gad->funcs.face_init = func_face_init;
-   gad->funcs.face_free = func_face_free;
-   gad->funcs.change = func_change;
-   gad->funcs.menu_init = func_menu_init;
-   gad->funcs.face_menu_init = func_face_menu_init;
-   gad->data = data;
+   gad->funcs.face_init = api->func_face_init;
+   gad->funcs.face_free = api->func_face_free;
+   gad->funcs.change = api->func_change;
+   gad->funcs.menu_init = api->func_menu_init;
+   gad->funcs.face_menu_init = api->func_face_menu_init;
+   gad->data = api->data;
 
 
    /* get all desktop evases, and call init function on them */
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_gadget.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_gadget.h  1 Dec 2005 04:07:27 -0000       1.1
+++ e_gadget.h  18 Dec 2005 07:37:53 -0000      1.2
@@ -3,6 +3,7 @@
 typedef struct _E_Gadget E_Gadget;
 typedef struct _E_Gadget_Face E_Gadget_Face;
 typedef struct _E_Gadget_Change E_Gadget_Change;
+typedef struct _E_Gadget_Api E_Gadget_Api;
 
 #else 
 #ifndef E_GADGET_H
@@ -10,6 +11,18 @@
 
 #define E_GADGET_TYPE 0xE0b01021
 
+struct _E_Gadget_Api
+{
+  E_Module *module;
+  const char *name;
+  void (*func_face_init) (void *data, E_Gadget_Face *gadget_face);
+  void (*func_face_free) (void *data, E_Gadget_Face *gadget_face);
+  void (*func_change) (void *data, E_Gadget_Face *gadget_face, E_Gadman_Client 
*gmc, E_Gadman_Change change);
+  void (*func_menu_init) (void *data, E_Gadget *gadget);
+  void (*func_face_menu_init) (void *data, E_Gadget_Face *gadget_face);
+  void *data;
+};
+
 struct _E_Gadget
 {
   E_Object e_obj_inherit;
@@ -52,14 +65,7 @@
   E_Gadget_Face *face;
 };
 
-E_Gadget *e_gadget_new(E_Module *module,
-    const char *name, 
-    void (*func_face_init) (void *data, E_Gadget_Face *gadget_face),
-    void (*func_face_free) (void *data, E_Gadget_Face *gadget_face),
-    void (*func_change) (void *data, E_Gadget_Face *gadget_face, 
E_Gadman_Client *gmc, E_Gadman_Change change),
-    void (*func_menu_init) (void *data, E_Gadget *gadget),
-    void (*func_face_menu_init) (void *data, E_Gadget_Face *gadget_face),
-    void *data);
+E_Gadget *e_gadget_new(E_Gadget_Api *api);
 
 void e_gadget_face_theme_set(E_Gadget_Face *face, char *category, char *group);
 




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to