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 {"rewrite_first_from", "TRUE", &prefs_common.rewrite_first_from,
203 P_BOOL, NULL, NULL, NULL},
204 {"warn_empty_subj", "TRUE", &prefs_common.warn_empty_subj,
205 P_BOOL, NULL, NULL, NULL},
206 {"hide_timezone", "FALSE", &prefs_common.hide_timezone,
207 P_BOOL, NULL, NULL, NULL},
208 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
209 P_BOOL, NULL, NULL, NULL},
212 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
214 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
215 P_BOOL, NULL, NULL, NULL},
216 {"redirect_keep_from", "FALSE",
217 &prefs_common.redirect_keep_from, P_BOOL,
219 {"undo_level", "50", &prefs_common.undolevels, P_INT,
221 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
223 {"compose_subject_format", "",
224 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
225 {"compose_body_format", N_("Hello,\\n"),
226 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
227 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
229 {"type_any_header", "FALSE", &prefs_common.type_any_header, P_BOOL,
233 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
235 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
237 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
239 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
241 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
243 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
245 {"autosave", "TRUE", &prefs_common.autosave,
246 P_BOOL, NULL, NULL, NULL},
247 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
249 {"autosave_encrypted", "FALSE", &prefs_common.autosave_encrypted,
250 P_BOOL, NULL, NULL, NULL},
251 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
252 P_BOOL, NULL, NULL, NULL},
253 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
254 P_INT, NULL, NULL, NULL},
256 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
258 {"dictionary", "", &prefs_common.dictionary, P_STRING,
260 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
262 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
264 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
266 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
267 P_BOOL, NULL, NULL, NULL},
268 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
270 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
273 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
275 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
278 /* Account autoselection */
279 {"reply_account_autoselect", "TRUE",
280 &prefs_common.reply_account_autosel, P_BOOL,
282 {"forward_account_autoselect", "TRUE",
283 &prefs_common.forward_account_autosel, P_BOOL,
285 {"reedit_account_autoselect", "TRUE",
286 &prefs_common.reedit_account_autosel, P_BOOL,
289 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
293 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
296 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
301 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
303 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
304 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
306 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
308 {"forward_quote_format",
309 N_("\\n\\nBegin forwarded message:\\n\\n"
310 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
311 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
312 &prefs_common.fw_quotefmt, P_STRING,
314 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
318 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
319 {"widget_font", NULL,
320 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
321 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
322 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
323 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
324 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
325 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
326 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
327 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
328 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
332 {"widget_font_gtk2", NULL,
333 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
334 {"message_font_gtk2", "Monospace 9",
335 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
336 {"print_font_gtk2", "Monospace 9",
337 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
338 {"small_font_gtk2", "Sans 9",
339 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
340 {"normal_font_gtk2", "Sans 9",
341 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
342 {"bold_font_gtk2", "Sans Bold 9",
343 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
345 {"widget_font_gtk2", NULL,
346 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
347 {"message_font_gtk2", "Monospace 8",
348 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
349 {"print_font_gtk2", "Monospace 8",
350 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
351 {"small_font_gtk2", "Sans 8",
352 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
353 {"normal_font_gtk2", "Sans 8",
354 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
355 {"bold_font_gtk2", "Sans Bold 8",
356 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
359 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
361 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
365 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
367 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
369 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
371 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
373 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
375 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
377 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
379 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
381 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
383 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
385 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
387 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
389 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
391 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
393 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
395 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
397 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
399 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
401 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
403 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
405 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
407 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
409 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
411 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
413 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
415 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
417 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
419 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
421 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
423 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
427 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
429 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
431 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
434 {"display_folder_unread_num", "0",
435 &prefs_common.display_folder_unread, P_INT,
437 {"newsgroup_abbrev_len", "16",
438 &prefs_common.ng_abbrev_len, P_INT,
441 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
444 /* Display: Summary View */
445 {"default_sort_key", "3", &prefs_common.default_sort_key, P_ENUM,
447 {"default_sort_type", "1", &prefs_common.default_sort_type, P_ENUM,
449 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
451 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
453 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
454 P_STRING, NULL, NULL, NULL},
455 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
458 {"next_on_delete", "FALSE", &prefs_common.next_on_delete, P_BOOL,
461 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
464 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
467 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
470 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
473 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
475 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
478 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
480 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
483 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
485 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
489 {"summary_col_show_mark", "TRUE",
490 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_unread", "TRUE",
492 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_subject", "TRUE",
494 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_from", "TRUE",
496 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_to", "FALSE",
498 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
499 {"summary_col_show_date", "TRUE",
500 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
501 {"summary_col_show_mime", "TRUE",
502 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
503 {"summary_col_show_size", "TRUE",
504 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
505 {"summary_col_show_number", "FALSE",
506 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
507 {"summary_col_show_score", "FALSE",
508 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
509 {"summary_col_show_locked", "FALSE",
510 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
511 {"summary_col_show_tags", "FALSE",
512 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
514 {"summary_col_pos_mark", "0",
515 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_unread", "1",
517 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_mime", "2",
519 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_subject", "3",
521 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_from", "4",
523 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
524 {"summary_col_pos_date", "5",
525 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
526 {"summary_col_pos_size", "6",
527 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
528 {"summary_col_pos_number", "7",
529 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
530 {"summary_col_pos_score", "8",
531 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
532 {"summary_col_pos_locked", "9",
533 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
534 {"summary_col_pos_to", "10",
535 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
536 {"summary_col_pos_tags", "11",
537 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_mark", "10",
540 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_unread", "13",
542 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_mime", "10",
544 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_subject", "200",
547 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
548 {"summary_col_size_from", "120",
549 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
550 {"summary_col_size_to", "120",
551 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_subject", "300",
554 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_from", "150",
556 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
557 {"summary_col_size_to", "150",
558 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
561 {"summary_col_size_date", "118",
562 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
563 {"summary_col_size_size", "45",
564 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
565 {"summary_col_size_number", "40",
566 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
567 {"summary_col_size_score", "40",
568 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
569 {"summary_col_size_locked", "13",
570 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
571 {"summary_col_size_tags", "150",
572 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
575 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
577 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
579 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
581 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
583 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
586 {"folder_col_show_folder", "TRUE",
587 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
588 {"folder_col_show_new", "TRUE",
589 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
590 {"folder_col_show_unread", "TRUE",
591 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
592 {"folder_col_show_total", "TRUE",
593 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
595 {"folder_col_pos_folder", "0",
596 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
597 {"folder_col_pos_new", "1",
598 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
599 {"folder_col_pos_unread", "2",
600 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
601 {"folder_col_pos_total", "3",
602 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
605 {"folder_col_size_folder", "120",
606 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
607 {"folder_col_size_new", "32",
608 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
609 {"folder_col_size_unread", "32",
610 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
611 {"folder_col_size_total", "32",
612 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
614 {"folder_col_size_folder", "400",
615 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
616 {"folder_col_size_new", "32",
617 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
618 {"folder_col_size_unread", "32",
619 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
620 {"folder_col_size_total", "32",
621 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
623 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
625 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
628 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
630 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
632 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
634 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
636 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
639 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
641 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
643 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
645 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
647 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
649 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
651 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
653 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
655 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
658 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
660 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
662 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
664 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
666 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
668 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
670 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
672 {"compose_width", "600", &prefs_common.compose_width, P_INT,
674 {"compose_height", "560", &prefs_common.compose_height, P_INT,
677 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
679 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
681 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
683 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
685 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
687 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
689 {"compose_width", "700", &prefs_common.compose_width, P_INT,
691 {"compose_height", "470", &prefs_common.compose_height, P_INT,
694 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
696 {"compose_x", "0", &prefs_common.compose_x, P_INT,
698 {"compose_y", "0", &prefs_common.compose_y, P_INT,
701 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
704 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
706 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
708 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
710 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
712 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
714 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
716 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
718 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
720 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
722 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
724 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
726 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
727 P_BOOL, NULL, NULL, NULL},
729 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
730 P_BOOL, NULL, NULL, NULL},
731 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
733 {"display_xface", "TRUE", &prefs_common.display_xface,
734 P_BOOL, NULL, NULL, NULL},
735 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
737 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
739 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
741 {"line_space", "2", &prefs_common.line_space, P_INT,
743 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
746 {"enable_smooth_scroll", "FALSE",
747 &prefs_common.enable_smooth_scroll, P_BOOL,
749 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
751 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
753 {"hide_quoted", "TRUE",
754 &prefs_common.hide_quoted, P_BOOL,
756 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
758 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
761 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
764 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
766 {"attach_save_directory", NULL,
767 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
768 {"attach_load_directory", NULL,
769 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
772 {"mime_textviewer", NULL,
773 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
774 {"mime_open_command", "gedit '%s'",
775 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
776 {"show_inline_attachments", "TRUE",
777 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
781 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
784 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
787 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
788 NULL, NULL, NULL}, */
789 {"always_show_message_when_selected", "0",
790 &prefs_common.always_show_msg,
791 P_ENUM, NULL, NULL, NULL},
792 {"select_on_entry", "3", &prefs_common.select_on_entry,
793 P_ENUM, NULL, NULL, NULL},
794 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
795 P_BOOL, NULL, NULL, NULL},
797 /* do it SUMMARY_OPEN_ACTIONS-1 times */
798 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
800 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
802 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
804 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
806 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
808 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
810 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
813 {"mark_as_read_on_new_window", "FALSE",
814 &prefs_common.mark_as_read_on_new_window,
815 P_BOOL, NULL, NULL, NULL},
816 {"mark_as_read_delay", "0",
817 &prefs_common.mark_as_read_delay, P_INT,
819 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
821 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
823 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
826 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
827 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
830 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
833 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
835 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
839 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
840 P_BOOL, NULL, NULL, NULL},
841 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
842 P_INT, NULL, NULL, NULL},
843 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
844 P_INT, NULL, NULL, NULL},
848 {"uri_open_command", DEFAULT_BROWSER_CMD,
849 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
851 {"gtk_theme", DEFAULT_W32_GTK_THEME,
852 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
854 {"ext_editor_command", DEFAULT_EDITOR_CMD,
855 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
856 {"cmds_use_system_default", "TRUE",
857 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
858 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
859 P_BOOL, NULL, NULL, NULL},
860 {"session_passwords", "FALSE", &prefs_common.session_passwords,
861 P_BOOL, NULL, NULL, NULL},
862 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
864 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
866 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
868 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
869 P_BOOL, NULL, NULL, NULL},
870 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
872 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
875 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
878 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
882 #if defined(__OpenBSD__)
883 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
884 P_INT, NULL, NULL, NULL},
886 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
887 P_INT, NULL, NULL, NULL},
889 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
891 {"important_score", "1", &prefs_common.important_score, P_INT,
894 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
896 {"log_length", "500", &prefs_common.loglength, P_INT,
899 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
901 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
903 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
905 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
908 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
910 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
912 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
914 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
917 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
919 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
921 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
923 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
925 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
927 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
929 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
931 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
934 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
936 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
938 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
940 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
942 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
944 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
946 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
948 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
950 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
953 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
956 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
959 /* Some windows' sizes */
960 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
962 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
965 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
967 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
970 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
972 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
975 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
977 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
980 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
982 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
985 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
987 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
990 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
992 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
995 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
997 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1000 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1002 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1005 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1007 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1010 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1012 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1015 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1017 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1020 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1023 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1025 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1028 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1030 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1033 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1035 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1038 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1040 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1043 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1045 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1048 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1050 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1053 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1055 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1058 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1060 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1063 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1065 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1068 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1070 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1074 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1076 {"utf8_instead_of_locale_for_broken_mail", "0",
1077 &prefs_common.broken_are_utf8, P_INT,
1079 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1081 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1083 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1085 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1087 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1089 {"folderview_vscrollbar_policy", "0",
1090 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1092 {"textview_cursor_visible", "FALSE",
1093 &prefs_common.textview_cursor_visible, P_BOOL,
1095 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1097 #ifndef GENERIC_UMPC
1098 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1100 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1103 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1105 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1108 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1109 P_INT, NULL, NULL, NULL },
1110 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1111 P_STRING, NULL, NULL, NULL },
1112 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1113 P_BOOL, NULL, NULL, NULL },
1114 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1116 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1118 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1120 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1122 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1124 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1126 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1128 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1130 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1132 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1134 #ifndef GENERIC_UMPC
1135 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1138 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1142 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1144 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1146 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1148 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1150 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1152 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1154 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1156 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1158 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1160 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1162 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1164 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1166 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1168 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1170 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1173 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1174 P_BOOL, NULL, NULL, NULL },
1176 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1179 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1182 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1185 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1187 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1189 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1192 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1194 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1196 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1197 #ifndef PASSWORD_CRYPTO_OLD
1198 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1199 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1200 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1201 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1204 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1208 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1209 * Fallback to default_list if history file is not found
1211 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1212 GList *default_list)
1216 gchar buf[PREFSBUFSIZE];
1220 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1221 G_DIR_SEPARATOR_S, history,
1224 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1227 if ((fp = g_fopen(path, "rb")) == NULL) {
1228 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1230 /* returns default list if set, otherwise NULL */
1231 return default_list;
1234 while (fgets(buf, sizeof(buf), fp) != NULL) {
1236 if (buf[0] == '\0') continue;
1237 tmp = add_history(tmp, buf);
1241 tmp = g_list_reverse(tmp);
1247 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1249 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1251 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1255 * Read history list from the specified history file
1257 static GList *prefs_common_read_history(const gchar *history)
1259 return prefs_common_read_history_from_dir(NULL, history);
1262 void prefs_common_read_config(void)
1267 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1268 prefs_read_config(param, "Common", rcpath, NULL);
1270 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1275 tmp = g_strdup(gettext(prefs_common.date_format));
1276 g_free(prefs_common.date_format);
1277 prefs_common.date_format = tmp;
1279 prefs_common.mime_open_cmd_history =
1280 prefs_common_read_history(COMMAND_HISTORY);
1281 prefs_common.summary_quicksearch_history =
1282 prefs_common_read_history(QUICKSEARCH_HISTORY);
1283 prefs_common.summary_search_from_history =
1284 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1285 prefs_common.summary_search_to_history =
1286 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1287 prefs_common.summary_search_subject_history =
1288 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1289 prefs_common.summary_search_body_history =
1290 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1291 prefs_common.summary_search_adv_condition_history =
1292 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1293 prefs_common.message_search_history =
1294 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1295 prefs_common.compose_save_to_history =
1296 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1297 #ifndef USE_ALT_ADDRBOOK
1298 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1300 colorlabel_update_colortable_from_prefs();
1306 g_warning("failed to write"); \
1311 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1313 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1317 gchar *path, *tmp_path;
1320 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1321 G_DIR_SEPARATOR_S, history,
1324 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1327 tmp_path = g_strconcat(path, ".tmp", NULL);
1329 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1330 FILE_OP_ERROR(tmp_path, "fopen");
1334 for (cur = list; cur != NULL; cur = cur->next) {
1335 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1336 fputc('\n', fp) != EOF);
1339 if (fclose(fp) == EOF) {
1340 FILE_OP_ERROR(tmp_path, "fclose");
1348 if (g_rename(tmp_path, path) < 0) {
1349 FILE_OP_ERROR(path, "rename");
1361 * Save history list to the specified history file
1363 static void prefs_common_save_history(const gchar *history, GList *list)
1365 prefs_common_save_history_to_dir(NULL, history, list);
1370 void prefs_common_write_config(void)
1372 prefs_write_config(param, "Common", COMMON_RC);
1374 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1377 prefs_common_save_history(COMMAND_HISTORY,
1378 prefs_common.mime_open_cmd_history);
1379 prefs_common_save_history(QUICKSEARCH_HISTORY,
1380 prefs_common.summary_quicksearch_history);
1381 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1382 prefs_common.summary_search_from_history);
1383 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1384 prefs_common.summary_search_to_history);
1385 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1386 prefs_common.summary_search_subject_history);
1387 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1388 prefs_common.summary_search_body_history);
1389 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1390 prefs_common.summary_search_adv_condition_history);
1391 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1392 prefs_common.message_search_history);
1393 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1394 prefs_common.compose_save_to_history);
1396 #ifndef USE_ALT_ADDRBOOK
1397 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1398 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1399 prefs_common.addressbook_custom_attributes);
1403 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1404 both 'in' and 'out' must be non-NULL.
1405 'out' must be a pointer to a buffer whose size is at least equal
1406 to strlen(txt)+1, this buffer will get cleared. out's contents
1407 will always get set to a valid string, even if it's "".*/
1408 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1415 cm_return_if_fail( in != NULL );
1416 cm_return_if_fail( out != NULL );
1420 memset(out, 0, strlen(in)+1);
1421 while (*i != '\0') {
1422 if (*i == '\\' && *(i+1) == 'n') {
1425 } else if (*i == '\\' && *(i+1) == 't') {
1428 } else if (*i == '\\' && *(i+1) == '\\') {
1439 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1440 both 'in' and 'out' must be non-NULL.
1441 'out' must be a pointer to a buffer whose size is at least equal
1442 to 2*strlen(txt)+1. out's contents will always get set to a valid
1443 string, even if it's "". */
1444 void pref_get_escaped_pref(gchar *out, const gchar *in)
1451 cm_return_if_fail( in != NULL );
1452 cm_return_if_fail( out != NULL );
1456 while (*i != '\0') {
1460 } else if (*i == '\t') {
1463 } else if (*i == '\\') {
1474 /* set the contents of a textview widget from the internal \-escaped
1475 representation of a pref string. both txt and textview must be non-NULL. */
1476 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1478 GtkTextBuffer *buffer;
1481 cm_return_if_fail( textview != NULL );
1483 buffer = gtk_text_view_get_buffer(textview);
1486 gtk_text_buffer_set_text(buffer, "", -1);
1488 out = g_malloc(strlen(txt)+1);
1490 pref_get_unescaped_pref(out, txt);
1492 gtk_text_buffer_set_text(buffer, out, -1);
1497 /* set the contents of a gtkentry widget from the internal \-escaped
1498 representation of a pref string. both txt and entry must be non-NULL. */
1499 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1503 cm_return_if_fail( entry != NULL );
1505 gtk_entry_set_text(entry, "");
1507 out = g_malloc(strlen(txt)+1);
1509 pref_get_unescaped_pref(out, txt);
1511 gtk_entry_set_text(entry, out);
1516 /* get the \-escaped internal representation of a pref from the contents of
1517 a textview widget. textview must be non-NULL. */
1518 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1520 GtkTextBuffer *buffer;
1521 GtkTextIter start, end;
1524 cm_return_val_if_fail( textview != NULL, "" );
1526 buffer = gtk_text_view_get_buffer(textview);
1527 gtk_text_buffer_get_start_iter(buffer, &start);
1528 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1529 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1530 out = malloc(2*strlen(tmp)+1);
1532 pref_get_escaped_pref(out, tmp);
1538 /* get the \-escaped internal representation of a pref from the contents of
1539 a gtkentry widget. entry must be non-NULL. */
1540 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1544 cm_return_val_if_fail( entry != NULL, "" );
1546 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1547 out = malloc(2*strlen(tmp)+1);
1550 pref_get_escaped_pref(out, tmp);
1556 /* ugly hack to be able to get this pref from ssl_certificate.c */
1557 gboolean prefs_common_unsafe_ssl_certs(void)
1559 return prefs_common.unsafe_ssl_certs;
1562 gboolean prefs_common_enable_log_standard(void)
1564 return prefs_common.enable_log_standard;
1567 gboolean prefs_common_enable_log_warning(void)
1569 return prefs_common.enable_log_warning;
1571 gboolean prefs_common_enable_log_error(void)
1573 return prefs_common.enable_log_error;
1575 gboolean prefs_common_enable_log_status(void)
1577 return prefs_common.enable_log_status;
1581 return the translated name of a header, if the translate_header option is
1582 set, otherwise return the untranslated header name (header_name itself).
1583 this function is provided for convenience, it's an interface to
1584 prefs_common.trans_hdr.
1585 works with header names either with or without trailing colon, provided
1586 that gettext found such header name in the sources (they should all be
1587 found in src/gtk/headers.h anyway).
1589 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1591 if (header_name == NULL || *header_name == '\0')
1594 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1597 const gchar *prefs_common_get_uri_cmd(void)
1604 if (!prefs_common.cmds_use_system_default)
1605 return prefs_common.uri_cmd;
1607 tmp = g_find_program_in_path("xdg-open");
1609 return prefs_common.uri_cmd;
1612 return "xdg-open %s";
1616 const gchar *prefs_common_get_ext_editor_cmd(void)
1618 return prefs_common.ext_editor_cmd;
1619 #if 0 /* we should do that, but it detaches the editor and breaks
1620 compose.c's external composition. */
1623 if (!prefs_common.cmds_use_system_default)
1624 return prefs_common.ext_editor_cmd;
1626 tmp = g_find_program_in_path("xdg-open");
1628 return prefs_common.ext_editor_cmd;
1631 return "xdg-open %s";
1635 gboolean prefs_common_get_use_shred(void)
1637 return prefs_common.use_shred;
1640 gboolean prefs_common_get_flush_metadata (void)
1642 return prefs_common.flush_metadata;
1645 PrefsCommon *prefs_common_get_prefs(void)
1647 return &prefs_common;