Enlightenment CVS committal
Author : shorne
Project : e17
Module : apps/e
Dir : e17/apps/e/src/bin
Modified Files:
e_int_config_intl.c e_intl.c
Log Message:
Try to select the correct current locale in the dialog. Need to get the
scroll bars to go to the right place also now.
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_intl.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_int_config_intl.c 25 Sep 2006 13:16:49 -0000 1.4
+++ e_int_config_intl.c 25 Sep 2006 15:35:38 -0000 1.5
@@ -30,6 +30,8 @@
static Evas_Bool _language_hash_free_cb(Evas_Hash *hash, const char *key, void
*data, void *fdata);
static Evas_Bool _region_hash_free_cb(Evas_Hash *hash, const char *key, void
*data, void *fdata);
+static void _intl_current_locale_setup(E_Config_Dialog_Data *cfdata);
+
struct _E_Intl_Pair
{
const char *locale_key;
@@ -74,6 +76,8 @@
char *cur_cs;
char *cur_mod;
+ int lang_dirty;
+
Evas_Hash *locale_hash;
struct
@@ -106,10 +110,10 @@
{"hu_HU.UTF-8", N_("Hungarian")},
{"sl_SI.UTF-8", N_("Slovenian")},
{"it_IT.UTF-8", N_("Italian")},
- {"cs_CS.UTF-8", N_("Czech")},
+ {"cs_CZ.UTF-8", N_("Czech")},
{"da_DK.UTF-8", N_("Danish")},
{"sk_SK.UTF-8", N_("Slovak")},
- {"sv_SV.UTF-8", N_("Swedish")},
+ {"sv_SE.UTF-8", N_("Swedish")},
{"nb_NO.UTF-8", N_("Norwegian Bokmål")},
{"nl_NL.UTF-8", N_("Dutch")},
{"ko_KR.UTF-8", N_("Korean")},
@@ -551,12 +555,6 @@
char *language;
language = e_intl_locale_canonic_get(line, E_INTL_LOC_LANG);
-
- if (language && (language[0] == 0))
- {
- free(language);
- language = NULL;
- }
/* If the language is a valid [EMAIL PROTECTED] locale add it to
the hash */
if (language)
@@ -613,13 +611,6 @@
cfdata->locale_hash = evas_hash_add(cfdata->locale_hash,
language, lang_node);
}
- /* If no region data just go next */
- if (region && (region[0] == 0))
- {
- free(region);
- region = NULL;
- }
-
/* We now have the current language hash node, lets see if
there is
region data that needs to be added.
*/
@@ -649,7 +640,7 @@
/* We now have the current region hash node */
/* Add codeset to the region hash node if it exists */
- if (codeset && (codeset[0] != 0))
+ if (codeset)
{
const char * cs;
@@ -661,7 +652,7 @@
}
/* Add modifier to the region hash node if it exists */
- if (modifier && (modifier[0] != 0))
+ if (modifier)
{
const char * mod;
@@ -798,6 +789,7 @@
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
*cfdata)
{
Evas_Object *o, *of, *ob;
+ const char *cur_sig_loc;
int i;
cfdata->evas = evas;
@@ -811,6 +803,9 @@
e_widget_on_change_hook_set(ob, _ilist_basic_language_cb_change, cfdata);
cfdata->gui.blang_list = ob;
+ cur_sig_loc = e_intl_locale_canonic_get(cfdata->cur_language,
+ E_INTL_LOC_LANG | E_INTL_LOC_REGION);
+
i = 0;
while (basic_language_predefined_pairs[i].locale_key)
{
@@ -820,6 +815,11 @@
key = basic_language_predefined_pairs[i].locale_key;
trans = _(basic_language_predefined_pairs[i].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)))
+ {
+ e_widget_ilist_selected_set(cfdata->gui.blang_list, i);
+ }
+
i++;
}
e_widget_ilist_go(ob);
@@ -854,18 +854,10 @@
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas,
E_Config_Dialog_Data *cfdata)
{
Evas_Object *o, *of, *ob;
- char *language;
- char *region;
- char *codeset;
- char *modifier;
-
+
cfdata->evas = evas;
- E_FREE(cfdata->cur_lang);
- cfdata->cur_lang = NULL;
-
- E_FREE(cfdata->cur_reg);
- cfdata->cur_reg = NULL;
+ _intl_current_locale_setup(cfdata);
o = e_widget_list_add(evas, 0, 0);
@@ -873,7 +865,6 @@
/* Language List */
ob = e_widget_ilist_add(evas, 16, 16, &(cfdata->cur_lang));
- e_widget_on_change_hook_set(ob, _ilist_language_cb_change, cfdata);
cfdata->gui.lang_list = ob;
evas_hash_foreach(cfdata->locale_hash, _lang_hash_cb, cfdata);
@@ -884,7 +875,6 @@
/* Region List */
ob = e_widget_ilist_add(evas, 0, 0, &(cfdata->cur_reg));
- e_widget_on_change_hook_set(ob, _ilist_region_cb_change, cfdata);
cfdata->gui.reg_list = ob;
e_widget_ilist_go(ob);
@@ -893,7 +883,6 @@
/* Codeset List */
ob = e_widget_ilist_add(evas, 0, 0, &(cfdata->cur_cs));
- e_widget_on_change_hook_set(ob, _ilist_codeset_cb_change, cfdata);
cfdata->gui.cs_list = ob;
e_widget_ilist_go(ob);
@@ -902,7 +891,6 @@
/* Modified List */
ob = e_widget_ilist_add(evas, 0, 0, &(cfdata->cur_mod));
- e_widget_on_change_hook_set(ob, _ilist_modifier_cb_change, cfdata);
cfdata->gui.mod_list = ob;
e_widget_ilist_go(ob);
@@ -928,19 +916,14 @@
1, 1, 1, 1);
e_widget_list_object_append(o, of, 1, 1, 0.5);
-
- language = e_intl_locale_canonic_get(cfdata->cur_language, E_INTL_LOC_LANG);
- region = e_intl_locale_canonic_get(cfdata->cur_language, E_INTL_LOC_REGION);
- codeset = e_intl_locale_canonic_get(cfdata->cur_language,
E_INTL_LOC_CODESET);
- modifier = e_intl_locale_canonic_get(cfdata->cur_language,
E_INTL_LOC_MODIFIER);
-
- _cfdata_language_go(language, region, codeset, modifier, cfdata);
-
- E_FREE(language);
- E_FREE(region);
- E_FREE(codeset);
- E_FREE(modifier);
+ _cfdata_language_go(cfdata->cur_lang, cfdata->cur_reg, cfdata->cur_cs,
cfdata->cur_mod, cfdata);
+
+ e_widget_on_change_hook_set(cfdata->gui.lang_list,
_ilist_language_cb_change, cfdata);
+ e_widget_on_change_hook_set(cfdata->gui.reg_list, _ilist_region_cb_change,
cfdata);
+ e_widget_on_change_hook_set(cfdata->gui.cs_list, _ilist_codeset_cb_change,
cfdata);
+ e_widget_on_change_hook_set(cfdata->gui.mod_list,
_ilist_modifier_cb_change, cfdata);
+
return o;
}
@@ -960,7 +943,7 @@
E_Config_Dialog_Data * cfdata;
cfdata = data;
-
+
_cfdata_language_go(cfdata->cur_lang, NULL, NULL, NULL, cfdata);
e_widget_entry_text_set(cfdata->gui.locale_entry, cfdata->cur_lang);
@@ -1033,7 +1016,7 @@
lang_update = 0;
region_update = 0;
- if (cfdata->cur_lang == NULL || (lang && !region))
+ if (cfdata->lang_dirty || (lang && !region))
{
lang_update = 1;
region_update = 1;
@@ -1046,6 +1029,8 @@
e_widget_ilist_clear(cfdata->gui.cs_list);
e_widget_ilist_clear(cfdata->gui.mod_list);
}
+
+ cfdata->lang_dirty = 0;
if (lang)
{
@@ -1059,29 +1044,44 @@
evas_hash_foreach(lang_node->region_hash, _region_hash_cb,
cfdata);
}
if (region && region_update)
- {
+ {
E_Intl_Region_Node *reg_node;
-
+
reg_node = evas_hash_find(lang_node->region_hash, region);
if (reg_node)
{
Evas_List *next;
-
+
for (next = reg_node->available_codesets; next; next =
next->next)
{
const char * cs;
cs = next->data;
e_widget_ilist_append(cfdata->gui.cs_list, NULL,
cs, NULL, NULL, cs);
+ if (codeset && !strcmp(cs, codeset))
+ {
+ int count;
+
+ count =
e_widget_ilist_count(cfdata->gui.cs_list);
+
e_widget_ilist_selected_set(cfdata->gui.cs_list, count - 1);
+ }
}
+
for (next = reg_node->available_modifiers; next; next =
next->next)
{
const char * mod;
mod = next->data;
e_widget_ilist_append(cfdata->gui.mod_list, NULL,
mod, NULL, NULL, mod);
- }
+ if (modifier && !strcmp(mod, modifier))
+ {
+ int count;
+
+ count =
e_widget_ilist_count(cfdata->gui.mod_list);
+
e_widget_ilist_selected_set(cfdata->gui.mod_list, count - 1);
+ }
+ }
}
e_widget_ilist_go(cfdata->gui.cs_list);
e_widget_ilist_go(cfdata->gui.mod_list);
@@ -1123,6 +1123,15 @@
{
e_widget_ilist_append(cfdata->gui.lang_list, NULL, trans, NULL, NULL,
key);
}
+
+ if (cfdata->cur_lang && !strcmp(cfdata->cur_lang, key))
+ {
+ int count;
+
+ count = e_widget_ilist_count(cfdata->gui.lang_list);
+ e_widget_ilist_selected_set(cfdata->gui.lang_list, count - 1);
+ }
+
return 1;
}
@@ -1145,6 +1154,58 @@
trans = key;
}
- e_widget_ilist_append(cfdata->gui.reg_list, NULL, trans, NULL, NULL, key);
+ e_widget_ilist_append(cfdata->gui.reg_list, NULL, trans, NULL, NULL, key);
+
+ if (cfdata->cur_reg && !strcmp(cfdata->cur_reg, key))
+ {
+ int count;
+
+ count = e_widget_ilist_count(cfdata->gui.reg_list);
+ e_widget_ilist_selected_set(cfdata->gui.reg_list, count - 1);
+ }
+
return 1;
+}
+
+void
+_intl_current_locale_setup(E_Config_Dialog_Data *cfdata)
+{
+ char *language;
+ char *region;
+ char *codeset;
+ char *modifier;
+
+ E_FREE(cfdata->cur_lang);
+ cfdata->cur_lang = NULL;
+ E_FREE(cfdata->cur_reg);
+ cfdata->cur_reg = NULL;
+ E_FREE(cfdata->cur_cs);
+ cfdata->cur_cs = NULL;
+ E_FREE(cfdata->cur_mod);
+ cfdata->cur_mod = NULL;
+
+ language = e_intl_locale_canonic_get(cfdata->cur_language,
+ E_INTL_LOC_LANG);
+ region = e_intl_locale_canonic_get(cfdata->cur_language,
+ E_INTL_LOC_REGION);
+ codeset = e_intl_locale_canonic_get(cfdata->cur_language,
+ E_INTL_LOC_CODESET);
+ modifier = e_intl_locale_canonic_get(cfdata->cur_language,
+ E_INTL_LOC_MODIFIER);
+
+ if (language)
+ cfdata->cur_lang = strdup(language);
+ if (region)
+ cfdata->cur_reg = strdup(region);
+ if (codeset)
+ cfdata->cur_cs = strdup(codeset);
+ if (modifier)
+ cfdata->cur_mod = strdup(modifier);
+
+ E_FREE(language);
+ E_FREE(region);
+ E_FREE(codeset);
+ E_FREE(modifier);
+
+ cfdata->lang_dirty = 1;
}
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_intl.c,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -3 -r1.82 -r1.83
--- e_intl.c 21 Sep 2006 10:58:42 -0000 1.82
+++ e_intl.c 25 Sep 2006 15:35:38 -0000 1.83
@@ -854,8 +854,13 @@
strcat(clean_locale, modifier);
}
+ if (clean_locale[0] == 0)
+ {
+ free(clean_locale);
+ return NULL;
+ }
+
return clean_locale;
-
}
static Evas_List *
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs