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 {"message_font_gtk2", "Monospace 9",
98 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
99 {"print_font_gtk2", "Monospace 9",
100 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
101 {"small_font_gtk2", "Sans 9",
102 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
103 {"normal_font_gtk2", "Sans 9",
104 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
105 {"bold_font_gtk2", "Sans 9 Bold",
106 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
108 {"attach_save_directory", NULL,
109 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
110 {"attach_load_directory", NULL,
111 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
114 {"mime_textviewer", NULL,
115 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
116 {"mime_open_command", "notepad '%s'",
117 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
120 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
121 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
123 {"enable_alpha_svg", "TRUE",
124 &prefs_common.enable_alpha_svg, P_BOOL, NULL, NULL, NULL},
125 {"enable_pixmap_scaling", "TRUE",
126 &prefs_common.enable_pixmap_scaling, P_BOOL, NULL, NULL, NULL},
127 {"pixmap_scaling_auto", "TRUE",
128 &prefs_common.pixmap_scaling_auto, P_BOOL, NULL, NULL, NULL},
129 {"pixmap_scaling_ppi", "96",
130 &prefs_common.pixmap_scaling_ppi, P_INT, NULL, NULL, NULL},
134 {"ext_editor_command", "notepad %s",
135 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
137 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
140 # define SPECIFIC_PREFS prefs_common
144 parameter name, default value, pointer to the prefs variable, data type,
145 pointer to the widget pointer,
146 pointer to the function for data setting,
147 pointer to the function for widget setting
150 static PrefParam param[] = {
151 {"config_version", "0",
152 &prefs_common.config_version, P_INT, NULL, NULL, NULL},
155 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
157 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
160 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
162 {"autochk_interval", "600", &prefs_common.autochk_itv, P_INT,
164 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
166 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
167 P_BOOL, NULL, NULL, NULL},
168 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
169 P_BOOL, NULL, NULL, NULL},
170 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
171 P_BOOL, NULL, NULL, NULL},
172 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
173 P_BOOL, NULL, NULL, NULL},
174 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
176 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
178 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
180 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
182 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
183 P_BOOL, NULL, NULL, NULL},
184 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
185 P_BOOL, NULL, NULL, NULL},
188 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
190 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
191 P_BOOL, NULL, NULL, NULL},
193 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
196 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
199 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
201 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
204 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
206 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
208 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
210 {"rewrite_first_from", "TRUE", &prefs_common.rewrite_first_from,
211 P_BOOL, NULL, NULL, NULL},
212 {"warn_empty_subj", "TRUE", &prefs_common.warn_empty_subj,
213 P_BOOL, NULL, NULL, NULL},
214 {"warn_sending_many_recipients_num", "0", &prefs_common.warn_sending_many_recipients_num, P_INT,
216 {"hide_timezone", "FALSE", &prefs_common.hide_timezone,
217 P_BOOL, NULL, NULL, NULL},
218 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
219 P_BOOL, NULL, NULL, NULL},
222 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
224 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
225 P_BOOL, NULL, NULL, NULL},
226 {"redirect_keep_from", "FALSE",
227 &prefs_common.redirect_keep_from, P_BOOL,
229 {"undo_level", "50", &prefs_common.undolevels, P_INT,
231 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
233 {"compose_subject_format", "",
234 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
235 {"compose_body_format", N_("Hello,\\n"),
236 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
237 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
239 {"type_any_header", "FALSE", &prefs_common.type_any_header, P_BOOL,
243 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
245 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
247 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
249 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
251 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
253 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
255 {"autosave", "TRUE", &prefs_common.autosave,
256 P_BOOL, NULL, NULL, NULL},
257 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
259 {"autosave_encrypted", "FALSE", &prefs_common.autosave_encrypted,
260 P_BOOL, NULL, NULL, NULL},
261 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
262 P_BOOL, NULL, NULL, NULL},
263 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
264 P_INT, NULL, NULL, NULL},
266 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
268 {"dictionary", "", &prefs_common.dictionary, P_STRING,
270 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
272 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
274 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
276 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
277 P_BOOL, NULL, NULL, NULL},
278 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
280 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
283 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
285 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
288 /* Account autoselection */
289 {"reply_account_autoselect", "TRUE",
290 &prefs_common.reply_account_autosel, P_BOOL,
292 {"forward_account_autoselect", "TRUE",
293 &prefs_common.forward_account_autosel, P_BOOL,
295 {"reedit_account_autoselect", "TRUE",
296 &prefs_common.reedit_account_autosel, P_BOOL,
299 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
303 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
306 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
311 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
313 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
314 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
316 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
318 {"forward_quote_format",
319 N_("\\n\\nBegin forwarded message:\\n\\n"
320 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
321 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
322 &prefs_common.fw_quotefmt, P_STRING,
324 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
330 {"message_font_gtk2", "Monospace 9",
331 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
332 {"print_font_gtk2", "Monospace 9",
333 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
334 {"small_font_gtk2", "Sans 9",
335 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
336 {"normal_font_gtk2", "Sans 9",
337 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
338 {"bold_font_gtk2", "Sans Bold 9",
339 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
341 {"message_font_gtk2", "Monospace 8",
342 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
343 {"print_font_gtk2", "Monospace 8",
344 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
345 {"small_font_gtk2", "Sans 8",
346 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
347 {"normal_font_gtk2", "Sans 8",
348 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
349 {"bold_font_gtk2", "Sans Bold 8",
350 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
353 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
355 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
359 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
361 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
363 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
365 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
367 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
369 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
371 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
373 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
375 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
377 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
379 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
381 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
383 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
385 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
387 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
389 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
391 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
393 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
395 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
397 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
399 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
401 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
403 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
405 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
407 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
409 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
411 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
413 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
415 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
417 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
421 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
423 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
425 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
428 {"display_folder_unread_num", "0",
429 &prefs_common.display_folder_unread, P_INT,
431 {"newsgroup_abbrev_len", "16",
432 &prefs_common.ng_abbrev_len, P_INT,
435 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
438 /* Display: Summary View */
439 {"default_sort_key", "3", &prefs_common.default_sort_key, P_ENUM,
441 {"default_sort_type", "1", &prefs_common.default_sort_type, P_ENUM,
443 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
445 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
447 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
448 P_STRING, NULL, NULL, NULL},
449 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
452 {"next_on_delete", "FALSE", &prefs_common.next_on_delete, P_BOOL,
455 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
458 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
461 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
464 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
467 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
469 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
472 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
474 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
477 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
479 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
483 {"summary_col_show_mark", "TRUE",
484 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_unread", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_subject", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_from", "TRUE",
490 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_to", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_date", "TRUE",
494 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_mime", "TRUE",
496 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_size", "TRUE",
498 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
499 {"summary_col_show_number", "FALSE",
500 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
501 {"summary_col_show_score", "FALSE",
502 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
503 {"summary_col_show_locked", "FALSE",
504 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
505 {"summary_col_show_tags", "FALSE",
506 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
508 {"summary_col_pos_mark", "0",
509 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_unread", "1",
511 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_mime", "2",
513 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_subject", "3",
515 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_from", "4",
517 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_date", "5",
519 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_size", "6",
521 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_number", "7",
523 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
524 {"summary_col_pos_score", "8",
525 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
526 {"summary_col_pos_locked", "9",
527 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
528 {"summary_col_pos_to", "10",
529 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
530 {"summary_col_pos_tags", "11",
531 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
533 {"summary_col_size_mark", "10",
534 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
535 {"summary_col_size_unread", "13",
536 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_mime", "10",
538 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
540 {"summary_col_size_subject", "200",
541 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
542 {"summary_col_size_from", "120",
543 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
544 {"summary_col_size_to", "120",
545 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_subject", "300",
548 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_from", "150",
550 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_to", "150",
552 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_date", "118",
556 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
557 {"summary_col_size_size", "45",
558 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
559 {"summary_col_size_number", "40",
560 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
561 {"summary_col_size_score", "40",
562 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
563 {"summary_col_size_locked", "13",
564 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
565 {"summary_col_size_tags", "150",
566 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
569 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
571 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
573 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
575 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
577 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
580 {"folder_col_show_folder", "TRUE",
581 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
582 {"folder_col_show_new", "TRUE",
583 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
584 {"folder_col_show_unread", "TRUE",
585 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
586 {"folder_col_show_total", "TRUE",
587 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
589 {"folder_col_pos_folder", "0",
590 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
591 {"folder_col_pos_new", "1",
592 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
593 {"folder_col_pos_unread", "2",
594 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
595 {"folder_col_pos_total", "3",
596 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
599 {"folder_col_size_folder", "120",
600 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
601 {"folder_col_size_new", "32",
602 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
603 {"folder_col_size_unread", "32",
604 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
605 {"folder_col_size_total", "32",
606 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
608 {"folder_col_size_folder", "400",
609 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
610 {"folder_col_size_new", "32",
611 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
612 {"folder_col_size_unread", "32",
613 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
614 {"folder_col_size_total", "32",
615 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
617 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
619 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
622 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
624 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
626 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
628 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
630 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
633 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
635 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
637 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
639 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
641 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
643 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
645 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
647 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
649 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
652 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
654 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
656 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
658 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
660 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
662 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
664 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
666 {"compose_width", "600", &prefs_common.compose_width, P_INT,
668 {"compose_height", "560", &prefs_common.compose_height, P_INT,
671 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
673 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
675 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
677 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
679 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
681 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
683 {"compose_width", "700", &prefs_common.compose_width, P_INT,
685 {"compose_height", "470", &prefs_common.compose_height, P_INT,
688 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
690 {"compose_x", "0", &prefs_common.compose_x, P_INT,
692 {"compose_y", "0", &prefs_common.compose_y, P_INT,
695 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
698 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
700 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
702 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
704 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
706 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
708 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
710 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
712 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
714 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
716 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
718 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
720 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
721 P_BOOL, NULL, NULL, NULL},
723 {"default_header_color", "#000000", &prefs_common.default_header_color, P_COLOR,
725 {"default_header_bgcolor", "#f5f6be", &prefs_common.default_header_bgcolor, P_COLOR,
727 {"tags_color", "#000000", &prefs_common.tags_color, P_COLOR,
729 {"tags_bgcolor", "#f5f6be", &prefs_common.tags_bgcolor, P_COLOR,
731 {"qs_active_color", "#000000", &prefs_common.qs_active_color, P_COLOR,
733 {"qs_active_bgcolor", "#f5f6be", &prefs_common.qs_active_bgcolor, P_COLOR,
735 {"qs_error_color", "#000000", &prefs_common.qs_error_color, P_COLOR,
737 {"qs_error_bgcolor", "#ff7070", &prefs_common.qs_error_bgcolor, P_COLOR,
740 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
741 P_BOOL, NULL, NULL, NULL},
742 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
744 {"display_xface", "TRUE", &prefs_common.display_xface,
745 P_BOOL, NULL, NULL, NULL},
746 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
748 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
750 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
752 {"line_space", "2", &prefs_common.line_space, P_INT,
754 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
757 {"enable_smooth_scroll", "FALSE",
758 &prefs_common.enable_smooth_scroll, P_BOOL,
760 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
762 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
764 {"hide_quoted", "TRUE",
765 &prefs_common.hide_quoted, P_BOOL,
767 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
769 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
772 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
775 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
777 {"attach_save_directory", NULL,
778 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
779 {"attach_load_directory", NULL,
780 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
783 {"mime_textviewer", NULL,
784 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
785 {"mime_open_command", "xdg-open '%s'",
786 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
787 {"show_inline_attachments", "TRUE",
788 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
792 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
795 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
798 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
799 NULL, NULL, NULL}, */
800 {"open_selected_message_on_folder_open", "FALSE",
801 &prefs_common.open_selected_on_folder_open,
802 P_BOOL, NULL, NULL, NULL},
803 {"open_selected_message_on_search_results", "FALSE",
804 &prefs_common.open_selected_on_search_results,
805 P_BOOL, NULL, NULL, NULL},
806 {"open_selected_message_on_prevnext", "FALSE",
807 &prefs_common.open_selected_on_prevnext,
808 P_BOOL, NULL, NULL, NULL},
809 {"open_selected_message_on_deletemove", "FALSE",
810 &prefs_common.open_selected_on_deletemove,
811 P_BOOL, NULL, NULL, NULL},
812 {"open_selected_message_on_directional", "FALSE",
813 &prefs_common.open_selected_on_directional,
814 P_BOOL, NULL, NULL, NULL},
815 {"always_show_message_when_selected", "FALSE",
816 &prefs_common.always_show_msg,
817 P_BOOL, NULL, NULL, NULL},
818 {"select_on_entry", "3", &prefs_common.select_on_entry,
819 P_ENUM, NULL, NULL, NULL},
820 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
821 P_BOOL, NULL, NULL, NULL},
823 /* do it SUMMARY_OPEN_ACTIONS-1 times */
824 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
826 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
828 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
830 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
832 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
834 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
836 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
839 {"mark_as_read_on_new_window", "FALSE",
840 &prefs_common.mark_as_read_on_new_window,
841 P_BOOL, NULL, NULL, NULL},
842 {"mark_as_read_delay", "0",
843 &prefs_common.mark_as_read_delay, P_INT,
845 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
847 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
849 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
852 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
853 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
856 {"enable_alpha_svg", "TRUE",
857 &SPECIFIC_PREFS.enable_alpha_svg, P_BOOL,
859 {"enable_pixmap_scaling", "TRUE",
860 &SPECIFIC_PREFS.enable_pixmap_scaling, P_BOOL,
862 {"pixmap_scaling_auto", "TRUE",
863 &SPECIFIC_PREFS.pixmap_scaling_auto, P_BOOL,
865 {"pixmap_scaling_ppi", "96",
866 &SPECIFIC_PREFS.pixmap_scaling_ppi, P_INT,
870 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
873 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
875 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
879 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
880 P_BOOL, NULL, NULL, NULL},
881 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
882 P_INT, NULL, NULL, NULL},
883 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
884 P_INT, NULL, NULL, NULL},
888 {"uri_open_command", DEFAULT_BROWSER_CMD,
889 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
891 {"gtk_theme", DEFAULT_W32_GTK_THEME,
892 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
894 {"ext_editor_command", DEFAULT_EDITOR_CMD,
895 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
896 {"cmds_use_system_default", "TRUE",
897 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
898 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
899 P_BOOL, NULL, NULL, NULL},
900 {"session_passwords", "FALSE", &prefs_common.session_passwords,
901 P_BOOL, NULL, NULL, NULL},
902 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
904 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
906 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
908 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
909 P_BOOL, NULL, NULL, NULL},
910 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
912 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
915 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
918 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
922 #if defined(__OpenBSD__)
923 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
924 P_INT, NULL, NULL, NULL},
926 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
927 P_INT, NULL, NULL, NULL},
929 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
931 {"important_score", "1", &prefs_common.important_score, P_INT,
934 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
936 {"log_length", "500", &prefs_common.loglength, P_INT,
939 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
941 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
943 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
945 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
948 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
950 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
952 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
954 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
957 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
959 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
961 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
963 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
965 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
967 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
969 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
971 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
974 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
976 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
978 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
980 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
982 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
984 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
986 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
988 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
990 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
993 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
996 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
999 /* Some windows' sizes */
1000 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
1002 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
1005 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
1007 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
1010 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
1012 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
1015 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
1017 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
1020 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
1022 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
1025 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
1027 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1030 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1032 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1035 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1037 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1040 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1042 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1045 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1047 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1050 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1052 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1055 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1057 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1060 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1063 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1065 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1068 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1070 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1073 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1075 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1078 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1080 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1083 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1085 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1088 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1090 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1093 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1095 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1098 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1100 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1103 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1105 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1108 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1110 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1114 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1116 {"utf8_instead_of_locale_for_broken_mail", "0",
1117 &prefs_common.broken_are_utf8, P_INT,
1119 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1121 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1123 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1125 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1127 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1129 {"folderview_vscrollbar_policy", "0",
1130 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1132 {"textview_cursor_visible", "FALSE",
1133 &prefs_common.textview_cursor_visible, P_BOOL,
1135 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1137 #ifndef GENERIC_UMPC
1138 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1140 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1143 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1145 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1148 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1149 P_INT, NULL, NULL, NULL },
1150 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1151 P_STRING, NULL, NULL, NULL },
1152 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1153 P_BOOL, NULL, NULL, NULL },
1154 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1156 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1158 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1160 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1162 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1164 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1166 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1168 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1170 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1172 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1174 #ifndef GENERIC_UMPC
1175 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1178 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1182 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1184 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1186 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1188 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1190 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1192 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1194 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1196 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1198 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1200 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1202 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1204 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1206 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1208 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1210 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1213 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1214 P_BOOL, NULL, NULL, NULL },
1216 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1219 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1222 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1225 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1227 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1229 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1232 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1234 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1236 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1237 #ifndef PASSWORD_CRYPTO_OLD
1238 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1239 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1240 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1241 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1244 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1248 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1249 * Fallback to default_list if history file is not found
1251 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1252 GList *default_list)
1256 gchar buf[PREFSBUFSIZE];
1260 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1261 G_DIR_SEPARATOR_S, history,
1264 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1267 if ((fp = g_fopen(path, "rb")) == NULL) {
1268 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1270 /* returns default list if set, otherwise NULL */
1271 return default_list;
1274 while (fgets(buf, sizeof(buf), fp) != NULL) {
1276 if (buf[0] == '\0') continue;
1277 tmp = add_history(tmp, buf);
1281 tmp = g_list_reverse(tmp);
1287 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1289 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1291 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1295 * Read history list from the specified history file
1297 static GList *prefs_common_read_history(const gchar *history)
1299 return prefs_common_read_history_from_dir(NULL, history);
1302 void prefs_common_read_config(void)
1307 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1308 prefs_read_config(param, "Common", rcpath, NULL);
1310 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1315 tmp = g_strdup(gettext(prefs_common.date_format));
1316 g_free(prefs_common.date_format);
1317 prefs_common.date_format = tmp;
1319 prefs_common.mime_open_cmd_history =
1320 prefs_common_read_history(COMMAND_HISTORY);
1321 prefs_common.summary_quicksearch_history =
1322 prefs_common_read_history(QUICKSEARCH_HISTORY);
1323 prefs_common.summary_search_from_history =
1324 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1325 prefs_common.summary_search_to_history =
1326 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1327 prefs_common.summary_search_subject_history =
1328 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1329 prefs_common.summary_search_body_history =
1330 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1331 prefs_common.summary_search_adv_condition_history =
1332 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1333 prefs_common.message_search_history =
1334 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1335 prefs_common.compose_save_to_history =
1336 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1337 #ifndef USE_ALT_ADDRBOOK
1338 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1340 colorlabel_update_colortable_from_prefs();
1346 g_warning("failed to write"); \
1351 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1353 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1357 gchar *path, *tmp_path;
1360 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1361 G_DIR_SEPARATOR_S, history,
1364 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1367 tmp_path = g_strconcat(path, ".tmp", NULL);
1369 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1370 FILE_OP_ERROR(tmp_path, "fopen");
1374 for (cur = list; cur != NULL; cur = cur->next) {
1375 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1376 fputc('\n', fp) != EOF);
1379 if (fclose(fp) == EOF) {
1380 FILE_OP_ERROR(tmp_path, "fclose");
1388 if (g_rename(tmp_path, path) < 0) {
1389 FILE_OP_ERROR(path, "rename");
1401 * Save history list to the specified history file
1403 static void prefs_common_save_history(const gchar *history, GList *list)
1405 prefs_common_save_history_to_dir(NULL, history, list);
1410 void prefs_common_write_config(void)
1412 prefs_write_config(param, "Common", COMMON_RC);
1414 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1417 prefs_common_save_history(COMMAND_HISTORY,
1418 prefs_common.mime_open_cmd_history);
1419 prefs_common_save_history(QUICKSEARCH_HISTORY,
1420 prefs_common.summary_quicksearch_history);
1421 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1422 prefs_common.summary_search_from_history);
1423 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1424 prefs_common.summary_search_to_history);
1425 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1426 prefs_common.summary_search_subject_history);
1427 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1428 prefs_common.summary_search_body_history);
1429 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1430 prefs_common.summary_search_adv_condition_history);
1431 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1432 prefs_common.message_search_history);
1433 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1434 prefs_common.compose_save_to_history);
1436 #ifndef USE_ALT_ADDRBOOK
1437 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1438 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1439 prefs_common.addressbook_custom_attributes);
1443 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1444 both 'in' and 'out' must be non-NULL.
1445 'out' must be a pointer to a buffer whose size is at least equal
1446 to strlen(txt)+1, this buffer will get cleared. out's contents
1447 will always get set to a valid string, even if it's "".*/
1448 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1455 cm_return_if_fail( in != NULL );
1456 cm_return_if_fail( out != NULL );
1460 memset(out, 0, strlen(in)+1);
1461 while (*i != '\0') {
1462 if (*i == '\\' && *(i+1) == 'n') {
1465 } else if (*i == '\\' && *(i+1) == 't') {
1468 } else if (*i == '\\' && *(i+1) == '\\') {
1479 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1480 both 'in' and 'out' must be non-NULL.
1481 'out' must be a pointer to a buffer whose size is at least equal
1482 to 2*strlen(txt)+1. out's contents will always get set to a valid
1483 string, even if it's "". */
1484 void pref_get_escaped_pref(gchar *out, const gchar *in)
1491 cm_return_if_fail( in != NULL );
1492 cm_return_if_fail( out != NULL );
1496 while (*i != '\0') {
1500 } else if (*i == '\t') {
1503 } else if (*i == '\\') {
1514 /* set the contents of a textview widget from the internal \-escaped
1515 representation of a pref string. both txt and textview must be non-NULL. */
1516 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1518 GtkTextBuffer *buffer;
1521 cm_return_if_fail( textview != NULL );
1523 buffer = gtk_text_view_get_buffer(textview);
1526 gtk_text_buffer_set_text(buffer, "", -1);
1528 out = g_malloc(strlen(txt)+1);
1530 pref_get_unescaped_pref(out, txt);
1532 gtk_text_buffer_set_text(buffer, out, -1);
1537 /* set the contents of a gtkentry widget from the internal \-escaped
1538 representation of a pref string. both txt and entry must be non-NULL. */
1539 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1543 cm_return_if_fail( entry != NULL );
1545 gtk_entry_set_text(entry, "");
1547 out = g_malloc(strlen(txt)+1);
1549 pref_get_unescaped_pref(out, txt);
1551 gtk_entry_set_text(entry, out);
1556 /* get the \-escaped internal representation of a pref from the contents of
1557 a textview widget. textview must be non-NULL. */
1558 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1560 GtkTextBuffer *buffer;
1561 GtkTextIter start, end;
1564 cm_return_val_if_fail( textview != NULL, "" );
1566 buffer = gtk_text_view_get_buffer(textview);
1567 gtk_text_buffer_get_start_iter(buffer, &start);
1568 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1569 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1570 out = malloc(2*strlen(tmp)+1);
1572 pref_get_escaped_pref(out, tmp);
1578 /* get the \-escaped internal representation of a pref from the contents of
1579 a gtkentry widget. entry must be non-NULL. */
1580 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1584 cm_return_val_if_fail( entry != NULL, "" );
1586 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1587 out = malloc(2*strlen(tmp)+1);
1590 pref_get_escaped_pref(out, tmp);
1596 /* ugly hack to be able to get this pref from ssl_certificate.c */
1597 gboolean prefs_common_unsafe_ssl_certs(void)
1599 return prefs_common.unsafe_ssl_certs;
1602 gboolean prefs_common_enable_log_standard(void)
1604 return prefs_common.enable_log_standard;
1607 gboolean prefs_common_enable_log_warning(void)
1609 return prefs_common.enable_log_warning;
1611 gboolean prefs_common_enable_log_error(void)
1613 return prefs_common.enable_log_error;
1615 gboolean prefs_common_enable_log_status(void)
1617 return prefs_common.enable_log_status;
1621 return the translated name of a header, if the translate_header option is
1622 set, otherwise return the untranslated header name (header_name itself).
1623 this function is provided for convenience, it's an interface to
1624 prefs_common.trans_hdr.
1625 works with header names either with or without trailing colon, provided
1626 that gettext found such header name in the sources (they should all be
1627 found in src/gtk/headers.h anyway).
1629 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1631 if (header_name == NULL || *header_name == '\0')
1634 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1637 const gchar *prefs_common_get_uri_cmd(void)
1644 if (!prefs_common.cmds_use_system_default)
1645 return prefs_common.uri_cmd;
1647 tmp = g_find_program_in_path("xdg-open");
1649 return prefs_common.uri_cmd;
1652 return "xdg-open %s";
1656 const gchar *prefs_common_get_ext_editor_cmd(void)
1658 return prefs_common.ext_editor_cmd;
1659 #if 0 /* we should do that, but it detaches the editor and breaks
1660 compose.c's external composition. */
1663 if (!prefs_common.cmds_use_system_default)
1664 return prefs_common.ext_editor_cmd;
1666 tmp = g_find_program_in_path("xdg-open");
1668 return prefs_common.ext_editor_cmd;
1671 return "xdg-open %s";
1675 gboolean prefs_common_get_use_shred(void)
1677 return prefs_common.use_shred;
1680 gboolean prefs_common_get_flush_metadata (void)
1682 return prefs_common.flush_metadata;
1685 PrefsCommon *prefs_common_get_prefs(void)
1687 return &prefs_common;