#include "main.h" GtkWidget *pref_win = NULL; const gchar *tbtype_lbls[CFG_NUM_TB_TYPES] = { N_("Text"), N_("Icons"), N_("Both") }; const gint tbtype_vals[CFG_NUM_TB_TYPES] ={ GTK_TOOLBAR_TEXT, GTK_TOOLBAR_ICONS, GTK_TOOLBAR_BOTH }; gchar *predef_fps_def[CFG_NUM_PRE_FPS] = { "29.000", "25.000", "23.976", "21.000" }; struct _tab_1 { GtkWidget *detect_by_ext, *detect_by_content; GtkWidget *update_clist; GtkWidget *tb_types[CFG_NUM_TB_TYPES]; } tab1; struct _tab_2 { GtkWidget *entry, *clist; } tab2; struct _tab_3 { GtkWidget *entry_isp_cmd, *entry_extra_opt; GtkWidget *clist_lang, *chk_ask, *entry_ldesc, *entry_lcode; } tab3; void cfg_cb_widget_changed (GtkWidget *wgt, gpointer data) { gnome_property_box_changed (GNOME_PROPERTY_BOX (pref_win)); } void cfg_cb_apply (GnomePropertyBox *property_box, gint page_num, gpointer data) { gint i, j = 0; gchar *txt; /* Apply all changes everytime */ cfg.auto_update_clist = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tab1.update_clist)); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tab1.detect_by_ext))) cfg.detect_file_by = CFG_DETECT_BY_EXT; else cfg.detect_file_by = CFG_DETECT_BY_CONTENT; for (i = 0; i < CFG_NUM_TB_TYPES; i++) if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tab1.tb_types[i]))) cfg.toolbar_style = tbtype_vals[i]; gse_update_toolbar_style (); for (i = 0; i < CFG_NUM_PRE_FPS; i++) { g_free (cfg.predef_fps[i]); gtk_clist_get_text (GTK_CLIST (tab2.clist), i, 0, &txt); cfg.predef_fps[i] = g_strdup (txt); } cfg.isp_cmd = g_strdup (gtk_entry_get_text (GTK_ENTRY (tab3.entry_isp_cmd))); cfg.isp_opt = g_strdup (gtk_entry_get_text (GTK_ENTRY (tab3.entry_extra_opt))); cfg.isp_ask = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tab3.chk_ask)); for (i = 0; i < cfg.isp_langcount; i++) g_free (cfg.lang_list[i]); g_free (cfg.lang_list); cfg.isp_langcount = GTK_CLIST (tab3.clist_lang)->rows * 2; cfg.lang_list = (gchar **) g_malloc (cfg.isp_langcount * sizeof (gchar *)); for (i = 0; i < (cfg.isp_langcount / 2); i++) { gtk_clist_get_text (GTK_CLIST (tab3.clist_lang), i, 0, &txt); cfg.lang_list[j] = g_strdup (txt); j++; gtk_clist_get_text (GTK_CLIST (tab3.clist_lang), i, 1, &txt); cfg.lang_list[j] = g_strdup (txt); j++; } /* The languages might have changed */ gse_gui_set_infobox_values (); /* Save config */ cfg_write_config_file (); } void cfg_cb_btn_isp_lang_clicked (GtkWidget *w, gpointer data) { gchar *lang[2]; gint row, opt = GPOINTER_TO_INT (data); switch (opt) { case 0: /* Add lang to clist */ lang[0] = gtk_entry_get_text (GTK_ENTRY (tab3.entry_ldesc)); lang[1] = gtk_entry_get_text (GTK_ENTRY (tab3.entry_lcode)); if (!*(lang[0]) || !*(lang[1])) return; gtk_clist_append (GTK_CLIST (tab3.clist_lang), lang); break; case 1: /* Remove lang from clist */ if (GTK_CLIST (tab3.clist_lang)->selection == NULL) return; row = (gint) GTK_CLIST (tab3.clist_lang)->selection->data; gtk_clist_remove (GTK_CLIST (tab3.clist_lang), row); break; case 2: case 3: /* Move language up/down in list */ if (GTK_CLIST (tab3.clist_lang)->selection == NULL) return; row = (gint) GTK_CLIST (tab3.clist_lang)->selection->data; gtk_clist_swap_rows (GTK_CLIST (tab3.clist_lang), row, opt == 2 ? row -1:row + 1); break; } if (opt < 2) { gtk_entry_set_text (GTK_ENTRY (tab3.entry_ldesc), ""); gtk_entry_set_text (GTK_ENTRY (tab3.entry_lcode), ""); } cfg_cb_widget_changed (NULL, NULL); gtk_widget_grab_focus (tab3.entry_ldesc); } void cfg_cb_entry_isp_keypress (GtkWidget *entry, GdkEventKey *event, gpointer data) { switch (event->keyval) { case GDK_Return: case GDK_KP_Enter: if (GPOINTER_TO_INT (data) == 0) gtk_widget_grab_focus (tab3.entry_lcode); else cfg_cb_btn_isp_lang_clicked (NULL, GINT_TO_POINTER (0)); break; } } /* The ispell options */ GtkWidget *cfg_create_tab_spell (void) { GtkWidget *vbox, *lbl, *hbox, *btn, *scr_win, *mini_vbox; gint i, width; gchar *titles[2] = { N_("Language"), N_("Lang code") }; gchar *tmp_titles[2]; vbox = gtk_vbox_new (FALSE, 0); hbox = gtk_hbox_new (FALSE, 5); lbl = gtk_label_new (_("Ispell command:")); tab3.entry_isp_cmd = gtk_entry_new (); if (cfg.isp_cmd) gtk_entry_set_text (GTK_ENTRY (tab3.entry_isp_cmd), cfg.isp_cmd); gtk_widget_show (lbl); gtk_widget_show (tab3.entry_isp_cmd); gtk_signal_connect (GTK_OBJECT (tab3.entry_isp_cmd), "changed", GTK_SIGNAL_FUNC (cfg_cb_widget_changed), NULL); gtk_box_pack_start (GTK_BOX (hbox), lbl, FALSE, FALSE, 5); gtk_box_pack_start (GTK_BOX (hbox), tab3.entry_isp_cmd, TRUE, TRUE, 5); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 3); gtk_widget_show (hbox); hbox = gtk_hbox_new (FALSE, 5); lbl = gtk_label_new (_("Extra parameters:")); tab3.entry_extra_opt = gtk_entry_new (); if (cfg.isp_opt) gtk_entry_set_text (GTK_ENTRY (tab3.entry_extra_opt), cfg.isp_opt); gtk_widget_show (lbl); gtk_widget_show (tab3.entry_extra_opt); gtk_signal_connect (GTK_OBJECT (tab3.entry_extra_opt), "changed", GTK_SIGNAL_FUNC (cfg_cb_widget_changed), NULL); gtk_box_pack_start (GTK_BOX (hbox), lbl, FALSE, FALSE, 5); gtk_box_pack_start (GTK_BOX (hbox), tab3.entry_extra_opt, TRUE, TRUE, 5); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 3); gtk_widget_show (hbox); tab3.chk_ask = gtk_check_button_new_with_label (_("Ask for language every time")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tab3.chk_ask), cfg.isp_ask); gtk_widget_show (tab3.chk_ask); gtk_box_pack_start (GTK_BOX (vbox), tab3.chk_ask, FALSE, FALSE, 3); gtk_signal_connect (GTK_OBJECT (tab3.chk_ask), "toggled", GTK_SIGNAL_FUNC (cfg_cb_widget_changed), NULL); /* -- */ hbox = gtk_hbox_new (FALSE, 3); lbl = gtk_label_new (_("Lang:")); gtk_box_pack_start (GTK_BOX (hbox), lbl, FALSE, FALSE, 0); tab3.entry_ldesc = gtk_entry_new_with_max_length (20); gtk_widget_set_usize (tab3.entry_ldesc, 100, 22); gtk_box_pack_start (GTK_BOX (hbox), tab3.entry_ldesc, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (tab3.entry_ldesc), "key-press-event", GTK_SIGNAL_FUNC (cfg_cb_entry_isp_keypress), GINT_TO_POINTER (0)); lbl = gtk_label_new (_("Lang. code:")); gtk_box_pack_start (GTK_BOX (hbox), lbl, FALSE, FALSE, 0); tab3.entry_lcode = gtk_entry_new_with_max_length (10); gtk_widget_set_usize (tab3.entry_lcode, 50, 22); gtk_box_pack_start (GTK_BOX (hbox), tab3.entry_lcode, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (tab3.entry_lcode), "key-press-event", GTK_SIGNAL_FUNC (cfg_cb_entry_isp_keypress), GINT_TO_POINTER (1)); btn = gtk_button_new_with_label (_("Add")); gtk_box_pack_start (GTK_BOX (hbox), btn, FALSE, FALSE, 2); gtk_signal_connect (GTK_OBJECT (btn), "clicked", GTK_SIGNAL_FUNC (cfg_cb_btn_isp_lang_clicked), GINT_TO_POINTER (0)); btn = gtk_button_new_with_label (_("Remove selected")); gtk_box_pack_start (GTK_BOX (hbox), btn, FALSE, FALSE, 2); gtk_signal_connect (GTK_OBJECT (btn), "clicked", GTK_SIGNAL_FUNC (cfg_cb_btn_isp_lang_clicked), GINT_TO_POINTER (1)); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show_all (hbox); /* -- */ hbox = gtk_hbox_new (FALSE, 3); scr_win = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scr_win), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); /* Needed to get i18n */ for (i = 0; i < 2; i++) tmp_titles[i] = _(titles[i]); tab3.clist_lang = gtk_clist_new_with_titles (2, tmp_titles); gtk_clist_column_titles_show (GTK_CLIST (tab3.clist_lang)); gtk_widget_set_usize (tab3.clist_lang, 0, 100); gtk_container_add (GTK_CONTAINER (scr_win), tab3.clist_lang); gtk_box_pack_start (GTK_BOX (hbox), scr_win, TRUE, TRUE, 3); gtk_clist_set_selection_mode (GTK_CLIST (tab3.clist_lang), GTK_SELECTION_BROWSE); i = 0; while (cfg.lang_list[i]) { gtk_clist_append (GTK_CLIST (tab3.clist_lang), (gchar **) &(cfg.lang_list[i])); i += 2; } for (i = 0; i < 2; i++) { width = gtk_clist_optimal_column_width (GTK_CLIST (tab3.clist_lang), i); gtk_clist_set_column_width (GTK_CLIST (tab3.clist_lang), i, width); } gtk_clist_select_row (GTK_CLIST (tab3.clist_lang), 0, 0); gtk_widget_show (tab3.clist_lang); gtk_widget_show (scr_win); mini_vbox = gtk_vbox_new (FALSE, 3); btn = gtk_button_new_with_label (_("Up")); gtk_box_pack_start (GTK_BOX (mini_vbox), btn, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (btn), "clicked", GTK_SIGNAL_FUNC (cfg_cb_btn_isp_lang_clicked), GINT_TO_POINTER (2)); btn = gtk_button_new_with_label (_("Down")); gtk_box_pack_start (GTK_BOX (mini_vbox), btn, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (btn), "clicked", GTK_SIGNAL_FUNC (cfg_cb_btn_isp_lang_clicked), GINT_TO_POINTER (3)); gtk_box_pack_start (GTK_BOX (hbox), mini_vbox, FALSE, FALSE, 0); gtk_widget_show_all (hbox); gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 3); gtk_widget_show (vbox); return (vbox); } void cfg_cb_clist_fps_select_row (GtkWidget *clist, gpointer data) { gchar *buf; gint row; row = (int) GTK_CLIST (tab2.clist)->selection->data; gtk_clist_get_text (GTK_CLIST (clist), row, 0, &buf); gtk_entry_set_text (GTK_ENTRY (tab2.entry), buf); } /* Check so that the fps entered is valid, and if its not - make it valid */ void gse_str_validate_fps (gchar **str) { gdouble fps; gint i, pcount = 0; gchar *dup = *str; for (i = 0; i < strlen (dup); i++) { if (isdigit (dup[i])); /* Digits remain the same */ else if (ispunct (dup[i]) && pcount == 0) /* Any dot or komma will be replaced by '.' */ pcount++; else /* Any invalid character (incl. more than one dot) will be converted to a zero */ dup[i] = '0'; } fps = g_strtod (dup, NULL); g_free (*str); *str = g_strdup_printf ("%.3lf", fps); } void cfg_cb_entry_fps_keypress (GtkWidget *entry, GdkEventKey *event, gpointer data) { switch (event->keyval) { case GDK_Return: case GDK_KP_Enter: cfg_cb_btn_fps_clicked (NULL, NULL); gtk_signal_emit_stop_by_name (GTK_OBJECT (entry), "key-press-event"); break; } } void cfg_cb_btn_fps_clicked (GtkWidget *btn, gpointer data) { gchar *buf; gint row; switch (GPOINTER_TO_INT (data)) { case 0: buf = g_strdup (gtk_entry_get_text (GTK_ENTRY (tab2.entry))); gse_str_validate_fps (&buf); row = (int) GTK_CLIST (tab2.clist)->selection->data; gtk_clist_set_text (GTK_CLIST (tab2.clist), row, 0, buf); g_free (buf); gnome_property_box_changed (GNOME_PROPERTY_BOX (pref_win)); gtk_clist_set_sort_type (GTK_CLIST (tab2.clist), GTK_SORT_DESCENDING); gtk_clist_sort (GTK_CLIST (tab2.clist)); break; case 1: gtk_clist_clear (GTK_CLIST (tab2.clist)); for (row = 0; row < CFG_NUM_PRE_FPS; row++) gtk_clist_append (GTK_CLIST (tab2.clist), (gchar **) &(predef_fps_def[row])); /* Set the changed flag */ cfg_cb_widget_changed (NULL, NULL); break; } } GtkWidget *cfg_create_tab_fps (void) { GtkWidget *vbox, *lbl, *btn, *hbox; gint i; vbox = gtk_vbox_new (FALSE, 5); hbox = gtk_hbox_new (FALSE, 0); lbl = gtk_label_new (_("Edit the predefined framerates")); gtk_box_pack_start (GTK_BOX (vbox), lbl, FALSE, FALSE, 0); gtk_widget_show (lbl); tab2.entry = gtk_entry_new_with_max_length (20); gtk_box_pack_start (GTK_BOX (hbox), tab2.entry, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (tab2.entry), "key-press-event", GTK_SIGNAL_FUNC (cfg_cb_entry_fps_keypress), NULL); gtk_widget_show (tab2.entry); btn = gtk_button_new_with_label (_("Change")); gtk_box_pack_start (GTK_BOX (hbox), btn, FALSE, FALSE, 2); gtk_signal_connect (GTK_OBJECT (btn), "clicked", GTK_SIGNAL_FUNC (cfg_cb_btn_fps_clicked), GINT_TO_POINTER (0)); gtk_widget_show (btn); btn = gtk_button_new_with_label (_("Revert to default")); gtk_box_pack_start (GTK_BOX (hbox), btn, FALSE, FALSE, 2); gtk_signal_connect (GTK_OBJECT (btn), "clicked", GTK_SIGNAL_FUNC (cfg_cb_btn_fps_clicked), GINT_TO_POINTER (1)); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (btn); gtk_widget_show (hbox); tab2.clist = gtk_clist_new (1); gtk_box_pack_start (GTK_BOX (vbox), tab2.clist, TRUE, TRUE, 3); gtk_clist_set_selection_mode (GTK_CLIST (tab2.clist), GTK_SELECTION_BROWSE); for (i = 0; i < CFG_NUM_PRE_FPS; i++) gtk_clist_append (GTK_CLIST (tab2.clist), (gchar **) &(cfg.predef_fps[i])); gtk_clist_select_row (GTK_CLIST (tab2.clist), 0, 0); gtk_signal_connect (GTK_OBJECT (tab2.clist), "select-row", GTK_SIGNAL_FUNC (cfg_cb_clist_fps_select_row), NULL); gtk_widget_show (tab2.clist); gtk_widget_show (vbox); gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); return vbox; } GtkWidget *cfg_create_tab_main (void) { GtkWidget *vbox, *frame, *fr_vbox, *tb_hbox, *lbl; gint i; GSList *grp; vbox = gtk_vbox_new (FALSE, 5); /* Clist auto-update */ tab1.update_clist = gtk_check_button_new_with_label (_("Apply changes to subtitle direct")); gtk_box_pack_start (GTK_BOX (vbox), tab1.update_clist, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tab1.update_clist), cfg.auto_update_clist); gtk_widget_show (tab1.update_clist); gtk_signal_connect (GTK_OBJECT (tab1.update_clist), "clicked", GTK_SIGNAL_FUNC (cfg_cb_widget_changed), NULL); grp = NULL; /* The different toolbar styles */ tb_hbox = gtk_hbox_new (FALSE, 5); lbl = gtk_label_new (_("Toolbar style: ")); gtk_box_pack_start (GTK_BOX (tb_hbox), lbl, FALSE, FALSE, 0); gtk_widget_show (lbl); for (i = 0; i < CFG_NUM_TB_TYPES; i++) { tab1.tb_types[i] = gtk_radio_button_new_with_label (grp, _(tbtype_lbls[i])); gtk_box_pack_start (GTK_BOX (tb_hbox), tab1.tb_types[i], FALSE, FALSE, 0); gtk_widget_show (tab1.tb_types[i]); /* Set starting state */ if (cfg.toolbar_style == tbtype_vals[i]) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tab1.tb_types[i]), TRUE); grp = gtk_radio_button_group (GTK_RADIO_BUTTON (tab1.tb_types[i])); } /* Connect signals _after_ default state has been set */ for (i = 0; i < CFG_NUM_TB_TYPES; i++) gtk_signal_connect (GTK_OBJECT (tab1.tb_types[i]), "clicked", GTK_SIGNAL_FUNC (cfg_cb_widget_changed), NULL); gtk_box_pack_start (GTK_BOX (vbox), tb_hbox, FALSE, FALSE, 4); gtk_widget_show (tb_hbox); /* Subtitle file-detection */ frame = gtk_frame_new (_("Subtitle-type detection:")); fr_vbox = gtk_vbox_new (TRUE, 3); tab1.detect_by_ext = gtk_radio_button_new_with_label (NULL, _("By extension")); gtk_widget_show (tab1.detect_by_ext); if (cfg.detect_file_by == CFG_DETECT_BY_EXT) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tab1.detect_by_ext), TRUE); tab1.detect_by_content = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (tab1.detect_by_ext), _("By file contents")); gtk_widget_show (tab1.detect_by_content); if (cfg.detect_file_by == CFG_DETECT_BY_CONTENT) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tab1.detect_by_content), TRUE); gtk_signal_connect (GTK_OBJECT (tab1.detect_by_ext), "clicked", GTK_SIGNAL_FUNC (cfg_cb_widget_changed), NULL); gtk_signal_connect (GTK_OBJECT (tab1.detect_by_content), "clicked", GTK_SIGNAL_FUNC (cfg_cb_widget_changed), NULL); gtk_box_pack_start (GTK_BOX (fr_vbox), tab1.detect_by_ext, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (fr_vbox), tab1.detect_by_content, FALSE, FALSE, 0); gtk_container_add (GTK_CONTAINER (frame), fr_vbox); gtk_widget_show (frame); gtk_widget_show (fr_vbox); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 3); gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); gtk_widget_show (vbox); return vbox; } void cfg_open_prefwin (GtkWidget *wgt, gpointer data) { GtkWidget *tab, *lbl; if (pref_win) return; pref_win = gnome_property_box_new (); gnome_dialog_set_parent (GNOME_DIALOG (pref_win), GTK_WINDOW (main_window)); gtk_signal_connect (GTK_OBJECT (pref_win), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroyed), &pref_win); tab = cfg_create_tab_main (); lbl = gtk_label_new (_("Main")); gtk_widget_show (tab); gnome_property_box_append_page (GNOME_PROPERTY_BOX (pref_win), tab, lbl); gtk_signal_connect (GTK_OBJECT (pref_win), "apply", GTK_SIGNAL_FUNC(cfg_cb_apply), NULL); tab = cfg_create_tab_fps (); lbl = gtk_label_new (_("Framerates")); gtk_widget_show (tab); gnome_property_box_append_page (GNOME_PROPERTY_BOX (pref_win), tab, lbl); gtk_signal_connect (GTK_OBJECT (pref_win), "apply", GTK_SIGNAL_FUNC(cfg_cb_apply), NULL); tab = cfg_create_tab_spell (); lbl = gtk_label_new (_("Spell options")); gtk_widget_show (tab); gnome_property_box_append_page (GNOME_PROPERTY_BOX (pref_win), tab, lbl); gtk_signal_connect (GTK_OBJECT (pref_win), "apply", GTK_SIGNAL_FUNC(cfg_cb_apply), NULL); gtk_widget_show (pref_win); } int gse_float_compare_func (gchar *a, gchar *b) { double fl1, fl2; fl1 = g_strtod (a, NULL); fl2 = g_strtod (b, NULL); if (fl1 > fl2) return -1; else if (fl1 < fl2) return 1; else return 0; } /* Creates a GList from the predefined framerates and returns it */ GList *cfg_get_predefined_framerates (void) { GList *glist=NULL; gint i; for (i = 0; i < CFG_NUM_PRE_FPS; i++) glist = g_list_append(glist, cfg.predef_fps[i]); g_list_sort (glist, (GCompareFunc) (gse_float_compare_func)); return (g_list_first (glist)); } /* Reads configuration from ~/gnome/gsubedit */ void cfg_read_config_file (void) { gboolean def; gint i; gchar buf[255]; cfg.last_open_dir = gnome_config_get_string_with_default(GSE_CONFIG_FILE "/Main/last_open_dir=~/", &def); cfg.last_save_dir = gnome_config_get_string_with_default(GSE_CONFIG_FILE "/Main/last_save_dir=~/", &def); cfg.detect_file_by = gnome_config_get_int_with_default (GSE_CONFIG_FILE "/Main/Detect_file_by=1" , &def); cfg.toolbar_style = gnome_config_get_int_with_default (GSE_CONFIG_FILE "/Main/toolbar_style=2" , &def); cfg.hi_rm_at = gnome_config_get_bool_with_default (GSE_CONFIG_FILE "/Main/hearing_impaired_rm_at=FALSE" , &def); cfg.hi_rm_bracket = gnome_config_get_bool_with_default (GSE_CONFIG_FILE "/Main/hearing_impaired_rm_bracket=TRUE" , &def); cfg.hi_rm_custom = gnome_config_get_bool_with_default (GSE_CONFIG_FILE "/Main/hearing_impaired_rm_custom=FALSE" , &def); cfg.auto_update_clist = gnome_config_get_bool_with_default (GSE_CONFIG_FILE "/Main/Auto_update_clist=FALSE", &def); cfg.save_after_conversion = gnome_config_get_bool_with_default (GSE_CONFIG_FILE "/Main/Save_after_conversion=FALSE", &def); cfg.isp_cmd = gnome_config_get_string_with_default (GSE_CONFIG_FILE "Spell/Ispell_command=ispell", &def); cfg.isp_opt = gnome_config_get_string (GSE_CONFIG_FILE "Spell/Ispell_extra_opt"); cfg.isp_ask = gnome_config_get_bool_with_default (GSE_CONFIG_FILE "/Spell/Ispell_ask_for_lang=TRUE", &def); cfg.isp_langcount = gnome_config_get_int_with_default (GSE_CONFIG_FILE "/Spell/Ispell_langcount=0", &def); gnome_config_get_vector (GSE_CONFIG_FILE "/Spell/Ispell_languages",&(cfg.isp_langcount), &(cfg.lang_list)); for (i = 0; i < CFG_NUM_PRE_FPS; i++) { g_snprintf (buf, 255, "%s/Main/predefined_fps%d=%s", GSE_CONFIG_FILE, i, predef_fps_def[i]); cfg.predef_fps[i] = gnome_config_get_string_with_default(buf, &def); } } /* Saves the config */ void cfg_write_config_file (void) { gint i; gchar buf[255]; gnome_config_set_string (GSE_CONFIG_FILE "/Main/last_open_dir", cfg.last_open_dir); gnome_config_set_string (GSE_CONFIG_FILE "/Main/last_save_dir", cfg.last_save_dir); gnome_config_set_string (GSE_CONFIG_FILE "/Spell/Ispell_command", cfg.isp_cmd); gnome_config_set_string (GSE_CONFIG_FILE "/Spell/Ispell_extra_opt", cfg.isp_opt); gnome_config_set_int (GSE_CONFIG_FILE "/Main/Detect_file_by" , cfg.detect_file_by); gnome_config_set_int (GSE_CONFIG_FILE "/Main/toolbar_style" , cfg.toolbar_style); gnome_config_set_bool (GSE_CONFIG_FILE "/Main/Auto_update_clist", cfg.auto_update_clist); gnome_config_set_bool (GSE_CONFIG_FILE "/Main/Save_after_conversion", cfg.save_after_conversion); gnome_config_set_bool (GSE_CONFIG_FILE "/Main/hearing_impaired_rm_bracket", cfg.hi_rm_bracket); gnome_config_set_bool (GSE_CONFIG_FILE "/Main/hearing_impaired_rm_at", cfg.hi_rm_at); gnome_config_set_bool (GSE_CONFIG_FILE "/Main/hearing_impaired_rm_custom", cfg.hi_rm_custom); gnome_config_set_bool (GSE_CONFIG_FILE "/Spell/Ispell_ask_for_lang", cfg.isp_ask); gnome_config_set_int (GSE_CONFIG_FILE "/Spell/Ispell_langcount", cfg.isp_langcount); gnome_config_set_vector (GSE_CONFIG_FILE "/Spell/Ispell_languages", cfg.isp_langcount, (const gchar * const *) cfg.lang_list); for (i = 0; i < CFG_NUM_PRE_FPS; i++) { g_snprintf (buf, 255, "%s/Main/predefined_fps%d", GSE_CONFIG_FILE, i); gnome_config_set_string(buf, cfg.predef_fps[i]); } gnome_config_sync (); }