Enlightenment CVS committal

Author  : handyande
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/lib


Modified Files:
        E.h e_main.c 


Log Message:
OK, added callbacks, hope it is OK, can be tweaked ;)
This allows module_list :
added background_get for Codeworrior :)
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/lib/E.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- E.h 6 Jan 2005 23:10:55 -0000       1.1
+++ E.h 8 Jan 2005 01:44:36 -0000       1.2
@@ -19,11 +19,22 @@
 # endif
 #endif
 
+extern EAPI int E_RESPONSE_MODULE_LIST;
+extern EAPI int E_RESPONSE_BACKGROUND_GET;
 
+typedef struct _E_Response_Module_List    E_Response_Module_List;
+typedef struct _E_Response_Background_Get E_Response_Background_Get;
 
-
-
-
+struct _E_Response_Module_List
+{
+   char   *name;
+   char    enabled;
+};
+
+struct _E_Response_Background_Get
+{
+   char   *data;
+};
 
 
 #ifdef __cplusplus
@@ -38,7 +49,9 @@
                                                    int enable);
    EAPI void         e_module_loaded_set          (const char *module,
                                                    int load);
+   EAPI void         e_module_list                (void);
    EAPI void         e_background_set             (const char *bgfile);
+   EAPI void         e_background_get             (void);
      
    
 #ifdef __cplusplus
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/lib/e_main.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_main.c    6 Jan 2005 23:10:56 -0000       1.1
+++ e_main.c    8 Jan 2005 01:44:36 -0000       1.2
@@ -25,9 +25,13 @@
 
 static int  _e_ipc_init(const char *display);
 static void _e_ipc_shutdown(void);
+static int _e_cb_server_data(void *data, int type, void *event);
 
 static Ecore_Ipc_Server *_e_ipc_server  = NULL;
 
+int E_RESPONSE_MODULE_LIST = 0;
+int E_RESPONSE_BACKGROUND_GET = 0;
+
 int
 e_init(const char* display)
 {
@@ -58,6 +62,12 @@
        return 0;
      }
    
+   if (!E_RESPONSE_MODULE_LIST)
+     {
+       E_RESPONSE_MODULE_LIST = ecore_event_type_new();
+       E_RESPONSE_BACKGROUND_GET = ecore_event_type_new();
+     }
+   
    return 1;
 }
 
@@ -108,6 +118,14 @@
 }
 
 void
+e_module_list(void)
+{
+   ecore_ipc_server_send(_e_ipc_server, E_IPC_DOMAIN_REQUEST,
+                        E_IPC_OP_MODULE_LIST, 0/*ref*/, 0/*ref_to*/,
+                        0/*response*/, NULL, 0);
+}
+
+void
 e_background_set(const char *bgfile)
 {
    if (!bgfile)
@@ -118,6 +136,14 @@
                         strlen(bgfile));
 }
 
+void
+e_background_get(void)
+{
+   ecore_ipc_server_send(_e_ipc_server, E_IPC_DOMAIN_REQUEST,
+                        E_IPC_OP_BG_GET, 0/*ref*/, 0/*ref_to*/,
+                        0/*response*/, NULL, 0);
+}
+
 static int
 _e_ipc_init(const char *display)
 {
@@ -132,9 +158,9 @@
    /* similar... */
    if (!_e_ipc_server) return 0;
    
-//   ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_ADD, _e_ipc_cb_server_add, 
NULL);
-//   ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_DEL, _e_ipc_cb_server_del, 
NULL);
-//   ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_DATA, 
_e_ipc_cb_server_data, NULL);
+//   ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_ADD, _e_cb_server_add, 
NULL);
+//   ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_DEL, _e_cb_server_del, 
NULL);
+   ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_DATA, _e_cb_server_data, 
NULL);
    
    return 1;
 }
@@ -149,4 +175,54 @@
      }
 }
 
+static int
+_e_cb_server_data(void *data, int type, void *event)
+{
+   Ecore_Ipc_Event_Server_Data *e;
+   
+   e = event;
 
+   type = E_IPC_OP_MODULE_LIST;
+   switch (e->minor)
+     {  
+       case E_IPC_OP_MODULE_LIST_REPLY:
+         if (e->data)
+           {
+              char *p;
+             
+              p = e->data;
+              while (p < (char *)(e->data + e->size))
+                {
+                   E_Response_Module_List *res;
+
+                   res = calloc(1, sizeof(E_Response_Module_List));
+                   res->name = p;
+                   p += strlen(res->name);
+                   if (p < (char *)(e->data + e->size))
+                     {
+                        p++;
+                        if (p < (char *)(e->data + e->size))
+                          {
+                             res->enabled = *p;
+                             p++;
+                             ecore_event_add(E_RESPONSE_MODULE_LIST, res,
+                                             NULL, NULL);
+                          }
+                     }
+                }
+           }
+          break;
+       case E_IPC_OP_BG_GET_REPLY:
+           {
+              E_Response_Background_Get *res;
+
+              res = calloc(1, sizeof(E_Response_Background_Get));
+              res->data = e->data;
+              ecore_event_add(E_RESPONSE_BACKGROUND_GET, res, NULL, NULL);
+              break;
+           }
+       default:
+          break;
+     }
+   return 1;
+}




-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to