From 1599d5355142708d1b64c1c8d9b1deb3214070fc Mon Sep 17 00:00:00 2001 From: handyande Date: Wed, 8 Jun 2005 20:43:46 +0000 Subject: [PATCH] Port lang to new IPC - added in get/set to lib, but not list as I am too tired SVN revision: 15209 --- src/bin/e_ipc.c | 41 -------------------- src/bin/e_ipc_handlers.h | 81 ++++++++++++++++++++++++++++++++++++++++ src/bin/e_remote_main.c | 27 -------------- src/lib/E_Lib.h | 12 +++++- src/lib/e_main.c | 24 ++++++++++-- 5 files changed, 113 insertions(+), 72 deletions(-) diff --git a/src/bin/e_ipc.c b/src/bin/e_ipc.c index 3db512ccd..68a2c054c 100644 --- a/src/bin/e_ipc.c +++ b/src/bin/e_ipc.c @@ -215,47 +215,6 @@ _e_ipc_cb_client_data(void *data __UNUSED__, int type __UNUSED__, void *event) 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; diff --git a/src/bin/e_ipc_handlers.h b/src/bin/e_ipc_handlers.h index 82eedc65b..9e11bdc1b 100644 --- a/src/bin/e_ipc_handlers.h +++ b/src/bin/e_ipc_handlers.h @@ -539,6 +539,7 @@ break; + /****************************************************************************/ #define HDL E_IPC_OP_RESTART #if (TYPE == E_REMOTE_OPTIONS) @@ -567,6 +568,86 @@ break; #endif #undef HDL +/****************************************************************************/ +#define HDL E_IPC_OP_LANG_LIST +#if (TYPE == E_REMOTE_OPTIONS) + OP("-lang-list", 0, "List all available languages", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + GENERIC(HDL); + LIST_DATA(); + ENCODE((Evas_List *)e_intl_language_list(), e_ipc_codec_str_list_enc); + SEND_DATA(E_IPC_OP_LANG_LIST_REPLY); + END_GENERIC(); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_LANG_LIST_REPLY +#if (TYPE == E_REMOTE_OPTIONS) +#elif (TYPE == E_REMOTE_OUT) +#elif (TYPE == E_WM_IN) +#elif (TYPE == E_REMOTE_IN) + GENERIC(HDL); + LIST(); + DECODE(e_ipc_codec_str_list_dec) { + FOR(dat) { + printf("REPLY: \"%s\"\n", (char *)(l->data)); + } + FREE_LIST(dat); + } + END_GENERIC(); +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_LANG_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-lang-set", 1, "Set the current language to 'OPT1'", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_STRING(params[0], HDL); +#elif (TYPE == E_WM_IN) + STRING(s, HDL); + IF_FREE(e_config->language); + e_config->language = strdup(s); + e_intl_language_set(e_config->language); + SAVE; + END_STRING(s); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_LANG_GET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-lang-get", 0, "Get the current language", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_STRING(e_config->language, E_IPC_OP_LANG_GET_REPLY, HDL); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_LANG_GET_REPLY +#if (TYPE == E_REMOTE_OPTIONS) +#elif (TYPE == E_REMOTE_OUT) +#elif (TYPE == E_WM_IN) +#elif (TYPE == E_REMOTE_IN) + STRING(s, HDL); + printf("REPLY: \"%s\"\n", s); + END_STRING(s); +#elif (TYPE == E_LIB_IN) + STRING(s, HDL); + RESPONSE(r, E_Response_Language_Get, HDL); + r->lang = strdup(s); + END_RESPONSE(r, E_RESPONSE_LANGUAGE_GET); + END_STRING(s); +#endif +#undef HDL diff --git a/src/bin/e_remote_main.c b/src/bin/e_remote_main.c index 91f18f5a2..52931fd30 100644 --- a/src/bin/e_remote_main.c +++ b/src/bin/e_remote_main.c @@ -574,9 +574,6 @@ E_IPC_Opt_Handler handlers[] = OSTR("-font-default-remove", "Remove the default text class OPT1", E_IPC_OP_FONT_DEFAULT_REMOVE, 0), OREQ("-font-default-list", "List all configured text classes", E_IPC_OP_FONT_DEFAULT_LIST, 1), OMUL("-font-default-set", "Set textclass (OPT1) font (OPT2) and size (OPT3)", E_IPC_OP_FONT_DEFAULT_SET, 0, 3), - OREQ("-lang-get", "Get the current language", E_IPC_OP_LANG_GET, 1), - OREQ("-lang-list", "List all available languages", E_IPC_OP_LANG_LIST, 1), - OSTR("-lang-set", "Set the current language", E_IPC_OP_LANG_SET, 0), OREQ("-binding-mouse-list", "List all mouse bindings", E_IPC_OP_BINDING_MOUSE_LIST, 1), OFNC("-binding-mouse-add", "Add an existing mouse binding. OPT1 = Context, OPT2 = button, OPT3 = modifiers, OPT4 = any modifier ok, OPT5 = action, OPT6 = action parameters", 6, _e_opt_binding_mouse_add, 0), OFNC("-binding-mouse-del", "Delete an existing mouse binding. OPT1 = Context, OPT2 = button, OPT3 = modifiers, OPT4 = any modifier ok, OPT5 = action, OPT6 = action parameters", 6, _e_opt_binding_mouse_del, 0), @@ -921,30 +918,6 @@ _e_ipc_cb_server_data(void *data, int type, void *event) else printf("REPLY: DEFAULT NONE\n"); break; - case E_IPC_OP_LANG_LIST_REPLY: - if (e->data) - { - Evas_List *langs; - - langs = _e_ipc_str_list_dec(e->data, e->size); - if (langs) - { - Evas_List *l; - - for (l = langs; l; l = l->next) - printf("REPLY: LANG=\"%s\"\n", (char *)l->data); - evas_list_free(langs); - } - } - else - printf("REPLY: AVAILABLE NONE\n"); - break; - case E_IPC_OP_LANG_GET_REPLY: - if (e->data) - { - printf("REPLY: %s\n", (char *)e->data); - } - break; case E_IPC_OP_BINDING_MOUSE_LIST_REPLY: if (e->data) { diff --git a/src/lib/E_Lib.h b/src/lib/E_Lib.h index 1979b46e4..3a931cd4b 100644 --- a/src/lib/E_Lib.h +++ b/src/lib/E_Lib.h @@ -18,12 +18,12 @@ # endif #endif -/* FIXME: this is all borken right now :( */ typedef struct _E_Response_Module_List E_Response_Module_List; typedef struct _E_Response_Module_Data E_Response_Module_Data; typedef struct _E_Response_Dirs_List E_Response_Dirs_List; typedef struct _E_Response_Background_Get E_Response_Background_Get; +typedef struct _E_Response_Language_Get E_Response_Language_Get; struct _E_Response_Module_List { @@ -48,8 +48,14 @@ struct _E_Response_Background_Get char *file; }; +struct _E_Response_Language_Get +{ + char *lang; +}; + extern EAPI int E_RESPONSE_MODULE_LIST; extern EAPI int E_RESPONSE_BACKGROUND_GET; +extern EAPI int E_RESPONSE_LANGUAGE_GET; extern EAPI int E_RESPONSE_DATA_DIRS_LIST; extern EAPI int E_RESPONSE_IMAGE_DIRS_LIST; @@ -81,6 +87,10 @@ extern "C" { EAPI void e_lib_background_set (const char *bgfile); EAPI void e_lib_background_get (void); + /* languages */ + EAPI void e_lib_language_set (const char *lang); + EAPI void e_lib_language_get (void); + /* E path information */ EAPI void e_lib_data_dirs_list (void); EAPI void e_lib_image_dirs_list (void); diff --git a/src/lib/e_main.c b/src/lib/e_main.c index c655c48d1..a6dee4385 100644 --- a/src/lib/e_main.c +++ b/src/lib/e_main.c @@ -49,14 +49,13 @@ static void _e_ipc_call(E_Ipc_Op opcode, char **params); 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 void _e_cb_dir_list_free(void *data __UNUSED__, void *ev); static Ecore_Ipc_Server *_e_ipc_server = NULL; int E_RESPONSE_MODULE_LIST = 0; int E_RESPONSE_BACKGROUND_GET = 0; +int E_RESPONSE_LANGUAGE_GET = 0; int E_RESPONSE_DATA_DIRS_LIST = 0; int E_RESPONSE_IMAGE_DIRS_LIST = 0; @@ -141,6 +140,7 @@ e_lib_init(const char* display) { E_RESPONSE_MODULE_LIST = ecore_event_type_new(); E_RESPONSE_BACKGROUND_GET = ecore_event_type_new(); + E_RESPONSE_LANGUAGE_GET = ecore_event_type_new(); E_RESPONSE_DATA_DIRS_LIST = ecore_event_type_new(); E_RESPONSE_IMAGE_DIRS_LIST = ecore_event_type_new(); @@ -240,6 +240,24 @@ e_lib_background_get(void) _e_ipc_call(E_IPC_OP_BG_GET, NULL); } +void +e_lib_language_set(const char *lang) +{ + char *tmp; + if (!lang) + return; + + tmp = strdup(lang); + _e_ipc_call(E_IPC_OP_LANG_SET, &tmp); + free(tmp); +} + +void +e_lib_language_get(void) +{ + _e_ipc_call(E_IPC_OP_LANG_GET, NULL); +} + void e_lib_data_dirs_list(void) {