forked from enlightenment/enlightenment
- add the ability to get the theme directory list from libe
SVN revision: 14905
This commit is contained in:
parent
6fbb8a4664
commit
4fcc8392fc
11
src/lib/E.h
11
src/lib/E.h
|
@ -23,6 +23,7 @@ typedef struct _E_Response_Module_Data E_Response_Module_Data;
|
|||
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 @@ struct _E_Response_Background_Dirs_List
|
|||
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 @@ extern "C" {
|
|||
/* 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
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ static int _e_cb_server_data(void *data, int type, void *event);
|
|||
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_LIST = 0;
|
|||
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_init(const char* display)
|
|||
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 @@ e_background_dirs_list(void)
|
|||
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_server_data(void *data __UNUSED__, int type, void *event)
|
|||
_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 @@ _e_cb_bg_dir_list_free(void *data __UNUSED__, void *ev)
|
|||
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);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue