OK, added callbacks, hope it is OK, can be tweaked ;)
This allows module_list : added background_get for Codeworrior :) SVN revision: 12818
This commit is contained in:
parent
447426c79f
commit
47edbfedb0
|
@ -199,6 +199,20 @@ _e_ipc_cb_client_data(void *data, int type, void *event)
|
|||
}
|
||||
e_config_save_queue();
|
||||
}
|
||||
break;
|
||||
case E_IPC_OP_BG_GET:
|
||||
{
|
||||
char *bg;
|
||||
bg = e_config->desktop_default_background;
|
||||
if (!bg)
|
||||
bg = "";
|
||||
ecore_ipc_client_send(e->client,
|
||||
E_IPC_DOMAIN_REPLY,
|
||||
E_IPC_OP_BG_GET_REPLY,
|
||||
0/*ref*/, 0/*ref_to*/, 0/*response*/,
|
||||
bg, strlen(bg));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@ typedef enum _E_Ipc_Op {
|
|||
E_IPC_OP_MODULE_LIST,
|
||||
E_IPC_OP_MODULE_LIST_REPLY,
|
||||
E_IPC_OP_BG_SET,
|
||||
E_IPC_OP_BG_GET,
|
||||
E_IPC_OP_BG_GET_REPLY,
|
||||
E_IPC_OP_LAST
|
||||
} E_Ipc_Op;
|
||||
|
||||
|
|
17
src/lib/E.h
17
src/lib/E.h
|
@ -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 @@ extern "C" {
|
|||
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
|
||||
|
|
|
@ -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 @@ e_init(const char* display)
|
|||
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;
|
||||
}
|
||||
|
||||
|
@ -107,6 +117,14 @@ e_module_load_set(const char *module, int load)
|
|||
strlen(module));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
@ -118,6 +136,14 @@ e_background_set(const char *bgfile)
|
|||
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 @@ _e_ipc_init(const char *display)
|
|||
/* 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 @@ _e_ipc_shutdown(void)
|
|||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue