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,
462 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
465 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
468 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
471 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
473 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
476 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
478 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
481 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
483 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
487 {"summary_col_show_mark", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_unread", "TRUE",
490 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_subject", "TRUE",
492 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_from", "TRUE",
494 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_to", "FALSE",
496 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_date", "TRUE",
498 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
499 {"summary_col_show_mime", "TRUE",
500 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
501 {"summary_col_show_size", "TRUE",
502 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
503 {"summary_col_show_number", "FALSE",
504 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
505 {"summary_col_show_score", "FALSE",
506 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
507 {"summary_col_show_locked", "FALSE",
508 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
509 {"summary_col_show_tags", "FALSE",
510 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
512 {"summary_col_pos_mark", "0",
513 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_unread", "1",
515 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_mime", "2",
517 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_subject", "3",
519 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_from", "4",
521 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_date", "5",
523 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
524 {"summary_col_pos_size", "6",
525 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
526 {"summary_col_pos_number", "7",
527 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
528 {"summary_col_pos_score", "8",
529 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
530 {"summary_col_pos_locked", "9",
531 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
532 {"summary_col_pos_to", "10",
533 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
534 {"summary_col_pos_tags", "11",
535 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_mark", "10",
538 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_unread", "13",
540 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_mime", "10",
542 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
544 {"summary_col_size_subject", "200",
545 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_from", "120",
547 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
548 {"summary_col_size_to", "120",
549 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_subject", "300",
552 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_from", "150",
554 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_to", "150",
556 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
559 {"summary_col_size_date", "118",
560 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
561 {"summary_col_size_size", "45",
562 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
563 {"summary_col_size_number", "40",
564 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
565 {"summary_col_size_score", "40",
566 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
567 {"summary_col_size_locked", "13",
568 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
569 {"summary_col_size_tags", "150",
570 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
573 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
575 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
577 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
579 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
581 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
584 {"folder_col_show_folder", "TRUE",
585 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
586 {"folder_col_show_new", "TRUE",
587 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
588 {"folder_col_show_unread", "TRUE",
589 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
590 {"folder_col_show_total", "TRUE",
591 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
593 {"folder_col_pos_folder", "0",
594 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
595 {"folder_col_pos_new", "1",
596 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
597 {"folder_col_pos_unread", "2",
598 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
599 {"folder_col_pos_total", "3",
600 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
603 {"folder_col_size_folder", "120",
604 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
605 {"folder_col_size_new", "32",
606 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
607 {"folder_col_size_unread", "32",
608 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
609 {"folder_col_size_total", "32",
610 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
612 {"folder_col_size_folder", "400",
613 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
614 {"folder_col_size_new", "32",
615 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
616 {"folder_col_size_unread", "32",
617 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
618 {"folder_col_size_total", "32",
619 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
621 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
623 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
626 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
628 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
630 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
632 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
634 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
637 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
639 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
641 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
643 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
645 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
647 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
649 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
651 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
653 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
656 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
658 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
660 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
662 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
664 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
666 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
668 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
670 {"compose_width", "600", &prefs_common.compose_width, P_INT,
672 {"compose_height", "560", &prefs_common.compose_height, P_INT,
675 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
677 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
679 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
681 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
683 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
685 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
687 {"compose_width", "700", &prefs_common.compose_width, P_INT,
689 {"compose_height", "470", &prefs_common.compose_height, P_INT,
692 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
694 {"compose_x", "0", &prefs_common.compose_x, P_INT,
696 {"compose_y", "0", &prefs_common.compose_y, P_INT,
699 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
702 {"quote_level1_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL1],
703 P_COLOR, NULL, NULL, NULL},
704 {"quote_level2_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL2],
705 P_COLOR, NULL, NULL, NULL},
706 {"quote_level3_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL3],
707 P_COLOR, NULL, NULL, NULL},
708 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
710 {"quote_level1_bgcolor", "#cccccc", &prefs_common.color[COL_QUOTE_LEVEL1_BG],
711 P_COLOR, NULL, NULL, NULL},
712 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.color[COL_QUOTE_LEVEL2_BG],
713 P_COLOR, NULL, NULL, NULL},
714 {"quote_level3_bgcolor", "#dddddd", &prefs_common.color[COL_QUOTE_LEVEL3_BG],
715 P_COLOR, NULL, NULL, NULL},
716 {"uri_color", "#007f00", &prefs_common.color[COL_URI],
717 P_COLOR, NULL, NULL, NULL},
718 {"emphasis_color", "#0000cf", &prefs_common.color[COL_EMPHASIS],
719 P_COLOR, NULL, NULL, NULL},
720 {"target_folder_color", "#da1cca", &prefs_common.color[COL_TGT_FOLDER],
721 P_COLOR, NULL, NULL, NULL},
722 {"signature_color", "#797979", &prefs_common.color[COL_SIGNATURE],
723 P_COLOR, NULL, NULL, NULL},
724 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
725 P_BOOL, NULL, NULL, NULL},
727 {"default_header_color", "#000000", &prefs_common.color[COL_DEFAULT_HEADER],
728 P_COLOR, NULL, NULL, NULL},
729 {"default_header_bgcolor", "#f5f6be", &prefs_common.color[COL_DEFAULT_HEADER_BG],
730 P_COLOR, NULL, NULL, NULL},
731 {"tags_color", "#000000", &prefs_common.color[COL_TAGS],
732 P_COLOR, NULL, NULL, NULL},
733 {"tags_bgcolor", "#f5f6be", &prefs_common.color[COL_TAGS_BG],
734 P_COLOR, NULL, NULL, NULL},
735 {"qs_active_color", "#000000", &prefs_common.color[COL_QS_ACTIVE],
736 P_COLOR, NULL, NULL, NULL},
737 {"qs_active_bgcolor", "#f5f6be", &prefs_common.color[COL_QS_ACTIVE_BG],
738 P_COLOR, NULL, NULL, NULL},
739 {"qs_error_color", "#000000", &prefs_common.color[COL_QS_ERROR],
740 P_COLOR, NULL, NULL, NULL},
741 {"qs_error_bgcolor", "#ff7070", &prefs_common.color[COL_QS_ERROR_BG],
742 P_COLOR, NULL, NULL, NULL},
744 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
745 P_BOOL, NULL, NULL, NULL},
746 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
748 {"display_xface", "TRUE", &prefs_common.display_xface,
749 P_BOOL, NULL, NULL, NULL},
750 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
752 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
754 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
756 {"line_space", "2", &prefs_common.line_space, P_INT,
758 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
761 {"enable_smooth_scroll", "FALSE",
762 &prefs_common.enable_smooth_scroll, P_BOOL,
764 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
766 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
768 {"hide_quoted", "TRUE",
769 &prefs_common.hide_quoted, P_BOOL,
771 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
773 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
776 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
779 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
781 {"attach_save_directory", NULL,
782 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
783 {"attach_load_directory", NULL,
784 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
787 {"mime_textviewer", NULL,
788 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
789 {"mime_open_command", "xdg-open '%s'",
790 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
791 {"show_inline_attachments", "TRUE",
792 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
796 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
799 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
802 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
803 NULL, NULL, NULL}, */
804 {"open_selected_message_on_folder_open", "FALSE",
805 &prefs_common.open_selected_on_folder_open,
806 P_BOOL, NULL, NULL, NULL},
807 {"open_selected_message_on_search_results", "FALSE",
808 &prefs_common.open_selected_on_search_results,
809 P_BOOL, NULL, NULL, NULL},
810 {"open_selected_message_on_prevnext", "FALSE",
811 &prefs_common.open_selected_on_prevnext,
812 P_BOOL, NULL, NULL, NULL},
813 {"open_selected_message_on_deletemove", "FALSE",
814 &prefs_common.open_selected_on_deletemove,
815 P_BOOL, NULL, NULL, NULL},
816 {"open_selected_message_on_directional", "FALSE",
817 &prefs_common.open_selected_on_directional,
818 P_BOOL, NULL, NULL, NULL},
819 {"always_show_message_when_selected", "FALSE",
820 &prefs_common.always_show_msg,
821 P_BOOL, NULL, NULL, NULL},
822 {"select_on_entry", "3", &prefs_common.select_on_entry,
823 P_ENUM, NULL, NULL, NULL},
824 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
825 P_BOOL, NULL, NULL, NULL},
827 /* do it SUMMARY_OPEN_ACTIONS-1 times */
828 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
830 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
832 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
834 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
836 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
838 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
840 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
842 {"summary_select_prio8", "0", &prefs_common.summary_select_prio[7], P_ENUM,
844 {"summary_select_prio9", "0", &prefs_common.summary_select_prio[8], P_ENUM,
846 {"summary_select_prio10", "0", &prefs_common.summary_select_prio[9], P_ENUM,
849 {"mark_as_read_on_new_window", "FALSE",
850 &prefs_common.mark_as_read_on_new_window,
851 P_BOOL, NULL, NULL, NULL},
852 {"mark_as_read_delay", "0",
853 &prefs_common.mark_as_read_delay, P_INT,
855 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
857 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
859 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
862 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
863 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
866 {"enable_alpha_svg", "TRUE",
867 &SPECIFIC_PREFS.enable_alpha_svg, P_BOOL,
869 {"enable_pixmap_scaling", "TRUE",
870 &SPECIFIC_PREFS.enable_pixmap_scaling, P_BOOL,
872 {"pixmap_scaling_auto", "TRUE",
873 &SPECIFIC_PREFS.pixmap_scaling_auto, P_BOOL,
875 {"pixmap_scaling_ppi", "96",
876 &SPECIFIC_PREFS.pixmap_scaling_ppi, P_INT,
880 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
882 {"ask_override_colorlabel", "TRUE", &prefs_common.ask_override_colorlabel, P_BOOL,
885 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
887 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
891 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
892 P_BOOL, NULL, NULL, NULL},
893 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
894 P_INT, NULL, NULL, NULL},
895 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
896 P_INT, NULL, NULL, NULL},
900 {"uri_open_command", DEFAULT_BROWSER_CMD,
901 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
903 {"gtk_theme", DEFAULT_W32_GTK_THEME,
904 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
906 {"ext_editor_command", DEFAULT_EDITOR_CMD,
907 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
908 {"cmds_use_system_default", "TRUE",
909 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
910 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
911 P_BOOL, NULL, NULL, NULL},
912 {"session_passwords", "FALSE", &prefs_common.session_passwords,
913 P_BOOL, NULL, NULL, NULL},
914 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
916 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
918 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
920 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
921 P_BOOL, NULL, NULL, NULL},
922 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
924 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
927 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
930 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
934 #if defined(__OpenBSD__)
935 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
936 P_INT, NULL, NULL, NULL},
938 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
939 P_INT, NULL, NULL, NULL},
941 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
943 {"important_score", "1", &prefs_common.important_score, P_INT,
946 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
948 {"log_length", "500", &prefs_common.loglength, P_INT,
951 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
953 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
955 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
957 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
960 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
962 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
964 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
966 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
969 {"log_msg_color", "#00af00", &prefs_common.color[COL_LOG_MSG],
970 P_COLOR, NULL, NULL, NULL},
971 {"log_warn_color", "#af0000", &prefs_common.color[COL_LOG_WARN],
972 P_COLOR, NULL, NULL, NULL},
973 {"log_error_color", "#af0000", &prefs_common.color[COL_LOG_ERROR],
974 P_COLOR, NULL, NULL, NULL},
975 {"log_in_color", "#000000", &prefs_common.color[COL_LOG_IN],
976 P_COLOR, NULL, NULL, NULL},
977 {"log_out_color", "#0000ef", &prefs_common.color[COL_LOG_OUT],
978 P_COLOR, NULL, NULL, NULL},
979 {"log_status_ok_color", "#00af00", &prefs_common.color[COL_LOG_STATUS_OK],
980 P_COLOR, NULL, NULL, NULL},
981 {"log_status_nok_color", "#0000af", &prefs_common.color[COL_LOG_STATUS_NOK],
982 P_COLOR, NULL, NULL, NULL},
983 {"log_status_skip_color", "#aa00aa", &prefs_common.color[COL_LOG_STATUS_SKIP],
984 P_COLOR, NULL, NULL, NULL},
986 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
988 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
990 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
992 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
994 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
996 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
998 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
1000 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
1002 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
1005 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
1008 {"color_new", "#0000b3", &prefs_common.color[COL_NEW],
1009 P_COLOR, NULL, NULL, NULL},
1011 /* Some windows' sizes */
1012 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
1014 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
1017 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
1019 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
1022 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
1024 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
1027 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
1029 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
1032 {"actionsiodialog_width", "582", &prefs_common.actionsiodialog_width, P_INT,
1034 {"actionsiodialog_height", "310", &prefs_common.actionsiodialog_height, P_INT,
1037 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
1039 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
1042 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
1044 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1047 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1049 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1052 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1054 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1057 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1059 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1062 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1064 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1067 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1069 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1072 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1074 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1077 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1080 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1082 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1085 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1087 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1090 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1092 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1095 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1097 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1100 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1102 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1105 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1107 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1110 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1112 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1115 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1117 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1120 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1122 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1125 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1127 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1131 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1133 {"utf8_instead_of_locale_for_broken_mail", "0",
1134 &prefs_common.broken_are_utf8, P_INT,
1136 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1138 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1140 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1142 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1144 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1146 {"folderview_vscrollbar_policy", "0",
1147 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1149 {"textview_cursor_visible", "FALSE",
1150 &prefs_common.textview_cursor_visible, P_BOOL,
1152 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1154 #ifndef GENERIC_UMPC
1155 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1157 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1160 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1162 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1165 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1166 P_INT, NULL, NULL, NULL },
1167 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1168 P_STRING, NULL, NULL, NULL },
1169 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1170 P_BOOL, NULL, NULL, NULL },
1171 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1173 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1175 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1177 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1179 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1181 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1183 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1185 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1187 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1189 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1191 #ifndef GENERIC_UMPC
1192 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1195 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1199 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1201 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1203 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1205 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1207 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1209 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1211 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1213 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1215 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1217 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1219 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1221 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1223 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1225 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1227 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1230 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1231 P_BOOL, NULL, NULL, NULL },
1233 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1236 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1239 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1242 {"diff_added_color", "#008b8b", &prefs_common.color[COL_DIFF_ADDED],
1243 P_COLOR, NULL, NULL, NULL},
1244 {"diff_deleted_color", "#6a5acd", &prefs_common.color[COL_DIFF_DELETED],
1245 P_COLOR, NULL, NULL, NULL},
1246 {"diff_hunk_color", "#a52a2a", &prefs_common.color[COL_DIFF_HUNK],
1247 P_COLOR, NULL, NULL, NULL},
1249 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1251 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1253 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1254 #ifndef PASSWORD_CRYPTO_OLD
1255 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1256 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1257 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1258 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1261 {"use_proxy", "FALSE", &prefs_common.use_proxy, P_BOOL, NULL, NULL, NULL},
1262 {"proxy_type", "1", &prefs_common.proxy_info.proxy_type, P_ENUM, NULL, NULL, NULL},
1263 {"proxy_host", "localhost", &prefs_common.proxy_info.proxy_host, P_STRING, NULL, NULL, NULL},
1264 {"proxy_port", "1080", &prefs_common.proxy_info.proxy_port, P_USHORT, NULL, NULL, NULL},
1265 {"use_proxy_auth", "FALSE", &prefs_common.proxy_info.use_proxy_auth, P_BOOL, NULL, NULL, NULL},
1266 {"proxy_name", "", &prefs_common.proxy_info.proxy_name, P_STRING, NULL, NULL, NULL},
1267 {"proxy_pass", NULL, &prefs_common.proxy_info.proxy_pass, P_STRING, NULL, NULL, NULL},
1269 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1273 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1274 * Fallback to default_list if history file is not found
1276 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1277 GList *default_list)
1281 gchar buf[PREFSBUFSIZE];
1285 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1286 G_DIR_SEPARATOR_S, history,
1289 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1292 if ((fp = claws_fopen(path, "rb")) == NULL) {
1293 if (ENOENT != errno) FILE_OP_ERROR(path, "claws_fopen");
1295 /* returns default list if set, otherwise NULL */
1296 return default_list;
1299 while (claws_fgets(buf, sizeof(buf), fp) != NULL) {
1301 if (buf[0] == '\0') continue;
1302 tmp = add_history(tmp, buf);
1306 tmp = g_list_reverse(tmp);
1312 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1314 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1316 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1320 * Read history list from the specified history file
1322 static GList *prefs_common_read_history(const gchar *history)
1324 return prefs_common_read_history_from_dir(NULL, history);
1327 void prefs_common_read_config(void)
1332 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1333 prefs_read_config(param, "Common", rcpath, NULL);
1335 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1340 tmp = g_strdup(gettext(prefs_common.date_format));
1341 g_free(prefs_common.date_format);
1342 prefs_common.date_format = tmp;
1344 prefs_common.mime_open_cmd_history =
1345 prefs_common_read_history(COMMAND_HISTORY);
1346 prefs_common.summary_quicksearch_history =
1347 prefs_common_read_history(QUICKSEARCH_HISTORY);
1348 prefs_common.summary_search_from_history =
1349 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1350 prefs_common.summary_search_to_history =
1351 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1352 prefs_common.summary_search_subject_history =
1353 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1354 prefs_common.summary_search_body_history =
1355 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1356 prefs_common.summary_search_adv_condition_history =
1357 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1358 prefs_common.message_search_history =
1359 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1360 prefs_common.compose_save_to_history =
1361 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1362 #ifndef USE_ALT_ADDRBOOK
1363 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1365 colorlabel_update_colortable_from_prefs();
1371 g_warning("failed to write"); \
1376 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1378 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1382 gchar *path, *tmp_path;
1385 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1386 G_DIR_SEPARATOR_S, history,
1389 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1392 tmp_path = g_strconcat(path, ".tmp", NULL);
1394 if ((fp = claws_fopen(tmp_path, "wb")) == NULL) {
1395 FILE_OP_ERROR(tmp_path, "claws_fopen");
1399 for (cur = list; cur != NULL; cur = cur->next) {
1400 TRY(claws_fputs((gchar *)cur->data, fp) != EOF &&
1401 claws_fputc('\n', fp) != EOF);
1404 if (claws_safe_fclose(fp) == EOF) {
1405 FILE_OP_ERROR(tmp_path, "claws_fclose");
1413 if (g_rename(tmp_path, path) < 0) {
1414 FILE_OP_ERROR(path, "rename");
1420 claws_safe_fclose(fp);
1426 * Save history list to the specified history file
1428 static void prefs_common_save_history(const gchar *history, GList *list)
1430 prefs_common_save_history_to_dir(NULL, history, list);
1435 void prefs_common_write_config(void)
1437 prefs_write_config(param, "Common", COMMON_RC);
1439 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1442 prefs_common_save_history(COMMAND_HISTORY,
1443 prefs_common.mime_open_cmd_history);
1444 prefs_common_save_history(QUICKSEARCH_HISTORY,
1445 prefs_common.summary_quicksearch_history);
1446 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1447 prefs_common.summary_search_from_history);
1448 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1449 prefs_common.summary_search_to_history);
1450 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1451 prefs_common.summary_search_subject_history);
1452 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1453 prefs_common.summary_search_body_history);
1454 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1455 prefs_common.summary_search_adv_condition_history);
1456 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1457 prefs_common.message_search_history);
1458 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1459 prefs_common.compose_save_to_history);
1461 #ifndef USE_ALT_ADDRBOOK
1462 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1463 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1464 prefs_common.addressbook_custom_attributes);
1468 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1469 both 'in' and 'out' must be non-NULL.
1470 'out' must be a pointer to a buffer whose size is at least equal
1471 to strlen(txt)+1, this buffer will get cleared. out's contents
1472 will always get set to a valid string, even if it's "".*/
1473 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1480 cm_return_if_fail( in != NULL );
1481 cm_return_if_fail( out != NULL );
1485 memset(out, 0, strlen(in)+1);
1486 while (*i != '\0') {
1487 if (*i == '\\' && *(i+1) == 'n') {
1490 } else if (*i == '\\' && *(i+1) == 't') {
1493 } else if (*i == '\\' && *(i+1) == '\\') {
1504 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1505 both 'in' and 'out' must be non-NULL.
1506 'out' must be a pointer to a buffer whose size is at least equal
1507 to 2*strlen(txt)+1. out's contents will always get set to a valid
1508 string, even if it's "". */
1509 void pref_get_escaped_pref(gchar *out, const gchar *in)
1516 cm_return_if_fail( in != NULL );
1517 cm_return_if_fail( out != NULL );
1521 while (*i != '\0') {
1525 } else if (*i == '\t') {
1528 } else if (*i == '\\') {
1539 /* set the contents of a textview widget from the internal \-escaped
1540 representation of a pref string. both txt and textview must be non-NULL. */
1541 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1543 GtkTextBuffer *buffer;
1546 cm_return_if_fail( textview != NULL );
1548 buffer = gtk_text_view_get_buffer(textview);
1551 gtk_text_buffer_set_text(buffer, "", -1);
1553 out = g_malloc(strlen(txt)+1);
1555 pref_get_unescaped_pref(out, txt);
1557 gtk_text_buffer_set_text(buffer, out, -1);
1562 /* set the contents of a gtkentry widget from the internal \-escaped
1563 representation of a pref string. both txt and entry must be non-NULL. */
1564 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1568 cm_return_if_fail( entry != NULL );
1570 gtk_entry_set_text(entry, "");
1572 out = g_malloc(strlen(txt)+1);
1574 pref_get_unescaped_pref(out, txt);
1576 gtk_entry_set_text(entry, out);
1581 /* get the \-escaped internal representation of a pref from the contents of
1582 a textview widget. textview must be non-NULL. */
1583 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1585 GtkTextBuffer *buffer;
1586 GtkTextIter start, end;
1589 cm_return_val_if_fail( textview != NULL, "" );
1591 buffer = gtk_text_view_get_buffer(textview);
1592 gtk_text_buffer_get_start_iter(buffer, &start);
1593 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1594 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1595 out = malloc(2*strlen(tmp)+1);
1597 pref_get_escaped_pref(out, tmp);
1603 /* get the \-escaped internal representation of a pref from the contents of
1604 a gtkentry widget. entry must be non-NULL. */
1605 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1609 cm_return_val_if_fail( entry != NULL, "" );
1611 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1612 out = malloc(2*strlen(tmp)+1);
1615 pref_get_escaped_pref(out, tmp);
1621 /* ugly hack to be able to get this pref from ssl_certificate.c */
1622 gboolean prefs_common_unsafe_ssl_certs(void)
1624 return prefs_common.unsafe_ssl_certs;
1627 gboolean prefs_common_enable_log_standard(void)
1629 return prefs_common.enable_log_standard;
1632 gboolean prefs_common_enable_log_warning(void)
1634 return prefs_common.enable_log_warning;
1636 gboolean prefs_common_enable_log_error(void)
1638 return prefs_common.enable_log_error;
1640 gboolean prefs_common_enable_log_status(void)
1642 return prefs_common.enable_log_status;
1646 return the translated name of a header, if the translate_header option is
1647 set, otherwise return the untranslated header name (header_name itself).
1648 this function is provided for convenience, it's an interface to
1649 prefs_common.trans_hdr.
1650 works with header names either with or without trailing colon, provided
1651 that gettext found such header name in the sources (they should all be
1652 found in src/gtk/headers.h anyway).
1654 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1656 if (header_name == NULL || *header_name == '\0')
1659 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1662 const gchar *prefs_common_get_uri_cmd(void)
1669 if (!prefs_common.cmds_use_system_default)
1670 return prefs_common.uri_cmd;
1672 tmp = g_find_program_in_path("xdg-open");
1674 return prefs_common.uri_cmd;
1677 return "xdg-open %s";
1681 const gchar *prefs_common_get_ext_editor_cmd(void)
1683 return prefs_common.ext_editor_cmd;
1684 #if 0 /* we should do that, but it detaches the editor and breaks
1685 compose.c's external composition. */
1688 if (!prefs_common.cmds_use_system_default)
1689 return prefs_common.ext_editor_cmd;
1691 tmp = g_find_program_in_path("xdg-open");
1693 return prefs_common.ext_editor_cmd;
1696 return "xdg-open %s";
1700 gboolean prefs_common_get_use_shred(void)
1702 return prefs_common.use_shred;
1705 gboolean prefs_common_get_flush_metadata (void)
1707 return prefs_common.flush_metadata;
1710 PrefsCommon *prefs_common_get_prefs(void)
1712 return &prefs_common;