Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/lib


Modified Files:
        E.h e_main.c 


Log Message:
- add the ability to get the theme directory list from libe

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/lib/E.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- E.h 9 Apr 2005 06:06:39 -0000       1.5
+++ E.h 22 May 2005 17:35:16 -0000      1.6
@@ -23,6 +23,7 @@
 typedef struct _E_Response_Module_Dirs_List    E_Response_Module_Dirs_List;
 typedef struct _E_Response_Background_Get E_Response_Background_Get;
 typedef struct _E_Response_Background_Dirs_List        
E_Response_Background_Dirs_List;
+typedef struct _E_Response_Theme_Dirs_List     E_Response_Theme_Dirs_List;
 
 struct _E_Response_Module_List
 {
@@ -53,10 +54,17 @@
    int     count;
 };
 
+struct _E_Response_Theme_Dirs_List
+{
+   char   **dirs;
+   int     count;
+};
+
 extern EAPI int E_RESPONSE_MODULE_LIST;
 extern EAPI int E_RESPONSE_BACKGROUND_GET;
 extern EAPI int E_RESPONSE_MODULE_DIRS_LIST;
 extern EAPI int E_RESPONSE_BACKGROUND_DIRS_LIST;
+extern EAPI int E_RESPONSE_THEME_DIRS_LIST;
 
 #ifdef __cplusplus
 extern "C" {
@@ -78,10 +86,11 @@
    /* E desktop manipulation */
    EAPI void         e_background_set             (const char *bgfile);
    EAPI void         e_background_get             (void);
-   
+
    /* E path information */
    EAPI void         e_module_dirs_list           (void);
    EAPI void         e_background_dirs_list       (void);
+   EAPI void         e_theme_dirs_list            (void);
 
 #ifdef __cplusplus
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/lib/e_main.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- e_main.c    13 Apr 2005 06:03:50 -0000      1.9
+++ e_main.c    22 May 2005 17:35:16 -0000      1.10
@@ -28,6 +28,7 @@
 static void _e_cb_module_list_free(void *data, void *ev);
 static void _e_cb_module_dir_list_free(void *data, void *ev);
 static void _e_cb_bg_dir_list_free(void *data, void *ev);
+static void _e_cb_theme_dir_list_free(void *data __UNUSED__, void *ev);
 
 static Ecore_Ipc_Server *_e_ipc_server  = NULL;
 
@@ -35,6 +36,7 @@
 int E_RESPONSE_MODULE_DIRS_LIST = 0;
 int E_RESPONSE_BACKGROUND_GET = 0;
 int E_RESPONSE_BACKGROUND_DIRS_LIST = 0;
+int E_RESPONSE_THEME_DIRS_LIST = 0;
 
 /*
  * initialise connection to the current E running on "display".
@@ -110,6 +112,7 @@
        E_RESPONSE_MODULE_DIRS_LIST = ecore_event_type_new();
        E_RESPONSE_BACKGROUND_GET = ecore_event_type_new();
        E_RESPONSE_BACKGROUND_DIRS_LIST = ecore_event_type_new();
+       E_RESPONSE_THEME_DIRS_LIST = ecore_event_type_new();
      }
    
    if (free_disp)
@@ -226,6 +229,14 @@
                         0/*ref_to*/, 0/*response*/, NULL, 0);
 }
 
+void
+e_theme_dirs_list(void)
+{
+   ecore_ipc_server_send(_e_ipc_server, E_IPC_DOMAIN_REQUEST,
+                        E_IPC_OP_THEME_DIRS_LIST, 0/*ref*/, 
+                        0/*ref_to*/, 0/*response*/, NULL, 0);
+}
+
 static int
 _e_ipc_init(const char *display)
 {
@@ -380,6 +391,37 @@
                                _e_cb_bg_dir_list_free, NULL);
            }
           break;
+       case E_IPC_OP_THEME_DIRS_LIST_REPLY:
+         if (e->data)
+           {
+              E_Response_Theme_Dirs_List *res;
+              char *p;
+              int count = 0;
+
+              res = calloc(1, sizeof(E_Response_Theme_Dirs_List));
+
+              p = e->data;
+              while (p < (char *)(e->data + e->size))
+                {
+                   p += strlen(p) + 1;
+                   count ++;
+                }
+
+              res->dirs = malloc(sizeof(char *) * count);
+              res->count = count;
+
+              count = 0;
+              p = e->data;
+              while (p < (char *)(e->data + e->size))
+                {
+                   res->dirs[count] = p;
+                   p += strlen(res->dirs[count]) + 1;
+                   count++;
+                }
+              ecore_event_add(E_RESPONSE_THEME_DIRS_LIST, res,
+                               _e_cb_theme_dir_list_free, NULL);
+           }
+          break;
        default:
           break;
      }
@@ -420,4 +462,14 @@
     free(e);
 }
 
+static void
+_e_cb_theme_dir_list_free(void *data __UNUSED__, void *ev)
+{
+    E_Response_Theme_Dirs_List *e;
+
+    e = ev;
+    free(e->dirs);
+    free(e);
+}
+
 




-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to