2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2016 Hiroyuki Yamamoto and the Claws Mail team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21 #include "claws-features.h"
27 #include <glib/gi18n.h>
29 #include <gdk/gdkkeysyms.h>
34 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "prefs_migration.h"
45 #include "mainwindow.h"
46 #include "summaryview.h"
47 #include "folderview.h"
48 #include "messageview.h"
49 #include "manage_window.h"
55 #include "alertpanel.h"
59 #include "folderview.h"
60 #include "stock_pixmap.h"
61 #include "prefswindow.h"
62 #include "colorlabel.h"
63 #include "passwordstore.h"
64 #include "file-utils.h"
66 #ifndef USE_ALT_ADDRBOOK
67 #include "addrcustomattr.h"
76 PrefsCommon prefs_common;
82 * In the Windows version prefs_common contains
83 * - the non-OS-specific settings of the "Common" section and
84 * - the OS-specific settings of the "CommonWin32" section
85 * The OS-specific settings of the "Common" section are not used
86 * but saved in prefs_unix.
89 # define SPECIFIC_PREFS prefs_unix
91 static PrefsCommon prefs_unix;
93 static PrefParam param_os_specific[] = {
96 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
97 {"newmail_notify_cmd", "",
98 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
101 {"message_font_gtk2", "Monospace 9",
102 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
103 {"print_font_gtk2", "Monospace 9",
104 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
105 {"small_font_gtk2", "Sans 9",
106 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
107 {"normal_font_gtk2", "Sans 9",
108 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
109 {"bold_font_gtk2", "Sans 9 Bold",
110 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
112 {"attach_save_directory", NULL,
113 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
114 {"attach_load_directory", NULL,
115 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
118 {"mime_textviewer", NULL,
119 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
120 {"mime_open_command", "notepad '%s'",
121 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
124 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
125 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
127 {"enable_alpha_svg", "TRUE",
128 &prefs_common.enable_alpha_svg, P_BOOL, NULL, NULL, NULL},
129 {"enable_pixmap_scaling", "TRUE",
130 &prefs_common.enable_pixmap_scaling, P_BOOL, NULL, NULL, NULL},
131 {"pixmap_scaling_auto", "TRUE",
132 &prefs_common.pixmap_scaling_auto, P_BOOL, NULL, NULL, NULL},
133 {"pixmap_scaling_ppi", "96",
134 &prefs_common.pixmap_scaling_ppi, P_INT, NULL, NULL, NULL},
138 {"ext_editor_command", "notepad %s",
139 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
141 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
144 # define SPECIFIC_PREFS prefs_common
148 parameter name, default value, pointer to the prefs variable, data type,
149 pointer to the widget pointer,
150 pointer to the function for data setting,
151 pointer to the function for widget setting
154 static PrefParam param[] = {
155 {"config_version", "0",
156 &prefs_common.config_version, P_INT, NULL, NULL, NULL},
159 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
161 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
164 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
166 {"autochk_interval", "600", &prefs_common.autochk_itv, P_INT,
168 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
170 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
171 P_BOOL, NULL, NULL, NULL},
172 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
173 P_BOOL, NULL, NULL, NULL},
174 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
175 P_BOOL, NULL, NULL, NULL},
176 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
177 P_BOOL, NULL, NULL, NULL},
178 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
180 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
182 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
184 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
186 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
187 P_BOOL, NULL, NULL, NULL},
188 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
189 P_BOOL, NULL, NULL, NULL},
192 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
194 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
195 P_BOOL, NULL, NULL, NULL},
197 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
200 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
203 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
205 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
208 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
210 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
212 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
214 {"rewrite_first_from", "TRUE", &prefs_common.rewrite_first_from,
215 P_BOOL, NULL, NULL, NULL},
216 {"warn_empty_subj", "TRUE", &prefs_common.warn_empty_subj,
217 P_BOOL, NULL, NULL, NULL},
218 {"warn_sending_many_recipients_num", "0", &prefs_common.warn_sending_many_recipients_num, P_INT,
220 {"hide_timezone", "FALSE", &prefs_common.hide_timezone,
221 P_BOOL, NULL, NULL, NULL},
222 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
223 P_BOOL, NULL, NULL, NULL},
226 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
228 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
229 P_BOOL, NULL, NULL, NULL},
230 {"redirect_keep_from", "FALSE",
231 &prefs_common.redirect_keep_from, P_BOOL,
233 {"undo_level", "50", &prefs_common.undolevels, P_INT,
235 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
237 {"compose_subject_format", "",
238 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
239 {"compose_body_format", N_("Hello,\\n"),
240 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
241 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
243 {"type_any_header", "FALSE", &prefs_common.type_any_header, P_BOOL,
247 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
249 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
251 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
253 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
255 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
257 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
259 {"autosave", "TRUE", &prefs_common.autosave,
260 P_BOOL, NULL, NULL, NULL},
261 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
263 {"autosave_encrypted", "FALSE", &prefs_common.autosave_encrypted,
264 P_BOOL, NULL, NULL, NULL},
265 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
266 P_BOOL, NULL, NULL, NULL},
267 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
268 P_INT, NULL, NULL, NULL},
270 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
272 {"dictionary", "", &prefs_common.dictionary, P_STRING,
274 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
276 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
278 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
280 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
281 P_BOOL, NULL, NULL, NULL},
282 {"misspelled_color", "#ff0000", &prefs_common.color[COL_MISSPELLED],
283 P_COLOR, NULL, NULL, NULL},
284 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
287 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
289 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
292 /* Account autoselection */
293 {"reply_account_autoselect", "TRUE",
294 &prefs_common.reply_account_autosel, P_BOOL,
296 {"forward_account_autoselect", "TRUE",
297 &prefs_common.forward_account_autosel, P_BOOL,
299 {"reedit_account_autoselect", "TRUE",
300 &prefs_common.reedit_account_autosel, P_BOOL,
303 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
307 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
310 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
315 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
317 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
318 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
320 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
322 {"forward_quote_format",
323 N_("\\n\\nBegin forwarded message:\\n\\n"
324 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
325 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
326 &prefs_common.fw_quotefmt, P_STRING,
328 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
334 {"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 {"message_font_gtk2", "Monospace 8",
346 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
347 {"print_font_gtk2", "Monospace 8",
348 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
349 {"small_font_gtk2", "Sans 8",
350 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
351 {"normal_font_gtk2", "Sans 8",
352 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
353 {"bold_font_gtk2", "Sans Bold 8",
354 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
357 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
359 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
363 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
365 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
367 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
369 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
371 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
373 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
375 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
377 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
379 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
381 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
383 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
385 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
387 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
389 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
391 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
393 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
395 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
397 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
399 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
401 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
403 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
405 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
407 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
409 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
411 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
413 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
415 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
417 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
419 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
421 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
425 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
427 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
429 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
432 {"display_folder_unread_num", "0",
433 &prefs_common.display_folder_unread, P_INT,
435 {"newsgroup_abbrev_len", "16",
436 &prefs_common.ng_abbrev_len, P_INT,
439 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
442 /* Display: Summary View */
443 {"default_sort_key", "3", &prefs_common.default_sort_key, P_ENUM,
445 {"default_sort_type", "1", &prefs_common.default_sort_type, P_ENUM,
447 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
449 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
451 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
452 P_STRING, NULL, NULL, NULL},
453 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
456 {"next_on_delete", "FALSE", &prefs_common.next_on_delete, P_BOOL,
459 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
463 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
466 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
469 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
471 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
474 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
476 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
479 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
481 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
485 {"summary_col_show_mark", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_unread", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_subject", "TRUE",
490 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_from", "TRUE",
492 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_to", "FALSE",
494 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_date", "TRUE",
496 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_mime", "TRUE",
498 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
499 {"summary_col_show_size", "TRUE",
500 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
501 {"summary_col_show_number", "FALSE",
502 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
503 {"summary_col_show_score", "FALSE",
504 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
505 {"summary_col_show_locked", "FALSE",
506 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
507 {"summary_col_show_tags", "FALSE",
508 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
510 {"summary_col_lock", "FALSE", &prefs_common.summary_col_lock, P_BOOL,
513 {"summary_col_pos_mark", "0",
514 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
515 {"summary_col_pos_unread", "1",
516 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
517 {"summary_col_pos_mime", "2",
518 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
519 {"summary_col_pos_subject", "3",
520 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
521 {"summary_col_pos_from", "4",
522 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
523 {"summary_col_pos_date", "5",
524 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
525 {"summary_col_pos_size", "6",
526 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
527 {"summary_col_pos_number", "7",
528 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
529 {"summary_col_pos_score", "8",
530 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
531 {"summary_col_pos_locked", "9",
532 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
533 {"summary_col_pos_to", "10",
534 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
535 {"summary_col_pos_tags", "11",
536 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
538 {"summary_col_size_mark", "10",
539 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
540 {"summary_col_size_unread", "13",
541 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
542 {"summary_col_size_mime", "10",
543 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_subject", "200",
546 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_from", "120",
548 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_to", "120",
550 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
552 {"summary_col_size_subject", "300",
553 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
554 {"summary_col_size_from", "150",
555 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
556 {"summary_col_size_to", "150",
557 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
560 {"summary_col_size_date", "118",
561 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
562 {"summary_col_size_size", "45",
563 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
564 {"summary_col_size_number", "40",
565 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
566 {"summary_col_size_score", "40",
567 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
568 {"summary_col_size_locked", "13",
569 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
570 {"summary_col_size_tags", "150",
571 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
574 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
576 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
578 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
580 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
582 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
585 {"folder_col_show_folder", "TRUE",
586 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
587 {"folder_col_show_new", "TRUE",
588 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
589 {"folder_col_show_unread", "TRUE",
590 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
591 {"folder_col_show_total", "TRUE",
592 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
594 {"folder_col_pos_folder", "0",
595 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
596 {"folder_col_pos_new", "1",
597 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
598 {"folder_col_pos_unread", "2",
599 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
600 {"folder_col_pos_total", "3",
601 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
604 {"folder_col_size_folder", "120",
605 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
606 {"folder_col_size_new", "32",
607 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
608 {"folder_col_size_unread", "32",
609 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
610 {"folder_col_size_total", "32",
611 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
613 {"folder_col_size_folder", "400",
614 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
615 {"folder_col_size_new", "32",
616 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
617 {"folder_col_size_unread", "32",
618 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
619 {"folder_col_size_total", "32",
620 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
623 {"folder_default_thread", "TRUE", &prefs_common.folder_default_thread, P_BOOL,
625 {"folder_default_thread_collapsed", "FALSE", &prefs_common.folder_default_thread_collapsed, P_BOOL,
627 {"folder_default_hide_read_threads", "FALSE", &prefs_common.folder_default_hide_read_threads, P_BOOL,
629 {"folder_default_hide_read_msgs", "FALSE", &prefs_common.folder_default_hide_read_msgs, P_BOOL,
631 {"folder_default_hide_del_msgs", "FALSE", &prefs_common.folder_default_hide_del_msgs, P_BOOL,
634 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
636 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
639 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
641 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
643 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
645 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
647 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
650 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
652 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
654 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
656 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
658 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
660 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
662 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
664 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
666 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
669 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
671 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
673 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
675 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
677 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
679 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
681 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
683 {"compose_width", "600", &prefs_common.compose_width, P_INT,
685 {"compose_height", "560", &prefs_common.compose_height, P_INT,
688 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
690 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
692 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
694 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
696 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
698 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
700 {"compose_width", "700", &prefs_common.compose_width, P_INT,
702 {"compose_height", "470", &prefs_common.compose_height, P_INT,
705 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
707 {"compose_x", "0", &prefs_common.compose_x, P_INT,
709 {"compose_y", "0", &prefs_common.compose_y, P_INT,
712 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
715 {"quote_level1_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL1],
716 P_COLOR, NULL, NULL, NULL},
717 {"quote_level2_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL2],
718 P_COLOR, NULL, NULL, NULL},
719 {"quote_level3_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL3],
720 P_COLOR, NULL, NULL, NULL},
721 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
723 {"quote_level1_bgcolor", "#cccccc", &prefs_common.color[COL_QUOTE_LEVEL1_BG],
724 P_COLOR, NULL, NULL, NULL},
725 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.color[COL_QUOTE_LEVEL2_BG],
726 P_COLOR, NULL, NULL, NULL},
727 {"quote_level3_bgcolor", "#dddddd", &prefs_common.color[COL_QUOTE_LEVEL3_BG],
728 P_COLOR, NULL, NULL, NULL},
729 {"uri_color", "#007f00", &prefs_common.color[COL_URI],
730 P_COLOR, NULL, NULL, NULL},
731 {"emphasis_color", "#0000cf", &prefs_common.color[COL_EMPHASIS],
732 P_COLOR, NULL, NULL, NULL},
733 {"target_folder_color", "#da1cca", &prefs_common.color[COL_TGT_FOLDER],
734 P_COLOR, NULL, NULL, NULL},
735 {"signature_color", "#797979", &prefs_common.color[COL_SIGNATURE],
736 P_COLOR, NULL, NULL, NULL},
737 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
738 P_BOOL, NULL, NULL, NULL},
740 {"default_header_color", "#000000", &prefs_common.color[COL_DEFAULT_HEADER],
741 P_COLOR, NULL, NULL, NULL},
742 {"default_header_bgcolor", "#f5f6be", &prefs_common.color[COL_DEFAULT_HEADER_BG],
743 P_COLOR, NULL, NULL, NULL},
744 {"tags_color", "#000000", &prefs_common.color[COL_TAGS],
745 P_COLOR, NULL, NULL, NULL},
746 {"tags_bgcolor", "#f5f6be", &prefs_common.color[COL_TAGS_BG],
747 P_COLOR, NULL, NULL, NULL},
748 {"qs_active_color", "#000000", &prefs_common.color[COL_QS_ACTIVE],
749 P_COLOR, NULL, NULL, NULL},
750 {"qs_active_bgcolor", "#f5f6be", &prefs_common.color[COL_QS_ACTIVE_BG],
751 P_COLOR, NULL, NULL, NULL},
752 {"qs_error_color", "#000000", &prefs_common.color[COL_QS_ERROR],
753 P_COLOR, NULL, NULL, NULL},
754 {"qs_error_bgcolor", "#ff7070", &prefs_common.color[COL_QS_ERROR_BG],
755 P_COLOR, NULL, NULL, NULL},
757 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
758 P_BOOL, NULL, NULL, NULL},
759 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
761 {"display_xface", "TRUE", &prefs_common.display_xface,
762 P_BOOL, NULL, NULL, NULL},
763 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
765 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
767 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
769 {"line_space", "2", &prefs_common.line_space, P_INT,
771 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
774 {"enable_smooth_scroll", "FALSE",
775 &prefs_common.enable_smooth_scroll, P_BOOL,
777 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
779 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
781 {"hide_quoted", "TRUE",
782 &prefs_common.hide_quoted, P_BOOL,
784 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
786 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
789 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
792 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
794 {"attach_save_directory", NULL,
795 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
796 {"attach_load_directory", NULL,
797 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
800 {"mime_textviewer", NULL,
801 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
802 {"mime_open_command", "xdg-open '%s'",
803 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
804 {"show_inline_attachments", "TRUE",
805 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
809 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
812 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
815 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
816 NULL, NULL, NULL}, */
817 {"open_selected_message_on_folder_open", "FALSE",
818 &prefs_common.open_selected_on_folder_open,
819 P_BOOL, NULL, NULL, NULL},
820 {"open_selected_message_on_search_results", "FALSE",
821 &prefs_common.open_selected_on_search_results,
822 P_BOOL, NULL, NULL, NULL},
823 {"open_selected_message_on_prevnext", "FALSE",
824 &prefs_common.open_selected_on_prevnext,
825 P_BOOL, NULL, NULL, NULL},
826 {"open_selected_message_on_deletemove", "FALSE",
827 &prefs_common.open_selected_on_deletemove,
828 P_BOOL, NULL, NULL, NULL},
829 {"open_selected_message_on_directional", "FALSE",
830 &prefs_common.open_selected_on_directional,
831 P_BOOL, NULL, NULL, NULL},
832 {"always_show_message_when_selected", "FALSE",
833 &prefs_common.always_show_msg,
834 P_BOOL, NULL, NULL, NULL},
835 {"select_on_entry", "3", &prefs_common.select_on_entry,
836 P_ENUM, NULL, NULL, NULL},
837 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
838 P_BOOL, NULL, NULL, NULL},
840 /* do it SUMMARY_OPEN_ACTIONS-1 times */
841 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
843 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
845 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
847 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
849 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
851 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
853 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
855 {"summary_select_prio8", "0", &prefs_common.summary_select_prio[7], P_ENUM,
857 {"summary_select_prio9", "0", &prefs_common.summary_select_prio[8], P_ENUM,
859 {"summary_select_prio10", "0", &prefs_common.summary_select_prio[9], P_ENUM,
862 {"mark_as_read_on_new_window", "FALSE",
863 &prefs_common.mark_as_read_on_new_window,
864 P_BOOL, NULL, NULL, NULL},
865 {"mark_as_read_delay", "0",
866 &prefs_common.mark_as_read_delay, P_INT,
868 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
870 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
872 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
875 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
876 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
879 {"enable_alpha_svg", "TRUE",
880 &SPECIFIC_PREFS.enable_alpha_svg, P_BOOL,
882 {"enable_pixmap_scaling", "TRUE",
883 &SPECIFIC_PREFS.enable_pixmap_scaling, P_BOOL,
885 {"pixmap_scaling_auto", "TRUE",
886 &SPECIFIC_PREFS.pixmap_scaling_auto, P_BOOL,
888 {"pixmap_scaling_ppi", "96",
889 &SPECIFIC_PREFS.pixmap_scaling_ppi, P_INT,
893 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
895 {"ask_override_colorlabel", "TRUE", &prefs_common.ask_override_colorlabel, P_BOOL,
898 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
900 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
904 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
905 P_BOOL, NULL, NULL, NULL},
906 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
907 P_INT, NULL, NULL, NULL},
908 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
909 P_INT, NULL, NULL, NULL},
913 {"uri_open_command", DEFAULT_BROWSER_CMD,
914 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
916 {"gtk_theme", DEFAULT_W32_GTK_THEME,
917 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
919 {"ext_editor_command", DEFAULT_EDITOR_CMD,
920 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
921 {"cmds_use_system_default", "TRUE",
922 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
923 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
924 P_BOOL, NULL, NULL, NULL},
925 {"session_passwords", "FALSE", &prefs_common.session_passwords,
926 P_BOOL, NULL, NULL, NULL},
927 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
929 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
931 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
933 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
934 P_BOOL, NULL, NULL, NULL},
935 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
937 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
940 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
943 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
947 #if defined(__OpenBSD__)
948 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
949 P_INT, NULL, NULL, NULL},
951 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
952 P_INT, NULL, NULL, NULL},
954 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
956 {"important_score", "1", &prefs_common.important_score, P_INT,
959 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
961 {"log_length", "500", &prefs_common.loglength, P_INT,
964 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
966 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
968 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
970 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
973 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
975 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
977 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
979 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
982 {"log_msg_color", "#00af00", &prefs_common.color[COL_LOG_MSG],
983 P_COLOR, NULL, NULL, NULL},
984 {"log_warn_color", "#af0000", &prefs_common.color[COL_LOG_WARN],
985 P_COLOR, NULL, NULL, NULL},
986 {"log_error_color", "#af0000", &prefs_common.color[COL_LOG_ERROR],
987 P_COLOR, NULL, NULL, NULL},
988 {"log_in_color", "#000000", &prefs_common.color[COL_LOG_IN],
989 P_COLOR, NULL, NULL, NULL},
990 {"log_out_color", "#0000ef", &prefs_common.color[COL_LOG_OUT],
991 P_COLOR, NULL, NULL, NULL},
992 {"log_status_ok_color", "#00af00", &prefs_common.color[COL_LOG_STATUS_OK],
993 P_COLOR, NULL, NULL, NULL},
994 {"log_status_nok_color", "#0000af", &prefs_common.color[COL_LOG_STATUS_NOK],
995 P_COLOR, NULL, NULL, NULL},
996 {"log_status_skip_color", "#aa00aa", &prefs_common.color[COL_LOG_STATUS_SKIP],
997 P_COLOR, NULL, NULL, NULL},
999 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
1001 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
1003 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
1005 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
1007 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
1009 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
1011 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
1013 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
1015 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
1018 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
1021 {"color_new", "#0000b3", &prefs_common.color[COL_NEW],
1022 P_COLOR, NULL, NULL, NULL},
1024 /* Some windows' sizes */
1025 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
1027 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
1030 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
1032 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
1035 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
1037 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
1040 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
1042 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
1045 {"actionsiodialog_width", "582", &prefs_common.actionsiodialog_width, P_INT,
1047 {"actionsiodialog_height", "310", &prefs_common.actionsiodialog_height, P_INT,
1050 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
1052 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
1055 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
1057 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1060 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1062 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1065 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1067 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1070 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1072 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1075 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1077 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1080 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1082 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1085 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1087 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1090 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1093 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1095 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1098 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1100 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1103 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1105 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1108 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1110 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1113 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1115 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1118 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1120 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1123 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1125 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1128 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1130 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1133 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1135 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1138 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1140 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1144 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1146 {"utf8_instead_of_locale_for_broken_mail", "0",
1147 &prefs_common.broken_are_utf8, P_INT,
1149 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1151 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1153 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1155 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1157 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1159 {"folderview_vscrollbar_policy", "0",
1160 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1162 {"textview_cursor_visible", "FALSE",
1163 &prefs_common.textview_cursor_visible, P_BOOL,
1165 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1167 #ifndef GENERIC_UMPC
1168 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1170 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1173 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1175 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1178 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1179 P_INT, NULL, NULL, NULL },
1180 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1181 P_STRING, NULL, NULL, NULL },
1182 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1183 P_BOOL, NULL, NULL, NULL },
1184 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1186 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1188 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1190 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1192 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1194 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1196 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1198 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1200 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1202 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1204 #ifndef GENERIC_UMPC
1205 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1208 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1212 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1214 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1216 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1218 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1220 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1222 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1224 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1226 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1228 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1230 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1232 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1234 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1236 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1238 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1240 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1243 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1244 P_BOOL, NULL, NULL, NULL },
1246 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1249 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1252 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1255 {"diff_added_color", "#008b8b", &prefs_common.color[COL_DIFF_ADDED],
1256 P_COLOR, NULL, NULL, NULL},
1257 {"diff_deleted_color", "#6a5acd", &prefs_common.color[COL_DIFF_DELETED],
1258 P_COLOR, NULL, NULL, NULL},
1259 {"diff_hunk_color", "#a52a2a", &prefs_common.color[COL_DIFF_HUNK],
1260 P_COLOR, NULL, NULL, NULL},
1262 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1264 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1266 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1267 #ifndef PASSWORD_CRYPTO_OLD
1268 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1269 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1270 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1271 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1274 {"use_proxy", "FALSE", &prefs_common.use_proxy, P_BOOL, NULL, NULL, NULL},
1275 {"proxy_type", "1", &prefs_common.proxy_info.proxy_type, P_ENUM, NULL, NULL, NULL},
1276 {"proxy_host", "localhost", &prefs_common.proxy_info.proxy_host, P_STRING, NULL, NULL, NULL},
1277 {"proxy_port", "1080", &prefs_common.proxy_info.proxy_port, P_USHORT, NULL, NULL, NULL},
1278 {"use_proxy_auth", "FALSE", &prefs_common.proxy_info.use_proxy_auth, P_BOOL, NULL, NULL, NULL},
1279 {"proxy_name", "", &prefs_common.proxy_info.proxy_name, P_STRING, NULL, NULL, NULL},
1280 {"proxy_pass", NULL, &prefs_common.proxy_info.proxy_pass, P_STRING, NULL, NULL, NULL},
1282 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1286 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1287 * Fallback to default_list if history file is not found
1289 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1290 GList *default_list)
1294 gchar buf[PREFSBUFSIZE];
1298 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1299 G_DIR_SEPARATOR_S, history,
1302 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1305 if ((fp = claws_fopen(path, "rb")) == NULL) {
1306 if (ENOENT != errno) FILE_OP_ERROR(path, "claws_fopen");
1308 /* returns default list if set, otherwise NULL */
1309 return default_list;
1312 while (claws_fgets(buf, sizeof(buf), fp) != NULL) {
1314 if (buf[0] == '\0') continue;
1315 tmp = add_history(tmp, buf);
1319 tmp = g_list_reverse(tmp);
1325 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1327 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1329 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1333 * Read history list from the specified history file
1335 static GList *prefs_common_read_history(const gchar *history)
1337 return prefs_common_read_history_from_dir(NULL, history);
1340 void prefs_common_read_config(void)
1345 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1346 prefs_read_config(param, "Common", rcpath, NULL);
1348 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1353 tmp = g_strdup(gettext(prefs_common.date_format));
1354 g_free(prefs_common.date_format);
1355 prefs_common.date_format = tmp;
1357 prefs_common.mime_open_cmd_history =
1358 prefs_common_read_history(COMMAND_HISTORY);
1359 prefs_common.summary_quicksearch_history =
1360 prefs_common_read_history(QUICKSEARCH_HISTORY);
1361 prefs_common.summary_search_from_history =
1362 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1363 prefs_common.summary_search_to_history =
1364 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1365 prefs_common.summary_search_subject_history =
1366 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1367 prefs_common.summary_search_body_history =
1368 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1369 prefs_common.summary_search_adv_condition_history =
1370 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1371 prefs_common.message_search_history =
1372 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1373 prefs_common.compose_save_to_history =
1374 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1375 #ifndef USE_ALT_ADDRBOOK
1376 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1378 colorlabel_update_colortable_from_prefs();
1384 g_warning("failed to write"); \
1389 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1391 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1395 gchar *path, *tmp_path;
1398 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1399 G_DIR_SEPARATOR_S, history,
1402 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1405 tmp_path = g_strconcat(path, ".tmp", NULL);
1407 if ((fp = claws_fopen(tmp_path, "wb")) == NULL) {
1408 FILE_OP_ERROR(tmp_path, "claws_fopen");
1412 for (cur = list; cur != NULL; cur = cur->next) {
1413 TRY(claws_fputs((gchar *)cur->data, fp) != EOF &&
1414 claws_fputc('\n', fp) != EOF);
1417 if (claws_safe_fclose(fp) == EOF) {
1418 FILE_OP_ERROR(tmp_path, "claws_fclose");
1426 if (g_rename(tmp_path, path) < 0) {
1427 FILE_OP_ERROR(path, "rename");
1433 claws_safe_fclose(fp);
1439 * Save history list to the specified history file
1441 static void prefs_common_save_history(const gchar *history, GList *list)
1443 prefs_common_save_history_to_dir(NULL, history, list);
1448 void prefs_common_write_config(void)
1450 prefs_write_config(param, "Common", COMMON_RC);
1452 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1455 prefs_common_save_history(COMMAND_HISTORY,
1456 prefs_common.mime_open_cmd_history);
1457 prefs_common_save_history(QUICKSEARCH_HISTORY,
1458 prefs_common.summary_quicksearch_history);
1459 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1460 prefs_common.summary_search_from_history);
1461 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1462 prefs_common.summary_search_to_history);
1463 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1464 prefs_common.summary_search_subject_history);
1465 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1466 prefs_common.summary_search_body_history);
1467 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1468 prefs_common.summary_search_adv_condition_history);
1469 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1470 prefs_common.message_search_history);
1471 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1472 prefs_common.compose_save_to_history);
1474 #ifndef USE_ALT_ADDRBOOK
1475 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1476 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1477 prefs_common.addressbook_custom_attributes);
1481 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1482 both 'in' and 'out' must be non-NULL.
1483 'out' must be a pointer to a buffer whose size is at least equal
1484 to strlen(txt)+1, this buffer will get cleared. out's contents
1485 will always get set to a valid string, even if it's "".*/
1486 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1493 cm_return_if_fail( in != NULL );
1494 cm_return_if_fail( out != NULL );
1498 memset(out, 0, strlen(in)+1);
1499 while (*i != '\0') {
1500 if (*i == '\\' && *(i+1) == 'n') {
1503 } else if (*i == '\\' && *(i+1) == 't') {
1506 } else if (*i == '\\' && *(i+1) == '\\') {
1517 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1518 both 'in' and 'out' must be non-NULL.
1519 'out' must be a pointer to a buffer whose size is at least equal
1520 to 2*strlen(txt)+1. out's contents will always get set to a valid
1521 string, even if it's "". */
1522 void pref_get_escaped_pref(gchar *out, const gchar *in)
1529 cm_return_if_fail( in != NULL );
1530 cm_return_if_fail( out != NULL );
1534 while (*i != '\0') {
1538 } else if (*i == '\t') {
1541 } else if (*i == '\\') {
1552 /* set the contents of a textview widget from the internal \-escaped
1553 representation of a pref string. both txt and textview must be non-NULL. */
1554 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1556 GtkTextBuffer *buffer;
1559 cm_return_if_fail( textview != NULL );
1561 buffer = gtk_text_view_get_buffer(textview);
1564 gtk_text_buffer_set_text(buffer, "", -1);
1566 out = g_malloc(strlen(txt)+1);
1568 pref_get_unescaped_pref(out, txt);
1570 gtk_text_buffer_set_text(buffer, out, -1);
1575 /* set the contents of a gtkentry widget from the internal \-escaped
1576 representation of a pref string. both txt and entry must be non-NULL. */
1577 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1581 cm_return_if_fail( entry != NULL );
1583 gtk_entry_set_text(entry, "");
1585 out = g_malloc(strlen(txt)+1);
1587 pref_get_unescaped_pref(out, txt);
1589 gtk_entry_set_text(entry, out);
1594 /* get the \-escaped internal representation of a pref from the contents of
1595 a textview widget. textview must be non-NULL. */
1596 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1598 GtkTextBuffer *buffer;
1599 GtkTextIter start, end;
1602 cm_return_val_if_fail( textview != NULL, "" );
1604 buffer = gtk_text_view_get_buffer(textview);
1605 gtk_text_buffer_get_start_iter(buffer, &start);
1606 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1607 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1608 out = malloc(2*strlen(tmp)+1);
1610 pref_get_escaped_pref(out, tmp);
1616 /* get the \-escaped internal representation of a pref from the contents of
1617 a gtkentry widget. entry must be non-NULL. */
1618 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1622 cm_return_val_if_fail( entry != NULL, "" );
1624 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1625 out = malloc(2*strlen(tmp)+1);
1628 pref_get_escaped_pref(out, tmp);
1634 /* ugly hack to be able to get this pref from ssl_certificate.c */
1635 gboolean prefs_common_unsafe_ssl_certs(void)
1637 return prefs_common.unsafe_ssl_certs;
1640 gboolean prefs_common_enable_log_standard(void)
1642 return prefs_common.enable_log_standard;
1645 gboolean prefs_common_enable_log_warning(void)
1647 return prefs_common.enable_log_warning;
1649 gboolean prefs_common_enable_log_error(void)
1651 return prefs_common.enable_log_error;
1653 gboolean prefs_common_enable_log_status(void)
1655 return prefs_common.enable_log_status;
1659 return the translated name of a header, if the translate_header option is
1660 set, otherwise return the untranslated header name (header_name itself).
1661 this function is provided for convenience, it's an interface to
1662 prefs_common.trans_hdr.
1663 works with header names either with or without trailing colon, provided
1664 that gettext found such header name in the sources (they should all be
1665 found in src/gtk/headers.h anyway).
1667 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1669 if (header_name == NULL || *header_name == '\0')
1672 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1675 const gchar *prefs_common_get_uri_cmd(void)
1682 if (!prefs_common.cmds_use_system_default)
1683 return prefs_common.uri_cmd;
1685 tmp = g_find_program_in_path("xdg-open");
1687 return prefs_common.uri_cmd;
1690 return "xdg-open %s";
1694 const gchar *prefs_common_get_ext_editor_cmd(void)
1696 return prefs_common.ext_editor_cmd;
1697 #if 0 /* we should do that, but it detaches the editor and breaks
1698 compose.c's external composition. */
1701 if (!prefs_common.cmds_use_system_default)
1702 return prefs_common.ext_editor_cmd;
1704 tmp = g_find_program_in_path("xdg-open");
1706 return prefs_common.ext_editor_cmd;
1709 return "xdg-open %s";
1713 gboolean prefs_common_get_use_shred(void)
1715 return prefs_common.use_shred;
1718 gboolean prefs_common_get_flush_metadata (void)
1720 return prefs_common.flush_metadata;
1723 PrefsCommon *prefs_common_get_prefs(void)
1725 return &prefs_common;