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},
125 {"enable_alpha_svg", "TRUE",
126 &prefs_common.enable_alpha_svg, P_BOOL, NULL, NULL, NULL},
127 {"enable_pixmap_scaling", "TRUE",
128 &prefs_common.enable_pixmap_scaling, P_BOOL, NULL, NULL, NULL},
129 {"pixmap_scaling_auto", "TRUE",
130 &prefs_common.pixmap_scaling_auto, P_BOOL, NULL, NULL, NULL},
131 {"pixmap_scaling_ppi", "96",
132 &prefs_common.pixmap_scaling_ppi, P_INT, NULL, NULL, NULL},
136 {"ext_editor_command", "notepad %s",
137 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
139 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
142 # define SPECIFIC_PREFS prefs_common
146 parameter name, default value, pointer to the prefs variable, data type,
147 pointer to the widget pointer,
148 pointer to the function for data setting,
149 pointer to the function for widget setting
152 static PrefParam param[] = {
153 {"config_version", "0",
154 &prefs_common.config_version, P_INT, NULL, NULL, NULL},
157 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
159 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
162 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
164 {"autochk_interval", "600", &prefs_common.autochk_itv, P_INT,
166 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
168 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
169 P_BOOL, NULL, NULL, NULL},
170 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
171 P_BOOL, NULL, NULL, NULL},
172 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
173 P_BOOL, NULL, NULL, NULL},
174 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
175 P_BOOL, NULL, NULL, NULL},
176 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
178 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
180 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
182 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
184 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
185 P_BOOL, NULL, NULL, NULL},
186 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
187 P_BOOL, NULL, NULL, NULL},
190 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
192 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
193 P_BOOL, NULL, NULL, NULL},
195 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
198 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
201 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
203 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
206 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
208 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
210 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
212 {"rewrite_first_from", "TRUE", &prefs_common.rewrite_first_from,
213 P_BOOL, NULL, NULL, NULL},
214 {"warn_empty_subj", "TRUE", &prefs_common.warn_empty_subj,
215 P_BOOL, NULL, NULL, NULL},
216 {"warn_sending_many_recipients", "FALSE", &prefs_common.warn_sending_many_recipients,
217 P_BOOL, NULL, NULL, NULL},
218 {"warn_sending_many_recipients_num", "1", &prefs_common.warn_sending_many_recipients_num, P_INT,
220 {"hide_timezone", "FALSE", &prefs_common.hide_timezone,
221 P_BOOL, NULL, NULL, NULL},
222 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
223 P_BOOL, NULL, NULL, NULL},
226 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
228 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
229 P_BOOL, NULL, NULL, NULL},
230 {"redirect_keep_from", "FALSE",
231 &prefs_common.redirect_keep_from, P_BOOL,
233 {"undo_level", "50", &prefs_common.undolevels, P_INT,
235 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
237 {"compose_subject_format", "",
238 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
239 {"compose_body_format", N_("Hello,\\n"),
240 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
241 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
243 {"type_any_header", "FALSE", &prefs_common.type_any_header, P_BOOL,
247 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
249 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
251 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
253 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
255 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
257 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
259 {"autosave", "TRUE", &prefs_common.autosave,
260 P_BOOL, NULL, NULL, NULL},
261 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
263 {"autosave_encrypted", "FALSE", &prefs_common.autosave_encrypted,
264 P_BOOL, NULL, NULL, NULL},
265 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
266 P_BOOL, NULL, NULL, NULL},
267 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
268 P_INT, NULL, NULL, NULL},
270 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
272 {"dictionary", "", &prefs_common.dictionary, P_STRING,
274 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
276 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
278 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
280 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
281 P_BOOL, NULL, NULL, NULL},
282 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
284 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
287 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
289 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
292 /* Account autoselection */
293 {"reply_account_autoselect", "TRUE",
294 &prefs_common.reply_account_autosel, P_BOOL,
296 {"forward_account_autoselect", "TRUE",
297 &prefs_common.forward_account_autosel, P_BOOL,
299 {"reedit_account_autoselect", "TRUE",
300 &prefs_common.reedit_account_autosel, P_BOOL,
303 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
307 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
310 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
315 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
317 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
318 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
320 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
322 {"forward_quote_format",
323 N_("\\n\\nBegin forwarded message:\\n\\n"
324 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
325 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
326 &prefs_common.fw_quotefmt, P_STRING,
328 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
334 {"widget_font_gtk2", NULL,
335 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
336 {"message_font_gtk2", "Monospace 9",
337 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
338 {"print_font_gtk2", "Monospace 9",
339 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
340 {"small_font_gtk2", "Sans 9",
341 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
342 {"normal_font_gtk2", "Sans 9",
343 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
344 {"bold_font_gtk2", "Sans Bold 9",
345 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
347 {"widget_font_gtk2", NULL,
348 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
349 {"message_font_gtk2", "Monospace 8",
350 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
351 {"print_font_gtk2", "Monospace 8",
352 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
353 {"small_font_gtk2", "Sans 8",
354 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
355 {"normal_font_gtk2", "Sans 8",
356 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
357 {"bold_font_gtk2", "Sans Bold 8",
358 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
361 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
363 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
367 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
369 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
371 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
373 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
375 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
377 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
379 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
381 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
383 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
385 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
387 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
389 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
391 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
393 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
395 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
397 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
399 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
401 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
403 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
405 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
407 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
409 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
411 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
413 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
415 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
417 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
419 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
421 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
423 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
425 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
429 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
431 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
433 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
436 {"display_folder_unread_num", "0",
437 &prefs_common.display_folder_unread, P_INT,
439 {"newsgroup_abbrev_len", "16",
440 &prefs_common.ng_abbrev_len, P_INT,
443 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
446 /* Display: Summary View */
447 {"default_sort_key", "3", &prefs_common.default_sort_key, P_ENUM,
449 {"default_sort_type", "1", &prefs_common.default_sort_type, P_ENUM,
451 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
453 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
455 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
456 P_STRING, NULL, NULL, NULL},
457 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
460 {"next_on_delete", "FALSE", &prefs_common.next_on_delete, P_BOOL,
463 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
466 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
469 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
472 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
475 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
477 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
480 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
482 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
485 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
487 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
491 {"summary_col_show_mark", "TRUE",
492 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_unread", "TRUE",
494 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_subject", "TRUE",
496 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_from", "TRUE",
498 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
499 {"summary_col_show_to", "FALSE",
500 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
501 {"summary_col_show_date", "TRUE",
502 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
503 {"summary_col_show_mime", "TRUE",
504 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
505 {"summary_col_show_size", "TRUE",
506 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
507 {"summary_col_show_number", "FALSE",
508 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
509 {"summary_col_show_score", "FALSE",
510 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
511 {"summary_col_show_locked", "FALSE",
512 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
513 {"summary_col_show_tags", "FALSE",
514 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
516 {"summary_col_pos_mark", "0",
517 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_unread", "1",
519 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_mime", "2",
521 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_subject", "3",
523 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
524 {"summary_col_pos_from", "4",
525 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
526 {"summary_col_pos_date", "5",
527 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
528 {"summary_col_pos_size", "6",
529 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
530 {"summary_col_pos_number", "7",
531 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
532 {"summary_col_pos_score", "8",
533 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
534 {"summary_col_pos_locked", "9",
535 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
536 {"summary_col_pos_to", "10",
537 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
538 {"summary_col_pos_tags", "11",
539 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_mark", "10",
542 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_unread", "13",
544 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_mime", "10",
546 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
548 {"summary_col_size_subject", "200",
549 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
550 {"summary_col_size_from", "120",
551 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
552 {"summary_col_size_to", "120",
553 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_subject", "300",
556 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
557 {"summary_col_size_from", "150",
558 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
559 {"summary_col_size_to", "150",
560 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
563 {"summary_col_size_date", "118",
564 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
565 {"summary_col_size_size", "45",
566 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
567 {"summary_col_size_number", "40",
568 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
569 {"summary_col_size_score", "40",
570 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
571 {"summary_col_size_locked", "13",
572 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
573 {"summary_col_size_tags", "150",
574 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
577 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
579 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
581 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
583 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
585 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
588 {"folder_col_show_folder", "TRUE",
589 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
590 {"folder_col_show_new", "TRUE",
591 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
592 {"folder_col_show_unread", "TRUE",
593 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
594 {"folder_col_show_total", "TRUE",
595 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
597 {"folder_col_pos_folder", "0",
598 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
599 {"folder_col_pos_new", "1",
600 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
601 {"folder_col_pos_unread", "2",
602 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
603 {"folder_col_pos_total", "3",
604 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
607 {"folder_col_size_folder", "120",
608 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
609 {"folder_col_size_new", "32",
610 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
611 {"folder_col_size_unread", "32",
612 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
613 {"folder_col_size_total", "32",
614 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
616 {"folder_col_size_folder", "400",
617 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
618 {"folder_col_size_new", "32",
619 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
620 {"folder_col_size_unread", "32",
621 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
622 {"folder_col_size_total", "32",
623 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
625 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
627 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
630 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
632 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
634 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
636 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
638 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
641 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
643 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
645 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
647 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
649 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
651 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
653 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
655 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
657 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
660 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
662 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
664 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
666 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
668 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
670 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
672 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
674 {"compose_width", "600", &prefs_common.compose_width, P_INT,
676 {"compose_height", "560", &prefs_common.compose_height, P_INT,
679 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
681 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
683 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
685 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
687 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
689 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
691 {"compose_width", "700", &prefs_common.compose_width, P_INT,
693 {"compose_height", "470", &prefs_common.compose_height, P_INT,
696 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
698 {"compose_x", "0", &prefs_common.compose_x, P_INT,
700 {"compose_y", "0", &prefs_common.compose_y, P_INT,
703 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
706 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
708 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
710 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
712 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
714 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
716 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
718 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
720 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
722 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
724 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
726 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
728 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
729 P_BOOL, NULL, NULL, NULL},
731 {"default_header_color", "#000000", &prefs_common.default_header_color, P_COLOR,
733 {"default_header_bgcolor", "#f5f6be", &prefs_common.default_header_bgcolor, P_COLOR,
735 {"tags_color", "#000000", &prefs_common.tags_color, P_COLOR,
737 {"tags_bgcolor", "#f5f6be", &prefs_common.tags_bgcolor, P_COLOR,
739 {"qs_active_color", "#000000", &prefs_common.qs_active_color, P_COLOR,
741 {"qs_active_bgcolor", "#f5f6be", &prefs_common.qs_active_bgcolor, P_COLOR,
743 {"qs_error_color", "#000000", &prefs_common.qs_error_color, P_COLOR,
745 {"qs_error_bgcolor", "#ff7070", &prefs_common.qs_error_bgcolor, P_COLOR,
748 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
749 P_BOOL, NULL, NULL, NULL},
750 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
752 {"display_xface", "TRUE", &prefs_common.display_xface,
753 P_BOOL, NULL, NULL, NULL},
754 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
756 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
758 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
760 {"line_space", "2", &prefs_common.line_space, P_INT,
762 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
765 {"enable_smooth_scroll", "FALSE",
766 &prefs_common.enable_smooth_scroll, P_BOOL,
768 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
770 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
772 {"hide_quoted", "TRUE",
773 &prefs_common.hide_quoted, P_BOOL,
775 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
777 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
780 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
783 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
785 {"attach_save_directory", NULL,
786 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
787 {"attach_load_directory", NULL,
788 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
791 {"mime_textviewer", NULL,
792 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
793 {"mime_open_command", "xdg-open '%s'",
794 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
795 {"show_inline_attachments", "TRUE",
796 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
800 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
803 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
806 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
807 NULL, NULL, NULL}, */
808 {"open_selected_message_on_folder_open", "FALSE",
809 &prefs_common.open_selected_on_folder_open,
810 P_BOOL, NULL, NULL, NULL},
811 {"always_show_message_when_selected", "0",
812 &prefs_common.always_show_msg,
813 P_ENUM, NULL, NULL, NULL},
814 {"select_on_entry", "3", &prefs_common.select_on_entry,
815 P_ENUM, NULL, NULL, NULL},
816 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
817 P_BOOL, NULL, NULL, NULL},
819 /* do it SUMMARY_OPEN_ACTIONS-1 times */
820 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
822 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
824 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
826 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
828 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
830 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
832 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
835 {"mark_as_read_on_new_window", "FALSE",
836 &prefs_common.mark_as_read_on_new_window,
837 P_BOOL, NULL, NULL, NULL},
838 {"mark_as_read_delay", "0",
839 &prefs_common.mark_as_read_delay, P_INT,
841 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
843 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
845 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
848 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
849 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
852 {"enable_alpha_svg", "TRUE",
853 &SPECIFIC_PREFS.enable_alpha_svg, P_BOOL,
855 {"enable_pixmap_scaling", "TRUE",
856 &SPECIFIC_PREFS.enable_pixmap_scaling, P_BOOL,
858 {"pixmap_scaling_auto", "TRUE",
859 &SPECIFIC_PREFS.pixmap_scaling_auto, P_BOOL,
861 {"pixmap_scaling_ppi", "96",
862 &SPECIFIC_PREFS.pixmap_scaling_ppi, P_INT,
866 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
869 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
871 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
875 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
876 P_BOOL, NULL, NULL, NULL},
877 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
878 P_INT, NULL, NULL, NULL},
879 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
880 P_INT, NULL, NULL, NULL},
884 {"uri_open_command", DEFAULT_BROWSER_CMD,
885 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
887 {"gtk_theme", DEFAULT_W32_GTK_THEME,
888 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
890 {"ext_editor_command", DEFAULT_EDITOR_CMD,
891 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
892 {"cmds_use_system_default", "TRUE",
893 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
894 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
895 P_BOOL, NULL, NULL, NULL},
896 {"session_passwords", "FALSE", &prefs_common.session_passwords,
897 P_BOOL, NULL, NULL, NULL},
898 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
900 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
902 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
904 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
905 P_BOOL, NULL, NULL, NULL},
906 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
908 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
911 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
914 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
918 #if defined(__OpenBSD__)
919 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
920 P_INT, NULL, NULL, NULL},
922 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
923 P_INT, NULL, NULL, NULL},
925 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
927 {"important_score", "1", &prefs_common.important_score, P_INT,
930 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
932 {"log_length", "500", &prefs_common.loglength, P_INT,
935 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
937 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
939 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
941 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
944 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
946 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
948 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
950 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
953 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
955 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
957 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
959 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
961 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
963 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
965 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
967 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
970 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
972 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
974 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
976 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
978 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
980 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
982 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
984 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
986 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
989 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
992 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
995 /* Some windows' sizes */
996 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
998 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
1001 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
1003 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
1006 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
1008 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
1011 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
1013 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
1016 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
1018 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
1021 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
1023 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1026 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1028 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1031 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1033 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1036 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1038 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1041 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1043 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1046 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1048 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1051 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1053 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1056 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1059 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1061 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1064 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1066 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1069 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1071 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1074 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1076 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1079 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1081 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1084 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1086 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1089 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1091 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1094 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1096 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1099 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1101 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1104 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1106 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1110 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1112 {"utf8_instead_of_locale_for_broken_mail", "0",
1113 &prefs_common.broken_are_utf8, P_INT,
1115 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1117 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1119 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1121 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1123 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1125 {"folderview_vscrollbar_policy", "0",
1126 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1128 {"textview_cursor_visible", "FALSE",
1129 &prefs_common.textview_cursor_visible, P_BOOL,
1131 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1133 #ifndef GENERIC_UMPC
1134 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1136 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1139 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1141 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1144 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1145 P_INT, NULL, NULL, NULL },
1146 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1147 P_STRING, NULL, NULL, NULL },
1148 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1149 P_BOOL, NULL, NULL, NULL },
1150 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1152 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1154 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1156 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1158 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1160 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1162 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1164 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1166 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1168 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1170 #ifndef GENERIC_UMPC
1171 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1174 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1178 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1180 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1182 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1184 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1186 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1188 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1190 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1192 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1194 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1196 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1198 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1200 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1202 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1204 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1206 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1209 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1210 P_BOOL, NULL, NULL, NULL },
1212 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1215 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1218 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1221 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1223 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1225 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1228 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1230 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1232 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1233 #ifndef PASSWORD_CRYPTO_OLD
1234 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1235 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1236 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1237 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1240 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1244 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1245 * Fallback to default_list if history file is not found
1247 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1248 GList *default_list)
1252 gchar buf[PREFSBUFSIZE];
1256 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1257 G_DIR_SEPARATOR_S, history,
1260 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1263 if ((fp = g_fopen(path, "rb")) == NULL) {
1264 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1266 /* returns default list if set, otherwise NULL */
1267 return default_list;
1270 while (fgets(buf, sizeof(buf), fp) != NULL) {
1272 if (buf[0] == '\0') continue;
1273 tmp = add_history(tmp, buf);
1277 tmp = g_list_reverse(tmp);
1283 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1285 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1287 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1291 * Read history list from the specified history file
1293 static GList *prefs_common_read_history(const gchar *history)
1295 return prefs_common_read_history_from_dir(NULL, history);
1298 void prefs_common_read_config(void)
1303 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1304 prefs_read_config(param, "Common", rcpath, NULL);
1306 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1311 tmp = g_strdup(gettext(prefs_common.date_format));
1312 g_free(prefs_common.date_format);
1313 prefs_common.date_format = tmp;
1315 prefs_common.mime_open_cmd_history =
1316 prefs_common_read_history(COMMAND_HISTORY);
1317 prefs_common.summary_quicksearch_history =
1318 prefs_common_read_history(QUICKSEARCH_HISTORY);
1319 prefs_common.summary_search_from_history =
1320 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1321 prefs_common.summary_search_to_history =
1322 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1323 prefs_common.summary_search_subject_history =
1324 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1325 prefs_common.summary_search_body_history =
1326 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1327 prefs_common.summary_search_adv_condition_history =
1328 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1329 prefs_common.message_search_history =
1330 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1331 prefs_common.compose_save_to_history =
1332 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1333 #ifndef USE_ALT_ADDRBOOK
1334 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1336 colorlabel_update_colortable_from_prefs();
1342 g_warning("failed to write"); \
1347 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1349 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1353 gchar *path, *tmp_path;
1356 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1357 G_DIR_SEPARATOR_S, history,
1360 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1363 tmp_path = g_strconcat(path, ".tmp", NULL);
1365 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1366 FILE_OP_ERROR(tmp_path, "fopen");
1370 for (cur = list; cur != NULL; cur = cur->next) {
1371 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1372 fputc('\n', fp) != EOF);
1375 if (fclose(fp) == EOF) {
1376 FILE_OP_ERROR(tmp_path, "fclose");
1384 if (g_rename(tmp_path, path) < 0) {
1385 FILE_OP_ERROR(path, "rename");
1397 * Save history list to the specified history file
1399 static void prefs_common_save_history(const gchar *history, GList *list)
1401 prefs_common_save_history_to_dir(NULL, history, list);
1406 void prefs_common_write_config(void)
1408 prefs_write_config(param, "Common", COMMON_RC);
1410 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1413 prefs_common_save_history(COMMAND_HISTORY,
1414 prefs_common.mime_open_cmd_history);
1415 prefs_common_save_history(QUICKSEARCH_HISTORY,
1416 prefs_common.summary_quicksearch_history);
1417 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1418 prefs_common.summary_search_from_history);
1419 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1420 prefs_common.summary_search_to_history);
1421 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1422 prefs_common.summary_search_subject_history);
1423 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1424 prefs_common.summary_search_body_history);
1425 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1426 prefs_common.summary_search_adv_condition_history);
1427 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1428 prefs_common.message_search_history);
1429 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1430 prefs_common.compose_save_to_history);
1432 #ifndef USE_ALT_ADDRBOOK
1433 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1434 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1435 prefs_common.addressbook_custom_attributes);
1439 /* make a copy of string 'in' into buffer 'out'. un-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 strlen(txt)+1, this buffer will get cleared. out's contents
1443 will always get set to a valid string, even if it's "".*/
1444 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1451 cm_return_if_fail( in != NULL );
1452 cm_return_if_fail( out != NULL );
1456 memset(out, 0, strlen(in)+1);
1457 while (*i != '\0') {
1458 if (*i == '\\' && *(i+1) == 'n') {
1461 } else if (*i == '\\' && *(i+1) == 't') {
1464 } else if (*i == '\\' && *(i+1) == '\\') {
1475 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1476 both 'in' and 'out' must be non-NULL.
1477 'out' must be a pointer to a buffer whose size is at least equal
1478 to 2*strlen(txt)+1. out's contents will always get set to a valid
1479 string, even if it's "". */
1480 void pref_get_escaped_pref(gchar *out, const gchar *in)
1487 cm_return_if_fail( in != NULL );
1488 cm_return_if_fail( out != NULL );
1492 while (*i != '\0') {
1496 } else if (*i == '\t') {
1499 } else if (*i == '\\') {
1510 /* set the contents of a textview widget from the internal \-escaped
1511 representation of a pref string. both txt and textview must be non-NULL. */
1512 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1514 GtkTextBuffer *buffer;
1517 cm_return_if_fail( textview != NULL );
1519 buffer = gtk_text_view_get_buffer(textview);
1522 gtk_text_buffer_set_text(buffer, "", -1);
1524 out = g_malloc(strlen(txt)+1);
1526 pref_get_unescaped_pref(out, txt);
1528 gtk_text_buffer_set_text(buffer, out, -1);
1533 /* set the contents of a gtkentry widget from the internal \-escaped
1534 representation of a pref string. both txt and entry must be non-NULL. */
1535 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1539 cm_return_if_fail( entry != NULL );
1541 gtk_entry_set_text(entry, "");
1543 out = g_malloc(strlen(txt)+1);
1545 pref_get_unescaped_pref(out, txt);
1547 gtk_entry_set_text(entry, out);
1552 /* get the \-escaped internal representation of a pref from the contents of
1553 a textview widget. textview must be non-NULL. */
1554 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1556 GtkTextBuffer *buffer;
1557 GtkTextIter start, end;
1560 cm_return_val_if_fail( textview != NULL, "" );
1562 buffer = gtk_text_view_get_buffer(textview);
1563 gtk_text_buffer_get_start_iter(buffer, &start);
1564 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1565 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1566 out = malloc(2*strlen(tmp)+1);
1568 pref_get_escaped_pref(out, tmp);
1574 /* get the \-escaped internal representation of a pref from the contents of
1575 a gtkentry widget. entry must be non-NULL. */
1576 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1580 cm_return_val_if_fail( entry != NULL, "" );
1582 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1583 out = malloc(2*strlen(tmp)+1);
1586 pref_get_escaped_pref(out, tmp);
1592 /* ugly hack to be able to get this pref from ssl_certificate.c */
1593 gboolean prefs_common_unsafe_ssl_certs(void)
1595 return prefs_common.unsafe_ssl_certs;
1598 gboolean prefs_common_enable_log_standard(void)
1600 return prefs_common.enable_log_standard;
1603 gboolean prefs_common_enable_log_warning(void)
1605 return prefs_common.enable_log_warning;
1607 gboolean prefs_common_enable_log_error(void)
1609 return prefs_common.enable_log_error;
1611 gboolean prefs_common_enable_log_status(void)
1613 return prefs_common.enable_log_status;
1617 return the translated name of a header, if the translate_header option is
1618 set, otherwise return the untranslated header name (header_name itself).
1619 this function is provided for convenience, it's an interface to
1620 prefs_common.trans_hdr.
1621 works with header names either with or without trailing colon, provided
1622 that gettext found such header name in the sources (they should all be
1623 found in src/gtk/headers.h anyway).
1625 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1627 if (header_name == NULL || *header_name == '\0')
1630 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1633 const gchar *prefs_common_get_uri_cmd(void)
1640 if (!prefs_common.cmds_use_system_default)
1641 return prefs_common.uri_cmd;
1643 tmp = g_find_program_in_path("xdg-open");
1645 return prefs_common.uri_cmd;
1648 return "xdg-open %s";
1652 const gchar *prefs_common_get_ext_editor_cmd(void)
1654 return prefs_common.ext_editor_cmd;
1655 #if 0 /* we should do that, but it detaches the editor and breaks
1656 compose.c's external composition. */
1659 if (!prefs_common.cmds_use_system_default)
1660 return prefs_common.ext_editor_cmd;
1662 tmp = g_find_program_in_path("xdg-open");
1664 return prefs_common.ext_editor_cmd;
1667 return "xdg-open %s";
1671 gboolean prefs_common_get_use_shred(void)
1673 return prefs_common.use_shred;
1676 gboolean prefs_common_get_flush_metadata (void)
1678 return prefs_common.flush_metadata;
1681 PrefsCommon *prefs_common_get_prefs(void)
1683 return &prefs_common;