2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2016 Hiroyuki Yamamoto and the Claws Mail team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21 #include "claws-features.h"
27 #include <glib/gi18n.h>
29 #include <gdk/gdkkeysyms.h>
34 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "mainwindow.h"
45 #include "summaryview.h"
46 #include "folderview.h"
47 #include "messageview.h"
48 #include "manage_window.h"
54 #include "alertpanel.h"
58 #include "folderview.h"
59 #include "stock_pixmap.h"
60 #include "prefswindow.h"
61 #include "colorlabel.h"
62 #ifndef USE_ALT_ADDRBOOK
63 #include "addrcustomattr.h"
72 PrefsCommon prefs_common;
78 * In the Windows version prefs_common contains
79 * - the non-OS-specific settings of the "Common" section and
80 * - the OS-specific settings of the "CommonWin32" section
81 * The OS-specific settings of the "Common" section are not used
82 * but saved in prefs_unix.
85 # define SPECIFIC_PREFS prefs_unix
87 static PrefsCommon prefs_unix;
89 static PrefParam param_os_specific[] = {
92 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
93 {"newmail_notify_cmd", "",
94 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
97 {"widget_font_gtk2", NULL,
98 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
99 {"message_font_gtk2", "Monospace 9",
100 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
101 {"print_font_gtk2", "Monospace 9",
102 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
103 {"small_font_gtk2", "Sans 9",
104 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
105 {"normal_font_gtk2", "Sans 9",
106 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
107 {"bold_font_gtk2", "Sans 9 Bold",
108 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
110 {"attach_save_directory", NULL,
111 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
112 {"attach_load_directory", NULL,
113 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
116 {"mime_textviewer", NULL,
117 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
118 {"mime_open_command", "notepad '%s'",
119 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
122 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
123 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
125 {"enable_alpha_svg", "TRUE",
126 &prefs_common.enable_alpha_svg, P_BOOL, NULL, NULL, NULL},
127 {"enable_pixmap_scaling", "TRUE",
128 &prefs_common.enable_pixmap_scaling, P_BOOL, NULL, NULL, NULL},
129 {"pixmap_scaling_auto", "TRUE",
130 &prefs_common.pixmap_scaling_auto, P_BOOL, NULL, NULL, NULL},
131 {"pixmap_scaling_ppi", "96",
132 &prefs_common.pixmap_scaling_ppi, P_INT, NULL, NULL, NULL},
136 {"ext_editor_command", "notepad %s",
137 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
139 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
142 # define SPECIFIC_PREFS prefs_common
146 parameter name, default value, pointer to the prefs variable, data type,
147 pointer to the widget pointer,
148 pointer to the function for data setting,
149 pointer to the function for widget setting
152 static PrefParam param[] = {
153 {"config_version", "0",
154 &prefs_common.config_version, P_INT, NULL, NULL, NULL},
157 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
159 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
162 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
164 {"autochk_interval", "600", &prefs_common.autochk_itv, P_INT,
166 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
168 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
169 P_BOOL, NULL, NULL, NULL},
170 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
171 P_BOOL, NULL, NULL, NULL},
172 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
173 P_BOOL, NULL, NULL, NULL},
174 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
175 P_BOOL, NULL, NULL, NULL},
176 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
178 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
180 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
182 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
184 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
185 P_BOOL, NULL, NULL, NULL},
186 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
187 P_BOOL, NULL, NULL, NULL},
190 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
192 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
193 P_BOOL, NULL, NULL, NULL},
195 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
198 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
201 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
203 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
206 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
208 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
210 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
212 {"rewrite_first_from", "TRUE", &prefs_common.rewrite_first_from,
213 P_BOOL, NULL, NULL, NULL},
214 {"warn_empty_subj", "TRUE", &prefs_common.warn_empty_subj,
215 P_BOOL, NULL, NULL, NULL},
216 {"warn_sending_many_recipients_num", "0", &prefs_common.warn_sending_many_recipients_num, P_INT,
218 {"hide_timezone", "FALSE", &prefs_common.hide_timezone,
219 P_BOOL, NULL, NULL, NULL},
220 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
221 P_BOOL, NULL, NULL, NULL},
224 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
226 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
227 P_BOOL, NULL, NULL, NULL},
228 {"redirect_keep_from", "FALSE",
229 &prefs_common.redirect_keep_from, P_BOOL,
231 {"undo_level", "50", &prefs_common.undolevels, P_INT,
233 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
235 {"compose_subject_format", "",
236 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
237 {"compose_body_format", N_("Hello,\\n"),
238 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
239 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
241 {"type_any_header", "FALSE", &prefs_common.type_any_header, P_BOOL,
245 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
247 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
249 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
251 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
253 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
255 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
257 {"autosave", "TRUE", &prefs_common.autosave,
258 P_BOOL, NULL, NULL, NULL},
259 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
261 {"autosave_encrypted", "FALSE", &prefs_common.autosave_encrypted,
262 P_BOOL, NULL, NULL, NULL},
263 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
264 P_BOOL, NULL, NULL, NULL},
265 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
266 P_INT, NULL, NULL, NULL},
268 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
270 {"dictionary", "", &prefs_common.dictionary, P_STRING,
272 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
274 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
276 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
278 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
279 P_BOOL, NULL, NULL, NULL},
280 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
282 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
285 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
287 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
290 /* Account autoselection */
291 {"reply_account_autoselect", "TRUE",
292 &prefs_common.reply_account_autosel, P_BOOL,
294 {"forward_account_autoselect", "TRUE",
295 &prefs_common.forward_account_autosel, P_BOOL,
297 {"reedit_account_autoselect", "TRUE",
298 &prefs_common.reedit_account_autosel, P_BOOL,
301 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
305 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
308 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
313 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
315 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
316 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
318 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
320 {"forward_quote_format",
321 N_("\\n\\nBegin forwarded message:\\n\\n"
322 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
323 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
324 &prefs_common.fw_quotefmt, P_STRING,
326 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
332 {"widget_font_gtk2", NULL,
333 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
334 {"message_font_gtk2", "Monospace 9",
335 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
336 {"print_font_gtk2", "Monospace 9",
337 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
338 {"small_font_gtk2", "Sans 9",
339 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
340 {"normal_font_gtk2", "Sans 9",
341 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
342 {"bold_font_gtk2", "Sans Bold 9",
343 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
345 {"widget_font_gtk2", NULL,
346 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
347 {"message_font_gtk2", "Monospace 8",
348 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
349 {"print_font_gtk2", "Monospace 8",
350 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
351 {"small_font_gtk2", "Sans 8",
352 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
353 {"normal_font_gtk2", "Sans 8",
354 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
355 {"bold_font_gtk2", "Sans Bold 8",
356 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
359 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
361 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
365 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
367 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
369 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
371 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
373 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
375 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
377 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
379 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
381 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
383 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
385 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
387 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
389 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
391 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
393 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
395 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
397 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
399 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
401 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
403 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
405 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
407 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
409 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
411 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
413 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
415 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
417 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
419 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
421 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
423 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
427 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
429 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
431 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
434 {"display_folder_unread_num", "0",
435 &prefs_common.display_folder_unread, P_INT,
437 {"newsgroup_abbrev_len", "16",
438 &prefs_common.ng_abbrev_len, P_INT,
441 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
444 /* Display: Summary View */
445 {"default_sort_key", "3", &prefs_common.default_sort_key, P_ENUM,
447 {"default_sort_type", "1", &prefs_common.default_sort_type, P_ENUM,
449 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
451 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
453 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
454 P_STRING, NULL, NULL, NULL},
455 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
458 {"next_on_delete", "FALSE", &prefs_common.next_on_delete, P_BOOL,
461 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
464 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
467 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
470 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
473 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
475 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
478 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
480 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
483 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
485 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
489 {"summary_col_show_mark", "TRUE",
490 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_unread", "TRUE",
492 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_subject", "TRUE",
494 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_from", "TRUE",
496 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_to", "FALSE",
498 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
499 {"summary_col_show_date", "TRUE",
500 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
501 {"summary_col_show_mime", "TRUE",
502 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
503 {"summary_col_show_size", "TRUE",
504 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
505 {"summary_col_show_number", "FALSE",
506 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
507 {"summary_col_show_score", "FALSE",
508 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
509 {"summary_col_show_locked", "FALSE",
510 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
511 {"summary_col_show_tags", "FALSE",
512 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
514 {"summary_col_pos_mark", "0",
515 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_unread", "1",
517 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_mime", "2",
519 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_subject", "3",
521 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_from", "4",
523 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
524 {"summary_col_pos_date", "5",
525 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
526 {"summary_col_pos_size", "6",
527 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
528 {"summary_col_pos_number", "7",
529 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
530 {"summary_col_pos_score", "8",
531 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
532 {"summary_col_pos_locked", "9",
533 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
534 {"summary_col_pos_to", "10",
535 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
536 {"summary_col_pos_tags", "11",
537 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_mark", "10",
540 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_unread", "13",
542 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_mime", "10",
544 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_subject", "200",
547 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
548 {"summary_col_size_from", "120",
549 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
550 {"summary_col_size_to", "120",
551 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_subject", "300",
554 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_from", "150",
556 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
557 {"summary_col_size_to", "150",
558 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
561 {"summary_col_size_date", "118",
562 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
563 {"summary_col_size_size", "45",
564 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
565 {"summary_col_size_number", "40",
566 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
567 {"summary_col_size_score", "40",
568 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
569 {"summary_col_size_locked", "13",
570 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
571 {"summary_col_size_tags", "150",
572 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
575 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
577 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
579 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
581 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
583 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
586 {"folder_col_show_folder", "TRUE",
587 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
588 {"folder_col_show_new", "TRUE",
589 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
590 {"folder_col_show_unread", "TRUE",
591 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
592 {"folder_col_show_total", "TRUE",
593 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
595 {"folder_col_pos_folder", "0",
596 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
597 {"folder_col_pos_new", "1",
598 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
599 {"folder_col_pos_unread", "2",
600 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
601 {"folder_col_pos_total", "3",
602 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
605 {"folder_col_size_folder", "120",
606 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
607 {"folder_col_size_new", "32",
608 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
609 {"folder_col_size_unread", "32",
610 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
611 {"folder_col_size_total", "32",
612 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
614 {"folder_col_size_folder", "400",
615 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
616 {"folder_col_size_new", "32",
617 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
618 {"folder_col_size_unread", "32",
619 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
620 {"folder_col_size_total", "32",
621 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
623 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
625 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
628 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
630 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
632 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
634 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
636 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
639 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
641 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
643 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
645 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
647 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
649 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
651 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
653 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
655 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
658 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
660 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
662 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
664 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
666 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
668 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
670 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
672 {"compose_width", "600", &prefs_common.compose_width, P_INT,
674 {"compose_height", "560", &prefs_common.compose_height, P_INT,
677 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
679 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
681 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
683 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
685 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
687 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
689 {"compose_width", "700", &prefs_common.compose_width, P_INT,
691 {"compose_height", "470", &prefs_common.compose_height, P_INT,
694 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
696 {"compose_x", "0", &prefs_common.compose_x, P_INT,
698 {"compose_y", "0", &prefs_common.compose_y, P_INT,
701 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
704 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
706 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
708 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
710 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
712 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
714 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
716 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
718 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
720 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
722 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
724 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
726 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
727 P_BOOL, NULL, NULL, NULL},
729 {"default_header_color", "#000000", &prefs_common.default_header_color, P_COLOR,
731 {"default_header_bgcolor", "#f5f6be", &prefs_common.default_header_bgcolor, P_COLOR,
733 {"tags_color", "#000000", &prefs_common.tags_color, P_COLOR,
735 {"tags_bgcolor", "#f5f6be", &prefs_common.tags_bgcolor, P_COLOR,
737 {"qs_active_color", "#000000", &prefs_common.qs_active_color, P_COLOR,
739 {"qs_active_bgcolor", "#f5f6be", &prefs_common.qs_active_bgcolor, P_COLOR,
741 {"qs_error_color", "#000000", &prefs_common.qs_error_color, P_COLOR,
743 {"qs_error_bgcolor", "#ff7070", &prefs_common.qs_error_bgcolor, P_COLOR,
746 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
747 P_BOOL, NULL, NULL, NULL},
748 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
750 {"display_xface", "TRUE", &prefs_common.display_xface,
751 P_BOOL, NULL, NULL, NULL},
752 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
754 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
756 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
758 {"line_space", "2", &prefs_common.line_space, P_INT,
760 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
763 {"enable_smooth_scroll", "FALSE",
764 &prefs_common.enable_smooth_scroll, P_BOOL,
766 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
768 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
770 {"hide_quoted", "TRUE",
771 &prefs_common.hide_quoted, P_BOOL,
773 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
775 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
778 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
781 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
783 {"attach_save_directory", NULL,
784 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
785 {"attach_load_directory", NULL,
786 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
789 {"mime_textviewer", NULL,
790 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
791 {"mime_open_command", "xdg-open '%s'",
792 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
793 {"show_inline_attachments", "TRUE",
794 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
798 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
801 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
804 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
805 NULL, NULL, NULL}, */
806 {"open_selected_message_on_folder_open", "FALSE",
807 &prefs_common.open_selected_on_folder_open,
808 P_BOOL, NULL, NULL, NULL},
809 {"always_show_message_when_selected", "0",
810 &prefs_common.always_show_msg,
811 P_ENUM, NULL, NULL, NULL},
812 {"select_on_entry", "3", &prefs_common.select_on_entry,
813 P_ENUM, NULL, NULL, NULL},
814 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
815 P_BOOL, NULL, NULL, NULL},
817 /* do it SUMMARY_OPEN_ACTIONS-1 times */
818 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
820 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
822 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
824 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
826 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
828 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
830 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
833 {"mark_as_read_on_new_window", "FALSE",
834 &prefs_common.mark_as_read_on_new_window,
835 P_BOOL, NULL, NULL, NULL},
836 {"mark_as_read_delay", "0",
837 &prefs_common.mark_as_read_delay, P_INT,
839 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
841 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
843 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
846 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
847 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
850 {"enable_alpha_svg", "TRUE",
851 &SPECIFIC_PREFS.enable_alpha_svg, P_BOOL,
853 {"enable_pixmap_scaling", "TRUE",
854 &SPECIFIC_PREFS.enable_pixmap_scaling, P_BOOL,
856 {"pixmap_scaling_auto", "TRUE",
857 &SPECIFIC_PREFS.pixmap_scaling_auto, P_BOOL,
859 {"pixmap_scaling_ppi", "96",
860 &SPECIFIC_PREFS.pixmap_scaling_ppi, P_INT,
864 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
867 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
869 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
873 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
874 P_BOOL, NULL, NULL, NULL},
875 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
876 P_INT, NULL, NULL, NULL},
877 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
878 P_INT, NULL, NULL, NULL},
882 {"uri_open_command", DEFAULT_BROWSER_CMD,
883 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
885 {"gtk_theme", DEFAULT_W32_GTK_THEME,
886 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
888 {"ext_editor_command", DEFAULT_EDITOR_CMD,
889 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
890 {"cmds_use_system_default", "TRUE",
891 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
892 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
893 P_BOOL, NULL, NULL, NULL},
894 {"session_passwords", "FALSE", &prefs_common.session_passwords,
895 P_BOOL, NULL, NULL, NULL},
896 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
898 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
900 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
902 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
903 P_BOOL, NULL, NULL, NULL},
904 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
906 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
909 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
912 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
916 #if defined(__OpenBSD__)
917 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
918 P_INT, NULL, NULL, NULL},
920 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
921 P_INT, NULL, NULL, NULL},
923 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
925 {"important_score", "1", &prefs_common.important_score, P_INT,
928 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
930 {"log_length", "500", &prefs_common.loglength, P_INT,
933 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
935 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
937 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
939 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
942 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
944 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
946 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
948 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
951 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
953 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
955 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
957 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
959 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
961 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
963 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
965 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
968 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
970 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
972 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
974 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
976 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
978 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
980 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
982 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
984 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
987 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
990 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
993 /* Some windows' sizes */
994 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
996 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
999 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
1001 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
1004 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
1006 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
1009 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
1011 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
1014 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
1016 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
1019 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
1021 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1024 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1026 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1029 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1031 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1034 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1036 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1039 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1041 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1044 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1046 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1049 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1051 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1054 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1057 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1059 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1062 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1064 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1067 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1069 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1072 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1074 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1077 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1079 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1082 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1084 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1087 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1089 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1092 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1094 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1097 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1099 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1102 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1104 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1108 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1110 {"utf8_instead_of_locale_for_broken_mail", "0",
1111 &prefs_common.broken_are_utf8, P_INT,
1113 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1115 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1117 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1119 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1121 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1123 {"folderview_vscrollbar_policy", "0",
1124 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1126 {"textview_cursor_visible", "FALSE",
1127 &prefs_common.textview_cursor_visible, P_BOOL,
1129 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1131 #ifndef GENERIC_UMPC
1132 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1134 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1137 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1139 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1142 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1143 P_INT, NULL, NULL, NULL },
1144 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1145 P_STRING, NULL, NULL, NULL },
1146 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1147 P_BOOL, NULL, NULL, NULL },
1148 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1150 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1152 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1154 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1156 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1158 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1160 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1162 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1164 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1166 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1168 #ifndef GENERIC_UMPC
1169 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1172 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1176 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1178 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1180 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1182 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1184 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1186 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1188 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1190 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1192 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1194 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1196 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1198 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1200 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1202 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1204 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1207 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1208 P_BOOL, NULL, NULL, NULL },
1210 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1213 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1216 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1219 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1221 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1223 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1226 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1228 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1230 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1231 #ifndef PASSWORD_CRYPTO_OLD
1232 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1233 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1234 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1235 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1238 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1242 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1243 * Fallback to default_list if history file is not found
1245 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1246 GList *default_list)
1250 gchar buf[PREFSBUFSIZE];
1254 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1255 G_DIR_SEPARATOR_S, history,
1258 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1261 if ((fp = g_fopen(path, "rb")) == NULL) {
1262 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1264 /* returns default list if set, otherwise NULL */
1265 return default_list;
1268 while (fgets(buf, sizeof(buf), fp) != NULL) {
1270 if (buf[0] == '\0') continue;
1271 tmp = add_history(tmp, buf);
1275 tmp = g_list_reverse(tmp);
1281 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1283 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1285 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1289 * Read history list from the specified history file
1291 static GList *prefs_common_read_history(const gchar *history)
1293 return prefs_common_read_history_from_dir(NULL, history);
1296 void prefs_common_read_config(void)
1301 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1302 prefs_read_config(param, "Common", rcpath, NULL);
1304 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1309 tmp = g_strdup(gettext(prefs_common.date_format));
1310 g_free(prefs_common.date_format);
1311 prefs_common.date_format = tmp;
1313 prefs_common.mime_open_cmd_history =
1314 prefs_common_read_history(COMMAND_HISTORY);
1315 prefs_common.summary_quicksearch_history =
1316 prefs_common_read_history(QUICKSEARCH_HISTORY);
1317 prefs_common.summary_search_from_history =
1318 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1319 prefs_common.summary_search_to_history =
1320 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1321 prefs_common.summary_search_subject_history =
1322 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1323 prefs_common.summary_search_body_history =
1324 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1325 prefs_common.summary_search_adv_condition_history =
1326 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1327 prefs_common.message_search_history =
1328 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1329 prefs_common.compose_save_to_history =
1330 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1331 #ifndef USE_ALT_ADDRBOOK
1332 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1334 colorlabel_update_colortable_from_prefs();
1340 g_warning("failed to write"); \
1345 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1347 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1351 gchar *path, *tmp_path;
1354 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1355 G_DIR_SEPARATOR_S, history,
1358 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1361 tmp_path = g_strconcat(path, ".tmp", NULL);
1363 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1364 FILE_OP_ERROR(tmp_path, "fopen");
1368 for (cur = list; cur != NULL; cur = cur->next) {
1369 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1370 fputc('\n', fp) != EOF);
1373 if (fclose(fp) == EOF) {
1374 FILE_OP_ERROR(tmp_path, "fclose");
1382 if (g_rename(tmp_path, path) < 0) {
1383 FILE_OP_ERROR(path, "rename");
1395 * Save history list to the specified history file
1397 static void prefs_common_save_history(const gchar *history, GList *list)
1399 prefs_common_save_history_to_dir(NULL, history, list);
1404 void prefs_common_write_config(void)
1406 prefs_write_config(param, "Common", COMMON_RC);
1408 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1411 prefs_common_save_history(COMMAND_HISTORY,
1412 prefs_common.mime_open_cmd_history);
1413 prefs_common_save_history(QUICKSEARCH_HISTORY,
1414 prefs_common.summary_quicksearch_history);
1415 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1416 prefs_common.summary_search_from_history);
1417 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1418 prefs_common.summary_search_to_history);
1419 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1420 prefs_common.summary_search_subject_history);
1421 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1422 prefs_common.summary_search_body_history);
1423 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1424 prefs_common.summary_search_adv_condition_history);
1425 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1426 prefs_common.message_search_history);
1427 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1428 prefs_common.compose_save_to_history);
1430 #ifndef USE_ALT_ADDRBOOK
1431 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1432 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1433 prefs_common.addressbook_custom_attributes);
1437 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1438 both 'in' and 'out' must be non-NULL.
1439 'out' must be a pointer to a buffer whose size is at least equal
1440 to strlen(txt)+1, this buffer will get cleared. out's contents
1441 will always get set to a valid string, even if it's "".*/
1442 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1449 cm_return_if_fail( in != NULL );
1450 cm_return_if_fail( out != NULL );
1454 memset(out, 0, strlen(in)+1);
1455 while (*i != '\0') {
1456 if (*i == '\\' && *(i+1) == 'n') {
1459 } else if (*i == '\\' && *(i+1) == 't') {
1462 } else if (*i == '\\' && *(i+1) == '\\') {
1473 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1474 both 'in' and 'out' must be non-NULL.
1475 'out' must be a pointer to a buffer whose size is at least equal
1476 to 2*strlen(txt)+1. out's contents will always get set to a valid
1477 string, even if it's "". */
1478 void pref_get_escaped_pref(gchar *out, const gchar *in)
1485 cm_return_if_fail( in != NULL );
1486 cm_return_if_fail( out != NULL );
1490 while (*i != '\0') {
1494 } else if (*i == '\t') {
1497 } else if (*i == '\\') {
1508 /* set the contents of a textview widget from the internal \-escaped
1509 representation of a pref string. both txt and textview must be non-NULL. */
1510 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1512 GtkTextBuffer *buffer;
1515 cm_return_if_fail( textview != NULL );
1517 buffer = gtk_text_view_get_buffer(textview);
1520 gtk_text_buffer_set_text(buffer, "", -1);
1522 out = g_malloc(strlen(txt)+1);
1524 pref_get_unescaped_pref(out, txt);
1526 gtk_text_buffer_set_text(buffer, out, -1);
1531 /* set the contents of a gtkentry widget from the internal \-escaped
1532 representation of a pref string. both txt and entry must be non-NULL. */
1533 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1537 cm_return_if_fail( entry != NULL );
1539 gtk_entry_set_text(entry, "");
1541 out = g_malloc(strlen(txt)+1);
1543 pref_get_unescaped_pref(out, txt);
1545 gtk_entry_set_text(entry, out);
1550 /* get the \-escaped internal representation of a pref from the contents of
1551 a textview widget. textview must be non-NULL. */
1552 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1554 GtkTextBuffer *buffer;
1555 GtkTextIter start, end;
1558 cm_return_val_if_fail( textview != NULL, "" );
1560 buffer = gtk_text_view_get_buffer(textview);
1561 gtk_text_buffer_get_start_iter(buffer, &start);
1562 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1563 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1564 out = malloc(2*strlen(tmp)+1);
1566 pref_get_escaped_pref(out, tmp);
1572 /* get the \-escaped internal representation of a pref from the contents of
1573 a gtkentry widget. entry must be non-NULL. */
1574 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1578 cm_return_val_if_fail( entry != NULL, "" );
1580 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1581 out = malloc(2*strlen(tmp)+1);
1584 pref_get_escaped_pref(out, tmp);
1590 /* ugly hack to be able to get this pref from ssl_certificate.c */
1591 gboolean prefs_common_unsafe_ssl_certs(void)
1593 return prefs_common.unsafe_ssl_certs;
1596 gboolean prefs_common_enable_log_standard(void)
1598 return prefs_common.enable_log_standard;
1601 gboolean prefs_common_enable_log_warning(void)
1603 return prefs_common.enable_log_warning;
1605 gboolean prefs_common_enable_log_error(void)
1607 return prefs_common.enable_log_error;
1609 gboolean prefs_common_enable_log_status(void)
1611 return prefs_common.enable_log_status;
1615 return the translated name of a header, if the translate_header option is
1616 set, otherwise return the untranslated header name (header_name itself).
1617 this function is provided for convenience, it's an interface to
1618 prefs_common.trans_hdr.
1619 works with header names either with or without trailing colon, provided
1620 that gettext found such header name in the sources (they should all be
1621 found in src/gtk/headers.h anyway).
1623 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1625 if (header_name == NULL || *header_name == '\0')
1628 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1631 const gchar *prefs_common_get_uri_cmd(void)
1638 if (!prefs_common.cmds_use_system_default)
1639 return prefs_common.uri_cmd;
1641 tmp = g_find_program_in_path("xdg-open");
1643 return prefs_common.uri_cmd;
1646 return "xdg-open %s";
1650 const gchar *prefs_common_get_ext_editor_cmd(void)
1652 return prefs_common.ext_editor_cmd;
1653 #if 0 /* we should do that, but it detaches the editor and breaks
1654 compose.c's external composition. */
1657 if (!prefs_common.cmds_use_system_default)
1658 return prefs_common.ext_editor_cmd;
1660 tmp = g_find_program_in_path("xdg-open");
1662 return prefs_common.ext_editor_cmd;
1665 return "xdg-open %s";
1669 gboolean prefs_common_get_use_shred(void)
1671 return prefs_common.use_shred;
1674 gboolean prefs_common_get_flush_metadata (void)
1676 return prefs_common.flush_metadata;
1679 PrefsCommon *prefs_common_get_prefs(void)
1681 return &prefs_common;