Port lang to new IPC - added in get/set to lib, but not list as I am too tired

SVN revision: 15209
This commit is contained in:
handyande 2005-06-08 20:43:46 +00:00 committed by handyande
parent 327adc2ad0
commit 1599d53551
5 changed files with 113 additions and 72 deletions

View File

@ -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;

View File

@ -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

View File

@ -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)
{

View File

@ -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);

View File

@ -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)
{