aprt of a todo... let lang config be able to set "system default" (use

whatever lang is already set in env vars).



SVN revision: 58276
This commit is contained in:
Carsten Haitzler 2011-04-02 14:15:06 +00:00
parent d3cc6515b0
commit 901680c9f3
1 changed files with 49 additions and 19 deletions

View File

@ -68,7 +68,7 @@ struct _E_Config_Dialog_Data
/* Current data */
char *cur_language;
const char *cur_blang;
const char *cur_lang;
@ -861,7 +861,9 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
if (cfdata->cur_language)
{
if (e_config->language) eina_stringshare_del(e_config->language);
e_config->language = eina_stringshare_add(cfdata->cur_language);
e_config->language = NULL;
if ((cfdata->cur_language) && (cfdata->cur_language[0]))
e_config->language = eina_stringshare_add(cfdata->cur_language);
e_intl_language_set(e_config->language);
}
@ -875,7 +877,9 @@ _advanced_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfda
if (cfdata->cur_language)
{
if (e_config->language) eina_stringshare_del(e_config->language);
e_config->language = eina_stringshare_add(cfdata->cur_language);
e_config->language = NULL;
if ((cfdata->cur_language) && (cfdata->cur_language[0]))
e_config->language = eina_stringshare_add(cfdata->cur_language);
e_intl_language_set(e_config->language);
}
@ -922,6 +926,11 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
else
cur_sig_loc = NULL;
e_widget_ilist_append(cfdata->gui.blang_list, NULL, _("System Default"), NULL, NULL, "");
if ((!cur_sig_loc) || (!cfdata->cur_language))
e_widget_ilist_selected_set(cfdata->gui.blang_list, i);
i++;
for (next = cfdata->blang_list; next; next = next->next)
{
E_Intl_Pair *pair;
@ -932,7 +941,8 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
key = pair->locale_key;
trans = _(pair->locale_translation);
e_widget_ilist_append(cfdata->gui.blang_list, NULL, trans, NULL, NULL, key);
if (cur_sig_loc && !strncmp(key, cur_sig_loc, strlen(cur_sig_loc)))
if ((cur_sig_loc) &&
(!strncmp(key, cur_sig_loc, strlen(cur_sig_loc))))
e_widget_ilist_selected_set(cfdata->gui.blang_list, i);
i++;
@ -963,7 +973,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
{
Evas_Object *o, *of, *ob;
const char *lang, *reg, *cs, *mod;
cfdata->evas = evas;
_intl_current_locale_setup(cfdata);
@ -1072,7 +1082,6 @@ _ilist_language_cb_change(void *data, Evas_Object *obj __UNUSED__)
cfdata = data;
_cfdata_language_go(cfdata->cur_lang, NULL, NULL, NULL, cfdata);
e_widget_entry_text_set(cfdata->gui.locale_entry, cfdata->cur_lang);
eina_stringshare_del(cfdata->cur_cs);
eina_stringshare_del(cfdata->cur_mod);
@ -1087,9 +1096,14 @@ _ilist_region_cb_change(void *data, Evas_Object *obj __UNUSED__)
cfdata = data;
_cfdata_language_go(cfdata->cur_lang, cfdata->cur_reg, NULL, NULL, cfdata);
sprintf(locale, "%s_%s", cfdata->cur_lang, cfdata->cur_reg);
e_widget_entry_text_set(cfdata->gui.locale_entry, locale);
if ((cfdata->cur_lang) && (cfdata->cur_lang[0]))
{
sprintf(locale, "%s_%s", cfdata->cur_lang, cfdata->cur_reg);
e_widget_entry_text_set(cfdata->gui.locale_entry, locale);
}
else
e_widget_entry_text_set(cfdata->gui.locale_entry, "");
eina_stringshare_del(cfdata->cur_cs);
eina_stringshare_del(cfdata->cur_mod);
}
@ -1102,12 +1116,16 @@ _ilist_codeset_cb_change(void *data, Evas_Object *obj __UNUSED__)
cfdata = data;
if (cfdata->cur_mod)
sprintf(locale, "%s_%s.%s@%s", cfdata->cur_lang, cfdata->cur_reg, cfdata->cur_cs, cfdata->cur_mod);
if ((cfdata->cur_lang) && (cfdata->cur_lang[0]))
{
if (cfdata->cur_mod)
sprintf(locale, "%s_%s.%s@%s", cfdata->cur_lang, cfdata->cur_reg, cfdata->cur_cs, cfdata->cur_mod);
else
sprintf(locale, "%s_%s.%s", cfdata->cur_lang, cfdata->cur_reg, cfdata->cur_cs);
e_widget_entry_text_set(cfdata->gui.locale_entry, locale);
}
else
sprintf(locale, "%s_%s.%s", cfdata->cur_lang, cfdata->cur_reg, cfdata->cur_cs);
e_widget_entry_text_set(cfdata->gui.locale_entry, locale);
e_widget_entry_text_set(cfdata->gui.locale_entry, "");
}
static void
@ -1117,12 +1135,17 @@ _ilist_modifier_cb_change(void *data, Evas_Object *obj __UNUSED__)
char locale[32];
cfdata = data;
if (cfdata->cur_cs)
sprintf(locale, "%s_%s.%s@%s", cfdata->cur_lang, cfdata->cur_reg, cfdata->cur_cs, cfdata->cur_mod);
else
sprintf(locale, "%s_%s@%s", cfdata->cur_lang, cfdata->cur_reg, cfdata->cur_mod);
e_widget_entry_text_set(cfdata->gui.locale_entry, locale);
if ((cfdata->cur_lang) && (cfdata->cur_lang[0]))
{
if (cfdata->cur_cs)
sprintf(locale, "%s_%s.%s@%s", cfdata->cur_lang, cfdata->cur_reg, cfdata->cur_cs, cfdata->cur_mod);
else
sprintf(locale, "%s_%s@%s", cfdata->cur_lang, cfdata->cur_reg, cfdata->cur_mod);
e_widget_entry_text_set(cfdata->gui.locale_entry, locale);
}
else
e_widget_entry_text_set(cfdata->gui.locale_entry, "");
}
static void
@ -1142,6 +1165,12 @@ _cfdata_language_go(const char *lang, const char *region, const char *codeset, c
e_widget_ilist_freeze(cfdata->gui.cs_list);
e_widget_ilist_freeze(cfdata->gui.mod_list);
if ((!lang) || (!lang[0]))
{
e_widget_ilist_clear(cfdata->gui.reg_list);
e_widget_ilist_clear(cfdata->gui.cs_list);
e_widget_ilist_clear(cfdata->gui.mod_list);
}
if (cfdata->lang_dirty || (lang && !region))
{
lang_update = 1;
@ -1333,6 +1362,7 @@ _lang_list_load(void *data)
edje_freeze();
e_widget_ilist_freeze(cfdata->gui.lang_list);
e_widget_ilist_append(cfdata->gui.lang_list, NULL, _("System Default"), NULL, NULL, "");
for (l = cfdata->lang_list; l; l = l->next)
{
E_Intl_Language_Node *ln;