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 "prefs_migration.h"
45 #include "mainwindow.h"
46 #include "summaryview.h"
47 #include "folderview.h"
48 #include "messageview.h"
49 #include "manage_window.h"
55 #include "alertpanel.h"
59 #include "folderview.h"
60 #include "stock_pixmap.h"
61 #include "prefswindow.h"
62 #include "colorlabel.h"
63 #include "passwordstore.h"
64 #ifndef USE_ALT_ADDRBOOK
65 #include "addrcustomattr.h"
74 PrefsCommon prefs_common;
80 * In the Windows version prefs_common contains
81 * - the non-OS-specific settings of the "Common" section and
82 * - the OS-specific settings of the "CommonWin32" section
83 * The OS-specific settings of the "Common" section are not used
84 * but saved in prefs_unix.
87 # define SPECIFIC_PREFS prefs_unix
89 static PrefsCommon prefs_unix;
91 static PrefParam param_os_specific[] = {
94 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
95 {"newmail_notify_cmd", "",
96 &prefs_common.newmail_notify_cmd, 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.color[COL_MISSPELLED],
281 P_COLOR, NULL, NULL, NULL},
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 {"message_font_gtk2", "Monospace 9",
333 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
334 {"print_font_gtk2", "Monospace 9",
335 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
336 {"small_font_gtk2", "Sans 9",
337 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
338 {"normal_font_gtk2", "Sans 9",
339 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
340 {"bold_font_gtk2", "Sans Bold 9",
341 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
343 {"message_font_gtk2", "Monospace 8",
344 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
345 {"print_font_gtk2", "Monospace 8",
346 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
347 {"small_font_gtk2", "Sans 8",
348 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
349 {"normal_font_gtk2", "Sans 8",
350 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
351 {"bold_font_gtk2", "Sans Bold 8",
352 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
355 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
357 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
361 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
363 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
365 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
367 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
369 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
371 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
373 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
375 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
377 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
379 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
381 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
383 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
385 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
387 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
389 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
391 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
393 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
395 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
397 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
399 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
401 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
403 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
405 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
407 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
409 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
411 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
413 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
415 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
417 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
419 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
423 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
425 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
427 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
430 {"display_folder_unread_num", "0",
431 &prefs_common.display_folder_unread, P_INT,
433 {"newsgroup_abbrev_len", "16",
434 &prefs_common.ng_abbrev_len, P_INT,
437 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
440 /* Display: Summary View */
441 {"default_sort_key", "3", &prefs_common.default_sort_key, P_ENUM,
443 {"default_sort_type", "1", &prefs_common.default_sort_type, P_ENUM,
445 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
447 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
449 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
450 P_STRING, NULL, NULL, NULL},
451 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
454 {"next_on_delete", "FALSE", &prefs_common.next_on_delete, P_BOOL,
457 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
460 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
463 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
466 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
469 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
471 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
474 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
476 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
479 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
481 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
485 {"summary_col_show_mark", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_unread", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_subject", "TRUE",
490 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_from", "TRUE",
492 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_to", "FALSE",
494 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_date", "TRUE",
496 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_mime", "TRUE",
498 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
499 {"summary_col_show_size", "TRUE",
500 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
501 {"summary_col_show_number", "FALSE",
502 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
503 {"summary_col_show_score", "FALSE",
504 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
505 {"summary_col_show_locked", "FALSE",
506 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
507 {"summary_col_show_tags", "FALSE",
508 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
510 {"summary_col_pos_mark", "0",
511 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_unread", "1",
513 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_mime", "2",
515 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_subject", "3",
517 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_from", "4",
519 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_date", "5",
521 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_size", "6",
523 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
524 {"summary_col_pos_number", "7",
525 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
526 {"summary_col_pos_score", "8",
527 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
528 {"summary_col_pos_locked", "9",
529 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
530 {"summary_col_pos_to", "10",
531 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
532 {"summary_col_pos_tags", "11",
533 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
535 {"summary_col_size_mark", "10",
536 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_unread", "13",
538 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_mime", "10",
540 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
542 {"summary_col_size_subject", "200",
543 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
544 {"summary_col_size_from", "120",
545 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_to", "120",
547 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_subject", "300",
550 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_from", "150",
552 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_to", "150",
554 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
557 {"summary_col_size_date", "118",
558 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
559 {"summary_col_size_size", "45",
560 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
561 {"summary_col_size_number", "40",
562 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
563 {"summary_col_size_score", "40",
564 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
565 {"summary_col_size_locked", "13",
566 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
567 {"summary_col_size_tags", "150",
568 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
571 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
573 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
575 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
577 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
579 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
582 {"folder_col_show_folder", "TRUE",
583 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
584 {"folder_col_show_new", "TRUE",
585 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
586 {"folder_col_show_unread", "TRUE",
587 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
588 {"folder_col_show_total", "TRUE",
589 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
591 {"folder_col_pos_folder", "0",
592 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
593 {"folder_col_pos_new", "1",
594 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
595 {"folder_col_pos_unread", "2",
596 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
597 {"folder_col_pos_total", "3",
598 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
601 {"folder_col_size_folder", "120",
602 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
603 {"folder_col_size_new", "32",
604 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
605 {"folder_col_size_unread", "32",
606 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
607 {"folder_col_size_total", "32",
608 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
610 {"folder_col_size_folder", "400",
611 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
612 {"folder_col_size_new", "32",
613 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
614 {"folder_col_size_unread", "32",
615 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
616 {"folder_col_size_total", "32",
617 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
619 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
621 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
624 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
626 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
628 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
630 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
632 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
635 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
637 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
639 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
641 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
643 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
645 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
647 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
649 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
651 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
654 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
656 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
658 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
660 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
662 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
664 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
666 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
668 {"compose_width", "600", &prefs_common.compose_width, P_INT,
670 {"compose_height", "560", &prefs_common.compose_height, P_INT,
673 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
675 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
677 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
679 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
681 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
683 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
685 {"compose_width", "700", &prefs_common.compose_width, P_INT,
687 {"compose_height", "470", &prefs_common.compose_height, P_INT,
690 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
692 {"compose_x", "0", &prefs_common.compose_x, P_INT,
694 {"compose_y", "0", &prefs_common.compose_y, P_INT,
697 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
700 {"quote_level1_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL1],
701 P_COLOR, NULL, NULL, NULL},
702 {"quote_level2_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL2],
703 P_COLOR, NULL, NULL, NULL},
704 {"quote_level3_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL3],
705 P_COLOR, NULL, NULL, NULL},
706 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
708 {"quote_level1_bgcolor", "#cccccc", &prefs_common.color[COL_QUOTE_LEVEL1_BG],
709 P_COLOR, NULL, NULL, NULL},
710 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.color[COL_QUOTE_LEVEL2_BG],
711 P_COLOR, NULL, NULL, NULL},
712 {"quote_level3_bgcolor", "#dddddd", &prefs_common.color[COL_QUOTE_LEVEL3_BG],
713 P_COLOR, NULL, NULL, NULL},
714 {"uri_color", "#007f00", &prefs_common.color[COL_URI],
715 P_COLOR, NULL, NULL, NULL},
716 {"emphasis_color", "#0000cf", &prefs_common.color[COL_EMPHASIS],
717 P_COLOR, NULL, NULL, NULL},
718 {"target_folder_color", "#da1cca", &prefs_common.color[COL_TGT_FOLDER],
719 P_COLOR, NULL, NULL, NULL},
720 {"signature_color", "#797979", &prefs_common.color[COL_SIGNATURE],
721 P_COLOR, NULL, NULL, NULL},
722 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
723 P_BOOL, NULL, NULL, NULL},
725 {"default_header_color", "#000000", &prefs_common.color[COL_DEFAULT_HEADER],
726 P_COLOR, NULL, NULL, NULL},
727 {"default_header_bgcolor", "#f5f6be", &prefs_common.color[COL_DEFAULT_HEADER_BG],
728 P_COLOR, NULL, NULL, NULL},
729 {"tags_color", "#000000", &prefs_common.color[COL_TAGS],
730 P_COLOR, NULL, NULL, NULL},
731 {"tags_bgcolor", "#f5f6be", &prefs_common.color[COL_TAGS_BG],
732 P_COLOR, NULL, NULL, NULL},
733 {"qs_active_color", "#000000", &prefs_common.color[COL_QS_ACTIVE],
734 P_COLOR, NULL, NULL, NULL},
735 {"qs_active_bgcolor", "#f5f6be", &prefs_common.color[COL_QS_ACTIVE_BG],
736 P_COLOR, NULL, NULL, NULL},
737 {"qs_error_color", "#000000", &prefs_common.color[COL_QS_ERROR],
738 P_COLOR, NULL, NULL, NULL},
739 {"qs_error_bgcolor", "#ff7070", &prefs_common.color[COL_QS_ERROR_BG],
740 P_COLOR, NULL, NULL, NULL},
742 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
743 P_BOOL, NULL, NULL, NULL},
744 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
746 {"display_xface", "TRUE", &prefs_common.display_xface,
747 P_BOOL, NULL, NULL, NULL},
748 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
750 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
752 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
754 {"line_space", "2", &prefs_common.line_space, P_INT,
756 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
759 {"enable_smooth_scroll", "FALSE",
760 &prefs_common.enable_smooth_scroll, P_BOOL,
762 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
764 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
766 {"hide_quoted", "TRUE",
767 &prefs_common.hide_quoted, P_BOOL,
769 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
771 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
774 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
777 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
779 {"attach_save_directory", NULL,
780 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
781 {"attach_load_directory", NULL,
782 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
785 {"mime_textviewer", NULL,
786 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
787 {"mime_open_command", "xdg-open '%s'",
788 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
789 {"show_inline_attachments", "TRUE",
790 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
794 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
797 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
800 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
801 NULL, NULL, NULL}, */
802 {"open_selected_message_on_folder_open", "FALSE",
803 &prefs_common.open_selected_on_folder_open,
804 P_BOOL, NULL, NULL, NULL},
805 {"open_selected_message_on_search_results", "FALSE",
806 &prefs_common.open_selected_on_search_results,
807 P_BOOL, NULL, NULL, NULL},
808 {"open_selected_message_on_prevnext", "FALSE",
809 &prefs_common.open_selected_on_prevnext,
810 P_BOOL, NULL, NULL, NULL},
811 {"open_selected_message_on_deletemove", "FALSE",
812 &prefs_common.open_selected_on_deletemove,
813 P_BOOL, NULL, NULL, NULL},
814 {"open_selected_message_on_directional", "FALSE",
815 &prefs_common.open_selected_on_directional,
816 P_BOOL, NULL, NULL, NULL},
817 {"always_show_message_when_selected", "FALSE",
818 &prefs_common.always_show_msg,
819 P_BOOL, NULL, NULL, NULL},
820 {"select_on_entry", "3", &prefs_common.select_on_entry,
821 P_ENUM, NULL, NULL, NULL},
822 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
823 P_BOOL, NULL, NULL, NULL},
825 /* do it SUMMARY_OPEN_ACTIONS-1 times */
826 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
828 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
830 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
832 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
834 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
836 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
838 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
840 {"summary_select_prio8", "0", &prefs_common.summary_select_prio[7], P_ENUM,
842 {"summary_select_prio9", "0", &prefs_common.summary_select_prio[8], P_ENUM,
844 {"summary_select_prio10", "0", &prefs_common.summary_select_prio[9], P_ENUM,
847 {"mark_as_read_on_new_window", "FALSE",
848 &prefs_common.mark_as_read_on_new_window,
849 P_BOOL, NULL, NULL, NULL},
850 {"mark_as_read_delay", "0",
851 &prefs_common.mark_as_read_delay, P_INT,
853 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
855 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
857 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
860 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
861 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
864 {"enable_alpha_svg", "TRUE",
865 &SPECIFIC_PREFS.enable_alpha_svg, P_BOOL,
867 {"enable_pixmap_scaling", "TRUE",
868 &SPECIFIC_PREFS.enable_pixmap_scaling, P_BOOL,
870 {"pixmap_scaling_auto", "TRUE",
871 &SPECIFIC_PREFS.pixmap_scaling_auto, P_BOOL,
873 {"pixmap_scaling_ppi", "96",
874 &SPECIFIC_PREFS.pixmap_scaling_ppi, P_INT,
878 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
880 {"ask_override_colorlabel", "TRUE", &prefs_common.ask_override_colorlabel, P_BOOL,
883 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
885 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
889 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
890 P_BOOL, NULL, NULL, NULL},
891 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
892 P_INT, NULL, NULL, NULL},
893 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
894 P_INT, NULL, NULL, NULL},
898 {"uri_open_command", DEFAULT_BROWSER_CMD,
899 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
901 {"gtk_theme", DEFAULT_W32_GTK_THEME,
902 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
904 {"ext_editor_command", DEFAULT_EDITOR_CMD,
905 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
906 {"cmds_use_system_default", "TRUE",
907 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
908 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
909 P_BOOL, NULL, NULL, NULL},
910 {"session_passwords", "FALSE", &prefs_common.session_passwords,
911 P_BOOL, NULL, NULL, NULL},
912 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
914 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
916 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
918 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
919 P_BOOL, NULL, NULL, NULL},
920 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
922 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
925 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
928 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
932 #if defined(__OpenBSD__)
933 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
934 P_INT, NULL, NULL, NULL},
936 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
937 P_INT, NULL, NULL, NULL},
939 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
941 {"important_score", "1", &prefs_common.important_score, P_INT,
944 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
946 {"log_length", "500", &prefs_common.loglength, P_INT,
949 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
951 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
953 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
955 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
958 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
960 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
962 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
964 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
967 {"log_msg_color", "#00af00", &prefs_common.color[COL_LOG_MSG],
968 P_COLOR, NULL, NULL, NULL},
969 {"log_warn_color", "#af0000", &prefs_common.color[COL_LOG_WARN],
970 P_COLOR, NULL, NULL, NULL},
971 {"log_error_color", "#af0000", &prefs_common.color[COL_LOG_ERROR],
972 P_COLOR, NULL, NULL, NULL},
973 {"log_in_color", "#000000", &prefs_common.color[COL_LOG_IN],
974 P_COLOR, NULL, NULL, NULL},
975 {"log_out_color", "#0000ef", &prefs_common.color[COL_LOG_OUT],
976 P_COLOR, NULL, NULL, NULL},
977 {"log_status_ok_color", "#00af00", &prefs_common.color[COL_LOG_STATUS_OK],
978 P_COLOR, NULL, NULL, NULL},
979 {"log_status_nok_color", "#0000af", &prefs_common.color[COL_LOG_STATUS_NOK],
980 P_COLOR, NULL, NULL, NULL},
981 {"log_status_skip_color", "#aa00aa", &prefs_common.color[COL_LOG_STATUS_SKIP],
982 P_COLOR, NULL, NULL, NULL},
984 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
986 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
988 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
990 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
992 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
994 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
996 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
998 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
1000 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
1003 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
1006 {"color_new", "#0000b3", &prefs_common.color[COL_NEW],
1007 P_COLOR, NULL, NULL, NULL},
1009 /* Some windows' sizes */
1010 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
1012 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
1015 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
1017 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
1020 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
1022 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
1025 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
1027 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
1030 {"actionsiodialog_width", "582", &prefs_common.actionsiodialog_width, P_INT,
1032 {"actionsiodialog_height", "310", &prefs_common.actionsiodialog_height, P_INT,
1035 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
1037 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
1040 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
1042 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1045 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1047 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1050 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1052 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1055 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1057 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1060 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1062 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1065 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1067 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1070 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1072 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1075 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1078 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1080 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1083 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1085 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1088 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1090 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1093 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1095 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1098 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1100 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1103 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1105 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1108 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1110 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1113 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1115 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1118 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1120 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1123 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1125 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1129 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1131 {"utf8_instead_of_locale_for_broken_mail", "0",
1132 &prefs_common.broken_are_utf8, P_INT,
1134 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1136 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1138 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1140 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1142 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1144 {"folderview_vscrollbar_policy", "0",
1145 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1147 {"textview_cursor_visible", "FALSE",
1148 &prefs_common.textview_cursor_visible, P_BOOL,
1150 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1152 #ifndef GENERIC_UMPC
1153 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1155 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1158 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1160 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1163 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1164 P_INT, NULL, NULL, NULL },
1165 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1166 P_STRING, NULL, NULL, NULL },
1167 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1168 P_BOOL, NULL, NULL, NULL },
1169 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1171 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1173 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1175 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1177 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1179 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1181 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1183 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1185 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1187 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1189 #ifndef GENERIC_UMPC
1190 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1193 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1197 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1199 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1201 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1203 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1205 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1207 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1209 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1211 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1213 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1215 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1217 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1219 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1221 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1223 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1225 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1228 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1229 P_BOOL, NULL, NULL, NULL },
1231 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1234 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1237 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1240 {"diff_added_color", "#008b8b", &prefs_common.color[COL_DIFF_ADDED],
1241 P_COLOR, NULL, NULL, NULL},
1242 {"diff_deleted_color", "#6a5acd", &prefs_common.color[COL_DIFF_DELETED],
1243 P_COLOR, NULL, NULL, NULL},
1244 {"diff_hunk_color", "#a52a2a", &prefs_common.color[COL_DIFF_HUNK],
1245 P_COLOR, NULL, NULL, NULL},
1247 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1249 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1251 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1252 #ifndef PASSWORD_CRYPTO_OLD
1253 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1254 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1255 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1256 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1259 {"use_proxy", "FALSE", &prefs_common.use_proxy, P_BOOL, NULL, NULL, NULL},
1260 {"proxy_type", "1", &prefs_common.proxy_info.proxy_type, P_ENUM, NULL, NULL, NULL},
1261 {"proxy_host", "localhost", &prefs_common.proxy_info.proxy_host, P_STRING, NULL, NULL, NULL},
1262 {"proxy_port", "1080", &prefs_common.proxy_info.proxy_port, P_USHORT, NULL, NULL, NULL},
1263 {"use_proxy_auth", "FALSE", &prefs_common.proxy_info.use_proxy_auth, P_BOOL, NULL, NULL, NULL},
1264 {"proxy_name", "", &prefs_common.proxy_info.proxy_name, P_STRING, NULL, NULL, NULL},
1265 {"proxy_pass", "", &prefs_common.proxy_info.proxy_pass, P_STRING, NULL, NULL, NULL},
1267 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1271 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1272 * Fallback to default_list if history file is not found
1274 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1275 GList *default_list)
1279 gchar buf[PREFSBUFSIZE];
1283 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1284 G_DIR_SEPARATOR_S, history,
1287 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1290 if ((fp = g_fopen(path, "rb")) == NULL) {
1291 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1293 /* returns default list if set, otherwise NULL */
1294 return default_list;
1297 while (fgets(buf, sizeof(buf), fp) != NULL) {
1299 if (buf[0] == '\0') continue;
1300 tmp = add_history(tmp, buf);
1304 tmp = g_list_reverse(tmp);
1310 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1312 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1314 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1318 * Read history list from the specified history file
1320 static GList *prefs_common_read_history(const gchar *history)
1322 return prefs_common_read_history_from_dir(NULL, history);
1325 void prefs_common_read_config(void)
1330 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1331 prefs_read_config(param, "Common", rcpath, NULL);
1333 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1338 tmp = g_strdup(gettext(prefs_common.date_format));
1339 g_free(prefs_common.date_format);
1340 prefs_common.date_format = tmp;
1342 prefs_common.mime_open_cmd_history =
1343 prefs_common_read_history(COMMAND_HISTORY);
1344 prefs_common.summary_quicksearch_history =
1345 prefs_common_read_history(QUICKSEARCH_HISTORY);
1346 prefs_common.summary_search_from_history =
1347 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1348 prefs_common.summary_search_to_history =
1349 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1350 prefs_common.summary_search_subject_history =
1351 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1352 prefs_common.summary_search_body_history =
1353 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1354 prefs_common.summary_search_adv_condition_history =
1355 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1356 prefs_common.message_search_history =
1357 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1358 prefs_common.compose_save_to_history =
1359 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1360 #ifndef USE_ALT_ADDRBOOK
1361 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1363 colorlabel_update_colortable_from_prefs();
1369 g_warning("failed to write"); \
1374 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1376 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1380 gchar *path, *tmp_path;
1383 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1384 G_DIR_SEPARATOR_S, history,
1387 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1390 tmp_path = g_strconcat(path, ".tmp", NULL);
1392 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1393 FILE_OP_ERROR(tmp_path, "fopen");
1397 for (cur = list; cur != NULL; cur = cur->next) {
1398 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1399 fputc('\n', fp) != EOF);
1402 if (fclose(fp) == EOF) {
1403 FILE_OP_ERROR(tmp_path, "fclose");
1411 if (g_rename(tmp_path, path) < 0) {
1412 FILE_OP_ERROR(path, "rename");
1424 * Save history list to the specified history file
1426 static void prefs_common_save_history(const gchar *history, GList *list)
1428 prefs_common_save_history_to_dir(NULL, history, list);
1433 void prefs_common_write_config(void)
1435 prefs_write_config(param, "Common", COMMON_RC);
1437 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1440 prefs_common_save_history(COMMAND_HISTORY,
1441 prefs_common.mime_open_cmd_history);
1442 prefs_common_save_history(QUICKSEARCH_HISTORY,
1443 prefs_common.summary_quicksearch_history);
1444 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1445 prefs_common.summary_search_from_history);
1446 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1447 prefs_common.summary_search_to_history);
1448 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1449 prefs_common.summary_search_subject_history);
1450 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1451 prefs_common.summary_search_body_history);
1452 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1453 prefs_common.summary_search_adv_condition_history);
1454 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1455 prefs_common.message_search_history);
1456 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1457 prefs_common.compose_save_to_history);
1459 #ifndef USE_ALT_ADDRBOOK
1460 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1461 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1462 prefs_common.addressbook_custom_attributes);
1466 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1467 both 'in' and 'out' must be non-NULL.
1468 'out' must be a pointer to a buffer whose size is at least equal
1469 to strlen(txt)+1, this buffer will get cleared. out's contents
1470 will always get set to a valid string, even if it's "".*/
1471 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1478 cm_return_if_fail( in != NULL );
1479 cm_return_if_fail( out != NULL );
1483 memset(out, 0, strlen(in)+1);
1484 while (*i != '\0') {
1485 if (*i == '\\' && *(i+1) == 'n') {
1488 } else if (*i == '\\' && *(i+1) == 't') {
1491 } else if (*i == '\\' && *(i+1) == '\\') {
1502 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1503 both 'in' and 'out' must be non-NULL.
1504 'out' must be a pointer to a buffer whose size is at least equal
1505 to 2*strlen(txt)+1. out's contents will always get set to a valid
1506 string, even if it's "". */
1507 void pref_get_escaped_pref(gchar *out, const gchar *in)
1514 cm_return_if_fail( in != NULL );
1515 cm_return_if_fail( out != NULL );
1519 while (*i != '\0') {
1523 } else if (*i == '\t') {
1526 } else if (*i == '\\') {
1537 /* set the contents of a textview widget from the internal \-escaped
1538 representation of a pref string. both txt and textview must be non-NULL. */
1539 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1541 GtkTextBuffer *buffer;
1544 cm_return_if_fail( textview != NULL );
1546 buffer = gtk_text_view_get_buffer(textview);
1549 gtk_text_buffer_set_text(buffer, "", -1);
1551 out = g_malloc(strlen(txt)+1);
1553 pref_get_unescaped_pref(out, txt);
1555 gtk_text_buffer_set_text(buffer, out, -1);
1560 /* set the contents of a gtkentry widget from the internal \-escaped
1561 representation of a pref string. both txt and entry must be non-NULL. */
1562 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1566 cm_return_if_fail( entry != NULL );
1568 gtk_entry_set_text(entry, "");
1570 out = g_malloc(strlen(txt)+1);
1572 pref_get_unescaped_pref(out, txt);
1574 gtk_entry_set_text(entry, out);
1579 /* get the \-escaped internal representation of a pref from the contents of
1580 a textview widget. textview must be non-NULL. */
1581 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1583 GtkTextBuffer *buffer;
1584 GtkTextIter start, end;
1587 cm_return_val_if_fail( textview != NULL, "" );
1589 buffer = gtk_text_view_get_buffer(textview);
1590 gtk_text_buffer_get_start_iter(buffer, &start);
1591 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1592 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1593 out = malloc(2*strlen(tmp)+1);
1595 pref_get_escaped_pref(out, tmp);
1601 /* get the \-escaped internal representation of a pref from the contents of
1602 a gtkentry widget. entry must be non-NULL. */
1603 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1607 cm_return_val_if_fail( entry != NULL, "" );
1609 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1610 out = malloc(2*strlen(tmp)+1);
1613 pref_get_escaped_pref(out, tmp);
1619 /* ugly hack to be able to get this pref from ssl_certificate.c */
1620 gboolean prefs_common_unsafe_ssl_certs(void)
1622 return prefs_common.unsafe_ssl_certs;
1625 gboolean prefs_common_enable_log_standard(void)
1627 return prefs_common.enable_log_standard;
1630 gboolean prefs_common_enable_log_warning(void)
1632 return prefs_common.enable_log_warning;
1634 gboolean prefs_common_enable_log_error(void)
1636 return prefs_common.enable_log_error;
1638 gboolean prefs_common_enable_log_status(void)
1640 return prefs_common.enable_log_status;
1644 return the translated name of a header, if the translate_header option is
1645 set, otherwise return the untranslated header name (header_name itself).
1646 this function is provided for convenience, it's an interface to
1647 prefs_common.trans_hdr.
1648 works with header names either with or without trailing colon, provided
1649 that gettext found such header name in the sources (they should all be
1650 found in src/gtk/headers.h anyway).
1652 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1654 if (header_name == NULL || *header_name == '\0')
1657 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1660 const gchar *prefs_common_get_uri_cmd(void)
1667 if (!prefs_common.cmds_use_system_default)
1668 return prefs_common.uri_cmd;
1670 tmp = g_find_program_in_path("xdg-open");
1672 return prefs_common.uri_cmd;
1675 return "xdg-open %s";
1679 const gchar *prefs_common_get_ext_editor_cmd(void)
1681 return prefs_common.ext_editor_cmd;
1682 #if 0 /* we should do that, but it detaches the editor and breaks
1683 compose.c's external composition. */
1686 if (!prefs_common.cmds_use_system_default)
1687 return prefs_common.ext_editor_cmd;
1689 tmp = g_find_program_in_path("xdg-open");
1691 return prefs_common.ext_editor_cmd;
1694 return "xdg-open %s";
1698 gboolean prefs_common_get_use_shred(void)
1700 return prefs_common.use_shred;
1703 gboolean prefs_common_get_flush_metadata (void)
1705 return prefs_common.flush_metadata;
1708 PrefsCommon *prefs_common_get_prefs(void)
1710 return &prefs_common;