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_pos_mark", "0",
511 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_unread", "1",
513 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_mime", "2",
515 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_subject", "3",
517 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_from", "4",
519 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_date", "5",
521 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_size", "6",
523 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
524 {"summary_col_pos_number", "7",
525 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
526 {"summary_col_pos_score", "8",
527 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
528 {"summary_col_pos_locked", "9",
529 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
530 {"summary_col_pos_to", "10",
531 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
532 {"summary_col_pos_tags", "11",
533 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
535 {"summary_col_size_mark", "10",
536 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_unread", "13",
538 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_mime", "10",
540 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
542 {"summary_col_size_subject", "200",
543 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
544 {"summary_col_size_from", "120",
545 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_to", "120",
547 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_subject", "300",
550 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_from", "150",
552 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_to", "150",
554 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
557 {"summary_col_size_date", "118",
558 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
559 {"summary_col_size_size", "45",
560 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
561 {"summary_col_size_number", "40",
562 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
563 {"summary_col_size_score", "40",
564 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
565 {"summary_col_size_locked", "13",
566 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
567 {"summary_col_size_tags", "150",
568 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
571 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
573 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
575 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
577 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
579 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
582 {"folder_col_show_folder", "TRUE",
583 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
584 {"folder_col_show_new", "TRUE",
585 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
586 {"folder_col_show_unread", "TRUE",
587 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
588 {"folder_col_show_total", "TRUE",
589 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
591 {"folder_col_pos_folder", "0",
592 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
593 {"folder_col_pos_new", "1",
594 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
595 {"folder_col_pos_unread", "2",
596 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
597 {"folder_col_pos_total", "3",
598 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
601 {"folder_col_size_folder", "120",
602 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
603 {"folder_col_size_new", "32",
604 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
605 {"folder_col_size_unread", "32",
606 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
607 {"folder_col_size_total", "32",
608 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
610 {"folder_col_size_folder", "400",
611 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
612 {"folder_col_size_new", "32",
613 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
614 {"folder_col_size_unread", "32",
615 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
616 {"folder_col_size_total", "32",
617 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
620 {"folder_default_thread", "TRUE", &prefs_common.folder_default_thread, P_BOOL,
622 {"folder_default_thread_collapsed", "FALSE", &prefs_common.folder_default_thread_collapsed, P_BOOL,
624 {"folder_default_hide_read_threads", "FALSE", &prefs_common.folder_default_hide_read_threads, P_BOOL,
626 {"folder_default_hide_read_msgs", "FALSE", &prefs_common.folder_default_hide_read_msgs, P_BOOL,
628 {"folder_default_hide_del_msgs", "FALSE", &prefs_common.folder_default_hide_del_msgs, P_BOOL,
631 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
633 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
636 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
638 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
640 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
642 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
644 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
647 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
649 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
651 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
653 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
655 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
657 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
659 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
661 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
663 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
666 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
668 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
670 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
672 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
674 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
676 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
678 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
680 {"compose_width", "600", &prefs_common.compose_width, P_INT,
682 {"compose_height", "560", &prefs_common.compose_height, P_INT,
685 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
687 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
689 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
691 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
693 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
695 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
697 {"compose_width", "700", &prefs_common.compose_width, P_INT,
699 {"compose_height", "470", &prefs_common.compose_height, P_INT,
702 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
704 {"compose_x", "0", &prefs_common.compose_x, P_INT,
706 {"compose_y", "0", &prefs_common.compose_y, P_INT,
709 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
712 {"quote_level1_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL1],
713 P_COLOR, NULL, NULL, NULL},
714 {"quote_level2_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL2],
715 P_COLOR, NULL, NULL, NULL},
716 {"quote_level3_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL3],
717 P_COLOR, NULL, NULL, NULL},
718 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
720 {"quote_level1_bgcolor", "#cccccc", &prefs_common.color[COL_QUOTE_LEVEL1_BG],
721 P_COLOR, NULL, NULL, NULL},
722 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.color[COL_QUOTE_LEVEL2_BG],
723 P_COLOR, NULL, NULL, NULL},
724 {"quote_level3_bgcolor", "#dddddd", &prefs_common.color[COL_QUOTE_LEVEL3_BG],
725 P_COLOR, NULL, NULL, NULL},
726 {"uri_color", "#007f00", &prefs_common.color[COL_URI],
727 P_COLOR, NULL, NULL, NULL},
728 {"emphasis_color", "#0000cf", &prefs_common.color[COL_EMPHASIS],
729 P_COLOR, NULL, NULL, NULL},
730 {"target_folder_color", "#da1cca", &prefs_common.color[COL_TGT_FOLDER],
731 P_COLOR, NULL, NULL, NULL},
732 {"signature_color", "#797979", &prefs_common.color[COL_SIGNATURE],
733 P_COLOR, NULL, NULL, NULL},
734 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
735 P_BOOL, NULL, NULL, NULL},
737 {"default_header_color", "#000000", &prefs_common.color[COL_DEFAULT_HEADER],
738 P_COLOR, NULL, NULL, NULL},
739 {"default_header_bgcolor", "#f5f6be", &prefs_common.color[COL_DEFAULT_HEADER_BG],
740 P_COLOR, NULL, NULL, NULL},
741 {"tags_color", "#000000", &prefs_common.color[COL_TAGS],
742 P_COLOR, NULL, NULL, NULL},
743 {"tags_bgcolor", "#f5f6be", &prefs_common.color[COL_TAGS_BG],
744 P_COLOR, NULL, NULL, NULL},
745 {"qs_active_color", "#000000", &prefs_common.color[COL_QS_ACTIVE],
746 P_COLOR, NULL, NULL, NULL},
747 {"qs_active_bgcolor", "#f5f6be", &prefs_common.color[COL_QS_ACTIVE_BG],
748 P_COLOR, NULL, NULL, NULL},
749 {"qs_error_color", "#000000", &prefs_common.color[COL_QS_ERROR],
750 P_COLOR, NULL, NULL, NULL},
751 {"qs_error_bgcolor", "#ff7070", &prefs_common.color[COL_QS_ERROR_BG],
752 P_COLOR, NULL, NULL, NULL},
754 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
755 P_BOOL, NULL, NULL, NULL},
756 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
758 {"display_xface", "TRUE", &prefs_common.display_xface,
759 P_BOOL, NULL, NULL, NULL},
760 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
762 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
764 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
766 {"line_space", "2", &prefs_common.line_space, P_INT,
768 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
771 {"enable_smooth_scroll", "FALSE",
772 &prefs_common.enable_smooth_scroll, P_BOOL,
774 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
776 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
778 {"hide_quoted", "TRUE",
779 &prefs_common.hide_quoted, P_BOOL,
781 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
783 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
786 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
789 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
791 {"attach_save_directory", NULL,
792 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
793 {"attach_load_directory", NULL,
794 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
797 {"mime_textviewer", NULL,
798 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
799 {"mime_open_command", "xdg-open '%s'",
800 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
801 {"show_inline_attachments", "TRUE",
802 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
806 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
809 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
812 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
813 NULL, NULL, NULL}, */
814 {"open_selected_message_on_folder_open", "FALSE",
815 &prefs_common.open_selected_on_folder_open,
816 P_BOOL, NULL, NULL, NULL},
817 {"open_selected_message_on_search_results", "FALSE",
818 &prefs_common.open_selected_on_search_results,
819 P_BOOL, NULL, NULL, NULL},
820 {"open_selected_message_on_prevnext", "FALSE",
821 &prefs_common.open_selected_on_prevnext,
822 P_BOOL, NULL, NULL, NULL},
823 {"open_selected_message_on_deletemove", "FALSE",
824 &prefs_common.open_selected_on_deletemove,
825 P_BOOL, NULL, NULL, NULL},
826 {"open_selected_message_on_directional", "FALSE",
827 &prefs_common.open_selected_on_directional,
828 P_BOOL, NULL, NULL, NULL},
829 {"always_show_message_when_selected", "FALSE",
830 &prefs_common.always_show_msg,
831 P_BOOL, NULL, NULL, NULL},
832 {"select_on_entry", "3", &prefs_common.select_on_entry,
833 P_ENUM, NULL, NULL, NULL},
834 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
835 P_BOOL, NULL, NULL, NULL},
837 /* do it SUMMARY_OPEN_ACTIONS-1 times */
838 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
840 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
842 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
844 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
846 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
848 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
850 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
852 {"summary_select_prio8", "0", &prefs_common.summary_select_prio[7], P_ENUM,
854 {"summary_select_prio9", "0", &prefs_common.summary_select_prio[8], P_ENUM,
856 {"summary_select_prio10", "0", &prefs_common.summary_select_prio[9], P_ENUM,
859 {"mark_as_read_on_new_window", "FALSE",
860 &prefs_common.mark_as_read_on_new_window,
861 P_BOOL, NULL, NULL, NULL},
862 {"mark_as_read_delay", "0",
863 &prefs_common.mark_as_read_delay, P_INT,
865 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
867 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
869 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
872 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
873 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
876 {"enable_alpha_svg", "TRUE",
877 &SPECIFIC_PREFS.enable_alpha_svg, P_BOOL,
879 {"enable_pixmap_scaling", "TRUE",
880 &SPECIFIC_PREFS.enable_pixmap_scaling, P_BOOL,
882 {"pixmap_scaling_auto", "TRUE",
883 &SPECIFIC_PREFS.pixmap_scaling_auto, P_BOOL,
885 {"pixmap_scaling_ppi", "96",
886 &SPECIFIC_PREFS.pixmap_scaling_ppi, P_INT,
890 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
892 {"ask_override_colorlabel", "TRUE", &prefs_common.ask_override_colorlabel, P_BOOL,
895 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
897 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
901 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
902 P_BOOL, NULL, NULL, NULL},
903 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
904 P_INT, NULL, NULL, NULL},
905 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
906 P_INT, NULL, NULL, NULL},
910 {"uri_open_command", DEFAULT_BROWSER_CMD,
911 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
913 {"gtk_theme", DEFAULT_W32_GTK_THEME,
914 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
916 {"ext_editor_command", DEFAULT_EDITOR_CMD,
917 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
918 {"cmds_use_system_default", "TRUE",
919 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
920 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
921 P_BOOL, NULL, NULL, NULL},
922 {"session_passwords", "FALSE", &prefs_common.session_passwords,
923 P_BOOL, NULL, NULL, NULL},
924 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
926 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
928 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
930 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
931 P_BOOL, NULL, NULL, NULL},
932 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
934 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
937 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
940 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
944 #if defined(__OpenBSD__)
945 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
946 P_INT, NULL, NULL, NULL},
948 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
949 P_INT, NULL, NULL, NULL},
951 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
953 {"important_score", "1", &prefs_common.important_score, P_INT,
956 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
958 {"log_length", "500", &prefs_common.loglength, P_INT,
961 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
963 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
965 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
967 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
970 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
972 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
974 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
976 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
979 {"log_msg_color", "#00af00", &prefs_common.color[COL_LOG_MSG],
980 P_COLOR, NULL, NULL, NULL},
981 {"log_warn_color", "#af0000", &prefs_common.color[COL_LOG_WARN],
982 P_COLOR, NULL, NULL, NULL},
983 {"log_error_color", "#af0000", &prefs_common.color[COL_LOG_ERROR],
984 P_COLOR, NULL, NULL, NULL},
985 {"log_in_color", "#000000", &prefs_common.color[COL_LOG_IN],
986 P_COLOR, NULL, NULL, NULL},
987 {"log_out_color", "#0000ef", &prefs_common.color[COL_LOG_OUT],
988 P_COLOR, NULL, NULL, NULL},
989 {"log_status_ok_color", "#00af00", &prefs_common.color[COL_LOG_STATUS_OK],
990 P_COLOR, NULL, NULL, NULL},
991 {"log_status_nok_color", "#0000af", &prefs_common.color[COL_LOG_STATUS_NOK],
992 P_COLOR, NULL, NULL, NULL},
993 {"log_status_skip_color", "#aa00aa", &prefs_common.color[COL_LOG_STATUS_SKIP],
994 P_COLOR, NULL, NULL, NULL},
996 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
998 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
1000 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
1002 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
1004 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
1006 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
1008 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
1010 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
1012 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
1015 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
1018 {"color_new", "#0000b3", &prefs_common.color[COL_NEW],
1019 P_COLOR, NULL, NULL, NULL},
1021 /* Some windows' sizes */
1022 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
1024 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
1027 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
1029 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
1032 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
1034 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
1037 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
1039 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
1042 {"actionsiodialog_width", "582", &prefs_common.actionsiodialog_width, P_INT,
1044 {"actionsiodialog_height", "310", &prefs_common.actionsiodialog_height, P_INT,
1047 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
1049 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
1052 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
1054 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1057 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1059 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1062 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1064 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1067 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1069 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1072 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1074 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1077 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1079 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1082 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1084 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1087 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1090 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1092 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1095 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1097 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1100 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1102 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1105 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1107 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1110 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1112 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1115 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1117 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1120 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1122 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1125 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1127 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1130 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1132 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1135 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1137 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1141 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1143 {"utf8_instead_of_locale_for_broken_mail", "0",
1144 &prefs_common.broken_are_utf8, P_INT,
1146 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1148 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1150 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1152 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1154 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1156 {"folderview_vscrollbar_policy", "0",
1157 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1159 {"textview_cursor_visible", "FALSE",
1160 &prefs_common.textview_cursor_visible, P_BOOL,
1162 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1164 #ifndef GENERIC_UMPC
1165 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1167 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1170 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1172 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1175 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1176 P_INT, NULL, NULL, NULL },
1177 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1178 P_STRING, NULL, NULL, NULL },
1179 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1180 P_BOOL, NULL, NULL, NULL },
1181 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1183 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1185 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1187 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1189 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1191 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1193 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1195 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1197 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1199 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1201 #ifndef GENERIC_UMPC
1202 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1205 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1209 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1211 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1213 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1215 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1217 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1219 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1221 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1223 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1225 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1227 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1229 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1231 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1233 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1235 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1237 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1240 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1241 P_BOOL, NULL, NULL, NULL },
1243 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1246 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1249 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1252 {"diff_added_color", "#008b8b", &prefs_common.color[COL_DIFF_ADDED],
1253 P_COLOR, NULL, NULL, NULL},
1254 {"diff_deleted_color", "#6a5acd", &prefs_common.color[COL_DIFF_DELETED],
1255 P_COLOR, NULL, NULL, NULL},
1256 {"diff_hunk_color", "#a52a2a", &prefs_common.color[COL_DIFF_HUNK],
1257 P_COLOR, NULL, NULL, NULL},
1259 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1261 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1263 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1264 #ifndef PASSWORD_CRYPTO_OLD
1265 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1266 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1267 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1268 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1271 {"use_proxy", "FALSE", &prefs_common.use_proxy, P_BOOL, NULL, NULL, NULL},
1272 {"proxy_type", "1", &prefs_common.proxy_info.proxy_type, P_ENUM, NULL, NULL, NULL},
1273 {"proxy_host", "localhost", &prefs_common.proxy_info.proxy_host, P_STRING, NULL, NULL, NULL},
1274 {"proxy_port", "1080", &prefs_common.proxy_info.proxy_port, P_USHORT, NULL, NULL, NULL},
1275 {"use_proxy_auth", "FALSE", &prefs_common.proxy_info.use_proxy_auth, P_BOOL, NULL, NULL, NULL},
1276 {"proxy_name", "", &prefs_common.proxy_info.proxy_name, P_STRING, NULL, NULL, NULL},
1277 {"proxy_pass", NULL, &prefs_common.proxy_info.proxy_pass, P_STRING, NULL, NULL, NULL},
1279 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1283 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1284 * Fallback to default_list if history file is not found
1286 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1287 GList *default_list)
1291 gchar buf[PREFSBUFSIZE];
1295 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1296 G_DIR_SEPARATOR_S, history,
1299 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1302 if ((fp = claws_fopen(path, "rb")) == NULL) {
1303 if (ENOENT != errno) FILE_OP_ERROR(path, "claws_fopen");
1305 /* returns default list if set, otherwise NULL */
1306 return default_list;
1309 while (claws_fgets(buf, sizeof(buf), fp) != NULL) {
1311 if (buf[0] == '\0') continue;
1312 tmp = add_history(tmp, buf);
1316 tmp = g_list_reverse(tmp);
1322 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1324 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1326 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1330 * Read history list from the specified history file
1332 static GList *prefs_common_read_history(const gchar *history)
1334 return prefs_common_read_history_from_dir(NULL, history);
1337 void prefs_common_read_config(void)
1342 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1343 prefs_read_config(param, "Common", rcpath, NULL);
1345 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1350 tmp = g_strdup(gettext(prefs_common.date_format));
1351 g_free(prefs_common.date_format);
1352 prefs_common.date_format = tmp;
1354 prefs_common.mime_open_cmd_history =
1355 prefs_common_read_history(COMMAND_HISTORY);
1356 prefs_common.summary_quicksearch_history =
1357 prefs_common_read_history(QUICKSEARCH_HISTORY);
1358 prefs_common.summary_search_from_history =
1359 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1360 prefs_common.summary_search_to_history =
1361 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1362 prefs_common.summary_search_subject_history =
1363 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1364 prefs_common.summary_search_body_history =
1365 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1366 prefs_common.summary_search_adv_condition_history =
1367 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1368 prefs_common.message_search_history =
1369 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1370 prefs_common.compose_save_to_history =
1371 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1372 #ifndef USE_ALT_ADDRBOOK
1373 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1375 colorlabel_update_colortable_from_prefs();
1381 g_warning("failed to write"); \
1386 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1388 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1392 gchar *path, *tmp_path;
1395 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1396 G_DIR_SEPARATOR_S, history,
1399 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1402 tmp_path = g_strconcat(path, ".tmp", NULL);
1404 if ((fp = claws_fopen(tmp_path, "wb")) == NULL) {
1405 FILE_OP_ERROR(tmp_path, "claws_fopen");
1409 for (cur = list; cur != NULL; cur = cur->next) {
1410 TRY(claws_fputs((gchar *)cur->data, fp) != EOF &&
1411 claws_fputc('\n', fp) != EOF);
1414 if (claws_safe_fclose(fp) == EOF) {
1415 FILE_OP_ERROR(tmp_path, "claws_fclose");
1423 if (g_rename(tmp_path, path) < 0) {
1424 FILE_OP_ERROR(path, "rename");
1430 claws_safe_fclose(fp);
1436 * Save history list to the specified history file
1438 static void prefs_common_save_history(const gchar *history, GList *list)
1440 prefs_common_save_history_to_dir(NULL, history, list);
1445 void prefs_common_write_config(void)
1447 prefs_write_config(param, "Common", COMMON_RC);
1449 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1452 prefs_common_save_history(COMMAND_HISTORY,
1453 prefs_common.mime_open_cmd_history);
1454 prefs_common_save_history(QUICKSEARCH_HISTORY,
1455 prefs_common.summary_quicksearch_history);
1456 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1457 prefs_common.summary_search_from_history);
1458 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1459 prefs_common.summary_search_to_history);
1460 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1461 prefs_common.summary_search_subject_history);
1462 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1463 prefs_common.summary_search_body_history);
1464 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1465 prefs_common.summary_search_adv_condition_history);
1466 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1467 prefs_common.message_search_history);
1468 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1469 prefs_common.compose_save_to_history);
1471 #ifndef USE_ALT_ADDRBOOK
1472 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1473 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1474 prefs_common.addressbook_custom_attributes);
1478 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1479 both 'in' and 'out' must be non-NULL.
1480 'out' must be a pointer to a buffer whose size is at least equal
1481 to strlen(txt)+1, this buffer will get cleared. out's contents
1482 will always get set to a valid string, even if it's "".*/
1483 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1490 cm_return_if_fail( in != NULL );
1491 cm_return_if_fail( out != NULL );
1495 memset(out, 0, strlen(in)+1);
1496 while (*i != '\0') {
1497 if (*i == '\\' && *(i+1) == 'n') {
1500 } else if (*i == '\\' && *(i+1) == 't') {
1503 } else if (*i == '\\' && *(i+1) == '\\') {
1514 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1515 both 'in' and 'out' must be non-NULL.
1516 'out' must be a pointer to a buffer whose size is at least equal
1517 to 2*strlen(txt)+1. out's contents will always get set to a valid
1518 string, even if it's "". */
1519 void pref_get_escaped_pref(gchar *out, const gchar *in)
1526 cm_return_if_fail( in != NULL );
1527 cm_return_if_fail( out != NULL );
1531 while (*i != '\0') {
1535 } else if (*i == '\t') {
1538 } else if (*i == '\\') {
1549 /* set the contents of a textview widget from the internal \-escaped
1550 representation of a pref string. both txt and textview must be non-NULL. */
1551 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1553 GtkTextBuffer *buffer;
1556 cm_return_if_fail( textview != NULL );
1558 buffer = gtk_text_view_get_buffer(textview);
1561 gtk_text_buffer_set_text(buffer, "", -1);
1563 out = g_malloc(strlen(txt)+1);
1565 pref_get_unescaped_pref(out, txt);
1567 gtk_text_buffer_set_text(buffer, out, -1);
1572 /* set the contents of a gtkentry widget from the internal \-escaped
1573 representation of a pref string. both txt and entry must be non-NULL. */
1574 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1578 cm_return_if_fail( entry != NULL );
1580 gtk_entry_set_text(entry, "");
1582 out = g_malloc(strlen(txt)+1);
1584 pref_get_unescaped_pref(out, txt);
1586 gtk_entry_set_text(entry, out);
1591 /* get the \-escaped internal representation of a pref from the contents of
1592 a textview widget. textview must be non-NULL. */
1593 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1595 GtkTextBuffer *buffer;
1596 GtkTextIter start, end;
1599 cm_return_val_if_fail( textview != NULL, "" );
1601 buffer = gtk_text_view_get_buffer(textview);
1602 gtk_text_buffer_get_start_iter(buffer, &start);
1603 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1604 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1605 out = malloc(2*strlen(tmp)+1);
1607 pref_get_escaped_pref(out, tmp);
1613 /* get the \-escaped internal representation of a pref from the contents of
1614 a gtkentry widget. entry must be non-NULL. */
1615 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1619 cm_return_val_if_fail( entry != NULL, "" );
1621 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1622 out = malloc(2*strlen(tmp)+1);
1625 pref_get_escaped_pref(out, tmp);
1631 /* ugly hack to be able to get this pref from ssl_certificate.c */
1632 gboolean prefs_common_unsafe_ssl_certs(void)
1634 return prefs_common.unsafe_ssl_certs;
1637 gboolean prefs_common_enable_log_standard(void)
1639 return prefs_common.enable_log_standard;
1642 gboolean prefs_common_enable_log_warning(void)
1644 return prefs_common.enable_log_warning;
1646 gboolean prefs_common_enable_log_error(void)
1648 return prefs_common.enable_log_error;
1650 gboolean prefs_common_enable_log_status(void)
1652 return prefs_common.enable_log_status;
1656 return the translated name of a header, if the translate_header option is
1657 set, otherwise return the untranslated header name (header_name itself).
1658 this function is provided for convenience, it's an interface to
1659 prefs_common.trans_hdr.
1660 works with header names either with or without trailing colon, provided
1661 that gettext found such header name in the sources (they should all be
1662 found in src/gtk/headers.h anyway).
1664 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1666 if (header_name == NULL || *header_name == '\0')
1669 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1672 const gchar *prefs_common_get_uri_cmd(void)
1679 if (!prefs_common.cmds_use_system_default)
1680 return prefs_common.uri_cmd;
1682 tmp = g_find_program_in_path("xdg-open");
1684 return prefs_common.uri_cmd;
1687 return "xdg-open %s";
1691 const gchar *prefs_common_get_ext_editor_cmd(void)
1693 return prefs_common.ext_editor_cmd;
1694 #if 0 /* we should do that, but it detaches the editor and breaks
1695 compose.c's external composition. */
1698 if (!prefs_common.cmds_use_system_default)
1699 return prefs_common.ext_editor_cmd;
1701 tmp = g_find_program_in_path("xdg-open");
1703 return prefs_common.ext_editor_cmd;
1706 return "xdg-open %s";
1710 gboolean prefs_common_get_use_shred(void)
1712 return prefs_common.use_shred;
1715 gboolean prefs_common_get_flush_metadata (void)
1717 return prefs_common.flush_metadata;
1720 PrefsCommon *prefs_common_get_prefs(void)
1722 return &prefs_common;