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 {"open_selected_message_on_folder_open", "FALSE",
790 &prefs_common.open_selected_on_folder_open,
791 P_BOOL, NULL, NULL, NULL},
792 {"always_show_message_when_selected", "0",
793 &prefs_common.always_show_msg,
794 P_ENUM, NULL, NULL, NULL},
795 {"select_on_entry", "3", &prefs_common.select_on_entry,
796 P_ENUM, NULL, NULL, NULL},
797 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
798 P_BOOL, NULL, NULL, NULL},
800 /* do it SUMMARY_OPEN_ACTIONS-1 times */
801 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
803 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
805 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
807 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
809 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
811 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
813 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
816 {"mark_as_read_on_new_window", "FALSE",
817 &prefs_common.mark_as_read_on_new_window,
818 P_BOOL, NULL, NULL, NULL},
819 {"mark_as_read_delay", "0",
820 &prefs_common.mark_as_read_delay, P_INT,
822 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
824 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
826 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
829 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
830 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
833 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
836 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
838 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
842 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
843 P_BOOL, NULL, NULL, NULL},
844 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
845 P_INT, NULL, NULL, NULL},
846 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
847 P_INT, NULL, NULL, NULL},
851 {"uri_open_command", DEFAULT_BROWSER_CMD,
852 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
854 {"gtk_theme", DEFAULT_W32_GTK_THEME,
855 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
857 {"ext_editor_command", DEFAULT_EDITOR_CMD,
858 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
859 {"cmds_use_system_default", "TRUE",
860 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
861 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
862 P_BOOL, NULL, NULL, NULL},
863 {"session_passwords", "FALSE", &prefs_common.session_passwords,
864 P_BOOL, NULL, NULL, NULL},
865 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
867 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
869 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
871 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
872 P_BOOL, NULL, NULL, NULL},
873 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
875 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
878 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
881 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
885 #if defined(__OpenBSD__)
886 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
887 P_INT, NULL, NULL, NULL},
889 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
890 P_INT, NULL, NULL, NULL},
892 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
894 {"important_score", "1", &prefs_common.important_score, P_INT,
897 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
899 {"log_length", "500", &prefs_common.loglength, P_INT,
902 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
904 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
906 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
908 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
911 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
913 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
915 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
917 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
920 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
922 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
924 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
926 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
928 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
930 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
932 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
934 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
937 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
939 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
941 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
943 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
945 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
947 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
949 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
951 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
953 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
956 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
959 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
962 /* Some windows' sizes */
963 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
965 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
968 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
970 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
973 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
975 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
978 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
980 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
983 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
985 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
988 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
990 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
993 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
995 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
998 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1000 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1003 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1005 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1008 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1010 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1013 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1015 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1018 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1020 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1023 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1026 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1028 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1031 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1033 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1036 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1038 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1041 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1043 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1046 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1048 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1051 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1053 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1056 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1058 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1061 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1063 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1066 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1068 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1071 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1073 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1077 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1079 {"utf8_instead_of_locale_for_broken_mail", "0",
1080 &prefs_common.broken_are_utf8, P_INT,
1082 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1084 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1086 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1088 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1090 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1092 {"folderview_vscrollbar_policy", "0",
1093 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1095 {"textview_cursor_visible", "FALSE",
1096 &prefs_common.textview_cursor_visible, P_BOOL,
1098 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1100 #ifndef GENERIC_UMPC
1101 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1103 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1106 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1108 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1111 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1112 P_INT, NULL, NULL, NULL },
1113 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1114 P_STRING, NULL, NULL, NULL },
1115 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1116 P_BOOL, NULL, NULL, NULL },
1117 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1119 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1121 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1123 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1125 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1127 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1129 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1131 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1133 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1135 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1137 #ifndef GENERIC_UMPC
1138 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1141 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1145 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1147 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1149 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1151 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1153 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1155 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1157 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1159 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1161 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1163 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1165 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1167 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1169 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1171 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1173 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1176 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1177 P_BOOL, NULL, NULL, NULL },
1179 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1182 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1185 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1188 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1190 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1192 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1195 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1197 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1199 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1200 #ifndef PASSWORD_CRYPTO_OLD
1201 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1202 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1203 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1204 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1207 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1211 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1212 * Fallback to default_list if history file is not found
1214 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1215 GList *default_list)
1219 gchar buf[PREFSBUFSIZE];
1223 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1224 G_DIR_SEPARATOR_S, history,
1227 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1230 if ((fp = g_fopen(path, "rb")) == NULL) {
1231 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1233 /* returns default list if set, otherwise NULL */
1234 return default_list;
1237 while (fgets(buf, sizeof(buf), fp) != NULL) {
1239 if (buf[0] == '\0') continue;
1240 tmp = add_history(tmp, buf);
1244 tmp = g_list_reverse(tmp);
1250 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1252 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1254 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1258 * Read history list from the specified history file
1260 static GList *prefs_common_read_history(const gchar *history)
1262 return prefs_common_read_history_from_dir(NULL, history);
1265 void prefs_common_read_config(void)
1270 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1271 prefs_read_config(param, "Common", rcpath, NULL);
1273 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1278 tmp = g_strdup(gettext(prefs_common.date_format));
1279 g_free(prefs_common.date_format);
1280 prefs_common.date_format = tmp;
1282 prefs_common.mime_open_cmd_history =
1283 prefs_common_read_history(COMMAND_HISTORY);
1284 prefs_common.summary_quicksearch_history =
1285 prefs_common_read_history(QUICKSEARCH_HISTORY);
1286 prefs_common.summary_search_from_history =
1287 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1288 prefs_common.summary_search_to_history =
1289 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1290 prefs_common.summary_search_subject_history =
1291 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1292 prefs_common.summary_search_body_history =
1293 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1294 prefs_common.summary_search_adv_condition_history =
1295 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1296 prefs_common.message_search_history =
1297 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1298 prefs_common.compose_save_to_history =
1299 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1300 #ifndef USE_ALT_ADDRBOOK
1301 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1303 colorlabel_update_colortable_from_prefs();
1309 g_warning("failed to write"); \
1314 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1316 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1320 gchar *path, *tmp_path;
1323 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1324 G_DIR_SEPARATOR_S, history,
1327 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1330 tmp_path = g_strconcat(path, ".tmp", NULL);
1332 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1333 FILE_OP_ERROR(tmp_path, "fopen");
1337 for (cur = list; cur != NULL; cur = cur->next) {
1338 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1339 fputc('\n', fp) != EOF);
1342 if (fclose(fp) == EOF) {
1343 FILE_OP_ERROR(tmp_path, "fclose");
1351 if (g_rename(tmp_path, path) < 0) {
1352 FILE_OP_ERROR(path, "rename");
1364 * Save history list to the specified history file
1366 static void prefs_common_save_history(const gchar *history, GList *list)
1368 prefs_common_save_history_to_dir(NULL, history, list);
1373 void prefs_common_write_config(void)
1375 prefs_write_config(param, "Common", COMMON_RC);
1377 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1380 prefs_common_save_history(COMMAND_HISTORY,
1381 prefs_common.mime_open_cmd_history);
1382 prefs_common_save_history(QUICKSEARCH_HISTORY,
1383 prefs_common.summary_quicksearch_history);
1384 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1385 prefs_common.summary_search_from_history);
1386 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1387 prefs_common.summary_search_to_history);
1388 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1389 prefs_common.summary_search_subject_history);
1390 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1391 prefs_common.summary_search_body_history);
1392 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1393 prefs_common.summary_search_adv_condition_history);
1394 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1395 prefs_common.message_search_history);
1396 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1397 prefs_common.compose_save_to_history);
1399 #ifndef USE_ALT_ADDRBOOK
1400 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1401 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1402 prefs_common.addressbook_custom_attributes);
1406 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1407 both 'in' and 'out' must be non-NULL.
1408 'out' must be a pointer to a buffer whose size is at least equal
1409 to strlen(txt)+1, this buffer will get cleared. out's contents
1410 will always get set to a valid string, even if it's "".*/
1411 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1418 cm_return_if_fail( in != NULL );
1419 cm_return_if_fail( out != NULL );
1423 memset(out, 0, strlen(in)+1);
1424 while (*i != '\0') {
1425 if (*i == '\\' && *(i+1) == 'n') {
1428 } else if (*i == '\\' && *(i+1) == 't') {
1431 } else if (*i == '\\' && *(i+1) == '\\') {
1442 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1443 both 'in' and 'out' must be non-NULL.
1444 'out' must be a pointer to a buffer whose size is at least equal
1445 to 2*strlen(txt)+1. out's contents will always get set to a valid
1446 string, even if it's "". */
1447 void pref_get_escaped_pref(gchar *out, const gchar *in)
1454 cm_return_if_fail( in != NULL );
1455 cm_return_if_fail( out != NULL );
1459 while (*i != '\0') {
1463 } else if (*i == '\t') {
1466 } else if (*i == '\\') {
1477 /* set the contents of a textview widget from the internal \-escaped
1478 representation of a pref string. both txt and textview must be non-NULL. */
1479 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1481 GtkTextBuffer *buffer;
1484 cm_return_if_fail( textview != NULL );
1486 buffer = gtk_text_view_get_buffer(textview);
1489 gtk_text_buffer_set_text(buffer, "", -1);
1491 out = g_malloc(strlen(txt)+1);
1493 pref_get_unescaped_pref(out, txt);
1495 gtk_text_buffer_set_text(buffer, out, -1);
1500 /* set the contents of a gtkentry widget from the internal \-escaped
1501 representation of a pref string. both txt and entry must be non-NULL. */
1502 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1506 cm_return_if_fail( entry != NULL );
1508 gtk_entry_set_text(entry, "");
1510 out = g_malloc(strlen(txt)+1);
1512 pref_get_unescaped_pref(out, txt);
1514 gtk_entry_set_text(entry, out);
1519 /* get the \-escaped internal representation of a pref from the contents of
1520 a textview widget. textview must be non-NULL. */
1521 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1523 GtkTextBuffer *buffer;
1524 GtkTextIter start, end;
1527 cm_return_val_if_fail( textview != NULL, "" );
1529 buffer = gtk_text_view_get_buffer(textview);
1530 gtk_text_buffer_get_start_iter(buffer, &start);
1531 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1532 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1533 out = malloc(2*strlen(tmp)+1);
1535 pref_get_escaped_pref(out, tmp);
1541 /* get the \-escaped internal representation of a pref from the contents of
1542 a gtkentry widget. entry must be non-NULL. */
1543 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1547 cm_return_val_if_fail( entry != NULL, "" );
1549 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1550 out = malloc(2*strlen(tmp)+1);
1553 pref_get_escaped_pref(out, tmp);
1559 /* ugly hack to be able to get this pref from ssl_certificate.c */
1560 gboolean prefs_common_unsafe_ssl_certs(void)
1562 return prefs_common.unsafe_ssl_certs;
1565 gboolean prefs_common_enable_log_standard(void)
1567 return prefs_common.enable_log_standard;
1570 gboolean prefs_common_enable_log_warning(void)
1572 return prefs_common.enable_log_warning;
1574 gboolean prefs_common_enable_log_error(void)
1576 return prefs_common.enable_log_error;
1578 gboolean prefs_common_enable_log_status(void)
1580 return prefs_common.enable_log_status;
1584 return the translated name of a header, if the translate_header option is
1585 set, otherwise return the untranslated header name (header_name itself).
1586 this function is provided for convenience, it's an interface to
1587 prefs_common.trans_hdr.
1588 works with header names either with or without trailing colon, provided
1589 that gettext found such header name in the sources (they should all be
1590 found in src/gtk/headers.h anyway).
1592 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1594 if (header_name == NULL || *header_name == '\0')
1597 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1600 const gchar *prefs_common_get_uri_cmd(void)
1607 if (!prefs_common.cmds_use_system_default)
1608 return prefs_common.uri_cmd;
1610 tmp = g_find_program_in_path("xdg-open");
1612 return prefs_common.uri_cmd;
1615 return "xdg-open %s";
1619 const gchar *prefs_common_get_ext_editor_cmd(void)
1621 return prefs_common.ext_editor_cmd;
1622 #if 0 /* we should do that, but it detaches the editor and breaks
1623 compose.c's external composition. */
1626 if (!prefs_common.cmds_use_system_default)
1627 return prefs_common.ext_editor_cmd;
1629 tmp = g_find_program_in_path("xdg-open");
1631 return prefs_common.ext_editor_cmd;
1634 return "xdg-open %s";
1638 gboolean prefs_common_get_use_shred(void)
1640 return prefs_common.use_shred;
1643 gboolean prefs_common_get_flush_metadata (void)
1645 return prefs_common.flush_metadata;
1648 PrefsCommon *prefs_common_get_prefs(void)
1650 return &prefs_common;