diff -Nur skipstone-bak/src/skipstone-config.c skipstone/src/skipstone-config.c --- skipstone-bak/src/skipstone-config.c Sat Jul 7 01:20:24 2001 +++ skipstone/src/skipstone-config.c Wed Jul 11 23:59:04 2001 @@ -15,9 +15,12 @@ static void on_config_ok(GtkWidget *button, CWindow *config_window); static void on_config_apply(GtkWidget *button, CWindow *config_window); static void clear_popup_urls(void); +static void lang_font_changed (GtkWidget *widget, CWindow *config_window); static void change_font(GtkWidget *button, GtkWidget *entry); static void close_font_selection(GtkWidget *button, GtkWidget *fs); static void set_font(GtkWidget *button, GtkWidget *fs); +static void fontsize_changed (GtkWidget *widget, CWindow *config_window); +static void font_changed (GtkWidget *entry, CWindow *config_window); static void on_languages_select(GtkCList *clist, gint row, gint column, GdkEventButton *event); static void on_languages_unselect(GtkCList *clist, gint row, gint column, GdkEventButton *event); static void on_connection_type_toggle(GtkWidget *toggle_button, CWindow *config_window); @@ -84,6 +87,16 @@ {N_("Languages"), init_languages_node} }; +static struct +{ + gchar *serif; + gchar *sansserif; + gchar *cursive; + gchar *fantasy; + gchar *monospace; + gint size; +} font_tmp[LANG_FONT_NUM]; + static gint config_is_opened = 0; void open_config_dialog(GtkWidget *menuitem,gpointer data) @@ -617,10 +630,29 @@ static void init_fonts_node(CWindow *config_window) { - GtkWidget *serif_label, *sansserif_label, *monospace_label, - *serif_hbox, *sansserif_hbox, *monospace_hbox, - *serif_change, *sansserif_change, *monospace_change, - *page6_label, *page6_vbox, *var_hbox, *var_font_label; + const gchar *lang_font_name[] = { _("Western"), + _("Central European"), + _("Japanese"), + _("Traditional Chinese"), + _("Simplified Chinese"), + _("Korean"), + _("Cyrillic"), + _("Baltic"), + _("Greek"), + _("Turkish"), + _("Unicode"), + _("User Defined"), + _("Thai"), + _("Hebrew"), + _("Arabic") + }; + + GtkWidget *serif_label, *sansserif_label, *cursive_label, *fantasy_label, *monospace_label, + *serif_hbox, *sansserif_hbox, *cursive_hbox, *fantasy_hbox, *monospace_hbox, + *serif_change, *sansserif_change, *cursive_change, *fantasy_change, *monospace_change, + *page6_label, *page6_vbox, *var_hbox, *var_font_label, + *lang_font_label, *lang_font_box; + gint i; page6_label = gtk_label_new(_("Fonts")); @@ -631,11 +663,41 @@ config_window->use_document_fonts = gtk_check_button_new_with_label(_("Use WebPage Provided Fonts?")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_window->use_document_fonts), config.use_document_fonts); gtk_box_pack_start(GTK_BOX(page6_vbox), config_window->use_document_fonts, FALSE, FALSE, 0); + + lang_font_label = gtk_label_new(_("Font for: ")); + config_window->lang_font_option_menu = gtk_option_menu_new(); + config_window->lang_font_menu = gtk_menu_new(); + + for (i = 0; i < LANG_FONT_NUM; i++) { + GtkWidget *menu_item; + menu_item = gtk_menu_item_new_with_label(lang_font_name[i]); + gtk_object_set_data(GTK_OBJECT(menu_item),"lang_font_setting",GINT_TO_POINTER(i)); + gtk_menu_append(GTK_MENU(config_window->lang_font_menu), menu_item); + gtk_signal_connect( GTK_OBJECT(menu_item), "activate", + GTK_SIGNAL_FUNC(lang_font_changed), config_window); + + font_tmp[i].size = config.font_size[i]; + font_tmp[i].serif = g_strdup(config.serif_font[i]); + font_tmp[i].sansserif = g_strdup(config.sansserif_font[i]); + font_tmp[i].cursive = g_strdup(config.cursive_font[i]); + font_tmp[i].fantasy = g_strdup(config.fantasy_font[i]); + font_tmp[i].monospace = g_strdup(config.monospace_font[i]); + } + + gtk_menu_set_active(GTK_MENU(config_window->lang_font_menu), config.lang_font); + gtk_option_menu_set_menu(GTK_OPTION_MENU(config_window->lang_font_option_menu), config_window->lang_font_menu); + gtk_widget_set_usize(config_window->lang_font_option_menu,155,30); + + lang_font_box = gtk_hbox_new(0,0); + gtk_box_pack_start(GTK_BOX(lang_font_box), lang_font_label, FALSE, FALSE, FALSE); + gtk_box_pack_start(GTK_BOX(lang_font_box), config_window->lang_font_option_menu, FALSE, FALSE, FALSE); + gtk_box_pack_start(GTK_BOX(page6_vbox), lang_font_box, FALSE, FALSE, FALSE); serif_label = gtk_label_new(_("Serif Font: ")); config_window->serif_font = gtk_entry_new(); gtk_entry_set_editable(GTK_ENTRY(config_window->serif_font),FALSE); - gtk_entry_set_text(GTK_ENTRY(config_window->serif_font),config.serif_font); + gtk_entry_set_text(GTK_ENTRY(config_window->serif_font),font_tmp[config.lang_font].serif); + gtk_signal_connect(GTK_OBJECT(config_window->serif_font), "changed", GTK_SIGNAL_FUNC(font_changed), config_window); serif_change = gtk_button_new_with_label(_("Change")); gtk_signal_connect(GTK_OBJECT(serif_change), "clicked", GTK_SIGNAL_FUNC(change_font), config_window->serif_font); @@ -646,18 +708,21 @@ gtk_box_pack_start(GTK_BOX(serif_hbox),serif_change, FALSE, FALSE, FALSE); var_font_label = gtk_label_new(_("Variable Font Size: ")); - config_window->font_size_adj = gtk_adjustment_new(config.font_size,10,50,1,1,1); + config_window->font_size_adj = gtk_adjustment_new(font_tmp[config.lang_font].size,10,50,1,1,1); config_window->font_size = gtk_spin_button_new(GTK_ADJUSTMENT(config_window->font_size_adj),1,0); - + gtk_signal_connect(GTK_OBJECT(config_window->font_size_adj), "value_changed", + GTK_SIGNAL_FUNC(fontsize_changed),config_window); + var_hbox = gtk_hbox_new(0,0); gtk_box_pack_start(GTK_BOX(var_hbox),var_font_label, FALSE, FALSE, FALSE); gtk_box_pack_start(GTK_BOX(var_hbox),config_window->font_size, FALSE, FALSE, FALSE); gtk_box_pack_start(GTK_BOX(page6_vbox), var_hbox, FALSE, FALSE, FALSE); - + sansserif_label = gtk_label_new(_("Sans Serif Font: ")); config_window->sansserif_font = gtk_entry_new(); gtk_entry_set_editable(GTK_ENTRY(config_window->sansserif_font),FALSE); - gtk_entry_set_text(GTK_ENTRY(config_window->sansserif_font), config.sansserif_font); + gtk_entry_set_text(GTK_ENTRY(config_window->sansserif_font), font_tmp[config.lang_font].sansserif); + gtk_signal_connect(GTK_OBJECT(config_window->sansserif_font), "changed", GTK_SIGNAL_FUNC(font_changed), config_window); sansserif_change = gtk_button_new_with_label(_("Change")); gtk_signal_connect(GTK_OBJECT(sansserif_change), "clicked", GTK_SIGNAL_FUNC(change_font), config_window->sansserif_font); sansserif_hbox = gtk_hbox_new(0,0); @@ -665,11 +730,38 @@ gtk_box_pack_start(GTK_BOX(sansserif_hbox),sansserif_label,FALSE, FALSE, FALSE); gtk_box_pack_start(GTK_BOX(sansserif_hbox),config_window->sansserif_font,TRUE, TRUE, FALSE); gtk_box_pack_start(GTK_BOX(sansserif_hbox),sansserif_change, FALSE, FALSE, FALSE); + + cursive_label = gtk_label_new(_("Cursive Font: ")); + config_window->cursive_font = gtk_entry_new(); + gtk_entry_set_editable(GTK_ENTRY(config_window->cursive_font),FALSE); + gtk_entry_set_text(GTK_ENTRY(config_window->cursive_font), font_tmp[config.lang_font].cursive); + gtk_signal_connect(GTK_OBJECT(config_window->cursive_font), "changed", GTK_SIGNAL_FUNC(font_changed), config_window); + cursive_change = gtk_button_new_with_label(_("Change")); + gtk_signal_connect(GTK_OBJECT(cursive_change), "clicked", GTK_SIGNAL_FUNC(change_font), config_window->cursive_font); + cursive_hbox = gtk_hbox_new(0,0); + + gtk_box_pack_start(GTK_BOX(cursive_hbox),cursive_label,FALSE, FALSE, FALSE); + gtk_box_pack_start(GTK_BOX(cursive_hbox),config_window->cursive_font,TRUE, TRUE, FALSE); + gtk_box_pack_start(GTK_BOX(cursive_hbox),cursive_change, FALSE, FALSE, FALSE); + + fantasy_label = gtk_label_new(_("Fantasy Font: ")); + config_window->fantasy_font = gtk_entry_new(); + gtk_entry_set_editable(GTK_ENTRY(config_window->fantasy_font),FALSE); + gtk_entry_set_text(GTK_ENTRY(config_window->fantasy_font), font_tmp[config.lang_font].fantasy); + gtk_signal_connect(GTK_OBJECT(config_window->fantasy_font), "changed", GTK_SIGNAL_FUNC(font_changed), config_window); + fantasy_change = gtk_button_new_with_label(_("Change")); + gtk_signal_connect(GTK_OBJECT(fantasy_change), "clicked", GTK_SIGNAL_FUNC(change_font), config_window->fantasy_font); + fantasy_hbox = gtk_hbox_new(0,0); + + gtk_box_pack_start(GTK_BOX(fantasy_hbox),fantasy_label,FALSE, FALSE, FALSE); + gtk_box_pack_start(GTK_BOX(fantasy_hbox),config_window->fantasy_font,TRUE, TRUE, FALSE); + gtk_box_pack_start(GTK_BOX(fantasy_hbox),fantasy_change, FALSE, FALSE, FALSE); monospace_label = gtk_label_new(_("MonoSpace Font: ")); config_window->monospace_font = gtk_entry_new(); gtk_entry_set_editable(GTK_ENTRY(config_window->monospace_font), FALSE); - gtk_entry_set_text(GTK_ENTRY(config_window->monospace_font), config.monospace_font); + gtk_entry_set_text(GTK_ENTRY(config_window->monospace_font), font_tmp[config.lang_font].monospace); + gtk_signal_connect(GTK_OBJECT(config_window->monospace_font), "changed", GTK_SIGNAL_FUNC(font_changed), config_window); monospace_change = gtk_button_new_with_label(_("Change")); gtk_signal_connect(GTK_OBJECT(monospace_change), "clicked", GTK_SIGNAL_FUNC(change_font), config_window->monospace_font); monospace_hbox = gtk_hbox_new(0,0); @@ -679,6 +771,8 @@ gtk_box_pack_start(GTK_BOX(page6_vbox),serif_hbox,FALSE, FALSE, FALSE); gtk_box_pack_start(GTK_BOX(page6_vbox),sansserif_hbox,FALSE, FALSE, FALSE); + gtk_box_pack_start(GTK_BOX(page6_vbox),cursive_hbox,FALSE, FALSE, FALSE); + gtk_box_pack_start(GTK_BOX(page6_vbox),fantasy_hbox,FALSE, FALSE, FALSE); gtk_box_pack_start(GTK_BOX(page6_vbox),monospace_hbox, FALSE, FALSE, FALSE); } @@ -779,6 +873,15 @@ static void destroy_config_window(GtkWidget *window,CWindow *config_window) { + gint i; + + for (i = 0; i < LANG_FONT_NUM; i++) { + g_free(font_tmp[i].serif); + g_free(font_tmp[i].sansserif); + g_free(font_tmp[i].cursive); + g_free(font_tmp[i].fantasy); + g_free(font_tmp[i].monospace); + } g_free(config_window); config_is_opened = 0; return; @@ -825,6 +928,18 @@ return; } +static void lang_font_changed (GtkWidget *widget, CWindow *config_window) { + gint lang_font; + + lang_font = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(gtk_option_menu_get_menu(GTK_OPTION_MENU(config_window->lang_font_option_menu))))),"lang_font_setting")); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(config_window->font_size), font_tmp[lang_font].size); + gtk_entry_set_text(GTK_ENTRY(config_window->serif_font),font_tmp[lang_font].serif); + gtk_entry_set_text(GTK_ENTRY(config_window->sansserif_font), font_tmp[lang_font].sansserif); + gtk_entry_set_text(GTK_ENTRY(config_window->cursive_font), font_tmp[lang_font].cursive); + gtk_entry_set_text(GTK_ENTRY(config_window->fantasy_font), font_tmp[lang_font].fantasy); + gtk_entry_set_text(GTK_ENTRY(config_window->monospace_font), font_tmp[lang_font].monospace); +} + static void change_font(GtkWidget *button, GtkWidget *entry) { GtkWidget *fs; @@ -857,6 +972,39 @@ return; } +static void fontsize_changed (GtkWidget *widget, CWindow *config_window) +{ + gint lang_font; + + lang_font = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(gtk_option_menu_get_menu(GTK_OPTION_MENU(config_window->lang_font_option_menu))))),"lang_font_setting")); + + font_tmp[lang_font].size = GTK_ADJUSTMENT(widget)->value; +} + +static void font_changed (GtkWidget *entry, CWindow *config_window) +{ + gint lang_font; + + lang_font = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(gtk_option_menu_get_menu(GTK_OPTION_MENU(config_window->lang_font_option_menu))))),"lang_font_setting")); + + if (entry == config_window->serif_font) { + g_free (font_tmp[lang_font].serif); + font_tmp[lang_font].serif = g_strdup(gtk_entry_get_text(GTK_ENTRY(config_window->serif_font))); + } else if (entry == config_window->sansserif_font) { + g_free (font_tmp[lang_font].sansserif); + font_tmp[lang_font].sansserif = g_strdup(gtk_entry_get_text(GTK_ENTRY(config_window->sansserif_font))); + } else if (entry == config_window->cursive_font) { + g_free (font_tmp[lang_font].cursive); + font_tmp[lang_font].cursive = g_strdup(gtk_entry_get_text(GTK_ENTRY(config_window->cursive_font))); + } else if (entry == config_window->fantasy_font) { + g_free (font_tmp[lang_font].fantasy); + font_tmp[lang_font].fantasy = g_strdup(gtk_entry_get_text(GTK_ENTRY(config_window->fantasy_font))); + } else if (entry == config_window->monospace_font) { + g_free (font_tmp[lang_font].monospace); + font_tmp[lang_font].monospace = g_strdup(gtk_entry_get_text(GTK_ENTRY(config_window->monospace_font))); + } +} + static void on_languages_select(GtkCList *clist, gint row, gint column, GdkEventButton *event) { config.accept_languages_temp[row] = '1'; @@ -1145,17 +1293,13 @@ void save_config(CWindow *config_window, gint close) { - gint x,o; + gint i,x,o; gchar *accept_languages, *tmp; GSList *l = NULL; - g_free(config.home); g_free(config.mailer); g_free(config.downloader); - g_free(config.serif_font); - g_free(config.sansserif_font); - g_free(config.monospace_font); g_free(config.http_proxy); g_free(config.http_proxy_port); g_free(config.no_proxy_for); @@ -1171,16 +1315,27 @@ o = config.show_tabs; config.navbar_buttons = 0; - + + for (i=0; i < LANG_FONT_NUM; i++) { + g_free(config.serif_font[i]); + g_free(config.sansserif_font[i]); + g_free(config.cursive_font[i]); + g_free(config.fantasy_font[i]); + g_free(config.monospace_font[i]); + + config.font_size[i] = font_tmp[i].size; + config.serif_font[i] = g_strdup(font_tmp[i].serif); + config.sansserif_font[i] = g_strdup(font_tmp[i].sansserif); + config.cursive_font[i] = g_strdup(font_tmp[i].cursive); + config.fantasy_font[i] = g_strdup(font_tmp[i].fantasy); + config.monospace_font[i] = g_strdup(font_tmp[i].monospace); + } + config.lang_font = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(gtk_menu_get_active(GTK_MENU(gtk_option_menu_get_menu(GTK_OPTION_MENU(config_window->lang_font_option_menu))))),"lang_font_setting")); config.home = g_strdup(gtk_entry_get_text(GTK_ENTRY(config_window->home_entry))); - config.font_size = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(config_window->font_size)); config.mailer = g_strdup(gtk_entry_get_text(GTK_ENTRY(config_window->email_entry))); config.downloader = g_strdup(gtk_entry_get_text(GTK_ENTRY(config_window->downloader_entry))); config.maxpopupitems = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(config_window->maxpopups)); config.max_go = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(config_window->max_go)); - config.serif_font = g_strdup(gtk_entry_get_text(GTK_ENTRY(config_window->serif_font))); - config.sansserif_font = g_strdup(gtk_entry_get_text(GTK_ENTRY(config_window->sansserif_font))); - config.monospace_font = g_strdup(gtk_entry_get_text(GTK_ENTRY(config_window->monospace_font))); config.java = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(config_window->java)); config.popup_in_new_window = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(config_window->popup_in_new_window)); config.javascript = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(config_window->javascript)); diff -Nur skipstone-bak/src/skipstone-types.h skipstone/src/skipstone-types.h --- skipstone-bak/src/skipstone-types.h Thu Jul 5 20:28:31 2001 +++ skipstone/src/skipstone-types.h Wed Jul 11 23:57:28 2001 @@ -106,7 +106,11 @@ GtkWidget *javascript; GtkWidget *serif_font; GtkWidget *sansserif_font; + GtkWidget *cursive_font; + GtkWidget *fantasy_font; GtkWidget *monospace_font; + GtkWidget *lang_font_option_menu; + GtkWidget *lang_font_menu; GtkWidget *font_size; GtkObject *font_size_adj; GtkWidget *http_proxy; @@ -138,6 +142,15 @@ }; +#define LANG_FONT_NUM 15 +#define DEFAULT_FONT_SIZE 14 +#define DEFAULT_SERIF_FONT "-adobe-times-medium-r-normal-*-14-*-*-*-p-*-iso8859-1" +#define DEFAULT_SANSSERIF_FONT "-adobe-times-medium-r-normal-*-14-*-*-*-p-*-iso8859-1" +#define DEFAULT_CURSIVE_FONT "-adobe-times-medium-r-normal-*-14-*-*-*-p-*-iso8859-1" +#define DEFAULT_FANTASY_FONT "-adobe-times-medium-r-normal-*-14-*-*-*-p-*-iso8859-1" +#define DEFAULT_MONOSPACE_FONT "-adobe-times-medium-r-normal-*-14-*-*-*-p-*-iso8859-1" + + struct _ConfigData /* configuration data struct */ { /* skipstone prefs */ @@ -166,10 +179,13 @@ gchar *ftp_proxy_port; gchar *ssl_proxy; gchar *ssl_proxy_port; - gchar *serif_font; - gchar *sansserif_font; - gchar *monospace_font; - gint font_size; + gint lang_font; + gchar *serif_font[LANG_FONT_NUM]; + gchar *sansserif_font[LANG_FONT_NUM]; + gchar *cursive_font[LANG_FONT_NUM]; + gchar *fantasy_font[LANG_FONT_NUM]; + gchar *monospace_font[LANG_FONT_NUM]; + gint font_size[LANG_FONT_NUM]; gboolean java; gboolean javascript; gboolean use_document_fonts; diff -Nur skipstone-bak/src/support.c skipstone/src/support.c --- skipstone-bak/src/support.c Fri Jul 6 18:20:17 2001 +++ skipstone/src/support.c Wed Jul 11 23:57:28 2001 @@ -50,6 +50,24 @@ "ukprob" }; +static const char *lang_font_item [LANG_FONT_NUM] = +{ + "x-western", + "x-central-euro", + "ja", + "zh-TW", + "zh-CN", + "ko", + "x-cyrillic", + "x-baltic", + "el", + "tr", + "x-unicode", + "x-user-def", + "th", + "he", + "ar" +}; extern gchar *accept_languages_setup_or_lookup(GtkWidget *clist, gint lookup_only); @@ -352,8 +370,8 @@ { FILE *config_file; gchar *file, *oldfile; - gchar *line; - gint temp; + gchar *line, tmpstr[1024]; + gint i, temp; oldfile = g_strconcat(home,"/.skipstonerc", NULL); file = g_strconcat(home,"/.skipstone/config", NULL); @@ -382,10 +400,15 @@ config.bmarktbar = 1; config.navbar_buttons = 62; config.navtbar = 1; - config.font_size = 14; - config.serif_font = g_strdup("-adobe-times-medium-r-normal-*-14-*-*-*-p-*-iso8859-1"); - config.sansserif_font = g_strdup("-adobe-times-medium-r-normal-*-14-*-*-*-p-*-iso8859-1"); - config.monospace_font = g_strdup("-adobe-times-medium-r-normal-*-14-*-*-*-p-*-iso8859-1"); + config.lang_font = 0; + for (i = 0; i < LANG_FONT_NUM; i++) { + config.font_size[i] = DEFAULT_FONT_SIZE; + config.serif_font[i] = g_strdup(DEFAULT_SERIF_FONT); + config.sansserif_font[i] = g_strdup(DEFAULT_SANSSERIF_FONT); + config.monospace_font[i] = g_strdup(DEFAULT_MONOSPACE_FONT); + config.cursive_font[i] = g_strdup(DEFAULT_CURSIVE_FONT); + config.fantasy_font[i] = g_strdup(DEFAULT_FANTASY_FONT); + } config.java = TRUE; config.javascript = TRUE; config.http_proxy = g_strdup(""); @@ -457,17 +480,55 @@ config.navbar_buttons = atoi(line+15); } else if (g_strncasecmp(line,"navtbar=",8) == 0) { config.navtbar = atoi(line+8); - } else if (g_strncasecmp(line,"serif=",6) == 0) { - g_free(config.serif_font); - config.serif_font = g_strdup(line+6); - } else if (g_strncasecmp(line,"sansserif=",10) == 0) { - g_free(config.sansserif_font); - config.sansserif_font = g_strdup(line+10); - } else if (g_strncasecmp(line,"monospace=",10) == 0) { - g_free(config.monospace_font); - config.monospace_font = g_strdup(line+10); - } else if (g_strncasecmp(line,"fontsize=",9) == 0) { - config.font_size = atoi(line+9); + } else if (g_strncasecmp(line,"lang_font=",10) == 0) { + config.lang_font = atoi(line+10); + } else if (g_strncasecmp(line,"serif_",6) == 0) { + for (i = 0; i < LANG_FONT_NUM; i++) { + g_snprintf (tmpstr, 1024, "%s=", lang_font_item[i]); + if (g_strncasecmp(line+6,tmpstr,strlen(tmpstr))) + continue; + g_free(config.serif_font[i]); + config.serif_font[i] = g_strdup(line+6+strlen(tmpstr)); + }; + } else if (g_strncasecmp(line,"sansserif_",10) == 0) { + for (i = 0; i < LANG_FONT_NUM; i++) { + g_snprintf (tmpstr, 1024, "%s=", lang_font_item[i]); + if (g_strncasecmp(line+10,tmpstr,strlen(tmpstr))) + continue; + g_free(config.sansserif_font[i]); + config.sansserif_font[i] = g_strdup(line+10+strlen(tmpstr)); + }; + } else if (g_strncasecmp(line,"cursive_",8) == 0) { + for (i = 0; i < LANG_FONT_NUM; i++) { + g_snprintf (tmpstr, 1024, "%s=", lang_font_item[i]); + if (g_strncasecmp(line+8,tmpstr,strlen(tmpstr))) + continue; + g_free(config.cursive_font[i]); + config.cursive_font[i] = g_strdup(line+8+strlen(tmpstr)); + }; + } else if (g_strncasecmp(line,"fantasy_",8) == 0) { + for (i = 0; i < LANG_FONT_NUM; i++) { + g_snprintf (tmpstr, 1024, "%s=", lang_font_item[i]); + if (g_strncasecmp(line+8,tmpstr,strlen(tmpstr))) + continue; + g_free(config.fantasy_font[i]); + config.fantasy_font[i] = g_strdup(line+8+strlen(tmpstr)); + }; + } else if (g_strncasecmp(line,"monospace_",10) == 0) { + for (i = 0; i < LANG_FONT_NUM; i++) { + g_snprintf (tmpstr, 1024, "%s=", lang_font_item[i]); + if (g_strncasecmp(line+10,tmpstr,strlen(tmpstr))) + continue; + g_free(config.monospace_font[i]); + config.monospace_font[i] = g_strdup(line+10+strlen(tmpstr)); + }; + } else if (g_strncasecmp(line,"fontsize_",9) == 0) { + for (i = 0; i < LANG_FONT_NUM; i++) { + g_snprintf (tmpstr, 1024, "%s=", lang_font_item[i]); + if (g_strncasecmp(line+9,tmpstr,strlen(tmpstr))) + continue; + config.font_size[i] = atoi(line+9+strlen(tmpstr)); + }; } else if (g_strncasecmp(line,"java=",5) == 0) { temp = atoi(line+5); if (temp) { @@ -599,6 +660,7 @@ { FILE *config_file; gchar *file; + gint i; file = g_strconcat(home,"/.skipstone/config",NULL); config_file = fopen(file,"w"); @@ -617,10 +679,15 @@ fprintf(config_file,"bmarktbar=%d\n",config.bmarktbar); fprintf(config_file,"navbar_buttons=%d\n",config.navbar_buttons); fprintf(config_file,"navtbar=%d\n",config.navtbar); - fprintf(config_file,"serif=%s\n",config.serif_font); - fprintf(config_file,"sansserif=%s\n", config.sansserif_font); - fprintf(config_file,"monospace=%s\n", config.monospace_font); - fprintf(config_file,"fontsize=%d\n",config.font_size); + fprintf(config_file,"lang_font=%d\n",config.lang_font); + for (i=0; i < LANG_FONT_NUM; i++) { + fprintf(config_file,"serif_%s=%s\n", lang_font_item[i], config.serif_font[i]); + fprintf(config_file,"sansserif_%s=%s\n", lang_font_item[i] , config.sansserif_font[i]); + fprintf(config_file,"cursive_%s=%s\n", lang_font_item[i], config.cursive_font[i]); + fprintf(config_file,"fantasy_%s=%s\n", lang_font_item[i], config.fantasy_font[i]); + fprintf(config_file,"monospace_%s=%s\n", lang_font_item[i], config.monospace_font[i]); + fprintf(config_file,"fontsize_%s=%d\n", lang_font_item[i], config.font_size[i]); + } fprintf(config_file,"http_proxy=%s\n",config.http_proxy); fprintf(config_file,"http_proxy_port=%s\n",config.http_proxy_port); fprintf(config_file,"ftp_proxy=%s\n",config.ftp_proxy); @@ -1309,8 +1376,8 @@ void set_mozilla_prefs(void) { gchar **font; - gint disk_cache, mem_cache, lang_length; - gchar *cachedir, *default_charset; + gint i, disk_cache, mem_cache, lang_length; + gchar *cachedir, *default_charset, tmpstr[1024]; mozilla_preference_set_boolean("nglayout.widget.gfxscrollbars", FALSE); @@ -1338,23 +1405,45 @@ disk_cache = atoi(config.disk_cache); mem_cache = atoi(config.mem_cache); - font = g_strsplit(config.serif_font,"-",-1); - mozilla_preference_set("font.name.serif.x-western",g_strconcat(font[1],"-",font[2],"-",font[13], - "-",font[14],NULL)); - g_strfreev(font); - - font = g_strsplit(config.sansserif_font,"-",-1); - mozilla_preference_set("font.name.sans-serif.x-western",g_strconcat(font[1],"-",font[2],"-",font[13], - "-",font[14],NULL)); - g_strfreev(font); - - font = g_strsplit(config.monospace_font,"-",-1); - mozilla_preference_set("font.name.monospace.x-western",g_strconcat(font[1],"-",font[2],"-",font[13], - "-",font[14],NULL)); - mozilla_preference_set_int("font.size.fixed.x-western",atoi(font[7])); - g_strfreev(font); + + for (i = 0; i < LANG_FONT_NUM; i++) { + font = g_strsplit(config.serif_font[i],"-",-1); + g_snprintf (tmpstr, 1024, "font.name.serif.%s", lang_font_item[i]); + mozilla_preference_set(tmpstr, + g_strconcat(font[1],"-",font[2],"-",font[13],"-",font[14],NULL)); + g_strfreev(font); + + font = g_strsplit(config.sansserif_font[i],"-",-1); + g_snprintf (tmpstr, 1024, "font.name.sans-serif.%s", lang_font_item[i]); + mozilla_preference_set(tmpstr, + g_strconcat(font[1],"-",font[2],"-",font[13],"-",font[14],NULL)); + g_strfreev(font); + + font = g_strsplit(config.cursive_font[i],"-",-1); + g_snprintf (tmpstr, 1024, "font.name.cursive.%s", lang_font_item[i]); + mozilla_preference_set(tmpstr, + g_strconcat(font[1],"-",font[2],"-",font[13],"-",font[14],NULL)); + g_strfreev(font); + + font = g_strsplit(config.fantasy_font[i],"-",-1); + g_snprintf (tmpstr, 1024, "font.name.fantasy.%s", lang_font_item[i]); + mozilla_preference_set(tmpstr, + g_strconcat(font[1],"-",font[2],"-",font[13],"-",font[14],NULL)); + g_strfreev(font); + + font = g_strsplit(config.monospace_font[i],"-",-1); + g_snprintf (tmpstr, 1024, "font.name.monospace.%s", lang_font_item[i]); + mozilla_preference_set(tmpstr, + g_strconcat(font[1],"-",font[2],"-",font[13],"-",font[14],NULL)); + + g_snprintf (tmpstr, 1024, "font.size.fixed.%s", lang_font_item[i]); + mozilla_preference_set_int(tmpstr,atoi(font[7])); + g_strfreev(font); - mozilla_preference_set_int("font.size.variable.x-western",config.font_size); + g_snprintf (tmpstr, 1024, "font.size.variable.%s", lang_font_item[i]); + mozilla_preference_set_int(tmpstr,config.font_size[i]); + } + mozilla_preference_set_int("browser.display.use_document_fonts", config.use_document_fonts); mozilla_preference_set_boolean ("security.enable_java", config.java);