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[] = {
145 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
147 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
150 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
152 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
154 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
156 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
157 P_BOOL, NULL, NULL, NULL},
158 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
159 P_BOOL, NULL, NULL, NULL},
160 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
161 P_BOOL, NULL, NULL, NULL},
162 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
163 P_BOOL, NULL, NULL, NULL},
164 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
166 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
168 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
170 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
172 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
173 P_BOOL, NULL, NULL, NULL},
174 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
175 P_BOOL, NULL, NULL, NULL},
178 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
180 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
181 P_BOOL, NULL, NULL, NULL},
183 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
186 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
189 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
191 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
194 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
196 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
198 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
200 {"warn_empty_subj", "TRUE", &prefs_common.warn_empty_subj,
201 P_BOOL, NULL, NULL, NULL},
203 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
204 P_BOOL, NULL, NULL, NULL},
207 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
209 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
210 P_BOOL, NULL, NULL, NULL},
211 {"redirect_keep_from", "FALSE",
212 &prefs_common.redirect_keep_from, P_BOOL,
214 {"undo_level", "50", &prefs_common.undolevels, P_INT,
216 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
218 {"compose_subject_format", "",
219 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
220 {"compose_body_format", N_("Hello,\\n"),
221 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
222 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
224 {"type_any_header", "FALSE", &prefs_common.type_any_header, P_BOOL,
228 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
230 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
232 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
234 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
236 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
238 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
240 {"autosave", "TRUE", &prefs_common.autosave,
241 P_BOOL, NULL, NULL, NULL},
242 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
244 {"autosave_encrypted", "FALSE", &prefs_common.autosave_encrypted,
245 P_BOOL, NULL, NULL, NULL},
246 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
247 P_BOOL, NULL, NULL, NULL},
248 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
249 P_INT, NULL, NULL, NULL},
251 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
253 {"dictionary", "", &prefs_common.dictionary, P_STRING,
255 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
257 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
259 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
261 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
262 P_BOOL, NULL, NULL, NULL},
263 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
265 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
268 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
270 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
273 /* Account autoselection */
274 {"reply_account_autoselect", "TRUE",
275 &prefs_common.reply_account_autosel, P_BOOL,
277 {"forward_account_autoselect", "TRUE",
278 &prefs_common.forward_account_autosel, P_BOOL,
280 {"reedit_account_autoselect", "TRUE",
281 &prefs_common.reedit_account_autosel, P_BOOL,
284 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
288 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
291 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
296 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
298 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
299 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
301 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
303 {"forward_quote_format",
304 N_("\\n\\nBegin forwarded message:\\n\\n"
305 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
306 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
307 &prefs_common.fw_quotefmt, P_STRING,
309 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
313 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
314 {"widget_font", NULL,
315 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
317 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
318 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
319 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
320 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
321 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
322 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
323 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
327 {"widget_font_gtk2", NULL,
328 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
329 {"message_font_gtk2", "Monospace 9",
330 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
331 {"print_font_gtk2", "Monospace 9",
332 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
333 {"small_font_gtk2", "Sans 9",
334 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
335 {"normal_font_gtk2", "Sans 9",
336 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
337 {"bold_font_gtk2", "Sans Bold 9",
338 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
340 {"widget_font_gtk2", NULL,
341 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
342 {"message_font_gtk2", "Monospace 8",
343 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
344 {"print_font_gtk2", "Monospace 8",
345 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
346 {"small_font_gtk2", "Sans 8",
347 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
348 {"normal_font_gtk2", "Sans 8",
349 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
350 {"bold_font_gtk2", "Sans Bold 8",
351 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
354 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
356 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
360 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
362 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
364 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
366 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
368 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
370 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
372 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
374 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
376 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
378 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
380 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
382 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
384 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
386 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
388 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
390 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
392 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
394 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
396 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
398 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
400 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
402 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
404 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
406 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
408 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
410 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
412 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
414 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
416 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
418 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
422 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
424 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
426 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
429 {"display_folder_unread_num", "0",
430 &prefs_common.display_folder_unread, P_INT,
432 {"newsgroup_abbrev_len", "16",
433 &prefs_common.ng_abbrev_len, P_INT,
436 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
439 /* Display: Summary View */
440 {"default_sort_key", "3", &prefs_common.default_sort_key, P_ENUM,
442 {"default_sort_type", "1", &prefs_common.default_sort_type, P_ENUM,
444 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
446 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
448 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
449 P_STRING, NULL, NULL, NULL},
450 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
453 {"next_on_delete", "FALSE", &prefs_common.next_on_delete, P_BOOL,
456 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
459 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
462 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
465 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
468 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
470 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
473 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
475 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
478 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
480 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
484 {"summary_col_show_mark", "TRUE",
485 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
486 {"summary_col_show_unread", "TRUE",
487 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
488 {"summary_col_show_subject", "TRUE",
489 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
490 {"summary_col_show_from", "TRUE",
491 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
492 {"summary_col_show_to", "FALSE",
493 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
494 {"summary_col_show_date", "TRUE",
495 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
496 {"summary_col_show_mime", "TRUE",
497 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
498 {"summary_col_show_size", "TRUE",
499 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
500 {"summary_col_show_number", "FALSE",
501 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
502 {"summary_col_show_score", "FALSE",
503 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
504 {"summary_col_show_locked", "FALSE",
505 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
506 {"summary_col_show_tags", "FALSE",
507 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
509 {"summary_col_pos_mark", "0",
510 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
511 {"summary_col_pos_unread", "1",
512 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
513 {"summary_col_pos_mime", "2",
514 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
515 {"summary_col_pos_subject", "3",
516 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
517 {"summary_col_pos_from", "4",
518 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
519 {"summary_col_pos_date", "5",
520 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
521 {"summary_col_pos_size", "6",
522 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
523 {"summary_col_pos_number", "7",
524 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
525 {"summary_col_pos_score", "8",
526 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
527 {"summary_col_pos_locked", "9",
528 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
529 {"summary_col_pos_to", "10",
530 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
531 {"summary_col_pos_tags", "11",
532 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_mark", "10",
535 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
536 {"summary_col_size_unread", "13",
537 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
538 {"summary_col_size_mime", "10",
539 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_subject", "200",
542 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_from", "120",
544 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_to", "120",
546 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
548 {"summary_col_size_subject", "300",
549 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
550 {"summary_col_size_from", "150",
551 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
552 {"summary_col_size_to", "150",
553 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
556 {"summary_col_size_date", "118",
557 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
558 {"summary_col_size_size", "45",
559 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
560 {"summary_col_size_number", "40",
561 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
562 {"summary_col_size_score", "40",
563 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
564 {"summary_col_size_locked", "13",
565 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
566 {"summary_col_size_tags", "150",
567 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
570 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
572 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
574 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
576 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
578 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
581 {"folder_col_show_folder", "TRUE",
582 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
583 {"folder_col_show_new", "TRUE",
584 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
585 {"folder_col_show_unread", "TRUE",
586 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
587 {"folder_col_show_total", "TRUE",
588 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
590 {"folder_col_pos_folder", "0",
591 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
592 {"folder_col_pos_new", "1",
593 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
594 {"folder_col_pos_unread", "2",
595 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
596 {"folder_col_pos_total", "3",
597 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_folder", "120",
601 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_new", "32",
603 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
604 {"folder_col_size_unread", "32",
605 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
606 {"folder_col_size_total", "32",
607 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
609 {"folder_col_size_folder", "400",
610 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
611 {"folder_col_size_new", "32",
612 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
613 {"folder_col_size_unread", "32",
614 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
615 {"folder_col_size_total", "32",
616 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
618 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
620 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
623 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
625 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
627 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
629 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
631 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
634 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
636 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
638 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
640 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
642 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
644 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
646 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
648 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
650 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
653 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
655 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
657 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
659 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
661 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
663 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
665 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
667 {"compose_width", "600", &prefs_common.compose_width, P_INT,
669 {"compose_height", "560", &prefs_common.compose_height, P_INT,
672 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
674 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
676 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
678 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
680 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
682 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
684 {"compose_width", "700", &prefs_common.compose_width, P_INT,
686 {"compose_height", "470", &prefs_common.compose_height, P_INT,
689 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
691 {"compose_x", "0", &prefs_common.compose_x, P_INT,
693 {"compose_y", "0", &prefs_common.compose_y, P_INT,
696 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
699 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
701 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
703 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
705 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
707 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
709 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
711 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
713 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
715 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
717 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
719 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
721 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
722 P_BOOL, NULL, NULL, NULL},
724 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
725 P_BOOL, NULL, NULL, NULL},
726 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
728 {"display_xface", "TRUE", &prefs_common.display_xface,
729 P_BOOL, NULL, NULL, NULL},
730 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
732 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
734 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
736 {"line_space", "2", &prefs_common.line_space, P_INT,
738 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
741 {"enable_smooth_scroll", "FALSE",
742 &prefs_common.enable_smooth_scroll, P_BOOL,
744 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
746 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
748 {"hide_quoted", "TRUE",
749 &prefs_common.hide_quoted, P_BOOL,
751 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
753 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
756 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
759 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
761 {"attach_save_directory", NULL,
762 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
763 {"attach_load_directory", NULL,
764 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
767 {"mime_textviewer", NULL,
768 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
769 {"mime_open_command", "gedit '%s'",
770 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
771 {"show_inline_attachments", "TRUE",
772 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
776 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
779 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
782 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
783 NULL, NULL, NULL}, */
784 {"always_show_message_when_selected", "0",
785 &prefs_common.always_show_msg,
786 P_ENUM, NULL, NULL, NULL},
787 {"select_on_entry", "3", &prefs_common.select_on_entry,
788 P_ENUM, NULL, NULL, NULL},
789 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
790 P_BOOL, NULL, NULL, NULL},
792 /* do it SUMMARY_OPEN_ACTIONS-1 times */
793 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
795 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
797 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
799 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
801 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
803 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
805 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
808 {"mark_as_read_on_new_window", "FALSE",
809 &prefs_common.mark_as_read_on_new_window,
810 P_BOOL, NULL, NULL, NULL},
811 {"mark_as_read_delay", "0",
812 &prefs_common.mark_as_read_delay, P_INT,
814 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
816 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
818 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
821 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
822 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
825 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
828 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
830 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
834 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
835 P_BOOL, NULL, NULL, NULL},
836 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
837 P_INT, NULL, NULL, NULL},
838 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
839 P_INT, NULL, NULL, NULL},
843 {"uri_open_command", DEFAULT_BROWSER_CMD,
844 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
846 {"gtk_theme", DEFAULT_W32_GTK_THEME,
847 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
849 {"ext_editor_command", DEFAULT_EDITOR_CMD,
850 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
851 {"cmds_use_system_default", "TRUE",
852 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
853 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
854 P_BOOL, NULL, NULL, NULL},
855 {"session_passwords", "FALSE", &prefs_common.session_passwords,
856 P_BOOL, NULL, NULL, NULL},
857 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
859 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
861 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
863 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
864 P_BOOL, NULL, NULL, NULL},
865 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
867 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
870 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
873 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
877 #if defined(__OpenBSD__)
878 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
879 P_INT, NULL, NULL, NULL},
881 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
882 P_INT, NULL, NULL, NULL},
884 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
886 {"important_score", "1", &prefs_common.important_score, P_INT,
889 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
891 {"log_length", "500", &prefs_common.loglength, P_INT,
894 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
896 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
898 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
900 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
903 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
905 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
907 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
909 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
912 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
914 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
916 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
918 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
920 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
922 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
924 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
926 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
929 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
931 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
933 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
935 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
937 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
939 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
941 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
943 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
945 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
948 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
951 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
954 /* Some windows' sizes */
955 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
957 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
960 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
962 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
965 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
967 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
970 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
972 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
975 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
977 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
980 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
982 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
985 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
987 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
990 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
992 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
995 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
997 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1000 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1002 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1005 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1007 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1010 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1012 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1015 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1018 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1020 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1023 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1025 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1028 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1030 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1033 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1035 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1038 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1040 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1043 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1045 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1048 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1050 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1053 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1055 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1058 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1060 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1063 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1065 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1069 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1071 {"utf8_instead_of_locale_for_broken_mail", "0",
1072 &prefs_common.broken_are_utf8, P_INT,
1074 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1076 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1078 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1080 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1082 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1084 {"folderview_vscrollbar_policy", "0",
1085 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1087 {"textview_cursor_visible", "FALSE",
1088 &prefs_common.textview_cursor_visible, P_BOOL,
1090 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1092 #ifndef GENERIC_UMPC
1093 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1095 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1098 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1100 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1103 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1104 P_INT, NULL, NULL, NULL },
1105 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1106 P_STRING, NULL, NULL, NULL },
1107 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1108 P_BOOL, NULL, NULL, NULL },
1109 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1111 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1113 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1115 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1117 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1119 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1121 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1123 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1125 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1127 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1129 #ifndef GENERIC_UMPC
1130 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1133 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1137 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1139 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1141 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1143 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1145 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1147 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1149 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1151 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1153 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1155 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1157 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1159 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1161 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1163 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1165 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1168 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1169 P_BOOL, NULL, NULL, NULL },
1171 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1174 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1177 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1180 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1182 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1184 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1187 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1189 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1191 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1192 #ifndef PASSWORD_CRYPTO_OLD
1193 {"use_master_password", FALSE, &prefs_common.use_master_password, P_BOOL, NULL, NULL, NULL },
1194 {"master_password_hash", "", &prefs_common.master_password_hash, P_STRING, NULL, NULL, NULL },
1197 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1201 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1202 * Fallback to default_list if history file is not found
1204 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1205 GList *default_list)
1209 gchar buf[PREFSBUFSIZE];
1213 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1214 G_DIR_SEPARATOR_S, history,
1217 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1220 if ((fp = g_fopen(path, "rb")) == NULL) {
1221 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1223 /* returns default list if set, otherwise NULL */
1224 return default_list;
1227 while (fgets(buf, sizeof(buf), fp) != NULL) {
1229 if (buf[0] == '\0') continue;
1230 tmp = add_history(tmp, buf);
1234 tmp = g_list_reverse(tmp);
1240 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1242 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1244 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1248 * Read history list from the specified history file
1250 static GList *prefs_common_read_history(const gchar *history)
1252 return prefs_common_read_history_from_dir(NULL, history);
1255 void prefs_common_read_config(void)
1260 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1261 prefs_read_config(param, "Common", rcpath, NULL);
1263 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1268 tmp = g_strdup(gettext(prefs_common.date_format));
1269 g_free(prefs_common.date_format);
1270 prefs_common.date_format = tmp;
1272 prefs_common.mime_open_cmd_history =
1273 prefs_common_read_history(COMMAND_HISTORY);
1274 prefs_common.summary_quicksearch_history =
1275 prefs_common_read_history(QUICKSEARCH_HISTORY);
1276 prefs_common.summary_search_from_history =
1277 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1278 prefs_common.summary_search_to_history =
1279 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1280 prefs_common.summary_search_subject_history =
1281 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1282 prefs_common.summary_search_body_history =
1283 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1284 prefs_common.summary_search_adv_condition_history =
1285 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1286 prefs_common.message_search_history =
1287 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1288 prefs_common.compose_save_to_history =
1289 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1290 #ifndef USE_ALT_ADDRBOOK
1291 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1293 colorlabel_update_colortable_from_prefs();
1299 g_warning("failed to write"); \
1304 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1306 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1310 gchar *path, *tmp_path;
1313 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1314 G_DIR_SEPARATOR_S, history,
1317 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1320 tmp_path = g_strconcat(path, ".tmp", NULL);
1322 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1323 FILE_OP_ERROR(tmp_path, "fopen");
1327 for (cur = list; cur != NULL; cur = cur->next) {
1328 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1329 fputc('\n', fp) != EOF);
1332 if (fclose(fp) == EOF) {
1333 FILE_OP_ERROR(tmp_path, "fclose");
1341 if (g_rename(tmp_path, path) < 0) {
1342 FILE_OP_ERROR(path, "rename");
1354 * Save history list to the specified history file
1356 static void prefs_common_save_history(const gchar *history, GList *list)
1358 prefs_common_save_history_to_dir(NULL, history, list);
1363 void prefs_common_write_config(void)
1365 prefs_write_config(param, "Common", COMMON_RC);
1367 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1370 prefs_common_save_history(COMMAND_HISTORY,
1371 prefs_common.mime_open_cmd_history);
1372 prefs_common_save_history(QUICKSEARCH_HISTORY,
1373 prefs_common.summary_quicksearch_history);
1374 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1375 prefs_common.summary_search_from_history);
1376 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1377 prefs_common.summary_search_to_history);
1378 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1379 prefs_common.summary_search_subject_history);
1380 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1381 prefs_common.summary_search_body_history);
1382 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1383 prefs_common.summary_search_adv_condition_history);
1384 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1385 prefs_common.message_search_history);
1386 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1387 prefs_common.compose_save_to_history);
1389 #ifndef USE_ALT_ADDRBOOK
1390 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1391 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1392 prefs_common.addressbook_custom_attributes);
1396 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1397 both 'in' and 'out' must be non-NULL.
1398 'out' must be a pointer to a buffer whose size is at least equal
1399 to strlen(txt)+1, this buffer will get cleared. out's contents
1400 will always get set to a valid string, even if it's "".*/
1401 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1408 cm_return_if_fail( in != NULL );
1409 cm_return_if_fail( out != NULL );
1413 memset(out, 0, strlen(in)+1);
1414 while (*i != '\0') {
1415 if (*i == '\\' && *(i+1) == 'n') {
1418 } else if (*i == '\\' && *(i+1) == 't') {
1421 } else if (*i == '\\' && *(i+1) == '\\') {
1432 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1433 both 'in' and 'out' must be non-NULL.
1434 'out' must be a pointer to a buffer whose size is at least equal
1435 to 2*strlen(txt)+1. out's contents will always get set to a valid
1436 string, even if it's "". */
1437 void pref_get_escaped_pref(gchar *out, const gchar *in)
1444 cm_return_if_fail( in != NULL );
1445 cm_return_if_fail( out != NULL );
1449 while (*i != '\0') {
1453 } else if (*i == '\t') {
1456 } else if (*i == '\\') {
1467 /* set the contents of a textview widget from the internal \-escaped
1468 representation of a pref string. both txt and textview must be non-NULL. */
1469 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1471 GtkTextBuffer *buffer;
1474 cm_return_if_fail( textview != NULL );
1476 buffer = gtk_text_view_get_buffer(textview);
1479 gtk_text_buffer_set_text(buffer, "", -1);
1481 out = g_malloc(strlen(txt)+1);
1483 pref_get_unescaped_pref(out, txt);
1485 gtk_text_buffer_set_text(buffer, out, -1);
1490 /* set the contents of a gtkentry widget from the internal \-escaped
1491 representation of a pref string. both txt and entry must be non-NULL. */
1492 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1496 cm_return_if_fail( entry != NULL );
1498 gtk_entry_set_text(entry, "");
1500 out = g_malloc(strlen(txt)+1);
1502 pref_get_unescaped_pref(out, txt);
1504 gtk_entry_set_text(entry, out);
1509 /* get the \-escaped internal representation of a pref from the contents of
1510 a textview widget. textview must be non-NULL. */
1511 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1513 GtkTextBuffer *buffer;
1514 GtkTextIter start, end;
1517 cm_return_val_if_fail( textview != NULL, "" );
1519 buffer = gtk_text_view_get_buffer(textview);
1520 gtk_text_buffer_get_start_iter(buffer, &start);
1521 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1522 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1523 out = malloc(2*strlen(tmp)+1);
1525 pref_get_escaped_pref(out, tmp);
1531 /* get the \-escaped internal representation of a pref from the contents of
1532 a gtkentry widget. entry must be non-NULL. */
1533 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1537 cm_return_val_if_fail( entry != NULL, "" );
1539 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1540 out = malloc(2*strlen(tmp)+1);
1543 pref_get_escaped_pref(out, tmp);
1549 /* ugly hack to be able to get this pref from ssl_certificate.c */
1550 gboolean prefs_common_unsafe_ssl_certs(void)
1552 return prefs_common.unsafe_ssl_certs;
1555 gboolean prefs_common_enable_log_standard(void)
1557 return prefs_common.enable_log_standard;
1560 gboolean prefs_common_enable_log_warning(void)
1562 return prefs_common.enable_log_warning;
1564 gboolean prefs_common_enable_log_error(void)
1566 return prefs_common.enable_log_error;
1568 gboolean prefs_common_enable_log_status(void)
1570 return prefs_common.enable_log_status;
1574 return the translated name of a header, if the translate_header option is
1575 set, otherwise return the untranslated header name (header_name itself).
1576 this function is provided for convenience, it's an interface to
1577 prefs_common.trans_hdr.
1578 works with header names either with or without trailing colon, provided
1579 that gettext found such header name in the sources (they should all be
1580 found in src/gtk/headers.h anyway).
1582 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1584 if (header_name == NULL || *header_name == '\0')
1587 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1590 const gchar *prefs_common_get_uri_cmd(void)
1597 if (!prefs_common.cmds_use_system_default)
1598 return prefs_common.uri_cmd;
1600 tmp = g_find_program_in_path("xdg-open");
1602 return prefs_common.uri_cmd;
1605 return "xdg-open %s";
1609 const gchar *prefs_common_get_ext_editor_cmd(void)
1611 return prefs_common.ext_editor_cmd;
1612 #if 0 /* we should do that, but it detaches the editor and breaks
1613 compose.c's external composition. */
1616 if (!prefs_common.cmds_use_system_default)
1617 return prefs_common.ext_editor_cmd;
1619 tmp = g_find_program_in_path("xdg-open");
1621 return prefs_common.ext_editor_cmd;
1624 return "xdg-open %s";
1628 gboolean prefs_common_get_use_shred(void)
1630 return prefs_common.use_shred;
1633 gboolean prefs_common_get_flush_metadata (void)
1635 return prefs_common.flush_metadata;
1638 PrefsCommon *prefs_common_get_prefs(void)
1640 return &prefs_common;