forked from enlightenment/enlightenment
Some work on intl config dialog.
-Sorted language & region lists. -Better ilist sizes. -Resizable Basic/Advanced dialogs. -General code formatting/cleanup. SVN revision: 26173
This commit is contained in:
parent
2b6276f1c5
commit
3c3f605f02
|
@ -7,35 +7,36 @@ typedef struct _E_Intl_Pair E_Intl_Pair;
|
|||
typedef struct _E_Intl_Langauge_Node E_Intl_Language_Node;
|
||||
typedef struct _E_Intl_Region_Node E_Intl_Region_Node;
|
||||
|
||||
static void *_create_data(E_Config_Dialog *cfd);
|
||||
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
||||
static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
||||
static void *_create_data (E_Config_Dialog *cfd);
|
||||
static void _free_data (E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
static int _advanced_apply_data (E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
static Evas_Object *_advanced_create_widgets (E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
||||
static int _basic_apply_data (E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
static Evas_Object *_basic_create_widgets (E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
||||
|
||||
static void _ilist_basic_language_cb_change(void *data, Evas_Object *obj);
|
||||
|
||||
static void _ilist_language_cb_change(void *data, Evas_Object *obj);
|
||||
static void _ilist_region_cb_change(void *data, Evas_Object *obj);
|
||||
static void _ilist_codeset_cb_change(void *data, Evas_Object *obj);
|
||||
static void _ilist_modifier_cb_change(void *data, Evas_Object *obj);
|
||||
static void _ilist_basic_language_cb_change (void *data, Evas_Object *obj);
|
||||
static void _ilist_language_cb_change (void *data, Evas_Object *obj);
|
||||
static void _ilist_region_cb_change (void *data, Evas_Object *obj);
|
||||
static void _ilist_codeset_cb_change (void *data, Evas_Object *obj);
|
||||
static void _ilist_modifier_cb_change (void *data, Evas_Object *obj);
|
||||
static int _lang_list_sort (void *data1, void *data2);
|
||||
static void _lang_list_load (void *data);
|
||||
static int _region_list_sort (void *data1, void *data2);
|
||||
static void _region_list_load (void *data);
|
||||
|
||||
/* Fill the clear lists, fill with language, select */
|
||||
/* Update lanague */
|
||||
static void _cfdata_language_go(const char *lang, const char *region, const char *codeset, const char *modifier, E_Config_Dialog_Data *cfdata);
|
||||
static Evas_Bool _lang_hash_cb(Evas_Hash *hash, const char *key, void *data, void *fdata);
|
||||
static Evas_Bool _region_hash_cb(Evas_Hash *hash, const char *key, void *data, void *fdata);
|
||||
|
||||
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);
|
||||
static void _cfdata_language_go (const char *lang, const char *region, const char *codeset, const char *modifier, E_Config_Dialog_Data *cfdata);
|
||||
static Evas_Bool _lang_hash_cb (Evas_Hash *hash, const char *key, void *data, void *fdata);
|
||||
static Evas_Bool _region_hash_cb (Evas_Hash *hash, const char *key, void *data, void *fdata);
|
||||
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;
|
||||
const char *locale_translation;
|
||||
const char *locale_key;
|
||||
const char *locale_translation;
|
||||
};
|
||||
|
||||
/* We need to store a map of languages -> Countries -> Extra
|
||||
|
@ -79,7 +80,9 @@ struct _E_Config_Dialog_Data
|
|||
int lang_dirty;
|
||||
|
||||
Evas_Hash *locale_hash;
|
||||
|
||||
Evas_List *lang_list;
|
||||
Evas_List *region_list;
|
||||
|
||||
struct
|
||||
{
|
||||
Evas_Object *blang_list;
|
||||
|
@ -95,29 +98,29 @@ struct _E_Config_Dialog_Data
|
|||
};
|
||||
|
||||
const E_Intl_Pair basic_language_predefined_pairs[ ] = {
|
||||
{"en_US.UTF-8", N_("English")},
|
||||
{"ja_JP.UTF-8", N_("Japanese")},
|
||||
{"fr_FR.UTF-8", N_("French")},
|
||||
{"es_AR.UTF-8", N_("Spanish")},
|
||||
{"pt_BR.UTF-8", N_("Portuguese")},
|
||||
{"fi_FI.UTF-8", N_("Finnish")},
|
||||
{"ru_RU.UTF-8", N_("Russian")},
|
||||
{"bg_BG.UTF-8", N_("Bulgarian")},
|
||||
{"de_DE.UTF-8", N_("German")},
|
||||
{"pl_PL.UTF-8", N_("Polish")},
|
||||
{"zh_CN.UTF-8", N_("Simplified Chinese")},
|
||||
{"zh_TW.UTF-8", N_("Traditional Chinese")},
|
||||
{"hu_HU.UTF-8", N_("Hungarian")},
|
||||
{"sl_SI.UTF-8", N_("Slovenian")},
|
||||
{"it_IT.UTF-8", N_("Italian")},
|
||||
{"cs_CZ.UTF-8", N_("Czech")},
|
||||
{"da_DK.UTF-8", N_("Danish")},
|
||||
{"sk_SK.UTF-8", N_("Slovak")},
|
||||
{"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")},
|
||||
{ NULL, NULL }
|
||||
{"bg_BG.UTF-8", N_("Bulgarian")},
|
||||
{"zh_CN.UTF-8", N_("Chinese (Simplified)")},
|
||||
{"zh_TW.UTF-8", N_("Chinese (Traditional)")},
|
||||
{"cs_CZ.UTF-8", N_("Czech")},
|
||||
{"da_DK.UTF-8", N_("Danish")},
|
||||
{"nl_NL.UTF-8", N_("Dutch")},
|
||||
{"en_US.UTF-8", N_("English")},
|
||||
{"fi_FI.UTF-8", N_("Finnish")},
|
||||
{"fr_FR.UTF-8", N_("French")},
|
||||
{"de_DE.UTF-8", N_("German")},
|
||||
{"hu_HU.UTF-8", N_("Hungarian")},
|
||||
{"it_IT.UTF-8", N_("Italian")},
|
||||
{"ja_JP.UTF-8", N_("Japanese")},
|
||||
{"ko_KR.UTF-8", N_("Korean")},
|
||||
{"nb_NO.UTF-8", N_("Norwegian Bokmål")},
|
||||
{"pl_PL.UTF-8", N_("Polish")},
|
||||
{"pt_BR.UTF-8", N_("Portuguese")},
|
||||
{"ru_RU.UTF-8", N_("Russian")},
|
||||
{"sk_SK.UTF-8", N_("Slovak")},
|
||||
{"sl_SI.UTF-8", N_("Slovenian")},
|
||||
{"es_AR.UTF-8", N_("Spanish")},
|
||||
{"sv_SE.UTF-8", N_("Swedish")},
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
const E_Intl_Pair language_predefined_pairs[ ] = {
|
||||
|
@ -550,7 +553,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
|
|||
if ( output )
|
||||
{
|
||||
char line[32];
|
||||
while ( fscanf(output, "%[^\n]\n", line) == 1)
|
||||
while (fscanf(output, "%[^\n]\n", line) == 1)
|
||||
{
|
||||
char *language;
|
||||
|
||||
|
@ -710,6 +713,12 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
|
||||
evas_hash_foreach(cfdata->locale_hash, _language_hash_free_cb, NULL);
|
||||
evas_hash_free(cfdata->locale_hash);
|
||||
|
||||
cfdata->lang_list = evas_list_free(cfdata->lang_list);
|
||||
cfdata->lang_list = NULL;
|
||||
|
||||
cfdata->region_list = evas_list_free(cfdata->region_list);
|
||||
cfdata->region_list = NULL;
|
||||
|
||||
free(cfdata);
|
||||
}
|
||||
|
@ -788,7 +797,7 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
static Evas_Object *
|
||||
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Evas_Object *o, *of, *ob;
|
||||
Evas_Object *o, *of, *ob, *ot;
|
||||
const char *cur_sig_loc;
|
||||
int i;
|
||||
|
||||
|
@ -800,6 +809,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
|
||||
/* Language List */
|
||||
ob = e_widget_ilist_add(evas, 16, 16, &(cfdata->cur_blang));
|
||||
e_widget_min_size_set(ob, 175, 175);
|
||||
e_widget_on_change_hook_set(ob, _ilist_basic_language_cb_change, cfdata);
|
||||
cfdata->gui.blang_list = ob;
|
||||
|
||||
|
@ -809,9 +819,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
E_INTL_LOC_LANG | E_INTL_LOC_REGION);
|
||||
}
|
||||
else
|
||||
{
|
||||
cur_sig_loc = NULL;
|
||||
}
|
||||
cur_sig_loc = NULL;
|
||||
|
||||
i = 0;
|
||||
while (basic_language_predefined_pairs[i].locale_key)
|
||||
|
@ -823,36 +831,36 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
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);
|
||||
}
|
||||
e_widget_ilist_selected_set(cfdata->gui.blang_list, i);
|
||||
|
||||
i++;
|
||||
}
|
||||
e_widget_ilist_go(ob);
|
||||
e_widget_min_size_set(ob, 100, 100);
|
||||
e_widget_frametable_object_append(of, ob, 0, 0, 2, 6, 1, 1, 1, 1);
|
||||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
/* Locale selector */
|
||||
of = e_widget_frametable_add(evas, _("Locale Selected"), 0);
|
||||
ot = e_widget_table_add(evas, 0);
|
||||
of = e_widget_framelist_add(evas, _("Locale Selected"), 0);
|
||||
|
||||
ob = e_widget_label_add(evas, _("Locale"));
|
||||
e_widget_frametable_object_append( of,
|
||||
ob,
|
||||
0, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_table_object_append(ot, ob,
|
||||
0, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
cfdata->gui.locale_entry = e_widget_entry_add(evas, &(cfdata->cur_language));
|
||||
e_widget_disabled_set(cfdata->gui.locale_entry, 1);
|
||||
e_widget_min_size_set(cfdata->gui.locale_entry, 100, 25);
|
||||
e_widget_frametable_object_append(of, cfdata->gui.locale_entry,
|
||||
0, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
e_widget_table_object_append(ot, cfdata->gui.locale_entry,
|
||||
0, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_framelist_object_append(of, ot);
|
||||
e_widget_framelist_content_align_set(of, 0.0, 0.0);
|
||||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
e_dialog_resizable_set(cfd->dia, 1);
|
||||
return o;
|
||||
|
||||
}
|
||||
|
@ -860,7 +868,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
static Evas_Object *
|
||||
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Evas_Object *o, *of, *ob;
|
||||
Evas_Object *o, *of, *ob, *ot;
|
||||
|
||||
cfdata->evas = evas;
|
||||
|
||||
|
@ -875,9 +883,16 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
cfdata->gui.lang_list = ob;
|
||||
|
||||
evas_hash_foreach(cfdata->locale_hash, _lang_hash_cb, cfdata);
|
||||
|
||||
if (cfdata->lang_list)
|
||||
{
|
||||
cfdata->lang_list = evas_list_sort(cfdata->lang_list,
|
||||
evas_list_count(cfdata->lang_list),
|
||||
_lang_list_sort);
|
||||
_lang_list_load(cfdata);
|
||||
}
|
||||
|
||||
e_widget_ilist_go(ob);
|
||||
e_widget_min_size_set(ob, 100, 100);
|
||||
e_widget_min_size_set(ob, 140, 200);
|
||||
e_widget_frametable_object_append(of, ob, 0, 0, 1, 4, 1, 1, 1, 1);
|
||||
|
||||
/* Region List */
|
||||
|
@ -907,21 +922,22 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
/* Locale selector */
|
||||
of = e_widget_frametable_add(evas, _("Locale Selected"), 0);
|
||||
ot = e_widget_table_add(evas, 0);
|
||||
of = e_widget_framelist_add(evas, _("Locale Selected"), 0);
|
||||
|
||||
ob = e_widget_label_add(evas, _("Locale"));
|
||||
e_widget_frametable_object_append( of,
|
||||
ob,
|
||||
0, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_table_object_append(ot, ob,
|
||||
0, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
cfdata->gui.locale_entry = e_widget_entry_add(evas, &(cfdata->cur_language));
|
||||
e_widget_disabled_set(cfdata->gui.locale_entry, 1);
|
||||
e_widget_min_size_set(cfdata->gui.locale_entry, 100, 25);
|
||||
e_widget_frametable_object_append(of, cfdata->gui.locale_entry,
|
||||
0, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(ot, cfdata->gui.locale_entry,
|
||||
0, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_framelist_object_append(of, ot);
|
||||
e_widget_framelist_content_align_set(of, 0.0, 0.0);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
_cfdata_language_go(cfdata->cur_lang, cfdata->cur_reg, cfdata->cur_cs, cfdata->cur_mod, cfdata);
|
||||
|
@ -931,6 +947,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
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);
|
||||
|
||||
e_dialog_resizable_set(cfd->dia, 1);
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -983,33 +1000,26 @@ _ilist_codeset_cb_change(void *data, Evas_Object *obj)
|
|||
cfdata = data;
|
||||
|
||||
if (cfdata->cur_mod)
|
||||
{
|
||||
sprintf(locale, "%s_%s.%s@%s", cfdata->cur_lang, cfdata->cur_reg, cfdata->cur_cs, 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);
|
||||
sprintf(locale, "%s_%s.%s", cfdata->cur_lang, cfdata->cur_reg, cfdata->cur_cs);
|
||||
|
||||
e_widget_entry_text_set(cfdata->gui.locale_entry, locale);
|
||||
}
|
||||
|
||||
static void
|
||||
_ilist_modifier_cb_change(void *data, Evas_Object *obj)
|
||||
{
|
||||
E_Config_Dialog_Data * cfdata;
|
||||
char locale[32];
|
||||
E_Config_Dialog_Data * cfdata;
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
e_widget_entry_text_set(cfdata->gui.locale_entry, locale);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1048,12 +1058,17 @@ _cfdata_language_go(const char *lang, const char *region, const char *codeset, c
|
|||
if (lang_update)
|
||||
{
|
||||
e_widget_ilist_clear(cfdata->gui.reg_list);
|
||||
cfdata->region_list = evas_list_free(cfdata->region_list);
|
||||
evas_hash_foreach(lang_node->region_hash, _region_hash_cb, cfdata);
|
||||
cfdata->region_list = evas_list_sort(cfdata->region_list,
|
||||
evas_list_count(cfdata->region_list),
|
||||
_region_list_sort);
|
||||
_region_list_load(cfdata);
|
||||
}
|
||||
if (region && region_update)
|
||||
{
|
||||
E_Intl_Region_Node *reg_node;
|
||||
|
||||
|
||||
reg_node = evas_hash_find(lang_node->region_hash, region);
|
||||
if (reg_node)
|
||||
{
|
||||
|
@ -1096,7 +1111,6 @@ _cfdata_language_go(const char *lang, const char *region, const char *codeset, c
|
|||
}
|
||||
e_widget_ilist_go(cfdata->gui.reg_list);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static Evas_Bool
|
||||
|
@ -1104,41 +1118,12 @@ _lang_hash_cb(Evas_Hash *hash, const char *key, void *data, void *fdata)
|
|||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
E_Intl_Language_Node *lang_node;
|
||||
const char *trans;
|
||||
|
||||
cfdata = fdata;
|
||||
lang_node = data;
|
||||
|
||||
if (lang_node->lang_name)
|
||||
{
|
||||
trans = lang_node->lang_name;
|
||||
}
|
||||
else
|
||||
{
|
||||
trans = key;
|
||||
}
|
||||
cfdata->lang_list = evas_list_append(cfdata->lang_list, lang_node);
|
||||
|
||||
if (lang_node->lang_available)
|
||||
{
|
||||
Evas_Object *ic;
|
||||
|
||||
ic = edje_object_add(cfdata->evas);
|
||||
e_util_edje_icon_set(ic, "enlightenment/e");
|
||||
e_widget_ilist_append(cfdata->gui.lang_list, ic, trans, NULL, NULL, key);
|
||||
}
|
||||
else
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -1147,30 +1132,12 @@ _region_hash_cb(Evas_Hash *hash, const char *key, void *data, void *fdata)
|
|||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
E_Intl_Region_Node *reg_node;
|
||||
const char *trans;
|
||||
|
||||
|
||||
cfdata = fdata;
|
||||
reg_node = data;
|
||||
|
||||
if (reg_node->region_name)
|
||||
{
|
||||
trans = reg_node->region_name;
|
||||
}
|
||||
else
|
||||
{
|
||||
trans = key;
|
||||
}
|
||||
|
||||
e_widget_ilist_append(cfdata->gui.reg_list, NULL, trans, NULL, NULL, key);
|
||||
cfdata->region_list = evas_list_append(cfdata->region_list, reg_node);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -1225,3 +1192,126 @@ _intl_current_locale_setup(E_Config_Dialog_Data *cfdata)
|
|||
|
||||
cfdata->lang_dirty = 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_lang_list_sort(void *data1, void *data2)
|
||||
{
|
||||
E_Intl_Language_Node *ln1, *ln2;
|
||||
const char *trans1;
|
||||
const char *trans2;
|
||||
|
||||
if (!data1) return 1;
|
||||
if (!data2) return -1;
|
||||
|
||||
ln1 = data1;
|
||||
ln2 = data2;
|
||||
|
||||
if (!ln1->lang_name) return 1;
|
||||
trans1 = ln1->lang_name;
|
||||
|
||||
if (!ln2->lang_name) return -1;
|
||||
trans2 = ln2->lang_name;
|
||||
|
||||
return (strcmp((const char *)trans1, (const char *)trans2));
|
||||
}
|
||||
|
||||
static void
|
||||
_lang_list_load(void *data)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
Evas_List *l;
|
||||
|
||||
if (!data) return;
|
||||
|
||||
cfdata = data;
|
||||
if (!cfdata->lang_list) return;
|
||||
|
||||
for (l = cfdata->lang_list; l; l = l->next)
|
||||
{
|
||||
E_Intl_Language_Node *ln;
|
||||
const char *trans;
|
||||
|
||||
ln = l->data;
|
||||
if (!ln) continue;
|
||||
if (ln->lang_name)
|
||||
trans = ln->lang_name;
|
||||
else
|
||||
trans = ln->lang_code;
|
||||
|
||||
if (ln->lang_available)
|
||||
{
|
||||
Evas_Object *ic;
|
||||
|
||||
ic = edje_object_add(cfdata->evas);
|
||||
e_util_edje_icon_set(ic, "enlightenment/e");
|
||||
e_widget_ilist_append(cfdata->gui.lang_list, ic, trans, NULL, NULL, ln->lang_code);
|
||||
}
|
||||
else
|
||||
e_widget_ilist_append(cfdata->gui.lang_list, NULL, trans, NULL, NULL, ln->lang_code);
|
||||
|
||||
if (cfdata->cur_lang && !strcmp(cfdata->cur_lang, ln->lang_code))
|
||||
{
|
||||
int count;
|
||||
|
||||
count = e_widget_ilist_count(cfdata->gui.lang_list);
|
||||
e_widget_ilist_selected_set(cfdata->gui.lang_list, count - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
_region_list_sort(void *data1, void *data2)
|
||||
{
|
||||
E_Intl_Region_Node *rn1, *rn2;
|
||||
const char *trans1;
|
||||
const char *trans2;
|
||||
|
||||
if (!data1) return 1;
|
||||
if (!data2) return -1;
|
||||
|
||||
rn1 = data1;
|
||||
rn2 = data2;
|
||||
|
||||
if (!rn1->region_name) return 1;
|
||||
trans1 = rn1->region_name;
|
||||
|
||||
if (!rn2->region_name) return -1;
|
||||
trans2 = rn2->region_name;
|
||||
|
||||
return (strcmp((const char *)trans1, (const char *)trans2));
|
||||
}
|
||||
|
||||
static void
|
||||
_region_list_load(void *data)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
Evas_List *l;
|
||||
|
||||
if (!data) return;
|
||||
|
||||
cfdata = data;
|
||||
if (!cfdata->region_list) return;
|
||||
|
||||
for (l = cfdata->region_list; l; l = l->next)
|
||||
{
|
||||
E_Intl_Region_Node *rn;
|
||||
const char *trans;
|
||||
|
||||
rn = l->data;
|
||||
if (!rn) continue;
|
||||
if (rn->region_name)
|
||||
trans = rn->region_name;
|
||||
else
|
||||
trans = rn->region_code;
|
||||
|
||||
e_widget_ilist_append(cfdata->gui.reg_list, NULL, trans, NULL, NULL, rn->region_code);
|
||||
|
||||
if (cfdata->cur_reg && !strcmp(cfdata->cur_reg, rn->region_code))
|
||||
{
|
||||
int count;
|
||||
|
||||
count = e_widget_ilist_count(cfdata->gui.reg_list);
|
||||
e_widget_ilist_selected_set(cfdata->gui.reg_list, count - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue