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_num", "0", &prefs_common.warn_sending_many_recipients_num, P_INT,
218 {"hide_timezone", "FALSE", &prefs_common.hide_timezone,
219 P_BOOL, NULL, NULL, NULL},
220 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
221 P_BOOL, NULL, NULL, NULL},
224 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
226 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
227 P_BOOL, NULL, NULL, NULL},
228 {"redirect_keep_from", "FALSE",
229 &prefs_common.redirect_keep_from, P_BOOL,
231 {"undo_level", "50", &prefs_common.undolevels, P_INT,
233 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
235 {"compose_subject_format", "",
236 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
237 {"compose_body_format", N_("Hello,\\n"),
238 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
239 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
241 {"type_any_header", "FALSE", &prefs_common.type_any_header, P_BOOL,
245 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
247 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
249 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
251 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
253 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
255 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
257 {"autosave", "TRUE", &prefs_common.autosave,
258 P_BOOL, NULL, NULL, NULL},
259 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
261 {"autosave_encrypted", "FALSE", &prefs_common.autosave_encrypted,
262 P_BOOL, NULL, NULL, NULL},
263 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
264 P_BOOL, NULL, NULL, NULL},
265 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
266 P_INT, NULL, NULL, NULL},
268 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
270 {"dictionary", "", &prefs_common.dictionary, P_STRING,
272 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
274 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
276 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
278 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
279 P_BOOL, NULL, NULL, NULL},
280 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
282 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
285 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
287 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
290 /* Account autoselection */
291 {"reply_account_autoselect", "TRUE",
292 &prefs_common.reply_account_autosel, P_BOOL,
294 {"forward_account_autoselect", "TRUE",
295 &prefs_common.forward_account_autosel, P_BOOL,
297 {"reedit_account_autoselect", "TRUE",
298 &prefs_common.reedit_account_autosel, P_BOOL,
301 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
305 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
308 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
313 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
315 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
316 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
318 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
320 {"forward_quote_format",
321 N_("\\n\\nBegin forwarded message:\\n\\n"
322 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
323 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
324 &prefs_common.fw_quotefmt, P_STRING,
326 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
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 {"default_header_color", "#000000", &prefs_common.default_header_color, P_COLOR,
731 {"default_header_bgcolor", "#f5f6be", &prefs_common.default_header_bgcolor, P_COLOR,
733 {"tags_color", "#000000", &prefs_common.tags_color, P_COLOR,
735 {"tags_bgcolor", "#f5f6be", &prefs_common.tags_bgcolor, P_COLOR,
737 {"qs_active_color", "#000000", &prefs_common.qs_active_color, P_COLOR,
739 {"qs_active_bgcolor", "#f5f6be", &prefs_common.qs_active_bgcolor, P_COLOR,
741 {"qs_error_color", "#000000", &prefs_common.qs_error_color, P_COLOR,
743 {"qs_error_bgcolor", "#ff7070", &prefs_common.qs_error_bgcolor, P_COLOR,
746 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
747 P_BOOL, NULL, NULL, NULL},
748 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
750 {"display_xface", "TRUE", &prefs_common.display_xface,
751 P_BOOL, NULL, NULL, NULL},
752 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
754 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
756 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
758 {"line_space", "2", &prefs_common.line_space, P_INT,
760 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
763 {"enable_smooth_scroll", "FALSE",
764 &prefs_common.enable_smooth_scroll, P_BOOL,
766 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
768 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
770 {"hide_quoted", "TRUE",
771 &prefs_common.hide_quoted, P_BOOL,
773 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
775 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
778 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
781 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
783 {"attach_save_directory", NULL,
784 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
785 {"attach_load_directory", NULL,
786 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
789 {"mime_textviewer", NULL,
790 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
791 {"mime_open_command", "xdg-open '%s'",
792 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
793 {"show_inline_attachments", "TRUE",
794 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
798 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
801 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
804 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
805 NULL, NULL, NULL}, */
806 {"open_selected_message_on_folder_open", "FALSE",
807 &prefs_common.open_selected_on_folder_open,
808 P_BOOL, NULL, NULL, NULL},
809 {"open_selected_message_on_search_results", "FALSE",
810 &prefs_common.open_selected_on_search_results,
811 P_BOOL, NULL, NULL, NULL},
812 {"open_selected_message_on_prevnext", "FALSE",
813 &prefs_common.open_selected_on_prevnext,
814 P_BOOL, NULL, NULL, NULL},
815 {"open_selected_message_on_deletemove", "FALSE",
816 &prefs_common.open_selected_on_deletemove,
817 P_BOOL, NULL, NULL, NULL},
818 {"open_selected_message_on_directional", "FALSE",
819 &prefs_common.open_selected_on_directional,
820 P_BOOL, NULL, NULL, NULL},
821 {"always_show_message_when_selected", "FALSE",
822 &prefs_common.always_show_msg,
823 P_BOOL, NULL, NULL, NULL},
824 {"select_on_entry", "3", &prefs_common.select_on_entry,
825 P_ENUM, NULL, NULL, NULL},
826 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
827 P_BOOL, NULL, NULL, NULL},
829 /* do it SUMMARY_OPEN_ACTIONS-1 times */
830 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
832 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
834 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
836 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
838 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
840 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
842 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
845 {"mark_as_read_on_new_window", "FALSE",
846 &prefs_common.mark_as_read_on_new_window,
847 P_BOOL, NULL, NULL, NULL},
848 {"mark_as_read_delay", "0",
849 &prefs_common.mark_as_read_delay, P_INT,
851 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
853 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
855 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
858 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
859 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
862 {"enable_alpha_svg", "TRUE",
863 &SPECIFIC_PREFS.enable_alpha_svg, P_BOOL,
865 {"enable_pixmap_scaling", "TRUE",
866 &SPECIFIC_PREFS.enable_pixmap_scaling, P_BOOL,
868 {"pixmap_scaling_auto", "TRUE",
869 &SPECIFIC_PREFS.pixmap_scaling_auto, P_BOOL,
871 {"pixmap_scaling_ppi", "96",
872 &SPECIFIC_PREFS.pixmap_scaling_ppi, P_INT,
876 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
879 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
881 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
885 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
886 P_BOOL, NULL, NULL, NULL},
887 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
888 P_INT, NULL, NULL, NULL},
889 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
890 P_INT, NULL, NULL, NULL},
894 {"uri_open_command", DEFAULT_BROWSER_CMD,
895 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
897 {"gtk_theme", DEFAULT_W32_GTK_THEME,
898 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
900 {"ext_editor_command", DEFAULT_EDITOR_CMD,
901 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
902 {"cmds_use_system_default", "TRUE",
903 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
904 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
905 P_BOOL, NULL, NULL, NULL},
906 {"session_passwords", "FALSE", &prefs_common.session_passwords,
907 P_BOOL, NULL, NULL, NULL},
908 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
910 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
912 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
914 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
915 P_BOOL, NULL, NULL, NULL},
916 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
918 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
921 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
924 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
928 #if defined(__OpenBSD__)
929 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
930 P_INT, NULL, NULL, NULL},
932 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
933 P_INT, NULL, NULL, NULL},
935 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
937 {"important_score", "1", &prefs_common.important_score, P_INT,
940 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
942 {"log_length", "500", &prefs_common.loglength, P_INT,
945 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
947 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
949 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
951 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
954 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
956 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
958 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
960 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
963 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
965 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
967 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
969 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
971 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
973 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
975 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
977 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
980 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
982 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
984 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
986 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
988 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
990 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
992 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
994 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
996 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
999 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
1002 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
1005 /* Some windows' sizes */
1006 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
1008 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
1011 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
1013 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
1016 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
1018 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
1021 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
1023 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
1026 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
1028 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
1031 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
1033 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1036 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1038 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1041 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1043 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1046 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1048 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1051 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1053 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1056 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1058 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1061 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1063 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1066 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1069 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1071 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1074 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1076 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1079 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1081 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1084 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1086 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1089 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1091 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1094 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1096 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1099 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1101 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1104 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1106 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1109 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1111 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1114 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1116 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1120 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1122 {"utf8_instead_of_locale_for_broken_mail", "0",
1123 &prefs_common.broken_are_utf8, P_INT,
1125 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1127 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1129 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1131 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1133 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1135 {"folderview_vscrollbar_policy", "0",
1136 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1138 {"textview_cursor_visible", "FALSE",
1139 &prefs_common.textview_cursor_visible, P_BOOL,
1141 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1143 #ifndef GENERIC_UMPC
1144 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1146 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1149 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1151 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1154 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1155 P_INT, NULL, NULL, NULL },
1156 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1157 P_STRING, NULL, NULL, NULL },
1158 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1159 P_BOOL, NULL, NULL, NULL },
1160 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1162 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1164 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1166 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1168 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1170 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1172 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1174 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1176 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1178 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1180 #ifndef GENERIC_UMPC
1181 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1184 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1188 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1190 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1192 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1194 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1196 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1198 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1200 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1202 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1204 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1206 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1208 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1210 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1212 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1214 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1216 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1219 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1220 P_BOOL, NULL, NULL, NULL },
1222 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1225 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1228 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1231 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1233 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1235 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1238 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1240 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1242 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1243 #ifndef PASSWORD_CRYPTO_OLD
1244 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1245 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1246 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1247 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1250 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1254 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1255 * Fallback to default_list if history file is not found
1257 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1258 GList *default_list)
1262 gchar buf[PREFSBUFSIZE];
1266 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1267 G_DIR_SEPARATOR_S, history,
1270 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1273 if ((fp = g_fopen(path, "rb")) == NULL) {
1274 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1276 /* returns default list if set, otherwise NULL */
1277 return default_list;
1280 while (fgets(buf, sizeof(buf), fp) != NULL) {
1282 if (buf[0] == '\0') continue;
1283 tmp = add_history(tmp, buf);
1287 tmp = g_list_reverse(tmp);
1293 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1295 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1297 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1301 * Read history list from the specified history file
1303 static GList *prefs_common_read_history(const gchar *history)
1305 return prefs_common_read_history_from_dir(NULL, history);
1308 void prefs_common_read_config(void)
1313 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1314 prefs_read_config(param, "Common", rcpath, NULL);
1316 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1321 tmp = g_strdup(gettext(prefs_common.date_format));
1322 g_free(prefs_common.date_format);
1323 prefs_common.date_format = tmp;
1325 prefs_common.mime_open_cmd_history =
1326 prefs_common_read_history(COMMAND_HISTORY);
1327 prefs_common.summary_quicksearch_history =
1328 prefs_common_read_history(QUICKSEARCH_HISTORY);
1329 prefs_common.summary_search_from_history =
1330 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1331 prefs_common.summary_search_to_history =
1332 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1333 prefs_common.summary_search_subject_history =
1334 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1335 prefs_common.summary_search_body_history =
1336 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1337 prefs_common.summary_search_adv_condition_history =
1338 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1339 prefs_common.message_search_history =
1340 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1341 prefs_common.compose_save_to_history =
1342 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1343 #ifndef USE_ALT_ADDRBOOK
1344 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1346 colorlabel_update_colortable_from_prefs();
1352 g_warning("failed to write"); \
1357 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1359 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1363 gchar *path, *tmp_path;
1366 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1367 G_DIR_SEPARATOR_S, history,
1370 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1373 tmp_path = g_strconcat(path, ".tmp", NULL);
1375 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1376 FILE_OP_ERROR(tmp_path, "fopen");
1380 for (cur = list; cur != NULL; cur = cur->next) {
1381 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1382 fputc('\n', fp) != EOF);
1385 if (fclose(fp) == EOF) {
1386 FILE_OP_ERROR(tmp_path, "fclose");
1394 if (g_rename(tmp_path, path) < 0) {
1395 FILE_OP_ERROR(path, "rename");
1407 * Save history list to the specified history file
1409 static void prefs_common_save_history(const gchar *history, GList *list)
1411 prefs_common_save_history_to_dir(NULL, history, list);
1416 void prefs_common_write_config(void)
1418 prefs_write_config(param, "Common", COMMON_RC);
1420 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1423 prefs_common_save_history(COMMAND_HISTORY,
1424 prefs_common.mime_open_cmd_history);
1425 prefs_common_save_history(QUICKSEARCH_HISTORY,
1426 prefs_common.summary_quicksearch_history);
1427 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1428 prefs_common.summary_search_from_history);
1429 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1430 prefs_common.summary_search_to_history);
1431 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1432 prefs_common.summary_search_subject_history);
1433 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1434 prefs_common.summary_search_body_history);
1435 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1436 prefs_common.summary_search_adv_condition_history);
1437 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1438 prefs_common.message_search_history);
1439 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1440 prefs_common.compose_save_to_history);
1442 #ifndef USE_ALT_ADDRBOOK
1443 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1444 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1445 prefs_common.addressbook_custom_attributes);
1449 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1450 both 'in' and 'out' must be non-NULL.
1451 'out' must be a pointer to a buffer whose size is at least equal
1452 to strlen(txt)+1, this buffer will get cleared. out's contents
1453 will always get set to a valid string, even if it's "".*/
1454 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1461 cm_return_if_fail( in != NULL );
1462 cm_return_if_fail( out != NULL );
1466 memset(out, 0, strlen(in)+1);
1467 while (*i != '\0') {
1468 if (*i == '\\' && *(i+1) == 'n') {
1471 } else if (*i == '\\' && *(i+1) == 't') {
1474 } else if (*i == '\\' && *(i+1) == '\\') {
1485 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1486 both 'in' and 'out' must be non-NULL.
1487 'out' must be a pointer to a buffer whose size is at least equal
1488 to 2*strlen(txt)+1. out's contents will always get set to a valid
1489 string, even if it's "". */
1490 void pref_get_escaped_pref(gchar *out, const gchar *in)
1497 cm_return_if_fail( in != NULL );
1498 cm_return_if_fail( out != NULL );
1502 while (*i != '\0') {
1506 } else if (*i == '\t') {
1509 } else if (*i == '\\') {
1520 /* set the contents of a textview widget from the internal \-escaped
1521 representation of a pref string. both txt and textview must be non-NULL. */
1522 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1524 GtkTextBuffer *buffer;
1527 cm_return_if_fail( textview != NULL );
1529 buffer = gtk_text_view_get_buffer(textview);
1532 gtk_text_buffer_set_text(buffer, "", -1);
1534 out = g_malloc(strlen(txt)+1);
1536 pref_get_unescaped_pref(out, txt);
1538 gtk_text_buffer_set_text(buffer, out, -1);
1543 /* set the contents of a gtkentry widget from the internal \-escaped
1544 representation of a pref string. both txt and entry must be non-NULL. */
1545 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1549 cm_return_if_fail( entry != NULL );
1551 gtk_entry_set_text(entry, "");
1553 out = g_malloc(strlen(txt)+1);
1555 pref_get_unescaped_pref(out, txt);
1557 gtk_entry_set_text(entry, out);
1562 /* get the \-escaped internal representation of a pref from the contents of
1563 a textview widget. textview must be non-NULL. */
1564 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1566 GtkTextBuffer *buffer;
1567 GtkTextIter start, end;
1570 cm_return_val_if_fail( textview != NULL, "" );
1572 buffer = gtk_text_view_get_buffer(textview);
1573 gtk_text_buffer_get_start_iter(buffer, &start);
1574 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1575 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1576 out = malloc(2*strlen(tmp)+1);
1578 pref_get_escaped_pref(out, tmp);
1584 /* get the \-escaped internal representation of a pref from the contents of
1585 a gtkentry widget. entry must be non-NULL. */
1586 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1590 cm_return_val_if_fail( entry != NULL, "" );
1592 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1593 out = malloc(2*strlen(tmp)+1);
1596 pref_get_escaped_pref(out, tmp);
1602 /* ugly hack to be able to get this pref from ssl_certificate.c */
1603 gboolean prefs_common_unsafe_ssl_certs(void)
1605 return prefs_common.unsafe_ssl_certs;
1608 gboolean prefs_common_enable_log_standard(void)
1610 return prefs_common.enable_log_standard;
1613 gboolean prefs_common_enable_log_warning(void)
1615 return prefs_common.enable_log_warning;
1617 gboolean prefs_common_enable_log_error(void)
1619 return prefs_common.enable_log_error;
1621 gboolean prefs_common_enable_log_status(void)
1623 return prefs_common.enable_log_status;
1627 return the translated name of a header, if the translate_header option is
1628 set, otherwise return the untranslated header name (header_name itself).
1629 this function is provided for convenience, it's an interface to
1630 prefs_common.trans_hdr.
1631 works with header names either with or without trailing colon, provided
1632 that gettext found such header name in the sources (they should all be
1633 found in src/gtk/headers.h anyway).
1635 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1637 if (header_name == NULL || *header_name == '\0')
1640 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1643 const gchar *prefs_common_get_uri_cmd(void)
1650 if (!prefs_common.cmds_use_system_default)
1651 return prefs_common.uri_cmd;
1653 tmp = g_find_program_in_path("xdg-open");
1655 return prefs_common.uri_cmd;
1658 return "xdg-open %s";
1662 const gchar *prefs_common_get_ext_editor_cmd(void)
1664 return prefs_common.ext_editor_cmd;
1665 #if 0 /* we should do that, but it detaches the editor and breaks
1666 compose.c's external composition. */
1669 if (!prefs_common.cmds_use_system_default)
1670 return prefs_common.ext_editor_cmd;
1672 tmp = g_find_program_in_path("xdg-open");
1674 return prefs_common.ext_editor_cmd;
1677 return "xdg-open %s";
1681 gboolean prefs_common_get_use_shred(void)
1683 return prefs_common.use_shred;
1686 gboolean prefs_common_get_flush_metadata (void)
1688 return prefs_common.flush_metadata;
1691 PrefsCommon *prefs_common_get_prefs(void)
1693 return &prefs_common;