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:

Allow gadgets to either be 1 per container (default) or 1 per zone (like the 
pager).


===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_gadget.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_gadget.c  18 Dec 2005 07:37:53 -0000      1.3
+++ e_gadget.c  18 Dec 2005 21:06:34 -0000      1.4
@@ -3,6 +3,7 @@
  */
 #include "e.h"
 
+E_Gadget_Face *_e_gadget_face_new(E_Gadget *gad, E_Container *con, E_Zone 
*zone);
 static void _e_gadget_menu_init(E_Gadget *gad);
 static void _e_gadget_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_gadget_free(E_Gadget *gad);
@@ -39,9 +40,7 @@
 e_gadget_new(E_Gadget_Api *api)
 {
    E_Gadget *gad;
-   Evas_List *managers, *l = NULL, *l2 = NULL;
-   char buf[1024];
-   int gadget_count = 0;
+   Evas_List *managers, *l = NULL, *l2 = NULL, *l3 = NULL;
 
    if (!api || !api->module || !api->name) return NULL;
 
@@ -72,66 +71,23 @@
        for(l2 = man->containers; l2; l2 = l2->next)
          {
             E_Container *con;
-            E_Gadget_Face *face;
-            E_Gadget_Change *change;
-            Evas_Object *o;
 
             con = l2->data;
-            face = E_NEW(E_Gadget_Face, 1);
-            if (!face) continue;
-
-            face->gad = gad;
-            face->con = con;
-            e_object_ref(E_OBJECT(con));
-            face->evas = con->bg_evas;
-            
-            evas_event_freeze(face->evas);
-
-            /* create an event object */
-            
-            o = evas_object_rectangle_add(con->bg_evas);
-            face->event_obj = o;
-            evas_object_layer_set(o, 2);
-            evas_object_repeat_events_set(o, 1);
-            evas_object_color_set(o, 0, 0, 0, 0);
-            evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, 
_e_gadget_cb_mouse_down, face);
-            evas_object_show(o);
        
-            /* create a gadman client */
-            snprintf(buf, sizeof(buf), "module.%s", gad->name);
-            face->gmc = e_gadman_client_new(con->gadman);
-            e_gadman_client_domain_set(face->gmc, buf, gadget_count++);
-
-            /* call the user init */
-            if (gad->funcs.face_init) (gad->funcs.face_init)(gad->data, face);
-
-            _e_gadget_face_menu_init(face);
-
-            change = E_NEW(E_Gadget_Change, 1);
-            if (change)
+            if (api->per_zone) 
+              {
+                 for(l3 = con->zones; l3; l3 = l3->next)
+                   {
+                      E_Zone *zone;
+
+                      zone = l3->data;
+                      _e_gadget_face_new(gad, con, zone);
+                   }
+              } 
+            else 
               {
-                 printf("set change func\n");
-                 change->gadget = gad;
-                 change->face = face;
+                 _e_gadget_face_new(gad, con, NULL);
               }
-
-            /* set up some gadman defaults */
-            e_gadman_client_policy_set(face->gmc,
-                                       E_GADMAN_POLICY_ANYWHERE |
-                                       E_GADMAN_POLICY_HMOVE |
-                                       E_GADMAN_POLICY_VMOVE |
-                                       E_GADMAN_POLICY_HSIZE |
-                                       E_GADMAN_POLICY_VSIZE );
-            e_gadman_client_min_size_set(face->gmc, 4, 4);
-            e_gadman_client_max_size_set(face->gmc, 128, 128);
-            e_gadman_client_auto_size_set(face->gmc, 40, 40);
-            e_gadman_client_align_set(face->gmc, 1.0, 1.0);
-            e_gadman_client_resize(face->gmc, 40, 40);
-            e_gadman_client_change_func_set(face->gmc, 
_e_gadget_face_cb_gmc_change, change);
-            e_gadman_client_load(face->gmc);
-            evas_event_thaw(face->evas);
-
-            gad->faces = evas_list_append(gad->faces, face);
          }
      }
    _e_gadget_menu_init(gad);
@@ -139,6 +95,76 @@
    return gad;
 }
 
+E_Gadget_Face *
+_e_gadget_face_new(E_Gadget *gad, E_Container *con, E_Zone *zone)
+{
+   E_Gadget_Face *face;
+   E_Gadget_Change *change;
+   Evas_Object *o;
+   char buf[1024];
+
+   face = E_NEW(E_Gadget_Face, 1);
+   if (!face) return NULL; 
+
+   face->gad = gad;
+   face->con = con;
+   if (zone) face->zone = zone;
+   else face->zone = (E_Zone *)evas_list_data(con->zones);
+   e_object_ref(E_OBJECT(con));
+   face->evas = con->bg_evas;
+
+   evas_event_freeze(face->evas);
+
+   /* create an event object */
+
+   o = evas_object_rectangle_add(con->bg_evas);
+   face->event_obj = o;
+   evas_object_layer_set(o, 2);
+   evas_object_repeat_events_set(o, 1);
+   evas_object_color_set(o, 0, 0, 0, 0);
+   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, 
_e_gadget_cb_mouse_down, face);
+   evas_object_show(o);
+
+   /* create a gadman client */
+   snprintf(buf, sizeof(buf), "module.%s", gad->name);
+   face->gmc = e_gadman_client_new(con->gadman);
+   e_gadman_client_zone_set(face->gmc, face->zone);
+   e_gadman_client_domain_set(face->gmc, buf, evas_list_count(gad->faces));
+
+   /* call the user init */
+   if (gad->funcs.face_init) (gad->funcs.face_init)(gad->data, face);
+
+   _e_gadget_face_menu_init(face);
+
+   change = E_NEW(E_Gadget_Change, 1);
+   if (change)
+     {
+       printf("set change func\n");
+       change->gadget = gad;
+       change->face = face;
+     }
+
+   /* set up some gadman defaults */
+   e_gadman_client_policy_set(face->gmc,
+        E_GADMAN_POLICY_ANYWHERE |
+        E_GADMAN_POLICY_HMOVE |
+        E_GADMAN_POLICY_VMOVE |
+        E_GADMAN_POLICY_HSIZE |
+        E_GADMAN_POLICY_VSIZE );
+   e_gadman_client_min_size_set(face->gmc, 4, 4);
+   e_gadman_client_max_size_set(face->gmc, 128, 128);
+   e_gadman_client_auto_size_set(face->gmc, 40, 40);
+   e_gadman_client_align_set(face->gmc, 1.0, 1.0);
+   e_gadman_client_resize(face->gmc, 40, 40);
+   e_gadman_client_change_func_set(face->gmc, _e_gadget_face_cb_gmc_change, 
change);
+   e_gadman_client_load(face->gmc);
+   evas_event_thaw(face->evas);
+
+   gad->faces = evas_list_append(gad->faces, face);
+
+   return face;
+}
+
 void
 e_gadget_face_theme_set(E_Gadget_Face *face, char *category, char *group)
 {
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_gadget.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_gadget.h  18 Dec 2005 07:37:53 -0000      1.2
+++ e_gadget.h  18 Dec 2005 21:06:35 -0000      1.3
@@ -15,6 +15,7 @@
 {
   E_Module *module;
   const char *name;
+  int per_zone; /* 1 - one face per zone, 0 - one per container */
   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);
@@ -29,7 +30,7 @@
   Evas_List *faces;
 
   E_Module *module;
-  char *name;
+  const char *name;
   E_Menu *menu;
 
   struct {
@@ -47,6 +48,7 @@
 {
   E_Gadget *gad;
   E_Container *con;
+  E_Zone *zone;
   Evas *evas;
 
   E_Menu *menu;




-------------------------------------------------------
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