More improvements to libsexy

- Add option for showing attributes in input
- Improve attribute parsing
- Fix detecting iso-codes on unix
- Improve getting default langs from $LANG
- Fix warnings
This commit is contained in:
TingPing
2013-10-02 03:47:07 -04:00
parent da680f1066
commit 301e5d260d
8 changed files with 206 additions and 76 deletions

View File

@ -425,6 +425,7 @@ const struct prefs vars[] =
{"gui_dialog_width", P_OFFINT (hex_gui_dialog_width), TYPE_INT},
{"gui_focus_omitalerts", P_OFFINT (hex_gui_focus_omitalerts), TYPE_BOOL},
{"gui_hide_menu", P_OFFINT (hex_gui_hide_menu), TYPE_BOOL},
{"gui_input_attr", P_OFFINT (hex_gui_input_attr), TYPE_BOOL},
{"gui_input_icon", P_OFFINT (hex_gui_input_icon), TYPE_BOOL},
{"gui_input_nick", P_OFFINT (hex_gui_input_nick), TYPE_BOOL},
{"gui_input_spell", P_OFFINT (hex_gui_input_spell), TYPE_BOOL},
@ -668,6 +669,53 @@ get_default_language (void)
return lang_no >= 0 ? lang_no : find_language_number ("en");
}
static char *
get_default_spell_languages (void)
{
const gchar* const *langs = g_get_language_names ();
char *last = NULL;
char *p;
char lang_list[64];
char *ret = lang_list;
int i;
if (langs != NULL)
{
memset (lang_list, 0, sizeof(lang_list));
for (i = 0; langs[i]; i++)
{
if (g_ascii_strncasecmp (langs[i], "C", 1) != 0 && strlen (langs[i]) >= 2)
{
/* Avoid duplicates */
if (!last || !g_str_has_prefix (langs[i], last))
{
if (last != NULL)
{
g_free(last);
g_strlcat (lang_list, ",", sizeof(lang_list));
}
/* ignore .utf8 */
if ((p = strchr (langs[i], '.')))
*p='\0';
last = g_strndup (langs[i], 2);
g_strlcat (lang_list, langs[i], sizeof(lang_list));
}
}
}
if (last != NULL)
g_free(last);
if (lang_list[0])
return ret;
}
return "en";
}
void
load_default_config(void)
{
@ -705,6 +753,7 @@ load_default_config(void)
prefs.hex_gui_autoopen_dialog = 1;
prefs.hex_gui_autoopen_recv = 1;
prefs.hex_gui_autoopen_send = 1;
prefs.hex_gui_input_attr = 1;
prefs.hex_gui_input_icon = 1;
prefs.hex_gui_input_nick = 1;
prefs.hex_gui_input_spell = 1;
@ -844,7 +893,8 @@ load_default_config(void)
strcpy (prefs.hex_text_font_main, DEF_FONT);
#endif
strcpy (prefs.hex_text_font_alternative, DEF_FONT_ALTER);
strcpy (prefs.hex_text_spell_langs, g_getenv ("LC_ALL") ? g_getenv ("LC_ALL") : "en_US");
strcpy (prefs.hex_text_spell_langs, get_default_spell_languages ());
/* private variables */
prefs.local_ip = 0xffffffff;