2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2013 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/>.
22 #include "claws-features.h"
28 #include <glib/gi18n.h>
30 #include <gdk/gdkkeysyms.h>
35 #include <sys/types.h>
40 #include "prefs_gtk.h"
41 #include "prefs_common.h"
42 #include "prefs_display_header.h"
43 #include "prefs_summary_column.h"
44 #include "prefs_folder_column.h"
45 #include "mainwindow.h"
46 #include "summaryview.h"
47 #include "folderview.h"
48 #include "messageview.h"
49 #include "manage_window.h"
55 #include "alertpanel.h"
59 #include "folderview.h"
60 #include "stock_pixmap.h"
61 #include "prefswindow.h"
62 #include "colorlabel.h"
63 #ifndef USE_ALT_ADDRBOOK
64 #include "addrcustomattr.h"
73 PrefsCommon prefs_common;
79 * In the Windows version prefs_common contains
80 * - the non-OS-specific settings of the "Common" section and
81 * - the OS-specific settings of the "CommonWin32" section
82 * The OS-specific settings of the "Common" section are not used
83 * but saved in prefs_unix.
86 # define SPECIFIC_PREFS prefs_unix
88 static PrefsCommon prefs_unix;
90 static PrefParam param_os_specific[] = {
93 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
94 {"newmail_notify_cmd", "",
95 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
98 {"widget_font_gtk2", NULL,
99 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
100 {"message_font_gtk2", "Monospace 9",
101 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
102 {"print_font_gtk2", "Monospace 9",
103 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
104 {"small_font_gtk2", "Sans 9",
105 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
106 {"normal_font_gtk2", "Sans 9",
107 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
108 {"bold_font_gtk2", "Sans 9 Bold",
109 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
111 {"attach_save_directory", NULL,
112 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
113 {"attach_load_directory", NULL,
114 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
117 {"mime_textviewer", NULL,
118 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
119 {"mime_open_command", "notepad '%s'",
120 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
123 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
124 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
127 {"ext_editor_command", "notepad %s",
128 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
130 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
133 # define SPECIFIC_PREFS prefs_common
137 parameter name, default value, pointer to the prefs variable, data type,
138 pointer to the widget pointer,
139 pointer to the function for data setting,
140 pointer to the function for widget setting
143 static PrefParam param[] = {
144 {"config_version", "0",
145 &prefs_common.config_version, P_INT, NULL, NULL, NULL},
148 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
150 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
153 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
155 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
157 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
159 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
160 P_BOOL, NULL, NULL, NULL},
161 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
162 P_BOOL, NULL, NULL, NULL},
163 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
164 P_BOOL, NULL, NULL, NULL},
165 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
166 P_BOOL, NULL, NULL, NULL},
167 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
169 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
171 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
173 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
175 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
176 P_BOOL, NULL, NULL, NULL},
177 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
178 P_BOOL, NULL, NULL, NULL},
181 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
183 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
184 P_BOOL, NULL, NULL, NULL},
186 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
189 {"send_dialog_mode", "1", &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,
201 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
203 {"warn_empty_subj", "TRUE", &prefs_common.warn_empty_subj,
204 P_BOOL, NULL, NULL, NULL},
206 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
207 P_BOOL, NULL, NULL, NULL},
210 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
212 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
213 P_BOOL, NULL, NULL, NULL},
214 {"redirect_keep_from", "FALSE",
215 &prefs_common.redirect_keep_from, P_BOOL,
217 {"undo_level", "50", &prefs_common.undolevels, P_INT,
219 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
221 {"compose_subject_format", "",
222 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
223 {"compose_body_format", N_("Hello,\\n"),
224 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
225 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
227 {"type_any_header", "FALSE", &prefs_common.type_any_header, P_BOOL,
231 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
233 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
235 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
237 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
239 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
241 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
243 {"autosave", "TRUE", &prefs_common.autosave,
244 P_BOOL, NULL, NULL, NULL},
245 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
247 {"autosave_encrypted", "FALSE", &prefs_common.autosave_encrypted,
248 P_BOOL, NULL, NULL, NULL},
249 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
250 P_BOOL, NULL, NULL, NULL},
251 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
252 P_INT, NULL, NULL, NULL},
254 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
256 {"dictionary", "", &prefs_common.dictionary, P_STRING,
258 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
260 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
262 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
264 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
265 P_BOOL, NULL, NULL, NULL},
266 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
268 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
271 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
273 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
276 /* Account autoselection */
277 {"reply_account_autoselect", "TRUE",
278 &prefs_common.reply_account_autosel, P_BOOL,
280 {"forward_account_autoselect", "TRUE",
281 &prefs_common.forward_account_autosel, P_BOOL,
283 {"reedit_account_autoselect", "TRUE",
284 &prefs_common.reedit_account_autosel, P_BOOL,
287 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
291 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
294 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
299 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
301 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
302 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
304 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
306 {"forward_quote_format",
307 N_("\\n\\nBegin forwarded message:\\n\\n"
308 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
309 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
310 &prefs_common.fw_quotefmt, P_STRING,
312 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
316 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
317 {"widget_font", NULL,
318 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
319 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
320 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
321 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
322 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
323 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
324 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
325 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
326 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
330 {"widget_font_gtk2", NULL,
331 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
332 {"message_font_gtk2", "Monospace 9",
333 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
334 {"print_font_gtk2", "Monospace 9",
335 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
336 {"small_font_gtk2", "Sans 9",
337 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
338 {"normal_font_gtk2", "Sans 9",
339 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
340 {"bold_font_gtk2", "Sans Bold 9",
341 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
343 {"widget_font_gtk2", NULL,
344 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
345 {"message_font_gtk2", "Monospace 8",
346 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
347 {"print_font_gtk2", "Monospace 8",
348 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
349 {"small_font_gtk2", "Sans 8",
350 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
351 {"normal_font_gtk2", "Sans 8",
352 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
353 {"bold_font_gtk2", "Sans Bold 8",
354 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
357 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
359 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
363 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
365 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
367 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
369 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
371 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
373 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
375 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
377 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
379 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
381 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
383 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
385 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
387 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
389 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
391 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
393 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
395 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
397 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
399 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
401 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
403 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
405 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
407 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
409 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
411 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
413 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
415 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
417 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
419 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
421 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
425 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
427 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
429 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
432 {"display_folder_unread_num", "0",
433 &prefs_common.display_folder_unread, P_INT,
435 {"newsgroup_abbrev_len", "16",
436 &prefs_common.ng_abbrev_len, P_INT,
439 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
442 /* Display: Summary View */
443 {"default_sort_key", "3", &prefs_common.default_sort_key, P_ENUM,
445 {"default_sort_type", "1", &prefs_common.default_sort_type, P_ENUM,
447 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
449 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
451 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
452 P_STRING, NULL, NULL, NULL},
453 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
456 {"next_on_delete", "FALSE", &prefs_common.next_on_delete, P_BOOL,
459 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
462 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
465 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
468 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
471 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
473 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
476 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
478 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
481 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
483 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
487 {"summary_col_show_mark", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_unread", "TRUE",
490 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_subject", "TRUE",
492 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_from", "TRUE",
494 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_to", "FALSE",
496 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_date", "TRUE",
498 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
499 {"summary_col_show_mime", "TRUE",
500 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
501 {"summary_col_show_size", "TRUE",
502 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
503 {"summary_col_show_number", "FALSE",
504 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
505 {"summary_col_show_score", "FALSE",
506 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
507 {"summary_col_show_locked", "FALSE",
508 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
509 {"summary_col_show_tags", "FALSE",
510 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
512 {"summary_col_pos_mark", "0",
513 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_unread", "1",
515 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_mime", "2",
517 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_subject", "3",
519 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_from", "4",
521 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_date", "5",
523 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
524 {"summary_col_pos_size", "6",
525 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
526 {"summary_col_pos_number", "7",
527 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
528 {"summary_col_pos_score", "8",
529 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
530 {"summary_col_pos_locked", "9",
531 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
532 {"summary_col_pos_to", "10",
533 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
534 {"summary_col_pos_tags", "11",
535 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_mark", "10",
538 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_unread", "13",
540 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_mime", "10",
542 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
544 {"summary_col_size_subject", "200",
545 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_from", "120",
547 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
548 {"summary_col_size_to", "120",
549 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_subject", "300",
552 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_from", "150",
554 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_to", "150",
556 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
559 {"summary_col_size_date", "118",
560 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
561 {"summary_col_size_size", "45",
562 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
563 {"summary_col_size_number", "40",
564 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
565 {"summary_col_size_score", "40",
566 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
567 {"summary_col_size_locked", "13",
568 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
569 {"summary_col_size_tags", "150",
570 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
573 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
575 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
577 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
579 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
581 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
584 {"folder_col_show_folder", "TRUE",
585 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
586 {"folder_col_show_new", "TRUE",
587 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
588 {"folder_col_show_unread", "TRUE",
589 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
590 {"folder_col_show_total", "TRUE",
591 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
593 {"folder_col_pos_folder", "0",
594 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
595 {"folder_col_pos_new", "1",
596 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
597 {"folder_col_pos_unread", "2",
598 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
599 {"folder_col_pos_total", "3",
600 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
603 {"folder_col_size_folder", "120",
604 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
605 {"folder_col_size_new", "32",
606 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
607 {"folder_col_size_unread", "32",
608 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
609 {"folder_col_size_total", "32",
610 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
612 {"folder_col_size_folder", "400",
613 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
614 {"folder_col_size_new", "32",
615 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
616 {"folder_col_size_unread", "32",
617 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
618 {"folder_col_size_total", "32",
619 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
621 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
623 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
626 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
628 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
630 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
632 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
634 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
637 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
639 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
641 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
643 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
645 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
647 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
649 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
651 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
653 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
656 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
658 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
660 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
662 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
664 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
666 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
668 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
670 {"compose_width", "600", &prefs_common.compose_width, P_INT,
672 {"compose_height", "560", &prefs_common.compose_height, P_INT,
675 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
677 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
679 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
681 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
683 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
685 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
687 {"compose_width", "700", &prefs_common.compose_width, P_INT,
689 {"compose_height", "470", &prefs_common.compose_height, P_INT,
692 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
694 {"compose_x", "0", &prefs_common.compose_x, P_INT,
696 {"compose_y", "0", &prefs_common.compose_y, P_INT,
699 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
702 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
704 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
706 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
708 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
710 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
712 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
714 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
716 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
718 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
720 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
722 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
724 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
725 P_BOOL, NULL, NULL, NULL},
727 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
728 P_BOOL, NULL, NULL, NULL},
729 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
731 {"display_xface", "TRUE", &prefs_common.display_xface,
732 P_BOOL, NULL, NULL, NULL},
733 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
735 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
737 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
739 {"line_space", "2", &prefs_common.line_space, P_INT,
741 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
744 {"enable_smooth_scroll", "FALSE",
745 &prefs_common.enable_smooth_scroll, P_BOOL,
747 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
749 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
751 {"hide_quoted", "TRUE",
752 &prefs_common.hide_quoted, P_BOOL,
754 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
756 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
759 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
762 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
764 {"attach_save_directory", NULL,
765 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
766 {"attach_load_directory", NULL,
767 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
770 {"mime_textviewer", NULL,
771 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
772 {"mime_open_command", "gedit '%s'",
773 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
774 {"show_inline_attachments", "TRUE",
775 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
779 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
782 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
785 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
786 NULL, NULL, NULL}, */
787 {"always_show_message_when_selected", "0",
788 &prefs_common.always_show_msg,
789 P_ENUM, NULL, NULL, NULL},
790 {"select_on_entry", "3", &prefs_common.select_on_entry,
791 P_ENUM, NULL, NULL, NULL},
792 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
793 P_BOOL, NULL, NULL, NULL},
795 /* do it SUMMARY_OPEN_ACTIONS-1 times */
796 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
798 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
800 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
802 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
804 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
806 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
808 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
811 {"mark_as_read_on_new_window", "FALSE",
812 &prefs_common.mark_as_read_on_new_window,
813 P_BOOL, NULL, NULL, NULL},
814 {"mark_as_read_delay", "0",
815 &prefs_common.mark_as_read_delay, P_INT,
817 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
819 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
821 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
824 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
825 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
828 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
831 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
833 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
837 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
838 P_BOOL, NULL, NULL, NULL},
839 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
840 P_INT, NULL, NULL, NULL},
841 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
842 P_INT, NULL, NULL, NULL},
846 {"uri_open_command", DEFAULT_BROWSER_CMD,
847 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
849 {"gtk_theme", DEFAULT_W32_GTK_THEME,
850 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
852 {"ext_editor_command", DEFAULT_EDITOR_CMD,
853 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
854 {"cmds_use_system_default", "TRUE",
855 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
856 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
857 P_BOOL, NULL, NULL, NULL},
858 {"session_passwords", "FALSE", &prefs_common.session_passwords,
859 P_BOOL, NULL, NULL, NULL},
860 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
862 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
864 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
866 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
867 P_BOOL, NULL, NULL, NULL},
868 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
870 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
873 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
876 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
880 #if defined(__OpenBSD__)
881 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
882 P_INT, NULL, NULL, NULL},
884 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
885 P_INT, NULL, NULL, NULL},
887 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
889 {"important_score", "1", &prefs_common.important_score, P_INT,
892 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
894 {"log_length", "500", &prefs_common.loglength, P_INT,
897 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
899 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
901 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
903 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
906 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
908 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
910 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
912 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
915 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
917 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
919 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
921 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
923 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
925 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
927 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
929 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
932 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
934 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
936 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
938 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
940 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
942 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
944 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
946 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
948 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
951 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
954 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
957 /* Some windows' sizes */
958 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
960 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
963 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
965 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
968 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
970 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
973 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
975 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
978 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
980 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
983 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
985 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
988 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
990 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
993 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
995 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
998 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1000 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1003 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1005 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1008 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1010 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1013 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1015 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1018 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1021 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1023 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1026 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1028 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1031 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1033 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1036 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1038 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1041 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1043 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1046 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1048 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1051 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1053 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1056 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1058 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1061 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1063 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1066 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1068 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1072 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1074 {"utf8_instead_of_locale_for_broken_mail", "0",
1075 &prefs_common.broken_are_utf8, P_INT,
1077 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1079 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1081 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1083 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1085 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1087 {"folderview_vscrollbar_policy", "0",
1088 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1090 {"textview_cursor_visible", "FALSE",
1091 &prefs_common.textview_cursor_visible, P_BOOL,
1093 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1095 #ifndef GENERIC_UMPC
1096 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1098 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1101 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1103 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1106 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1107 P_INT, NULL, NULL, NULL },
1108 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1109 P_STRING, NULL, NULL, NULL },
1110 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1111 P_BOOL, NULL, NULL, NULL },
1112 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1114 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1116 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1118 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1120 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1122 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1124 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1126 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1128 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1130 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1132 #ifndef GENERIC_UMPC
1133 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1136 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1140 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1142 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1144 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1146 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1148 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1150 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1152 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1154 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1156 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1158 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1160 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1162 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1164 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1166 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1168 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1171 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1172 P_BOOL, NULL, NULL, NULL },
1174 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1177 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1180 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1183 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1185 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1187 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1190 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1192 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1194 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1195 #ifndef PASSWORD_CRYPTO_OLD
1196 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1197 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1198 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1199 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1202 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1206 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1207 * Fallback to default_list if history file is not found
1209 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1210 GList *default_list)
1214 gchar buf[PREFSBUFSIZE];
1218 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1219 G_DIR_SEPARATOR_S, history,
1222 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1225 if ((fp = g_fopen(path, "rb")) == NULL) {
1226 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1228 /* returns default list if set, otherwise NULL */
1229 return default_list;
1232 while (fgets(buf, sizeof(buf), fp) != NULL) {
1234 if (buf[0] == '\0') continue;
1235 tmp = add_history(tmp, buf);
1239 tmp = g_list_reverse(tmp);
1245 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1247 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1249 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1253 * Read history list from the specified history file
1255 static GList *prefs_common_read_history(const gchar *history)
1257 return prefs_common_read_history_from_dir(NULL, history);
1260 void prefs_common_read_config(void)
1265 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1266 prefs_read_config(param, "Common", rcpath, NULL);
1268 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1273 tmp = g_strdup(gettext(prefs_common.date_format));
1274 g_free(prefs_common.date_format);
1275 prefs_common.date_format = tmp;
1277 prefs_common.mime_open_cmd_history =
1278 prefs_common_read_history(COMMAND_HISTORY);
1279 prefs_common.summary_quicksearch_history =
1280 prefs_common_read_history(QUICKSEARCH_HISTORY);
1281 prefs_common.summary_search_from_history =
1282 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1283 prefs_common.summary_search_to_history =
1284 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1285 prefs_common.summary_search_subject_history =
1286 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1287 prefs_common.summary_search_body_history =
1288 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1289 prefs_common.summary_search_adv_condition_history =
1290 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1291 prefs_common.message_search_history =
1292 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1293 prefs_common.compose_save_to_history =
1294 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1295 #ifndef USE_ALT_ADDRBOOK
1296 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1298 colorlabel_update_colortable_from_prefs();
1304 g_warning("failed to write"); \
1309 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1311 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1315 gchar *path, *tmp_path;
1318 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1319 G_DIR_SEPARATOR_S, history,
1322 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1325 tmp_path = g_strconcat(path, ".tmp", NULL);
1327 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1328 FILE_OP_ERROR(tmp_path, "fopen");
1332 for (cur = list; cur != NULL; cur = cur->next) {
1333 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1334 fputc('\n', fp) != EOF);
1337 if (fclose(fp) == EOF) {
1338 FILE_OP_ERROR(tmp_path, "fclose");
1346 if (g_rename(tmp_path, path) < 0) {
1347 FILE_OP_ERROR(path, "rename");
1359 * Save history list to the specified history file
1361 static void prefs_common_save_history(const gchar *history, GList *list)
1363 prefs_common_save_history_to_dir(NULL, history, list);
1368 void prefs_common_write_config(void)
1370 prefs_write_config(param, "Common", COMMON_RC);
1372 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1375 prefs_common_save_history(COMMAND_HISTORY,
1376 prefs_common.mime_open_cmd_history);
1377 prefs_common_save_history(QUICKSEARCH_HISTORY,
1378 prefs_common.summary_quicksearch_history);
1379 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1380 prefs_common.summary_search_from_history);
1381 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1382 prefs_common.summary_search_to_history);
1383 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1384 prefs_common.summary_search_subject_history);
1385 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1386 prefs_common.summary_search_body_history);
1387 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1388 prefs_common.summary_search_adv_condition_history);
1389 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1390 prefs_common.message_search_history);
1391 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1392 prefs_common.compose_save_to_history);
1394 #ifndef USE_ALT_ADDRBOOK
1395 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1396 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1397 prefs_common.addressbook_custom_attributes);
1401 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1402 both 'in' and 'out' must be non-NULL.
1403 'out' must be a pointer to a buffer whose size is at least equal
1404 to strlen(txt)+1, this buffer will get cleared. out's contents
1405 will always get set to a valid string, even if it's "".*/
1406 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1413 cm_return_if_fail( in != NULL );
1414 cm_return_if_fail( out != NULL );
1418 memset(out, 0, strlen(in)+1);
1419 while (*i != '\0') {
1420 if (*i == '\\' && *(i+1) == 'n') {
1423 } else if (*i == '\\' && *(i+1) == 't') {
1426 } else if (*i == '\\' && *(i+1) == '\\') {
1437 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1438 both 'in' and 'out' must be non-NULL.
1439 'out' must be a pointer to a buffer whose size is at least equal
1440 to 2*strlen(txt)+1. out's contents will always get set to a valid
1441 string, even if it's "". */
1442 void pref_get_escaped_pref(gchar *out, const gchar *in)
1449 cm_return_if_fail( in != NULL );
1450 cm_return_if_fail( out != NULL );
1454 while (*i != '\0') {
1458 } else if (*i == '\t') {
1461 } else if (*i == '\\') {
1472 /* set the contents of a textview widget from the internal \-escaped
1473 representation of a pref string. both txt and textview must be non-NULL. */
1474 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1476 GtkTextBuffer *buffer;
1479 cm_return_if_fail( textview != NULL );
1481 buffer = gtk_text_view_get_buffer(textview);
1484 gtk_text_buffer_set_text(buffer, "", -1);
1486 out = g_malloc(strlen(txt)+1);
1488 pref_get_unescaped_pref(out, txt);
1490 gtk_text_buffer_set_text(buffer, out, -1);
1495 /* set the contents of a gtkentry widget from the internal \-escaped
1496 representation of a pref string. both txt and entry must be non-NULL. */
1497 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1501 cm_return_if_fail( entry != NULL );
1503 gtk_entry_set_text(entry, "");
1505 out = g_malloc(strlen(txt)+1);
1507 pref_get_unescaped_pref(out, txt);
1509 gtk_entry_set_text(entry, out);
1514 /* get the \-escaped internal representation of a pref from the contents of
1515 a textview widget. textview must be non-NULL. */
1516 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1518 GtkTextBuffer *buffer;
1519 GtkTextIter start, end;
1522 cm_return_val_if_fail( textview != NULL, "" );
1524 buffer = gtk_text_view_get_buffer(textview);
1525 gtk_text_buffer_get_start_iter(buffer, &start);
1526 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1527 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1528 out = malloc(2*strlen(tmp)+1);
1530 pref_get_escaped_pref(out, tmp);
1536 /* get the \-escaped internal representation of a pref from the contents of
1537 a gtkentry widget. entry must be non-NULL. */
1538 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1542 cm_return_val_if_fail( entry != NULL, "" );
1544 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1545 out = malloc(2*strlen(tmp)+1);
1548 pref_get_escaped_pref(out, tmp);
1554 /* ugly hack to be able to get this pref from ssl_certificate.c */
1555 gboolean prefs_common_unsafe_ssl_certs(void)
1557 return prefs_common.unsafe_ssl_certs;
1560 gboolean prefs_common_enable_log_standard(void)
1562 return prefs_common.enable_log_standard;
1565 gboolean prefs_common_enable_log_warning(void)
1567 return prefs_common.enable_log_warning;
1569 gboolean prefs_common_enable_log_error(void)
1571 return prefs_common.enable_log_error;
1573 gboolean prefs_common_enable_log_status(void)
1575 return prefs_common.enable_log_status;
1579 return the translated name of a header, if the translate_header option is
1580 set, otherwise return the untranslated header name (header_name itself).
1581 this function is provided for convenience, it's an interface to
1582 prefs_common.trans_hdr.
1583 works with header names either with or without trailing colon, provided
1584 that gettext found such header name in the sources (they should all be
1585 found in src/gtk/headers.h anyway).
1587 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1589 if (header_name == NULL || *header_name == '\0')
1592 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1595 const gchar *prefs_common_get_uri_cmd(void)
1602 if (!prefs_common.cmds_use_system_default)
1603 return prefs_common.uri_cmd;
1605 tmp = g_find_program_in_path("xdg-open");
1607 return prefs_common.uri_cmd;
1610 return "xdg-open %s";
1614 const gchar *prefs_common_get_ext_editor_cmd(void)
1616 return prefs_common.ext_editor_cmd;
1617 #if 0 /* we should do that, but it detaches the editor and breaks
1618 compose.c's external composition. */
1621 if (!prefs_common.cmds_use_system_default)
1622 return prefs_common.ext_editor_cmd;
1624 tmp = g_find_program_in_path("xdg-open");
1626 return prefs_common.ext_editor_cmd;
1629 return "xdg-open %s";
1633 gboolean prefs_common_get_use_shred(void)
1635 return prefs_common.use_shred;
1638 gboolean prefs_common_get_flush_metadata (void)
1640 return prefs_common.flush_metadata;
1643 PrefsCommon *prefs_common_get_prefs(void)
1645 return &prefs_common;