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_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1194 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1195 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1196 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1199 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1203 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1204 * Fallback to default_list if history file is not found
1206 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1207 GList *default_list)
1211 gchar buf[PREFSBUFSIZE];
1215 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1216 G_DIR_SEPARATOR_S, history,
1219 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1222 if ((fp = g_fopen(path, "rb")) == NULL) {
1223 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1225 /* returns default list if set, otherwise NULL */
1226 return default_list;
1229 while (fgets(buf, sizeof(buf), fp) != NULL) {
1231 if (buf[0] == '\0') continue;
1232 tmp = add_history(tmp, buf);
1236 tmp = g_list_reverse(tmp);
1242 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1244 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1246 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1250 * Read history list from the specified history file
1252 static GList *prefs_common_read_history(const gchar *history)
1254 return prefs_common_read_history_from_dir(NULL, history);
1257 void prefs_common_read_config(void)
1262 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1263 prefs_read_config(param, "Common", rcpath, NULL);
1265 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1270 tmp = g_strdup(gettext(prefs_common.date_format));
1271 g_free(prefs_common.date_format);
1272 prefs_common.date_format = tmp;
1274 prefs_common.mime_open_cmd_history =
1275 prefs_common_read_history(COMMAND_HISTORY);
1276 prefs_common.summary_quicksearch_history =
1277 prefs_common_read_history(QUICKSEARCH_HISTORY);
1278 prefs_common.summary_search_from_history =
1279 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1280 prefs_common.summary_search_to_history =
1281 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1282 prefs_common.summary_search_subject_history =
1283 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1284 prefs_common.summary_search_body_history =
1285 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1286 prefs_common.summary_search_adv_condition_history =
1287 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1288 prefs_common.message_search_history =
1289 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1290 prefs_common.compose_save_to_history =
1291 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1292 #ifndef USE_ALT_ADDRBOOK
1293 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1295 colorlabel_update_colortable_from_prefs();
1301 g_warning("failed to write"); \
1306 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1308 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1312 gchar *path, *tmp_path;
1315 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1316 G_DIR_SEPARATOR_S, history,
1319 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1322 tmp_path = g_strconcat(path, ".tmp", NULL);
1324 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1325 FILE_OP_ERROR(tmp_path, "fopen");
1329 for (cur = list; cur != NULL; cur = cur->next) {
1330 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1331 fputc('\n', fp) != EOF);
1334 if (fclose(fp) == EOF) {
1335 FILE_OP_ERROR(tmp_path, "fclose");
1343 if (g_rename(tmp_path, path) < 0) {
1344 FILE_OP_ERROR(path, "rename");
1356 * Save history list to the specified history file
1358 static void prefs_common_save_history(const gchar *history, GList *list)
1360 prefs_common_save_history_to_dir(NULL, history, list);
1365 void prefs_common_write_config(void)
1367 prefs_write_config(param, "Common", COMMON_RC);
1369 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1372 prefs_common_save_history(COMMAND_HISTORY,
1373 prefs_common.mime_open_cmd_history);
1374 prefs_common_save_history(QUICKSEARCH_HISTORY,
1375 prefs_common.summary_quicksearch_history);
1376 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1377 prefs_common.summary_search_from_history);
1378 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1379 prefs_common.summary_search_to_history);
1380 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1381 prefs_common.summary_search_subject_history);
1382 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1383 prefs_common.summary_search_body_history);
1384 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1385 prefs_common.summary_search_adv_condition_history);
1386 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1387 prefs_common.message_search_history);
1388 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1389 prefs_common.compose_save_to_history);
1391 #ifndef USE_ALT_ADDRBOOK
1392 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1393 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1394 prefs_common.addressbook_custom_attributes);
1398 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1399 both 'in' and 'out' must be non-NULL.
1400 'out' must be a pointer to a buffer whose size is at least equal
1401 to strlen(txt)+1, this buffer will get cleared. out's contents
1402 will always get set to a valid string, even if it's "".*/
1403 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1410 cm_return_if_fail( in != NULL );
1411 cm_return_if_fail( out != NULL );
1415 memset(out, 0, strlen(in)+1);
1416 while (*i != '\0') {
1417 if (*i == '\\' && *(i+1) == 'n') {
1420 } else if (*i == '\\' && *(i+1) == 't') {
1423 } else if (*i == '\\' && *(i+1) == '\\') {
1434 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1435 both 'in' and 'out' must be non-NULL.
1436 'out' must be a pointer to a buffer whose size is at least equal
1437 to 2*strlen(txt)+1. out's contents will always get set to a valid
1438 string, even if it's "". */
1439 void pref_get_escaped_pref(gchar *out, const gchar *in)
1446 cm_return_if_fail( in != NULL );
1447 cm_return_if_fail( out != NULL );
1451 while (*i != '\0') {
1455 } else if (*i == '\t') {
1458 } else if (*i == '\\') {
1469 /* set the contents of a textview widget from the internal \-escaped
1470 representation of a pref string. both txt and textview must be non-NULL. */
1471 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1473 GtkTextBuffer *buffer;
1476 cm_return_if_fail( textview != NULL );
1478 buffer = gtk_text_view_get_buffer(textview);
1481 gtk_text_buffer_set_text(buffer, "", -1);
1483 out = g_malloc(strlen(txt)+1);
1485 pref_get_unescaped_pref(out, txt);
1487 gtk_text_buffer_set_text(buffer, out, -1);
1492 /* set the contents of a gtkentry widget from the internal \-escaped
1493 representation of a pref string. both txt and entry must be non-NULL. */
1494 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1498 cm_return_if_fail( entry != NULL );
1500 gtk_entry_set_text(entry, "");
1502 out = g_malloc(strlen(txt)+1);
1504 pref_get_unescaped_pref(out, txt);
1506 gtk_entry_set_text(entry, out);
1511 /* get the \-escaped internal representation of a pref from the contents of
1512 a textview widget. textview must be non-NULL. */
1513 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1515 GtkTextBuffer *buffer;
1516 GtkTextIter start, end;
1519 cm_return_val_if_fail( textview != NULL, "" );
1521 buffer = gtk_text_view_get_buffer(textview);
1522 gtk_text_buffer_get_start_iter(buffer, &start);
1523 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1524 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1525 out = malloc(2*strlen(tmp)+1);
1527 pref_get_escaped_pref(out, tmp);
1533 /* get the \-escaped internal representation of a pref from the contents of
1534 a gtkentry widget. entry must be non-NULL. */
1535 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1539 cm_return_val_if_fail( entry != NULL, "" );
1541 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1542 out = malloc(2*strlen(tmp)+1);
1545 pref_get_escaped_pref(out, tmp);
1551 /* ugly hack to be able to get this pref from ssl_certificate.c */
1552 gboolean prefs_common_unsafe_ssl_certs(void)
1554 return prefs_common.unsafe_ssl_certs;
1557 gboolean prefs_common_enable_log_standard(void)
1559 return prefs_common.enable_log_standard;
1562 gboolean prefs_common_enable_log_warning(void)
1564 return prefs_common.enable_log_warning;
1566 gboolean prefs_common_enable_log_error(void)
1568 return prefs_common.enable_log_error;
1570 gboolean prefs_common_enable_log_status(void)
1572 return prefs_common.enable_log_status;
1576 return the translated name of a header, if the translate_header option is
1577 set, otherwise return the untranslated header name (header_name itself).
1578 this function is provided for convenience, it's an interface to
1579 prefs_common.trans_hdr.
1580 works with header names either with or without trailing colon, provided
1581 that gettext found such header name in the sources (they should all be
1582 found in src/gtk/headers.h anyway).
1584 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1586 if (header_name == NULL || *header_name == '\0')
1589 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1592 const gchar *prefs_common_get_uri_cmd(void)
1599 if (!prefs_common.cmds_use_system_default)
1600 return prefs_common.uri_cmd;
1602 tmp = g_find_program_in_path("xdg-open");
1604 return prefs_common.uri_cmd;
1607 return "xdg-open %s";
1611 const gchar *prefs_common_get_ext_editor_cmd(void)
1613 return prefs_common.ext_editor_cmd;
1614 #if 0 /* we should do that, but it detaches the editor and breaks
1615 compose.c's external composition. */
1618 if (!prefs_common.cmds_use_system_default)
1619 return prefs_common.ext_editor_cmd;
1621 tmp = g_find_program_in_path("xdg-open");
1623 return prefs_common.ext_editor_cmd;
1626 return "xdg-open %s";
1630 gboolean prefs_common_get_use_shred(void)
1632 return prefs_common.use_shred;
1635 gboolean prefs_common_get_flush_metadata (void)
1637 return prefs_common.flush_metadata;
1640 PrefsCommon *prefs_common_get_prefs(void)
1642 return &prefs_common;