2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
27 #include <glib/gi18n.h>
29 #include <gdk/gdkkeysyms.h>
34 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "mainwindow.h"
45 #include "summaryview.h"
46 #include "folderview.h"
47 #include "messageview.h"
48 #include "manage_window.h"
54 #include "alertpanel.h"
58 #include "folderview.h"
59 #include "stock_pixmap.h"
60 #include "prefswindow.h"
61 #include "colorlabel.h"
69 PrefsCommon prefs_common;
75 * In the Windows version prefs_common contains
76 * - the non-OS-specific settings of the "Common" section and
77 * - the OS-specific settings of the "CommonWin32" section
78 * The OS-specific settings of the "Common" section are not used
79 * but saved in prefs_unix.
82 # define SPECIFIC_PREFS prefs_unix
84 static PrefsCommon prefs_unix;
86 static PrefParam param_os_specific[] = {
89 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
90 {"newmail_notify_cmd", "",
91 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
94 {"widget_font_gtk2", NULL,
95 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
96 {"message_font_gtk2", "Monospace 9",
97 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
98 {"print_font_gtk2", "Monospace 9",
99 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
100 {"small_font_gtk2", "Sans 9",
101 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
102 {"normal_font_gtk2", "Sans 9",
103 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
105 {"attach_save_directory", NULL,
106 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
107 {"attach_load_directory", NULL,
108 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
111 {"mime_textviewer", NULL,
112 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
113 {"mime_open_command", "notepad '%s'",
114 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
117 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
118 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
121 {"uri_open_command", NULL,
122 &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
123 {"print_command", "notepad /p %s",
124 &prefs_common.print_cmd, P_STRING, NULL, NULL, NULL},
125 {"ext_editor_command", "notepad %s",
126 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
128 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
131 # define SPECIFIC_PREFS prefs_common
135 parameter name, default value, pointer to the prefs variable, data type,
136 pointer to the widget pointer,
137 pointer to the function for data setting,
138 pointer to the function for widget setting
141 static PrefParam param[] = {
143 {"data_root", "", &prefs_common.data_root, P_STRING,
147 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
149 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
152 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
154 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
156 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
158 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
159 P_BOOL, NULL, NULL, NULL},
160 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
161 P_BOOL, NULL, NULL, NULL},
162 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
163 P_BOOL, NULL, NULL, NULL},
164 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
165 P_BOOL, NULL, NULL, NULL},
166 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
169 {"maemo_play_sound", "FALSE", &prefs_common.maemo_play_sound, P_BOOL,
171 {"maemo_show_banner", "FALSE", &prefs_common.maemo_show_banner, P_BOOL,
174 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
176 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
178 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
180 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
181 P_BOOL, NULL, NULL, NULL},
182 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
183 P_BOOL, NULL, NULL, NULL},
186 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
188 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
189 P_BOOL, NULL, NULL, NULL},
190 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
192 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
194 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
197 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
199 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
202 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
203 P_BOOL, NULL, NULL, NULL},
206 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
208 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
209 P_BOOL, NULL, NULL, NULL},
210 {"redirect_keep_from", "FALSE",
211 &prefs_common.redirect_keep_from, P_BOOL,
213 {"undo_level", "50", &prefs_common.undolevels, P_INT,
215 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
217 {"compose_subject_format", "",
218 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
219 {"compose_body_format", N_("Hello,\\n"),
220 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
222 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
224 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
226 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
228 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
230 {"autosave", "TRUE", &prefs_common.autosave,
231 P_BOOL, NULL, NULL, NULL},
232 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
235 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
237 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
239 {"dictionary", "", &prefs_common.dictionary, P_STRING,
241 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
243 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
245 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
247 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
249 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
250 P_BOOL, NULL, NULL, NULL},
251 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
253 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
256 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
258 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
261 /* Account autoselection */
262 {"reply_account_autoselect", "TRUE",
263 &prefs_common.reply_account_autosel, P_BOOL,
265 {"forward_account_autoselect", "TRUE",
266 &prefs_common.forward_account_autosel, P_BOOL,
268 {"reedit_account_autoselect", "TRUE",
269 &prefs_common.reedit_account_autosel, P_BOOL,
272 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
276 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
279 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
284 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
286 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q"),
287 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
289 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
291 {"forward_quote_format",
292 N_("\\n\\nBegin forwarded message:\\n\\n"
293 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
294 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
295 &prefs_common.fw_quotefmt, P_STRING, NULL, NULL, NULL},
296 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
300 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
301 {"widget_font", NULL,
302 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
303 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
304 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
305 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
306 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
307 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
308 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
309 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
310 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
314 {"widget_font_gtk2", NULL,
315 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
316 {"message_font_gtk2", "Monospace 9",
317 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
318 {"print_font_gtk2", "Monospace 9",
319 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
320 {"small_font_gtk2", "Sans 9",
321 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
322 {"normal_font_gtk2", "Sans 9",
323 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
325 {"widget_font_gtk2", NULL,
326 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
327 {"message_font_gtk2", "Monospace 8",
328 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
329 {"print_font_gtk2", "Monospace 8",
330 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
331 {"small_font_gtk2", "Sans 8",
332 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
333 {"normal_font_gtk2", "Sans 8",
334 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
337 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
339 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
341 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
343 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
345 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
347 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
349 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
351 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
353 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
355 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
357 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
359 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
361 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
363 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
365 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
367 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
369 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
371 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
373 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
375 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
377 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
379 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
381 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
383 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
385 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
387 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
389 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
391 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
393 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
395 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
399 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
401 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
403 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
406 {"display_folder_unread_num", "0",
407 &prefs_common.display_folder_unread, P_INT,
409 {"newsgroup_abbrev_len", "16",
410 &prefs_common.ng_abbrev_len, P_INT,
413 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
416 /* Display: Summary View */
417 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
419 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
421 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
422 P_STRING, NULL, NULL, NULL},
424 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
427 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
430 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
433 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
436 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
438 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
441 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
443 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
446 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
448 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
452 {"summary_col_show_mark", "TRUE",
453 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
454 {"summary_col_show_unread", "TRUE",
455 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
456 {"summary_col_show_subject", "TRUE",
457 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
458 {"summary_col_show_from", "TRUE",
459 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
460 {"summary_col_show_to", "FALSE",
461 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
462 {"summary_col_show_date", "TRUE",
463 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
464 {"summary_col_show_mime", "TRUE",
465 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
466 {"summary_col_show_size", "TRUE",
467 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
468 {"summary_col_show_number", "FALSE",
469 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
470 {"summary_col_show_score", "FALSE",
471 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
472 {"summary_col_show_locked", "FALSE",
473 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
474 {"summary_col_show_tags", "FALSE",
475 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_pos_mark", "0",
478 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
479 {"summary_col_pos_unread", "1",
480 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
481 {"summary_col_pos_mime", "2",
482 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
483 {"summary_col_pos_subject", "3",
484 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
485 {"summary_col_pos_from", "4",
486 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
487 {"summary_col_pos_date", "5",
488 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
489 {"summary_col_pos_size", "6",
490 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
491 {"summary_col_pos_number", "7",
492 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
493 {"summary_col_pos_score", "8",
494 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
495 {"summary_col_pos_locked", "9",
496 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
497 {"summary_col_pos_to", "10",
498 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
499 {"summary_col_pos_tags", "11",
500 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
502 {"summary_col_size_mark", "10",
503 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
504 {"summary_col_size_unread", "13",
505 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
506 {"summary_col_size_mime", "10",
507 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
509 {"summary_col_size_subject", "200",
510 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
511 {"summary_col_size_from", "120",
512 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
513 {"summary_col_size_to", "120",
514 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
516 {"summary_col_size_subject", "300",
517 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
518 {"summary_col_size_from", "150",
519 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
520 {"summary_col_size_to", "150",
521 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
524 {"summary_col_size_date", "118",
525 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
526 {"summary_col_size_size", "45",
527 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
528 {"summary_col_size_number", "40",
529 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_score", "40",
531 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_locked", "13",
533 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_tags", "150",
535 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
538 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
540 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
542 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
544 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
546 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
549 {"folder_col_show_folder", "TRUE",
550 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
551 {"folder_col_show_new", "TRUE",
552 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
553 {"folder_col_show_unread", "TRUE",
554 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
555 {"folder_col_show_total", "TRUE",
556 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
558 {"folder_col_pos_folder", "0",
559 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
560 {"folder_col_pos_new", "1",
561 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
562 {"folder_col_pos_unread", "2",
563 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
564 {"folder_col_pos_total", "3",
565 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
568 {"folder_col_size_folder", "120",
569 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
570 {"folder_col_size_new", "32",
571 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
572 {"folder_col_size_unread", "32",
573 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
574 {"folder_col_size_total", "32",
575 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
577 {"folder_col_size_folder", "400",
578 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
579 {"folder_col_size_new", "32",
580 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
581 {"folder_col_size_unread", "32",
582 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
583 {"folder_col_size_total", "32",
584 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
586 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
588 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
591 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
593 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
595 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
597 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
599 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
602 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
604 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
606 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
608 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
610 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
612 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
615 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
617 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
619 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
621 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
623 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
625 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
627 {"compose_width", "600", &prefs_common.compose_width, P_INT,
629 {"compose_height", "560", &prefs_common.compose_height, P_INT,
632 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
634 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
636 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
638 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
640 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
642 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
644 {"compose_width", "700", &prefs_common.compose_width, P_INT,
646 {"compose_height", "470", &prefs_common.compose_height, P_INT,
649 {"compose_x", "0", &prefs_common.compose_x, P_INT,
651 {"compose_y", "0", &prefs_common.compose_y, P_INT,
654 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
657 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
659 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
661 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
663 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
665 {"quote_level1_bgcolor", "13421772", &prefs_common.quote_level1_bgcol, P_COLOR,
667 {"quote_level2_bgcolor", "13948116", &prefs_common.quote_level2_bgcol, P_COLOR,
669 {"quote_level3_bgcolor", "14540253", &prefs_common.quote_level3_bgcol, P_COLOR,
671 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
673 {"emphasis_color", "207", &prefs_common.emphasis_col, P_COLOR,
675 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
677 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
679 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
680 P_BOOL, NULL, NULL, NULL},
682 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
683 P_BOOL, NULL, NULL, NULL},
684 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
686 {"display_xface", "TRUE", &prefs_common.display_xface,
687 P_BOOL, NULL, NULL, NULL},
688 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
690 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
692 {"line_space", "2", &prefs_common.line_space, P_INT,
694 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
697 {"enable_smooth_scroll", "FALSE",
698 &prefs_common.enable_smooth_scroll, P_BOOL,
700 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
702 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
704 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
707 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
710 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
713 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
715 {"attach_save_directory", NULL,
716 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
717 {"attach_load_directory", NULL,
718 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
721 {"mime_textviewer", NULL,
722 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
723 {"mime_open_command", "gedit '%s'",
724 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
728 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
731 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
734 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
735 NULL, NULL, NULL}, */
736 {"always_show_message_when_selected", "FALSE",
737 &prefs_common.always_show_msg,
738 P_BOOL, NULL, NULL, NULL},
739 {"select_on_entry", "3", &prefs_common.select_on_entry,
740 P_ENUM, NULL, NULL, NULL},
742 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
744 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
746 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
748 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
750 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
752 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
755 {"mark_as_read_on_new_window", "FALSE",
756 &prefs_common.mark_as_read_on_new_window,
757 P_BOOL, NULL, NULL, NULL},
758 {"mark_as_read_delay", "0",
759 &prefs_common.mark_as_read_delay, P_INT,
761 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
763 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
766 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
767 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
770 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
773 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
775 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
779 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
780 P_BOOL, NULL, NULL, NULL},
781 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
782 P_INT, NULL, NULL, NULL},
783 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
784 P_INT, NULL, NULL, NULL},
787 {"uri_open_command", DEFAULT_BROWSER_CMD,
788 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
789 {"print_command", "lpr %s",
790 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
791 {"ext_editor_command", DEFAULT_EDITOR_CMD,
792 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
793 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
794 P_BOOL, NULL, NULL, NULL},
795 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
797 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
799 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
801 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
802 P_BOOL, NULL, NULL, NULL},
803 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
805 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
808 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
811 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
815 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
816 P_INT, NULL, NULL, NULL},
817 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
819 {"important_score", "1", &prefs_common.important_score, P_INT,
822 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
824 {"log_length", "500", &prefs_common.loglength, P_INT,
827 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
829 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
831 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
833 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
836 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
838 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
840 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
842 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
845 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
847 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
849 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
851 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
853 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
855 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
857 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
859 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
862 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
864 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
866 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
868 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
870 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
872 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
874 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
876 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
878 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
881 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
884 {"color_new", "179", &prefs_common.color_new, P_COLOR,
887 /* Some windows' sizes */
888 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
890 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
893 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
895 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
898 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
900 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
903 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
905 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
908 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
910 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
913 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
915 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
918 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
920 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
923 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
925 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
928 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
930 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
933 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
935 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
938 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
940 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
943 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
945 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
948 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
951 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
953 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
956 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
958 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
961 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
963 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
966 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
968 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
971 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
973 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
976 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
978 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
981 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
983 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
987 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
989 {"utf8_instead_of_locale_for_broken_mail", "0",
990 &prefs_common.broken_are_utf8, P_INT,
992 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
994 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
996 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
998 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1000 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1002 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1004 {"folderview_vscrollbar_policy", "0",
1005 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1007 {"textview_cursor_visible", "FALSE",
1008 &prefs_common.textview_cursor_visible, P_BOOL,
1010 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1013 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1015 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1018 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1020 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1023 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1024 P_INT, NULL, NULL, NULL },
1025 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1026 P_STRING, NULL, NULL, NULL },
1027 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1028 P_BOOL, NULL, NULL, NULL },
1029 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1031 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1033 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1035 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1037 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1039 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1041 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1043 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1045 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1048 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1051 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1055 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1057 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1059 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1061 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1063 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1065 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1067 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1069 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1071 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1074 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1078 * Read history list from the specified history file
1080 static GList *prefs_common_read_history(const gchar *history)
1084 gchar buf[PREFSBUFSIZE];
1087 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1089 if ((fp = g_fopen(path, "rb")) == NULL) {
1090 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1095 while (fgets(buf, sizeof(buf), fp) != NULL) {
1097 if (buf[0] == '\0') continue;
1098 tmp = add_history(tmp, buf);
1102 tmp = g_list_reverse(tmp);
1107 void prefs_common_read_config(void)
1112 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1113 prefs_read_config(param, "Common", rcpath, NULL);
1115 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1120 tmp = g_strdup(gettext(prefs_common.quotefmt));
1121 g_free(prefs_common.quotefmt);
1122 prefs_common.quotefmt = tmp;
1124 tmp = g_strdup(gettext(prefs_common.fw_quotefmt));
1125 g_free(prefs_common.fw_quotefmt);
1126 prefs_common.fw_quotefmt = tmp;
1128 tmp = g_strdup(gettext(prefs_common.date_format));
1129 g_free(prefs_common.date_format);
1130 prefs_common.date_format = tmp;
1132 tmp = g_strdup(gettext(prefs_common.compose_body_format));
1133 g_free(prefs_common.compose_body_format);
1134 prefs_common.compose_body_format = tmp;
1136 prefs_common.mime_open_cmd_history =
1137 prefs_common_read_history(COMMAND_HISTORY);
1138 prefs_common.summary_quicksearch_history =
1139 prefs_common_read_history(QUICKSEARCH_HISTORY);
1140 prefs_common.summary_search_from_history =
1141 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1142 prefs_common.summary_search_to_history =
1143 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1144 prefs_common.summary_search_subject_history =
1145 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1146 prefs_common.summary_search_body_history =
1147 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1148 prefs_common.summary_search_adv_condition_history =
1149 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1150 prefs_common.message_search_history =
1151 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1153 colorlabel_update_colortable_from_prefs();
1159 g_warning("failed to write\n"); \
1164 * Save history list to the specified history file
1166 static void prefs_common_save_history(const gchar *history, GList *list)
1170 gchar *path, *tmp_path;
1172 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1174 tmp_path = g_strconcat(path, ".tmp", NULL);
1176 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1177 FILE_OP_ERROR(tmp_path, "fopen");
1181 for (cur = list; cur != NULL; cur = cur->next) {
1182 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1183 fputc('\n', fp) != EOF);
1186 if (fclose(fp) == EOF) {
1187 FILE_OP_ERROR(tmp_path, "fclose");
1195 if (g_rename(tmp_path, path) < 0) {
1196 FILE_OP_ERROR(path, "rename");
1209 void prefs_common_write_config(void)
1211 prefs_write_config(param, "Common", COMMON_RC);
1213 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1216 prefs_common_save_history(COMMAND_HISTORY,
1217 prefs_common.mime_open_cmd_history);
1218 prefs_common_save_history(QUICKSEARCH_HISTORY,
1219 prefs_common.summary_quicksearch_history);
1220 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1221 prefs_common.summary_search_from_history);
1222 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1223 prefs_common.summary_search_to_history);
1224 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1225 prefs_common.summary_search_subject_history);
1226 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1227 prefs_common.summary_search_body_history);
1228 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1229 prefs_common.summary_search_adv_condition_history);
1230 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1231 prefs_common.message_search_history);
1234 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1235 both 'in' and 'out' must be non-NULL.
1236 'out' must be a pointer to a buffer whose size is at least equal
1237 to strlen(txt)+1, this buffer will get cleared. out's contents
1238 will always get set to a valid string, even if it's "".*/
1239 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1246 g_return_if_fail( in != NULL );
1247 g_return_if_fail( out != NULL );
1251 memset(out, 0, strlen(in)+1);
1252 while (*i != '\0') {
1253 if (*i == '\\' && *(i+1) == 'n') {
1256 } else if (*i == '\\' && *(i+1) == 't') {
1259 } else if (*i == '\\' && *(i+1) == '\\') {
1270 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1271 both 'in' and 'out' must be non-NULL.
1272 'out' must be a pointer to a buffer whose size is at least equal
1273 to 2*strlen(txt)+1. out's contents will always get set to a valid
1274 string, even if it's "". */
1275 void pref_get_escaped_pref(gchar *out, const gchar *in)
1282 g_return_if_fail( in != NULL );
1283 g_return_if_fail( out != NULL );
1287 while (*i != '\0') {
1291 } else if (*i == '\t') {
1294 } else if (*i == '\\') {
1305 /* set the contents of a textview widget from the internal \-escaped
1306 representation of a pref string. both txt and textview must be non-NULL. */
1307 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1309 GtkTextBuffer *buffer;
1312 g_return_if_fail( textview != NULL );
1314 buffer = gtk_text_view_get_buffer(textview);
1317 gtk_text_buffer_set_text(buffer, "", -1);
1319 out = malloc(strlen(txt)+1);
1321 pref_get_unescaped_pref(out, txt);
1323 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1328 /* set the contents of a gtkentry widget from the internal \-escaped
1329 representation of a pref string. both txt and entry must be non-NULL. */
1330 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1334 g_return_if_fail( entry != NULL );
1336 gtk_entry_set_text(entry, "");
1338 out = malloc(strlen(txt)+1);
1340 pref_get_unescaped_pref(out, txt);
1342 gtk_entry_set_text(entry, out?out:"");
1347 /* get the \-escaped internal representation of a pref from the contents of
1348 a textview widget. textview must be non-NULL. */
1349 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1351 GtkTextBuffer *buffer;
1352 GtkTextIter start, end;
1355 g_return_val_if_fail( textview != NULL, "" );
1357 buffer = gtk_text_view_get_buffer(textview);
1358 gtk_text_buffer_get_start_iter(buffer, &start);
1359 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1360 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1361 out = malloc(2*strlen(tmp)+1);
1363 pref_get_escaped_pref(out, tmp);
1369 /* get the \-escaped internal representation of a pref from the contents of
1370 a gtkentry widget. entry must be non-NULL. */
1371 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1375 g_return_val_if_fail( entry != NULL, "" );
1377 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1378 out = malloc(2*strlen(tmp)+1);
1380 pref_get_escaped_pref(out, tmp);
1386 /* ugly hack to be able to get this pref from ssl_certificate.c */
1387 gboolean prefs_common_unsafe_ssl_certs(void)
1389 return prefs_common.unsafe_ssl_certs;
1392 gboolean prefs_common_enable_log_standard(void)
1394 return prefs_common.enable_log_standard;
1397 gboolean prefs_common_enable_log_warning(void)
1399 return prefs_common.enable_log_warning;
1401 gboolean prefs_common_enable_log_error(void)
1403 return prefs_common.enable_log_error;
1405 gboolean prefs_common_enable_log_status(void)
1407 return prefs_common.enable_log_status;
1411 const gchar *prefs_common_get_data_root(void)
1413 if (prefs_common.data_root && *prefs_common.data_root)
1414 return prefs_common.data_root;
1420 return the translated name of a header, if the translate_header option is
1421 set, otherwise return the untranslated header name (header_name itself).
1422 this function is provided for convenience, it's an interface to
1423 prefs_common.trans_hdr.
1424 works with header names either with or without trailing colon, provided
1425 that gettext found such header name in the sources (they should all be
1426 found in src/gtk/headers.h anyway).
1428 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1430 if (header_name == NULL || *header_name == '\0')
1433 return prefs_common.trans_hdr ? gettext(header_name) : header_name;