2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2016 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/>.
21 #include "claws-features.h"
27 #include <glib/gi18n.h>
29 #include <gdk/gdkkeysyms.h>
34 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "mainwindow.h"
45 #include "summaryview.h"
46 #include "folderview.h"
47 #include "messageview.h"
48 #include "manage_window.h"
54 #include "alertpanel.h"
58 #include "folderview.h"
59 #include "stock_pixmap.h"
60 #include "prefswindow.h"
61 #include "colorlabel.h"
62 #ifndef USE_ALT_ADDRBOOK
63 #include "addrcustomattr.h"
72 PrefsCommon prefs_common;
78 * In the Windows version prefs_common contains
79 * - the non-OS-specific settings of the "Common" section and
80 * - the OS-specific settings of the "CommonWin32" section
81 * The OS-specific settings of the "Common" section are not used
82 * but saved in prefs_unix.
85 # define SPECIFIC_PREFS prefs_unix
87 static PrefsCommon prefs_unix;
89 static PrefParam param_os_specific[] = {
92 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
93 {"newmail_notify_cmd", "",
94 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
97 {"widget_font_gtk2", NULL,
98 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
99 {"message_font_gtk2", "Monospace 9",
100 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
101 {"print_font_gtk2", "Monospace 9",
102 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
103 {"small_font_gtk2", "Sans 9",
104 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
105 {"normal_font_gtk2", "Sans 9",
106 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
107 {"bold_font_gtk2", "Sans 9 Bold",
108 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
110 {"attach_save_directory", NULL,
111 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
112 {"attach_load_directory", NULL,
113 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
116 {"mime_textviewer", NULL,
117 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
118 {"mime_open_command", "notepad '%s'",
119 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
122 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
123 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
126 {"ext_editor_command", "notepad %s",
127 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
129 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
132 # define SPECIFIC_PREFS prefs_common
136 parameter name, default value, pointer to the prefs variable, data type,
137 pointer to the widget pointer,
138 pointer to the function for data setting,
139 pointer to the function for widget setting
142 static PrefParam param[] = {
143 {"config_version", "0",
144 &prefs_common.config_version, P_INT, NULL, NULL, NULL},
147 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
149 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
152 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
154 {"autochk_interval", "600", &prefs_common.autochk_itv, P_INT,
156 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
158 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
159 P_BOOL, NULL, NULL, NULL},
160 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
161 P_BOOL, NULL, NULL, NULL},
162 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
163 P_BOOL, NULL, NULL, NULL},
164 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
165 P_BOOL, NULL, NULL, NULL},
166 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
168 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
170 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
172 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
174 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
175 P_BOOL, NULL, NULL, NULL},
176 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
177 P_BOOL, NULL, NULL, NULL},
180 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
182 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
183 P_BOOL, NULL, NULL, NULL},
185 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
188 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
191 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
193 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
196 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
198 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
200 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
202 {"warn_empty_subj", "TRUE", &prefs_common.warn_empty_subj,
203 P_BOOL, NULL, NULL, NULL},
205 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
206 P_BOOL, NULL, NULL, NULL},
209 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
211 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
212 P_BOOL, NULL, NULL, NULL},
213 {"redirect_keep_from", "FALSE",
214 &prefs_common.redirect_keep_from, P_BOOL,
216 {"undo_level", "50", &prefs_common.undolevels, P_INT,
218 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
220 {"compose_subject_format", "",
221 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
222 {"compose_body_format", N_("Hello,\\n"),
223 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
224 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
226 {"type_any_header", "FALSE", &prefs_common.type_any_header, P_BOOL,
230 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
232 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
234 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
236 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
238 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
240 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
242 {"autosave", "TRUE", &prefs_common.autosave,
243 P_BOOL, NULL, NULL, NULL},
244 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
246 {"autosave_encrypted", "FALSE", &prefs_common.autosave_encrypted,
247 P_BOOL, NULL, NULL, NULL},
248 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
249 P_BOOL, NULL, NULL, NULL},
250 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
251 P_INT, NULL, NULL, NULL},
253 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
255 {"dictionary", "", &prefs_common.dictionary, P_STRING,
257 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
259 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
261 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
263 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
264 P_BOOL, NULL, NULL, NULL},
265 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
267 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
270 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
272 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
275 /* Account autoselection */
276 {"reply_account_autoselect", "TRUE",
277 &prefs_common.reply_account_autosel, P_BOOL,
279 {"forward_account_autoselect", "TRUE",
280 &prefs_common.forward_account_autosel, P_BOOL,
282 {"reedit_account_autoselect", "TRUE",
283 &prefs_common.reedit_account_autosel, P_BOOL,
286 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
290 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
293 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
298 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
300 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
301 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
303 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
305 {"forward_quote_format",
306 N_("\\n\\nBegin forwarded message:\\n\\n"
307 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
308 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
309 &prefs_common.fw_quotefmt, P_STRING,
311 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
315 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
316 {"widget_font", NULL,
317 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
318 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
319 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
320 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
321 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
322 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
323 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
324 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
325 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
329 {"widget_font_gtk2", NULL,
330 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
331 {"message_font_gtk2", "Monospace 9",
332 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
333 {"print_font_gtk2", "Monospace 9",
334 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
335 {"small_font_gtk2", "Sans 9",
336 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
337 {"normal_font_gtk2", "Sans 9",
338 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
339 {"bold_font_gtk2", "Sans Bold 9",
340 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
342 {"widget_font_gtk2", NULL,
343 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
344 {"message_font_gtk2", "Monospace 8",
345 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
346 {"print_font_gtk2", "Monospace 8",
347 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
348 {"small_font_gtk2", "Sans 8",
349 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
350 {"normal_font_gtk2", "Sans 8",
351 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
352 {"bold_font_gtk2", "Sans Bold 8",
353 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
356 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
358 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
362 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
364 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
366 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
368 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
370 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
372 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
374 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
376 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
378 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
380 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
382 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
384 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
386 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
388 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
390 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
392 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
394 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
396 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
398 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
400 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
402 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
404 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
406 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
408 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
410 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
412 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
414 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
416 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
418 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
420 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
424 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
426 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
428 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
431 {"display_folder_unread_num", "0",
432 &prefs_common.display_folder_unread, P_INT,
434 {"newsgroup_abbrev_len", "16",
435 &prefs_common.ng_abbrev_len, P_INT,
438 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
441 /* Display: Summary View */
442 {"default_sort_key", "3", &prefs_common.default_sort_key, P_ENUM,
444 {"default_sort_type", "1", &prefs_common.default_sort_type, P_ENUM,
446 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
448 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
450 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
451 P_STRING, NULL, NULL, NULL},
452 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
455 {"next_on_delete", "FALSE", &prefs_common.next_on_delete, P_BOOL,
458 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
461 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
464 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
467 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
470 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
472 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
475 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
477 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
480 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
482 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
486 {"summary_col_show_mark", "TRUE",
487 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
488 {"summary_col_show_unread", "TRUE",
489 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
490 {"summary_col_show_subject", "TRUE",
491 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
492 {"summary_col_show_from", "TRUE",
493 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
494 {"summary_col_show_to", "FALSE",
495 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
496 {"summary_col_show_date", "TRUE",
497 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
498 {"summary_col_show_mime", "TRUE",
499 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
500 {"summary_col_show_size", "TRUE",
501 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
502 {"summary_col_show_number", "FALSE",
503 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
504 {"summary_col_show_score", "FALSE",
505 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
506 {"summary_col_show_locked", "FALSE",
507 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
508 {"summary_col_show_tags", "FALSE",
509 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
511 {"summary_col_pos_mark", "0",
512 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
513 {"summary_col_pos_unread", "1",
514 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
515 {"summary_col_pos_mime", "2",
516 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
517 {"summary_col_pos_subject", "3",
518 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
519 {"summary_col_pos_from", "4",
520 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
521 {"summary_col_pos_date", "5",
522 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
523 {"summary_col_pos_size", "6",
524 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
525 {"summary_col_pos_number", "7",
526 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
527 {"summary_col_pos_score", "8",
528 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
529 {"summary_col_pos_locked", "9",
530 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
531 {"summary_col_pos_to", "10",
532 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
533 {"summary_col_pos_tags", "11",
534 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
536 {"summary_col_size_mark", "10",
537 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
538 {"summary_col_size_unread", "13",
539 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
540 {"summary_col_size_mime", "10",
541 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_subject", "200",
544 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_from", "120",
546 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_to", "120",
548 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
550 {"summary_col_size_subject", "300",
551 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
552 {"summary_col_size_from", "150",
553 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
554 {"summary_col_size_to", "150",
555 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
558 {"summary_col_size_date", "118",
559 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
560 {"summary_col_size_size", "45",
561 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
562 {"summary_col_size_number", "40",
563 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
564 {"summary_col_size_score", "40",
565 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
566 {"summary_col_size_locked", "13",
567 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
568 {"summary_col_size_tags", "150",
569 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
572 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
574 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
576 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
578 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
580 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
583 {"folder_col_show_folder", "TRUE",
584 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
585 {"folder_col_show_new", "TRUE",
586 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
587 {"folder_col_show_unread", "TRUE",
588 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
589 {"folder_col_show_total", "TRUE",
590 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
592 {"folder_col_pos_folder", "0",
593 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
594 {"folder_col_pos_new", "1",
595 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
596 {"folder_col_pos_unread", "2",
597 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
598 {"folder_col_pos_total", "3",
599 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_folder", "120",
603 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
604 {"folder_col_size_new", "32",
605 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
606 {"folder_col_size_unread", "32",
607 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
608 {"folder_col_size_total", "32",
609 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
611 {"folder_col_size_folder", "400",
612 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
613 {"folder_col_size_new", "32",
614 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
615 {"folder_col_size_unread", "32",
616 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
617 {"folder_col_size_total", "32",
618 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
620 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
622 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
625 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
627 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
629 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
631 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
633 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
636 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
638 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
640 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
642 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
644 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
646 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
648 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
650 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
652 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
655 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
657 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
659 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
661 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
663 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
665 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
667 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
669 {"compose_width", "600", &prefs_common.compose_width, P_INT,
671 {"compose_height", "560", &prefs_common.compose_height, P_INT,
674 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
676 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
678 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
680 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
682 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
684 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
686 {"compose_width", "700", &prefs_common.compose_width, P_INT,
688 {"compose_height", "470", &prefs_common.compose_height, P_INT,
691 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
693 {"compose_x", "0", &prefs_common.compose_x, P_INT,
695 {"compose_y", "0", &prefs_common.compose_y, P_INT,
698 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
701 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
703 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
705 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
707 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
709 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
711 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
713 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
715 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
717 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
719 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
721 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
723 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
724 P_BOOL, NULL, NULL, NULL},
726 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
727 P_BOOL, NULL, NULL, NULL},
728 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
730 {"display_xface", "TRUE", &prefs_common.display_xface,
731 P_BOOL, NULL, NULL, NULL},
732 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
734 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
736 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
738 {"line_space", "2", &prefs_common.line_space, P_INT,
740 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
743 {"enable_smooth_scroll", "FALSE",
744 &prefs_common.enable_smooth_scroll, P_BOOL,
746 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
748 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
750 {"hide_quoted", "TRUE",
751 &prefs_common.hide_quoted, P_BOOL,
753 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
755 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
758 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
761 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
763 {"attach_save_directory", NULL,
764 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
765 {"attach_load_directory", NULL,
766 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
769 {"mime_textviewer", NULL,
770 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
771 {"mime_open_command", "gedit '%s'",
772 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
773 {"show_inline_attachments", "TRUE",
774 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
778 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
781 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
784 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
785 NULL, NULL, NULL}, */
786 {"always_show_message_when_selected", "0",
787 &prefs_common.always_show_msg,
788 P_ENUM, NULL, NULL, NULL},
789 {"select_on_entry", "3", &prefs_common.select_on_entry,
790 P_ENUM, NULL, NULL, NULL},
791 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
792 P_BOOL, NULL, NULL, NULL},
794 /* do it SUMMARY_OPEN_ACTIONS-1 times */
795 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
797 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
799 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
801 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
803 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
805 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
807 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
810 {"mark_as_read_on_new_window", "FALSE",
811 &prefs_common.mark_as_read_on_new_window,
812 P_BOOL, NULL, NULL, NULL},
813 {"mark_as_read_delay", "0",
814 &prefs_common.mark_as_read_delay, P_INT,
816 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
818 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
820 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
823 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
824 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
827 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
830 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
832 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
836 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
837 P_BOOL, NULL, NULL, NULL},
838 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
839 P_INT, NULL, NULL, NULL},
840 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
841 P_INT, NULL, NULL, NULL},
845 {"uri_open_command", DEFAULT_BROWSER_CMD,
846 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
848 {"gtk_theme", DEFAULT_W32_GTK_THEME,
849 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
851 {"ext_editor_command", DEFAULT_EDITOR_CMD,
852 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
853 {"cmds_use_system_default", "TRUE",
854 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
855 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
856 P_BOOL, NULL, NULL, NULL},
857 {"session_passwords", "FALSE", &prefs_common.session_passwords,
858 P_BOOL, NULL, NULL, NULL},
859 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
861 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
863 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
865 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
866 P_BOOL, NULL, NULL, NULL},
867 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
869 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
872 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
875 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
879 #if defined(__OpenBSD__)
880 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
881 P_INT, NULL, NULL, NULL},
883 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
884 P_INT, NULL, NULL, NULL},
886 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
888 {"important_score", "1", &prefs_common.important_score, P_INT,
891 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
893 {"log_length", "500", &prefs_common.loglength, P_INT,
896 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
898 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
900 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
902 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
905 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
907 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
909 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
911 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
914 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
916 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
918 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
920 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
922 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
924 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
926 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
928 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
931 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
933 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
935 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
937 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
939 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
941 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
943 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
945 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
947 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
950 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
953 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
956 /* Some windows' sizes */
957 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
959 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
962 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
964 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
967 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
969 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
972 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
974 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
977 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
979 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
982 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
984 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
987 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
989 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
992 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
994 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
997 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
999 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1002 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1004 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1007 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1009 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1012 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1014 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1017 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1020 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1022 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1025 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1027 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1030 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1032 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1035 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1037 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1040 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1042 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1045 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1047 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1050 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1052 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1055 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1057 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1060 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1062 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1065 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1067 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1071 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1073 {"utf8_instead_of_locale_for_broken_mail", "0",
1074 &prefs_common.broken_are_utf8, P_INT,
1076 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1078 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1080 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1082 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1084 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1086 {"folderview_vscrollbar_policy", "0",
1087 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1089 {"textview_cursor_visible", "FALSE",
1090 &prefs_common.textview_cursor_visible, P_BOOL,
1092 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1094 #ifndef GENERIC_UMPC
1095 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1097 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1100 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1102 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1105 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1106 P_INT, NULL, NULL, NULL },
1107 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1108 P_STRING, NULL, NULL, NULL },
1109 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1110 P_BOOL, NULL, NULL, NULL },
1111 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1113 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1115 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1117 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1119 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1121 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1123 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1125 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1127 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1129 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1131 #ifndef GENERIC_UMPC
1132 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1135 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1139 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1141 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1143 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1145 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1147 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1149 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1151 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1153 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1155 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1157 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1159 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1161 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1163 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1165 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1167 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1170 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1171 P_BOOL, NULL, NULL, NULL },
1173 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1176 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1179 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1182 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1184 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1186 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1189 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1191 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1193 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1194 #ifndef PASSWORD_CRYPTO_OLD
1195 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1196 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1197 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1198 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1201 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1205 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1206 * Fallback to default_list if history file is not found
1208 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1209 GList *default_list)
1213 gchar buf[PREFSBUFSIZE];
1217 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1218 G_DIR_SEPARATOR_S, history,
1221 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1224 if ((fp = g_fopen(path, "rb")) == NULL) {
1225 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1227 /* returns default list if set, otherwise NULL */
1228 return default_list;
1231 while (fgets(buf, sizeof(buf), fp) != NULL) {
1233 if (buf[0] == '\0') continue;
1234 tmp = add_history(tmp, buf);
1238 tmp = g_list_reverse(tmp);
1244 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1246 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1248 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1252 * Read history list from the specified history file
1254 static GList *prefs_common_read_history(const gchar *history)
1256 return prefs_common_read_history_from_dir(NULL, history);
1259 void prefs_common_read_config(void)
1264 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1265 prefs_read_config(param, "Common", rcpath, NULL);
1267 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1272 tmp = g_strdup(gettext(prefs_common.date_format));
1273 g_free(prefs_common.date_format);
1274 prefs_common.date_format = tmp;
1276 prefs_common.mime_open_cmd_history =
1277 prefs_common_read_history(COMMAND_HISTORY);
1278 prefs_common.summary_quicksearch_history =
1279 prefs_common_read_history(QUICKSEARCH_HISTORY);
1280 prefs_common.summary_search_from_history =
1281 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1282 prefs_common.summary_search_to_history =
1283 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1284 prefs_common.summary_search_subject_history =
1285 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1286 prefs_common.summary_search_body_history =
1287 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1288 prefs_common.summary_search_adv_condition_history =
1289 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1290 prefs_common.message_search_history =
1291 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1292 prefs_common.compose_save_to_history =
1293 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1294 #ifndef USE_ALT_ADDRBOOK
1295 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1297 colorlabel_update_colortable_from_prefs();
1303 g_warning("failed to write"); \
1308 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1310 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1314 gchar *path, *tmp_path;
1317 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1318 G_DIR_SEPARATOR_S, history,
1321 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1324 tmp_path = g_strconcat(path, ".tmp", NULL);
1326 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1327 FILE_OP_ERROR(tmp_path, "fopen");
1331 for (cur = list; cur != NULL; cur = cur->next) {
1332 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1333 fputc('\n', fp) != EOF);
1336 if (fclose(fp) == EOF) {
1337 FILE_OP_ERROR(tmp_path, "fclose");
1345 if (g_rename(tmp_path, path) < 0) {
1346 FILE_OP_ERROR(path, "rename");
1358 * Save history list to the specified history file
1360 static void prefs_common_save_history(const gchar *history, GList *list)
1362 prefs_common_save_history_to_dir(NULL, history, list);
1367 void prefs_common_write_config(void)
1369 prefs_write_config(param, "Common", COMMON_RC);
1371 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1374 prefs_common_save_history(COMMAND_HISTORY,
1375 prefs_common.mime_open_cmd_history);
1376 prefs_common_save_history(QUICKSEARCH_HISTORY,
1377 prefs_common.summary_quicksearch_history);
1378 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1379 prefs_common.summary_search_from_history);
1380 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1381 prefs_common.summary_search_to_history);
1382 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1383 prefs_common.summary_search_subject_history);
1384 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1385 prefs_common.summary_search_body_history);
1386 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1387 prefs_common.summary_search_adv_condition_history);
1388 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1389 prefs_common.message_search_history);
1390 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1391 prefs_common.compose_save_to_history);
1393 #ifndef USE_ALT_ADDRBOOK
1394 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1395 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1396 prefs_common.addressbook_custom_attributes);
1400 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1401 both 'in' and 'out' must be non-NULL.
1402 'out' must be a pointer to a buffer whose size is at least equal
1403 to strlen(txt)+1, this buffer will get cleared. out's contents
1404 will always get set to a valid string, even if it's "".*/
1405 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1412 cm_return_if_fail( in != NULL );
1413 cm_return_if_fail( out != NULL );
1417 memset(out, 0, strlen(in)+1);
1418 while (*i != '\0') {
1419 if (*i == '\\' && *(i+1) == 'n') {
1422 } else if (*i == '\\' && *(i+1) == 't') {
1425 } else if (*i == '\\' && *(i+1) == '\\') {
1436 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1437 both 'in' and 'out' must be non-NULL.
1438 'out' must be a pointer to a buffer whose size is at least equal
1439 to 2*strlen(txt)+1. out's contents will always get set to a valid
1440 string, even if it's "". */
1441 void pref_get_escaped_pref(gchar *out, const gchar *in)
1448 cm_return_if_fail( in != NULL );
1449 cm_return_if_fail( out != NULL );
1453 while (*i != '\0') {
1457 } else if (*i == '\t') {
1460 } else if (*i == '\\') {
1471 /* set the contents of a textview widget from the internal \-escaped
1472 representation of a pref string. both txt and textview must be non-NULL. */
1473 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1475 GtkTextBuffer *buffer;
1478 cm_return_if_fail( textview != NULL );
1480 buffer = gtk_text_view_get_buffer(textview);
1483 gtk_text_buffer_set_text(buffer, "", -1);
1485 out = g_malloc(strlen(txt)+1);
1487 pref_get_unescaped_pref(out, txt);
1489 gtk_text_buffer_set_text(buffer, out, -1);
1494 /* set the contents of a gtkentry widget from the internal \-escaped
1495 representation of a pref string. both txt and entry must be non-NULL. */
1496 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1500 cm_return_if_fail( entry != NULL );
1502 gtk_entry_set_text(entry, "");
1504 out = g_malloc(strlen(txt)+1);
1506 pref_get_unescaped_pref(out, txt);
1508 gtk_entry_set_text(entry, out);
1513 /* get the \-escaped internal representation of a pref from the contents of
1514 a textview widget. textview must be non-NULL. */
1515 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1517 GtkTextBuffer *buffer;
1518 GtkTextIter start, end;
1521 cm_return_val_if_fail( textview != NULL, "" );
1523 buffer = gtk_text_view_get_buffer(textview);
1524 gtk_text_buffer_get_start_iter(buffer, &start);
1525 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1526 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1527 out = malloc(2*strlen(tmp)+1);
1529 pref_get_escaped_pref(out, tmp);
1535 /* get the \-escaped internal representation of a pref from the contents of
1536 a gtkentry widget. entry must be non-NULL. */
1537 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1541 cm_return_val_if_fail( entry != NULL, "" );
1543 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1544 out = malloc(2*strlen(tmp)+1);
1547 pref_get_escaped_pref(out, tmp);
1553 /* ugly hack to be able to get this pref from ssl_certificate.c */
1554 gboolean prefs_common_unsafe_ssl_certs(void)
1556 return prefs_common.unsafe_ssl_certs;
1559 gboolean prefs_common_enable_log_standard(void)
1561 return prefs_common.enable_log_standard;
1564 gboolean prefs_common_enable_log_warning(void)
1566 return prefs_common.enable_log_warning;
1568 gboolean prefs_common_enable_log_error(void)
1570 return prefs_common.enable_log_error;
1572 gboolean prefs_common_enable_log_status(void)
1574 return prefs_common.enable_log_status;
1578 return the translated name of a header, if the translate_header option is
1579 set, otherwise return the untranslated header name (header_name itself).
1580 this function is provided for convenience, it's an interface to
1581 prefs_common.trans_hdr.
1582 works with header names either with or without trailing colon, provided
1583 that gettext found such header name in the sources (they should all be
1584 found in src/gtk/headers.h anyway).
1586 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1588 if (header_name == NULL || *header_name == '\0')
1591 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1594 const gchar *prefs_common_get_uri_cmd(void)
1601 if (!prefs_common.cmds_use_system_default)
1602 return prefs_common.uri_cmd;
1604 tmp = g_find_program_in_path("xdg-open");
1606 return prefs_common.uri_cmd;
1609 return "xdg-open %s";
1613 const gchar *prefs_common_get_ext_editor_cmd(void)
1615 return prefs_common.ext_editor_cmd;
1616 #if 0 /* we should do that, but it detaches the editor and breaks
1617 compose.c's external composition. */
1620 if (!prefs_common.cmds_use_system_default)
1621 return prefs_common.ext_editor_cmd;
1623 tmp = g_find_program_in_path("xdg-open");
1625 return prefs_common.ext_editor_cmd;
1628 return "xdg-open %s";
1632 gboolean prefs_common_get_use_shred(void)
1634 return prefs_common.use_shred;
1637 gboolean prefs_common_get_flush_metadata (void)
1639 return prefs_common.flush_metadata;
1642 PrefsCommon *prefs_common_get_prefs(void)
1644 return &prefs_common;