Initial version of language selector GUI

This commit is contained in:
Berke Viktor 2012-10-18 16:34:40 +02:00
parent 4732505e30
commit 5acd848f79
4 changed files with 22 additions and 4 deletions

View File

@ -451,6 +451,9 @@ const struct prefs vars[] = {
{"gui_input_style", P_OFFINT (style_inputbox), TYPE_BOOL},
{"gui_join_dialog", P_OFFINT (gui_join_dialog), TYPE_BOOL},
{"gui_lagometer", P_OFFINT (lagometer), TYPE_INT},
#ifdef WIN32
{"gui_lang", P_OFFSET (gui_lang), TYPE_STR},
#endif
{"gui_mode_buttons", P_OFFINT (chanmodebuttons), TYPE_BOOL},
#ifdef WIN32
{"gui_one_instance", P_OFFINT (gui_one_instance), TYPE_BOOL},
@ -746,6 +749,7 @@ load_config (void)
prefs.timestamp = 1;
#ifdef WIN32
prefs.identd = 1;
strcpy (prefs.gui_lang, g_getenv ("LC_ALL") ? g_getenv ("LC_ALL") : "en_US");
#endif
strcpy (prefs.spell_langs, g_getenv ("LC_ALL") ? g_getenv ("LC_ALL") : "en_US");
strcpy (prefs.stamp_format, "[%H:%M:%S] ");

View File

@ -951,6 +951,7 @@ main (int argc, char *argv[])
int ret;
#ifdef WIN32
char hexchat_lang[13]; /* LC_ALL= plus 5 chars of gui_lang and trailing \0 */
HANDLE mutex;
#endif
@ -971,6 +972,10 @@ main (int argc, char *argv[])
load_config ();
#ifdef WIN32
/* we MUST do this after load_config () otherwise it would fail */
snprintf (hexchat_lang, 12, "LC_ALL=%s", prefs.gui_lang);
putenv (hexchat_lang);
if (prefs.gui_one_instance && !portable_mode ())
{
DWORD error;

View File

@ -117,6 +117,7 @@ struct xchatprefs
char font_normal[4 * FONTNAMELEN + 1];
char font_main[FONTNAMELEN + 1];
char font_alternative[3 * FONTNAMELEN + 1];
char gui_lang[6]; /* Just enough for xx_YY plus trailing \0 */
#else
char font_normal[FONTNAMELEN + 1];
#endif

View File

@ -100,9 +100,13 @@ typedef struct
} setting;
static const setting textbox_settings[] =
static const setting appearance_settings[] =
{
{ST_HEADER, N_("Text Box Appearance"),0,0,0},
#ifdef WIN32
{ST_HEADER, N_("Localization"),0,0,0},
{ST_ENTRY, N_("HexChat language:"), P_OFFSETNL(gui_lang), 0, 0, sizeof prefs.gui_lang},
#endif
{ST_HEADER, N_("Text Box"),0,0,0},
#ifdef WIN32
{ST_EFONT, N_("Main font:"), P_OFFSETNL(font_main), 0, 0, sizeof prefs.font_main},
#else
@ -1820,7 +1824,7 @@ setup_add_page (const char *title, GtkWidget *book, GtkWidget *tab)
static const char *const cata[] =
{
N_("Interface"),
N_("Text box"),
N_("Appearance"),
N_("Input box"),
N_("User list"),
N_("Channel switcher"),
@ -1847,7 +1851,7 @@ setup_create_pages (GtkWidget *box)
book = gtk_notebook_new ();
setup_add_page (cata[1], book, setup_create_page (textbox_settings));
setup_add_page (cata[1], book, setup_create_page (appearance_settings));
setup_add_page (cata[2], book, setup_create_page (inputbox_settings));
setup_add_page (cata[3], book, setup_create_page (userlist_settings));
setup_add_page (cata[4], book, setup_create_page (tabs_settings));
@ -2130,6 +2134,10 @@ setup_apply (struct xchatprefs *pr)
#define DIFF(a) (pr->a != prefs.a)
#ifdef WIN32
if (DIFF (gui_lang))
noapply = TRUE;
#endif
if (DIFF (paned_userlist))
noapply = TRUE;
if (DIFF (lagometer))