896 lines
22 KiB
C
896 lines
22 KiB
C
#include "e.h"
|
|
|
|
/* local subsystem functions */
|
|
static int _e_ipc_cb_client_add(void *data, int type, void *event);
|
|
static int _e_ipc_cb_client_del(void *data, int type, void *event);
|
|
static int _e_ipc_cb_client_data(void *data, int type, void *event);
|
|
|
|
/* local subsystem globals */
|
|
static Ecore_Ipc_Server *_e_ipc_server = NULL;
|
|
|
|
/* externally accessible functions */
|
|
int
|
|
e_ipc_init(void)
|
|
{
|
|
char buf[1024];
|
|
char *disp;
|
|
|
|
disp = getenv("DISPLAY");
|
|
if (!disp) disp = ":0";
|
|
snprintf(buf, sizeof(buf), "enlightenment-(%s)", disp);
|
|
_e_ipc_server = ecore_ipc_server_add(ECORE_IPC_LOCAL_USER, buf, 0, NULL);
|
|
if (!_e_ipc_server) return 0;
|
|
ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_ADD, _e_ipc_cb_client_add, NULL);
|
|
ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DEL, _e_ipc_cb_client_del, NULL);
|
|
ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DATA, _e_ipc_cb_client_data, NULL);
|
|
|
|
e_ipc_codec_init();
|
|
return 1;
|
|
}
|
|
|
|
void
|
|
e_ipc_shutdown(void)
|
|
{
|
|
e_ipc_codec_shutdown();
|
|
if (_e_ipc_server)
|
|
{
|
|
ecore_ipc_server_del(_e_ipc_server);
|
|
_e_ipc_server = NULL;
|
|
}
|
|
}
|
|
|
|
/* local subsystem globals */
|
|
static int
|
|
_e_ipc_cb_client_add(void *data __UNUSED__, int type __UNUSED__, void *event)
|
|
{
|
|
Ecore_Ipc_Event_Client_Add *e;
|
|
|
|
e = event;
|
|
if (ecore_ipc_client_server_get(e->client) != _e_ipc_server) return 1;
|
|
printf("E-IPC: client %p connected to server!\n", e->client);
|
|
return 1;
|
|
}
|
|
|
|
static int
|
|
_e_ipc_cb_client_del(void *data __UNUSED__, int type __UNUSED__, void *event)
|
|
{
|
|
Ecore_Ipc_Event_Client_Del *e;
|
|
|
|
e = event;
|
|
if (ecore_ipc_client_server_get(e->client) != _e_ipc_server) return 1;
|
|
printf("E-IPC: client %p disconnected from server!\n", e->client);
|
|
/* delete client sruct */
|
|
ecore_ipc_client_del(e->client);
|
|
return 1;
|
|
}
|
|
|
|
static int
|
|
_e_ipc_cb_client_data(void *data __UNUSED__, int type __UNUSED__, void *event)
|
|
{
|
|
Ecore_Ipc_Event_Client_Data *e;
|
|
|
|
e = event;
|
|
if (ecore_ipc_client_server_get(e->client) != _e_ipc_server) return 1;
|
|
switch (e->minor)
|
|
{
|
|
#define TYPE E_WM_IN
|
|
#include "e_ipc_handlers.h"
|
|
#undef TYPE
|
|
/* here to steal from to port over to the new e_ipc_handlers.h */
|
|
#if 0
|
|
case E_IPC_OP_FONT_FALLBACK_APPEND:
|
|
{
|
|
char *font_name = NULL;
|
|
|
|
if (e_ipc_codec_str_dec(e->data, e->size, &font_name))
|
|
{
|
|
e_font_fallback_append(font_name);
|
|
free(font_name);
|
|
e_config_save_queue();
|
|
}
|
|
}
|
|
break;
|
|
case E_IPC_OP_FONT_FALLBACK_PREPEND:
|
|
{
|
|
char *font_name = NULL;
|
|
|
|
if (e_ipc_codec_str_dec(e->data, e->size, &font_name))
|
|
{
|
|
e_font_fallback_prepend(font_name);
|
|
free(font_name);
|
|
e_config_save_queue();
|
|
}
|
|
}
|
|
break;
|
|
case E_IPC_OP_FONT_FALLBACK_LIST:
|
|
{
|
|
E_Font_Fallback *ff;
|
|
Evas_List *dat = NULL, *l;
|
|
void *data;
|
|
int bytes;
|
|
|
|
for (l = e_font_available_list(); l; l = l->next)
|
|
{
|
|
ff = l->data;
|
|
dat = evas_list_append(dat, ff->name);
|
|
}
|
|
data = e_ipc_codec_str_list_enc(dat, &bytes);
|
|
ecore_ipc_client_send(e->client,
|
|
E_IPC_DOMAIN_REPLY,
|
|
E_IPC_OP_FONT_FALLBACK_LIST_REPLY,
|
|
0/*ref*/, 0/*ref_to*/, 0/*response*/,
|
|
data, bytes);
|
|
free(data);
|
|
evas_list_free(dat);
|
|
}
|
|
break;
|
|
case E_IPC_OP_FONT_FALLBACK_REMOVE:
|
|
{
|
|
char *font_name = NULL;
|
|
|
|
if (e_ipc_codec_str_dec(e->data, e->size, &font_name))
|
|
{
|
|
e_font_fallback_remove(font_name);
|
|
free(font_name);
|
|
e_config_save_queue();
|
|
}
|
|
}
|
|
break;
|
|
case E_IPC_OP_FONT_DEFAULT_SET:
|
|
{
|
|
E_Ipc_2Str_Int *v = NULL;
|
|
|
|
if (e_ipc_codec_2str_int_dec(e->data, e->size, &v))
|
|
{
|
|
e_font_default_set(v->str1, v->str2, v->val);
|
|
free(v->str1);
|
|
free(v->str2);
|
|
free(v);
|
|
e_config_save_queue();
|
|
}
|
|
}
|
|
break;
|
|
case E_IPC_OP_FONT_DEFAULT_GET:
|
|
{
|
|
E_Font_Default *efd;
|
|
char *tclass = NULL;
|
|
void *data;
|
|
int bytes;
|
|
|
|
if (e_ipc_codec_str_dec(e->data, e->size, &tclass))
|
|
{
|
|
efd = e_font_default_get(tclass);
|
|
data = e_ipc_codec_2str_int_enc(efd->text_class, efd->font, efd->size, &bytes);
|
|
ecore_ipc_client_send(e->client,
|
|
E_IPC_DOMAIN_REPLY,
|
|
E_IPC_OP_FONT_DEFAULT_GET_REPLY,
|
|
0/*ref*/, 0/*ref_to*/, 0/*response*/,
|
|
data, bytes);
|
|
free(data);
|
|
free(tclass);
|
|
}
|
|
}
|
|
break;
|
|
case E_IPC_OP_FONT_DEFAULT_REMOVE:
|
|
{
|
|
char *tclass = NULL;
|
|
|
|
if (e_ipc_codec_str_dec(e->data, e->size, &tclass))
|
|
{
|
|
e_font_default_remove(tclass);
|
|
free(tclass);
|
|
e_config_save_queue();
|
|
}
|
|
}
|
|
break;
|
|
case E_IPC_OP_FONT_DEFAULT_LIST:
|
|
{
|
|
E_Ipc_2Str_Int *v;
|
|
E_Font_Default *efd;
|
|
Evas_List *dat = NULL, *l;
|
|
void *data;
|
|
int bytes;
|
|
|
|
for (l = e_font_default_list(); l; l = l->next)
|
|
{
|
|
efd = l->data;
|
|
v = calloc(1, sizeof(E_Ipc_2Str_Int));
|
|
v->str1 = efd->text_class;
|
|
v->str2 = efd->font;
|
|
v->val = efd->size;
|
|
dat = evas_list_append(dat, v);
|
|
}
|
|
data = e_ipc_codec_2str_int_list_enc(dat, &bytes);
|
|
ecore_ipc_client_send(e->client,
|
|
E_IPC_DOMAIN_REPLY,
|
|
E_IPC_OP_FONT_DEFAULT_LIST_REPLY,
|
|
0/*ref*/, 0/*ref_to*/, 0/*response*/,
|
|
data, bytes);
|
|
while (dat)
|
|
{
|
|
v = dat->data;
|
|
free(v);
|
|
dat = evas_list_remove_list(dat, dat);
|
|
}
|
|
free(data);
|
|
}
|
|
break;
|
|
case E_IPC_OP_LANG_LIST:
|
|
{
|
|
Evas_List *langs;
|
|
int bytes;
|
|
char *data;
|
|
|
|
langs = (Evas_List *)e_intl_language_list();
|
|
data = _e_ipc_str_list_get(langs, &bytes);
|
|
ecore_ipc_client_send(e->client,
|
|
E_IPC_DOMAIN_REPLY,
|
|
E_IPC_OP_LANG_LIST_REPLY,
|
|
0/*ref*/, 0/*ref_to*/, 0/*response*/,
|
|
data, bytes);
|
|
free(data);
|
|
}
|
|
break;
|
|
case E_IPC_OP_LANG_SET:
|
|
{
|
|
char *lang;
|
|
|
|
lang = _e_ipc_simple_str_dec(e->data, e->size);
|
|
IF_FREE(e_config->language);
|
|
e_config->language = lang;
|
|
e_intl_language_set(e_config->language);
|
|
e_config_save_queue();
|
|
}
|
|
break;
|
|
case E_IPC_OP_LANG_GET:
|
|
{
|
|
char *lang;
|
|
|
|
lang = e_config->language;
|
|
if (!lang) lang = "";
|
|
ecore_ipc_client_send(e->client,
|
|
E_IPC_DOMAIN_REPLY,
|
|
E_IPC_OP_LANG_GET_REPLY,
|
|
0/*ref*/, 0/*ref_to*/, 0/*response*/,
|
|
lang, strlen(lang) + 1);
|
|
free(data);
|
|
}
|
|
break;
|
|
case E_IPC_OP_BINDING_MOUSE_LIST:
|
|
{
|
|
Evas_List *bindings;
|
|
int bytes;
|
|
char *data;
|
|
|
|
bindings = e_config->mouse_bindings;
|
|
data = _e_ipc_mouse_binding_list_enc(bindings, &bytes);
|
|
ecore_ipc_client_send(e->client,
|
|
E_IPC_DOMAIN_REPLY,
|
|
E_IPC_OP_BINDING_MOUSE_LIST_REPLY,
|
|
0/*ref*/, 0/*ref_to*/, 0/*response*/,
|
|
data, bytes);
|
|
free(data);
|
|
}
|
|
break;
|
|
case E_IPC_OP_BINDING_MOUSE_ADD:
|
|
{
|
|
E_Config_Binding_Mouse bind, *eb;
|
|
|
|
_e_ipc_mouse_binding_dec(e->data, e->size, &bind);
|
|
{
|
|
eb = e_config_binding_mouse_match(&bind);
|
|
if (!eb)
|
|
{
|
|
eb = E_NEW(E_Config_Binding_Key, 1);
|
|
e_config->mouse_bindings = evas_list_append(e_config->mouse_bindings, eb);
|
|
eb->context = bind.context;
|
|
eb->button = bind.button;
|
|
eb->modifiers = bind.modifiers;
|
|
eb->any_mod = bind.any_mod;
|
|
eb->action = strdup(bind.action);
|
|
eb->params = strdup(bind.params);
|
|
e_border_button_bindings_ungrab_all();
|
|
e_bindings_mouse_add(bind.context, bind.button, bind.modifiers,
|
|
bind.any_mod, bind.action, bind.params);
|
|
e_border_button_bindings_grab_all();
|
|
e_config_save_queue();
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case E_IPC_OP_BINDING_MOUSE_DEL:
|
|
{
|
|
E_Config_Binding_Mouse bind, *eb;
|
|
|
|
_e_ipc_mouse_binding_dec(e->data, e->size, &bind);
|
|
{
|
|
eb = e_config_binding_mouse_match(&bind);
|
|
if (eb)
|
|
{
|
|
e_config->mouse_bindings = evas_list_remove(e_config->mouse_bindings, eb);
|
|
IF_FREE(eb->action);
|
|
IF_FREE(eb->params);
|
|
IF_FREE(eb);
|
|
e_border_button_bindings_ungrab_all();
|
|
e_bindings_mouse_del(bind.context, bind.button, bind.modifiers,
|
|
bind.any_mod, bind.action, bind.params);
|
|
e_border_button_bindings_grab_all();
|
|
e_config_save_queue();
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case E_IPC_OP_BINDING_KEY_LIST:
|
|
{
|
|
Evas_List *bindings;
|
|
int bytes;
|
|
char *data;
|
|
|
|
bindings = e_config->key_bindings;
|
|
data = _e_ipc_key_binding_list_enc(bindings, &bytes);
|
|
ecore_ipc_client_send(e->client,
|
|
E_IPC_DOMAIN_REPLY,
|
|
E_IPC_OP_BINDING_KEY_LIST_REPLY,
|
|
0/*ref*/, 0/*ref_to*/, 0/*response*/,
|
|
data, bytes);
|
|
free(data);
|
|
}
|
|
break;
|
|
case E_IPC_OP_BINDING_KEY_ADD:
|
|
{
|
|
E_Config_Binding_Key bind, *eb;
|
|
|
|
_e_ipc_key_binding_dec(e->data, e->size, &bind);
|
|
{
|
|
eb = e_config_binding_key_match(&bind);
|
|
if (!eb)
|
|
{
|
|
eb = E_NEW(E_Config_Binding_Key, 1);
|
|
e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
|
|
eb->context = bind.context;
|
|
eb->modifiers = bind.modifiers;
|
|
eb->any_mod = bind.any_mod;
|
|
eb->key = strdup(bind.key);
|
|
eb->action = strdup(bind.action);
|
|
eb->params = strdup(bind.params);
|
|
e_managers_keys_ungrab();
|
|
e_bindings_key_add(bind.context, bind.key, bind.modifiers,
|
|
bind.any_mod, bind.action, bind.params);
|
|
e_managers_keys_grab();
|
|
e_config_save_queue();
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case E_IPC_OP_BINDING_KEY_DEL:
|
|
{
|
|
E_Config_Binding_Key bind, *eb;
|
|
|
|
_e_ipc_key_binding_dec(e->data, e->size, &bind);
|
|
{
|
|
eb = e_config_binding_key_match(&bind);
|
|
if (eb)
|
|
{
|
|
e_config->key_bindings = evas_list_remove(e_config->key_bindings, eb);
|
|
IF_FREE(eb->key);
|
|
IF_FREE(eb->action);
|
|
IF_FREE(eb->params);
|
|
IF_FREE(eb);
|
|
e_managers_keys_ungrab();
|
|
e_bindings_key_del(bind.context, bind.key, bind.modifiers,
|
|
bind.any_mod, bind.action, bind.params);
|
|
e_managers_keys_grab();
|
|
e_config_save_queue();
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case E_IPC_OP_MENUS_FAST_MOVE_THRESHHOLD_SET:
|
|
if (e_ipc_codec_double_dec(e->data, e->size,
|
|
&(e_config->menus_fast_mouse_move_threshhold)))
|
|
{
|
|
E_CONFIG_LIMIT(e_config->menus_fast_mouse_move_threshhold, 1.0, 2000.0);
|
|
e_config_save_queue();
|
|
}
|
|
break;
|
|
case E_IPC_OP_MENUS_FAST_MOVE_THRESHHOLD_GET:
|
|
_e_ipc_reply_double_send(e->client,
|
|
e_config->menus_fast_mouse_move_threshhold,
|
|
E_IPC_OP_MENUS_FAST_MOVE_THRESHHOLD_GET_REPLY);
|
|
break;
|
|
case E_IPC_OP_MENUS_CLICK_DRAG_TIMEOUT_SET:
|
|
if (e_ipc_codec_double_dec(e->data, e->size,
|
|
&(e_config->menus_click_drag_timeout)))
|
|
{
|
|
E_CONFIG_LIMIT(e_config->menus_click_drag_timeout, 0.0, 10.0);
|
|
e_config_save_queue();
|
|
}
|
|
break;
|
|
case E_IPC_OP_MENUS_CLICK_DRAG_TIMEOUT_GET:
|
|
_e_ipc_reply_double_send(e->client,
|
|
e_config->menus_click_drag_timeout,
|
|
E_IPC_OP_MENUS_CLICK_DRAG_TIMEOUT_GET_REPLY);
|
|
break;
|
|
case E_IPC_OP_BORDER_SHADE_ANIMATE_SET:
|
|
if (e_ipc_codec_int_dec(e->data, e->size,
|
|
&(e_config->border_shade_animate)))
|
|
{
|
|
E_CONFIG_LIMIT(e_config->border_shade_animate, 0, 1);
|
|
e_config_save_queue();
|
|
}
|
|
break;
|
|
case E_IPC_OP_BORDER_SHADE_ANIMATE_GET:
|
|
_e_ipc_reply_int_send(e->client,
|
|
e_config->border_shade_animate,
|
|
E_IPC_OP_BORDER_SHADE_ANIMATE_GET_REPLY);
|
|
break;
|
|
case E_IPC_OP_BORDER_SHADE_TRANSITION_SET:
|
|
if (e_ipc_codec_int_dec(e->data, e->size,
|
|
&(e_config->border_shade_transition)))
|
|
{
|
|
E_CONFIG_LIMIT(e_config->border_shade_transition, 0, 3);
|
|
e_config_save_queue();
|
|
}
|
|
break;
|
|
case E_IPC_OP_BORDER_SHADE_TRANSITION_GET:
|
|
_e_ipc_reply_int_send(e->client,
|
|
e_config->border_shade_transition,
|
|
E_IPC_OP_BORDER_SHADE_TRANSITION_GET_REPLY);
|
|
break;
|
|
case E_IPC_OP_BORDER_SHADE_SPEED_SET:
|
|
if (e_ipc_codec_double_dec(e->data, e->size,
|
|
&(e_config->border_shade_speed)))
|
|
{
|
|
E_CONFIG_LIMIT(e_config->border_shade_speed, 1.0, 20000.0);
|
|
e_config_save_queue();
|
|
}
|
|
break;
|
|
case E_IPC_OP_BORDER_SHADE_SPEED_GET:
|
|
_e_ipc_reply_double_send(e->client,
|
|
e_config->border_shade_speed,
|
|
E_IPC_OP_BORDER_SHADE_SPEED_GET_REPLY);
|
|
break;
|
|
case E_IPC_OP_IMAGE_CACHE_SET:
|
|
if (e_ipc_codec_int_dec(e->data, e->size,
|
|
&(e_config->image_cache)))
|
|
{
|
|
E_CONFIG_LIMIT(e_config->image_cache, 0, 256 * 1024);
|
|
e_config_save_queue();
|
|
}
|
|
break;
|
|
case E_IPC_OP_IMAGE_CACHE_GET:
|
|
_e_ipc_reply_int_send(e->client,
|
|
e_config->image_cache,
|
|
E_IPC_OP_IMAGE_CACHE_GET_REPLY);
|
|
break;
|
|
case E_IPC_OP_FONT_CACHE_SET:
|
|
if (e_ipc_codec_int_dec(e->data, e->size,
|
|
&(e_config->font_cache)))
|
|
{
|
|
E_CONFIG_LIMIT(e_config->font_cache, 0, 32 * 1024);
|
|
e_config_save_queue();
|
|
}
|
|
break;
|
|
case E_IPC_OP_FONT_CACHE_GET:
|
|
_e_ipc_reply_int_send(e->client,
|
|
e_config->font_cache,
|
|
E_IPC_OP_FONT_CACHE_GET_REPLY);
|
|
break;
|
|
case E_IPC_OP_USE_EDGE_FLIP_SET:
|
|
if (e_ipc_codec_int_dec(e->data, e->size,
|
|
&(e_config->use_edge_flip)))
|
|
{
|
|
E_CONFIG_LIMIT(e_config->use_edge_flip, 0, 1);
|
|
e_config_save_queue();
|
|
}
|
|
break;
|
|
case E_IPC_OP_USE_EDGE_FLIP_GET:
|
|
_e_ipc_reply_int_send(e->client,
|
|
e_config->use_edge_flip,
|
|
E_IPC_OP_USE_EDGE_FLIP_GET_REPLY);
|
|
break;
|
|
case E_IPC_OP_EDGE_FLIP_TIMEOUT_SET:
|
|
if (e_ipc_codec_double_dec(e->data, e->size,
|
|
&(e_config->edge_flip_timeout)))
|
|
{
|
|
E_CONFIG_LIMIT(e_config->edge_flip_timeout, 0.0, 2.0);
|
|
e_config_save_queue();
|
|
}
|
|
break;
|
|
case E_IPC_OP_EDGE_FLIP_TIMEOUT_GET:
|
|
_e_ipc_reply_double_send(e->client,
|
|
e_config->edge_flip_timeout,
|
|
E_IPC_OP_EDGE_FLIP_TIMEOUT_GET_REPLY);
|
|
break;
|
|
case E_IPC_OP_DESKS_SET:
|
|
if (e_ipc_codec_2int_dec(e->data, e->size,
|
|
&(e_config->zone_desks_x_count),
|
|
&(e_config->zone_desks_y_count)))
|
|
{
|
|
Evas_List *l;
|
|
|
|
E_CONFIG_LIMIT(e_config->zone_desks_x_count, 1, 64);
|
|
E_CONFIG_LIMIT(e_config->zone_desks_y_count, 1, 64);
|
|
for (l = e_manager_list(); l; l = l->next)
|
|
{
|
|
E_Manager *man;
|
|
Evas_List *l2;
|
|
|
|
man = l->data;
|
|
for (l2 = man->containers; l2; l2 = l2->next)
|
|
{
|
|
E_Container *con;
|
|
Evas_List *l3;
|
|
|
|
con = l2->data;
|
|
for (l3 = con->zones; l3; l3 = l3->next)
|
|
{
|
|
E_Zone *zone;
|
|
|
|
zone = l3->data;
|
|
e_zone_desk_count_set(zone,
|
|
e_config->zone_desks_x_count,
|
|
e_config->zone_desks_y_count);
|
|
}
|
|
}
|
|
}
|
|
e_config_save_queue();
|
|
}
|
|
break;
|
|
case E_IPC_OP_DESKS_GET:
|
|
_e_ipc_reply_2int_send(e->client,
|
|
e_config->zone_desks_x_count,
|
|
e_config->zone_desks_y_count,
|
|
E_IPC_OP_DESKS_GET_REPLY);
|
|
break;
|
|
case E_IPC_OP_FOCUS_POLICY_SET:
|
|
e_border_button_bindings_ungrab_all();
|
|
if (e_ipc_codec_int_dec(e->data, e->size,
|
|
&(e_config->focus_policy)))
|
|
{
|
|
e_config_save_queue();
|
|
}
|
|
e_border_button_bindings_grab_all();
|
|
break;
|
|
case E_IPC_OP_FOCUS_POLICY_GET:
|
|
_e_ipc_reply_int_send(e->client,
|
|
e_config->focus_policy,
|
|
E_IPC_OP_FOCUS_POLICY_GET_REPLY);
|
|
break;
|
|
case E_IPC_OP_MODULE_DIRS_APPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_append(path_modules, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_MODULE_DIRS_PREPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_prepend(path_modules, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_MODULE_DIRS_REMOVE:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_remove(path_modules, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
|
|
case E_IPC_OP_THEME_DIRS_APPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_append(path_themes, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_THEME_DIRS_PREPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_prepend(path_themes, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_THEME_DIRS_REMOVE:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_remove(path_themes, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
|
|
case E_IPC_OP_FONT_DIRS_APPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_append(path_fonts, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_FONT_DIRS_PREPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_prepend(path_fonts, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_FONT_DIRS_REMOVE:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_remove(path_fonts, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
|
|
case E_IPC_OP_DATA_DIRS_APPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_append(path_data, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_DATA_DIRS_PREPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_prepend(path_data, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_DATA_DIRS_REMOVE:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_remove(path_data, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
|
|
case E_IPC_OP_IMAGE_DIRS_APPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_append(path_images, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_IMAGE_DIRS_PREPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_prepend(path_images, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_IMAGE_DIRS_REMOVE:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_remove(path_images, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
|
|
case E_IPC_OP_INIT_DIRS_APPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_append(path_init, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_INIT_DIRS_PREPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_prepend(path_init, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_INIT_DIRS_REMOVE:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_remove(path_init, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
|
|
case E_IPC_OP_ICON_DIRS_APPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_append(path_icons, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_ICON_DIRS_PREPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_prepend(path_icons, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_ICON_DIRS_REMOVE:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_remove(path_icons, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
|
|
case E_IPC_OP_BG_DIRS_APPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_append(path_backgrounds, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_BG_DIRS_PREPEND:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_prepend(path_backgrounds, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
case E_IPC_OP_BG_DIRS_REMOVE:
|
|
{
|
|
char * dir;
|
|
|
|
dir = _e_ipc_simple_str_dec(e->data, e->size);
|
|
e_path_user_path_remove(path_backgrounds, dir);
|
|
|
|
free(dir);
|
|
e_config_save_queue();
|
|
break;
|
|
}
|
|
#endif
|
|
default:
|
|
break;
|
|
}
|
|
printf("E-IPC: client sent: [%i] [%i] (%i) \"%p\"\n", e->major, e->minor, e->size, e->data);
|
|
/* ecore_ipc_client_send(e->client, 1, 2, 7, 77, 0, "ABC", 4); */
|
|
/* we can disconnect a client like this: */
|
|
/* ecore_ipc_client_del(e->client); */
|
|
/* or we can end a server by: */
|
|
/* ecore_ipc_server_del(ecore_ipc_client_server_get(e->client)); */
|
|
return 1;
|
|
}
|
|
|
|
#if 0
|
|
static void
|
|
_e_ipc_reply_double_send(Ecore_Ipc_Client *client, double val, int opcode)
|
|
{
|
|
void *data;
|
|
int bytes;
|
|
|
|
if ((data = e_ipc_codec_double_enc(val, &bytes)))
|
|
{
|
|
ecore_ipc_client_send(client,
|
|
E_IPC_DOMAIN_REPLY,
|
|
opcode,
|
|
0/*ref*/, 0/*ref_to*/, 0/*response*/,
|
|
data, bytes);
|
|
free(data);
|
|
}
|
|
}
|
|
|
|
static void
|
|
_e_ipc_reply_int_send(Ecore_Ipc_Client *client, int val, int opcode)
|
|
{
|
|
void *data;
|
|
int bytes;
|
|
|
|
if ((data = e_ipc_codec_int_enc(val, &bytes)))
|
|
{
|
|
ecore_ipc_client_send(client,
|
|
E_IPC_DOMAIN_REPLY,
|
|
opcode,
|
|
0/*ref*/, 0/*ref_to*/, 0/*response*/,
|
|
data, bytes);
|
|
free(data);
|
|
}
|
|
}
|
|
|
|
static void
|
|
_e_ipc_reply_2int_send(Ecore_Ipc_Client *client, int val1, int val2, int opcode)
|
|
{
|
|
void *data;
|
|
int bytes;
|
|
|
|
if ((data = e_ipc_codec_2int_enc(val1, val2, &bytes)))
|
|
{
|
|
ecore_ipc_client_send(client,
|
|
E_IPC_DOMAIN_REPLY,
|
|
opcode,
|
|
0/*ref*/, 0/*ref_to*/, 0/*response*/,
|
|
data, bytes);
|
|
free(data);
|
|
}
|
|
}
|
|
#endif
|