2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2016 Hiroyuki Yamamoto and the Claws Mail team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21 #include "claws-features.h"
27 #include <glib/gi18n.h>
29 #include <gdk/gdkkeysyms.h>
34 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "mainwindow.h"
45 #include "summaryview.h"
46 #include "folderview.h"
47 #include "messageview.h"
48 #include "manage_window.h"
54 #include "alertpanel.h"
58 #include "folderview.h"
59 #include "stock_pixmap.h"
60 #include "prefswindow.h"
61 #include "colorlabel.h"
62 #ifndef USE_ALT_ADDRBOOK
63 #include "addrcustomattr.h"
72 PrefsCommon prefs_common;
78 * In the Windows version prefs_common contains
79 * - the non-OS-specific settings of the "Common" section and
80 * - the OS-specific settings of the "CommonWin32" section
81 * The OS-specific settings of the "Common" section are not used
82 * but saved in prefs_unix.
85 # define SPECIFIC_PREFS prefs_unix
87 static PrefsCommon prefs_unix;
89 static PrefParam param_os_specific[] = {
92 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
93 {"newmail_notify_cmd", "",
94 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
97 {"widget_font_gtk2", NULL,
98 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
99 {"message_font_gtk2", "Monospace 9",
100 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
101 {"print_font_gtk2", "Monospace 9",
102 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
103 {"small_font_gtk2", "Sans 9",
104 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
105 {"normal_font_gtk2", "Sans 9",
106 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
107 {"bold_font_gtk2", "Sans 9 Bold",
108 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
110 {"attach_save_directory", NULL,
111 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
112 {"attach_load_directory", NULL,
113 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
116 {"mime_textviewer", NULL,
117 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
118 {"mime_open_command", "notepad '%s'",
119 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
122 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
123 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
126 {"ext_editor_command", "notepad %s",
127 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
129 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
132 # define SPECIFIC_PREFS prefs_common
136 parameter name, default value, pointer to the prefs variable, data type,
137 pointer to the widget pointer,
138 pointer to the function for data setting,
139 pointer to the function for widget setting
142 static PrefParam param[] = {
143 {"config_version", "0",
144 &prefs_common.config_version, P_INT, NULL, NULL, NULL},
147 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
149 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
152 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
154 {"autochk_interval", "600", &prefs_common.autochk_itv, P_INT,
156 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
158 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
159 P_BOOL, NULL, NULL, NULL},
160 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
161 P_BOOL, NULL, NULL, NULL},
162 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
163 P_BOOL, NULL, NULL, NULL},
164 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
165 P_BOOL, NULL, NULL, NULL},
166 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
168 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
170 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
172 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
174 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
175 P_BOOL, NULL, NULL, NULL},
176 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
177 P_BOOL, NULL, NULL, NULL},
180 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
182 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
183 P_BOOL, NULL, NULL, NULL},
185 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
188 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
191 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
193 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
196 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
198 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
200 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
202 {"rewrite_first_from", "TRUE", &prefs_common.rewrite_first_from,
203 P_BOOL, NULL, NULL, NULL},
204 {"warn_empty_subj", "TRUE", &prefs_common.warn_empty_subj,
205 P_BOOL, NULL, NULL, NULL},
206 {"warn_sending_many_recipients", "FALSE", &prefs_common.warn_sending_many_recipients,
207 P_BOOL, NULL, NULL, NULL},
208 {"warn_sending_many_recipients_num", "1", &prefs_common.warn_sending_many_recipients_num, P_INT,
210 {"hide_timezone", "FALSE", &prefs_common.hide_timezone,
211 P_BOOL, NULL, NULL, NULL},
212 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
213 P_BOOL, NULL, NULL, NULL},
216 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
218 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
219 P_BOOL, NULL, NULL, NULL},
220 {"redirect_keep_from", "FALSE",
221 &prefs_common.redirect_keep_from, P_BOOL,
223 {"undo_level", "50", &prefs_common.undolevels, P_INT,
225 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
227 {"compose_subject_format", "",
228 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
229 {"compose_body_format", N_("Hello,\\n"),
230 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
231 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
233 {"type_any_header", "FALSE", &prefs_common.type_any_header, P_BOOL,
237 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
239 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
241 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
243 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
245 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
247 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
249 {"autosave", "TRUE", &prefs_common.autosave,
250 P_BOOL, NULL, NULL, NULL},
251 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
253 {"autosave_encrypted", "FALSE", &prefs_common.autosave_encrypted,
254 P_BOOL, NULL, NULL, NULL},
255 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
256 P_BOOL, NULL, NULL, NULL},
257 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
258 P_INT, NULL, NULL, NULL},
260 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
262 {"dictionary", "", &prefs_common.dictionary, P_STRING,
264 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
266 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
268 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
270 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
271 P_BOOL, NULL, NULL, NULL},
272 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
274 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
277 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
279 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
282 /* Account autoselection */
283 {"reply_account_autoselect", "TRUE",
284 &prefs_common.reply_account_autosel, P_BOOL,
286 {"forward_account_autoselect", "TRUE",
287 &prefs_common.forward_account_autosel, P_BOOL,
289 {"reedit_account_autoselect", "TRUE",
290 &prefs_common.reedit_account_autosel, P_BOOL,
293 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
297 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
300 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
305 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
307 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
308 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
310 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
312 {"forward_quote_format",
313 N_("\\n\\nBegin forwarded message:\\n\\n"
314 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
315 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
316 &prefs_common.fw_quotefmt, P_STRING,
318 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
324 {"widget_font_gtk2", NULL,
325 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
326 {"message_font_gtk2", "Monospace 9",
327 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
328 {"print_font_gtk2", "Monospace 9",
329 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
330 {"small_font_gtk2", "Sans 9",
331 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
332 {"normal_font_gtk2", "Sans 9",
333 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
334 {"bold_font_gtk2", "Sans Bold 9",
335 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
337 {"widget_font_gtk2", NULL,
338 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
339 {"message_font_gtk2", "Monospace 8",
340 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
341 {"print_font_gtk2", "Monospace 8",
342 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
343 {"small_font_gtk2", "Sans 8",
344 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
345 {"normal_font_gtk2", "Sans 8",
346 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
347 {"bold_font_gtk2", "Sans Bold 8",
348 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
351 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
353 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
357 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
359 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
361 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
363 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
365 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
367 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
369 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
371 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
373 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
375 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
377 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
379 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
381 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
383 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
385 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
387 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
389 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
391 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
393 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
395 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
397 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
399 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
401 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
403 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
405 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
407 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
409 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
411 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
413 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
415 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
419 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
421 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
423 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
426 {"display_folder_unread_num", "0",
427 &prefs_common.display_folder_unread, P_INT,
429 {"newsgroup_abbrev_len", "16",
430 &prefs_common.ng_abbrev_len, P_INT,
433 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
436 /* Display: Summary View */
437 {"default_sort_key", "3", &prefs_common.default_sort_key, P_ENUM,
439 {"default_sort_type", "1", &prefs_common.default_sort_type, P_ENUM,
441 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
443 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
445 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
446 P_STRING, NULL, NULL, NULL},
447 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
450 {"next_on_delete", "FALSE", &prefs_common.next_on_delete, P_BOOL,
453 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
456 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
459 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
462 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
465 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
467 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
470 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
472 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
475 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
477 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
481 {"summary_col_show_mark", "TRUE",
482 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_unread", "TRUE",
484 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_subject", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_from", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_to", "FALSE",
490 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_date", "TRUE",
492 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_mime", "TRUE",
494 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_size", "TRUE",
496 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_number", "FALSE",
498 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
499 {"summary_col_show_score", "FALSE",
500 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
501 {"summary_col_show_locked", "FALSE",
502 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
503 {"summary_col_show_tags", "FALSE",
504 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
506 {"summary_col_pos_mark", "0",
507 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_unread", "1",
509 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_mime", "2",
511 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_subject", "3",
513 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_from", "4",
515 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_date", "5",
517 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_size", "6",
519 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_number", "7",
521 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_score", "8",
523 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
524 {"summary_col_pos_locked", "9",
525 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
526 {"summary_col_pos_to", "10",
527 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
528 {"summary_col_pos_tags", "11",
529 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
531 {"summary_col_size_mark", "10",
532 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
533 {"summary_col_size_unread", "13",
534 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
535 {"summary_col_size_mime", "10",
536 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
538 {"summary_col_size_subject", "200",
539 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
540 {"summary_col_size_from", "120",
541 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
542 {"summary_col_size_to", "120",
543 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_subject", "300",
546 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_from", "150",
548 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_to", "150",
550 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_date", "118",
554 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_size", "45",
556 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
557 {"summary_col_size_number", "40",
558 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
559 {"summary_col_size_score", "40",
560 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
561 {"summary_col_size_locked", "13",
562 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
563 {"summary_col_size_tags", "150",
564 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
567 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
569 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
571 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
573 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
575 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
578 {"folder_col_show_folder", "TRUE",
579 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
580 {"folder_col_show_new", "TRUE",
581 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
582 {"folder_col_show_unread", "TRUE",
583 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
584 {"folder_col_show_total", "TRUE",
585 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
587 {"folder_col_pos_folder", "0",
588 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
589 {"folder_col_pos_new", "1",
590 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
591 {"folder_col_pos_unread", "2",
592 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
593 {"folder_col_pos_total", "3",
594 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
597 {"folder_col_size_folder", "120",
598 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
599 {"folder_col_size_new", "32",
600 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
601 {"folder_col_size_unread", "32",
602 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
603 {"folder_col_size_total", "32",
604 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
606 {"folder_col_size_folder", "400",
607 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
608 {"folder_col_size_new", "32",
609 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
610 {"folder_col_size_unread", "32",
611 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
612 {"folder_col_size_total", "32",
613 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
615 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
617 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
620 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
622 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
624 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
626 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
628 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
631 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
633 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
635 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
637 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
639 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
641 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
643 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
645 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
647 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
650 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
652 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
654 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
656 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
658 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
660 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
662 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
664 {"compose_width", "600", &prefs_common.compose_width, P_INT,
666 {"compose_height", "560", &prefs_common.compose_height, P_INT,
669 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
671 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
673 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
675 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
677 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
679 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
681 {"compose_width", "700", &prefs_common.compose_width, P_INT,
683 {"compose_height", "470", &prefs_common.compose_height, P_INT,
686 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
688 {"compose_x", "0", &prefs_common.compose_x, P_INT,
690 {"compose_y", "0", &prefs_common.compose_y, P_INT,
693 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
696 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
698 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
700 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
702 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
704 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
706 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
708 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
710 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
712 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
714 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
716 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
718 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
719 P_BOOL, NULL, NULL, NULL},
721 {"default_header_color", "#000000", &prefs_common.default_header_color, P_COLOR,
723 {"default_header_bgcolor", "#f5f6be", &prefs_common.default_header_bgcolor, P_COLOR,
725 {"tags_color", "#000000", &prefs_common.tags_color, P_COLOR,
727 {"tags_bgcolor", "#f5f6be", &prefs_common.tags_bgcolor, P_COLOR,
729 {"qs_active_color", "#000000", &prefs_common.qs_active_color, P_COLOR,
731 {"qs_active_bgcolor", "#f5f6be", &prefs_common.qs_active_bgcolor, P_COLOR,
733 {"qs_error_color", "#000000", &prefs_common.qs_error_color, P_COLOR,
735 {"qs_error_bgcolor", "#ff7070", &prefs_common.qs_error_bgcolor, P_COLOR,
738 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
739 P_BOOL, NULL, NULL, NULL},
740 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
742 {"display_xface", "TRUE", &prefs_common.display_xface,
743 P_BOOL, NULL, NULL, NULL},
744 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
746 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
748 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
750 {"line_space", "2", &prefs_common.line_space, P_INT,
752 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
755 {"enable_smooth_scroll", "FALSE",
756 &prefs_common.enable_smooth_scroll, P_BOOL,
758 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
760 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
762 {"hide_quoted", "TRUE",
763 &prefs_common.hide_quoted, P_BOOL,
765 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
767 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
770 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
773 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
775 {"attach_save_directory", NULL,
776 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
777 {"attach_load_directory", NULL,
778 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
781 {"mime_textviewer", NULL,
782 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
783 {"mime_open_command", "gedit '%s'",
784 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
785 {"show_inline_attachments", "TRUE",
786 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
790 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
793 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
796 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
797 NULL, NULL, NULL}, */
798 {"open_selected_message_on_folder_open", "FALSE",
799 &prefs_common.open_selected_on_folder_open,
800 P_BOOL, NULL, NULL, NULL},
801 {"always_show_message_when_selected", "0",
802 &prefs_common.always_show_msg,
803 P_ENUM, NULL, NULL, NULL},
804 {"select_on_entry", "3", &prefs_common.select_on_entry,
805 P_ENUM, NULL, NULL, NULL},
806 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
807 P_BOOL, NULL, NULL, NULL},
809 /* do it SUMMARY_OPEN_ACTIONS-1 times */
810 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
812 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
814 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
816 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
818 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
820 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
822 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
825 {"mark_as_read_on_new_window", "FALSE",
826 &prefs_common.mark_as_read_on_new_window,
827 P_BOOL, NULL, NULL, NULL},
828 {"mark_as_read_delay", "0",
829 &prefs_common.mark_as_read_delay, P_INT,
831 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
833 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
835 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
838 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
839 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
842 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
845 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
847 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
851 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
852 P_BOOL, NULL, NULL, NULL},
853 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
854 P_INT, NULL, NULL, NULL},
855 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
856 P_INT, NULL, NULL, NULL},
860 {"uri_open_command", DEFAULT_BROWSER_CMD,
861 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
863 {"gtk_theme", DEFAULT_W32_GTK_THEME,
864 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
866 {"ext_editor_command", DEFAULT_EDITOR_CMD,
867 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
868 {"cmds_use_system_default", "TRUE",
869 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
870 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
871 P_BOOL, NULL, NULL, NULL},
872 {"session_passwords", "FALSE", &prefs_common.session_passwords,
873 P_BOOL, NULL, NULL, NULL},
874 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
876 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
878 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
880 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
881 P_BOOL, NULL, NULL, NULL},
882 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
884 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
887 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
890 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
894 #if defined(__OpenBSD__)
895 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
896 P_INT, NULL, NULL, NULL},
898 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
899 P_INT, NULL, NULL, NULL},
901 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
903 {"important_score", "1", &prefs_common.important_score, P_INT,
906 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
908 {"log_length", "500", &prefs_common.loglength, P_INT,
911 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
913 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
915 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
917 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
920 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
922 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
924 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
926 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
929 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
931 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
933 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
935 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
937 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
939 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
941 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
943 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
946 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
948 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
950 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
952 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
954 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
956 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
958 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
960 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
962 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
965 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
968 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
971 /* Some windows' sizes */
972 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
974 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
977 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
979 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
982 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
984 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
987 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
989 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
992 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
994 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
997 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
999 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1002 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1004 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1007 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1009 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1012 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1014 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1017 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1019 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1022 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1024 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1027 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1029 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1032 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1035 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1037 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1040 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1042 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1045 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1047 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1050 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1052 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1055 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1057 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1060 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1062 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1065 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1067 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1070 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1072 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1075 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1077 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1080 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1082 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1086 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1088 {"utf8_instead_of_locale_for_broken_mail", "0",
1089 &prefs_common.broken_are_utf8, P_INT,
1091 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1093 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1095 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1097 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1099 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1101 {"folderview_vscrollbar_policy", "0",
1102 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1104 {"textview_cursor_visible", "FALSE",
1105 &prefs_common.textview_cursor_visible, P_BOOL,
1107 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1109 #ifndef GENERIC_UMPC
1110 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1112 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1115 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1117 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1120 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1121 P_INT, NULL, NULL, NULL },
1122 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1123 P_STRING, NULL, NULL, NULL },
1124 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1125 P_BOOL, NULL, NULL, NULL },
1126 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1128 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1130 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1132 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1134 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1136 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1138 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1140 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1142 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1144 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1146 #ifndef GENERIC_UMPC
1147 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1150 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1154 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1156 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1158 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1160 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1162 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1164 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1166 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1168 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1170 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1172 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1174 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1176 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1178 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1180 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1182 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1185 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1186 P_BOOL, NULL, NULL, NULL },
1188 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1191 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1194 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1197 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1199 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1201 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1204 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1206 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1208 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1209 #ifndef PASSWORD_CRYPTO_OLD
1210 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1211 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1212 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1213 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1216 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1220 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1221 * Fallback to default_list if history file is not found
1223 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1224 GList *default_list)
1228 gchar buf[PREFSBUFSIZE];
1232 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1233 G_DIR_SEPARATOR_S, history,
1236 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1239 if ((fp = g_fopen(path, "rb")) == NULL) {
1240 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1242 /* returns default list if set, otherwise NULL */
1243 return default_list;
1246 while (fgets(buf, sizeof(buf), fp) != NULL) {
1248 if (buf[0] == '\0') continue;
1249 tmp = add_history(tmp, buf);
1253 tmp = g_list_reverse(tmp);
1259 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1261 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1263 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1267 * Read history list from the specified history file
1269 static GList *prefs_common_read_history(const gchar *history)
1271 return prefs_common_read_history_from_dir(NULL, history);
1274 void prefs_common_read_config(void)
1279 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1280 prefs_read_config(param, "Common", rcpath, NULL);
1282 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1287 tmp = g_strdup(gettext(prefs_common.date_format));
1288 g_free(prefs_common.date_format);
1289 prefs_common.date_format = tmp;
1291 prefs_common.mime_open_cmd_history =
1292 prefs_common_read_history(COMMAND_HISTORY);
1293 prefs_common.summary_quicksearch_history =
1294 prefs_common_read_history(QUICKSEARCH_HISTORY);
1295 prefs_common.summary_search_from_history =
1296 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1297 prefs_common.summary_search_to_history =
1298 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1299 prefs_common.summary_search_subject_history =
1300 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1301 prefs_common.summary_search_body_history =
1302 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1303 prefs_common.summary_search_adv_condition_history =
1304 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1305 prefs_common.message_search_history =
1306 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1307 prefs_common.compose_save_to_history =
1308 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1309 #ifndef USE_ALT_ADDRBOOK
1310 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1312 colorlabel_update_colortable_from_prefs();
1318 g_warning("failed to write"); \
1323 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1325 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1329 gchar *path, *tmp_path;
1332 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1333 G_DIR_SEPARATOR_S, history,
1336 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1339 tmp_path = g_strconcat(path, ".tmp", NULL);
1341 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1342 FILE_OP_ERROR(tmp_path, "fopen");
1346 for (cur = list; cur != NULL; cur = cur->next) {
1347 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1348 fputc('\n', fp) != EOF);
1351 if (fclose(fp) == EOF) {
1352 FILE_OP_ERROR(tmp_path, "fclose");
1360 if (g_rename(tmp_path, path) < 0) {
1361 FILE_OP_ERROR(path, "rename");
1373 * Save history list to the specified history file
1375 static void prefs_common_save_history(const gchar *history, GList *list)
1377 prefs_common_save_history_to_dir(NULL, history, list);
1382 void prefs_common_write_config(void)
1384 prefs_write_config(param, "Common", COMMON_RC);
1386 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1389 prefs_common_save_history(COMMAND_HISTORY,
1390 prefs_common.mime_open_cmd_history);
1391 prefs_common_save_history(QUICKSEARCH_HISTORY,
1392 prefs_common.summary_quicksearch_history);
1393 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1394 prefs_common.summary_search_from_history);
1395 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1396 prefs_common.summary_search_to_history);
1397 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1398 prefs_common.summary_search_subject_history);
1399 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1400 prefs_common.summary_search_body_history);
1401 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1402 prefs_common.summary_search_adv_condition_history);
1403 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1404 prefs_common.message_search_history);
1405 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1406 prefs_common.compose_save_to_history);
1408 #ifndef USE_ALT_ADDRBOOK
1409 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1410 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1411 prefs_common.addressbook_custom_attributes);
1415 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1416 both 'in' and 'out' must be non-NULL.
1417 'out' must be a pointer to a buffer whose size is at least equal
1418 to strlen(txt)+1, this buffer will get cleared. out's contents
1419 will always get set to a valid string, even if it's "".*/
1420 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1427 cm_return_if_fail( in != NULL );
1428 cm_return_if_fail( out != NULL );
1432 memset(out, 0, strlen(in)+1);
1433 while (*i != '\0') {
1434 if (*i == '\\' && *(i+1) == 'n') {
1437 } else if (*i == '\\' && *(i+1) == 't') {
1440 } else if (*i == '\\' && *(i+1) == '\\') {
1451 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1452 both 'in' and 'out' must be non-NULL.
1453 'out' must be a pointer to a buffer whose size is at least equal
1454 to 2*strlen(txt)+1. out's contents will always get set to a valid
1455 string, even if it's "". */
1456 void pref_get_escaped_pref(gchar *out, const gchar *in)
1463 cm_return_if_fail( in != NULL );
1464 cm_return_if_fail( out != NULL );
1468 while (*i != '\0') {
1472 } else if (*i == '\t') {
1475 } else if (*i == '\\') {
1486 /* set the contents of a textview widget from the internal \-escaped
1487 representation of a pref string. both txt and textview must be non-NULL. */
1488 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1490 GtkTextBuffer *buffer;
1493 cm_return_if_fail( textview != NULL );
1495 buffer = gtk_text_view_get_buffer(textview);
1498 gtk_text_buffer_set_text(buffer, "", -1);
1500 out = g_malloc(strlen(txt)+1);
1502 pref_get_unescaped_pref(out, txt);
1504 gtk_text_buffer_set_text(buffer, out, -1);
1509 /* set the contents of a gtkentry widget from the internal \-escaped
1510 representation of a pref string. both txt and entry must be non-NULL. */
1511 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1515 cm_return_if_fail( entry != NULL );
1517 gtk_entry_set_text(entry, "");
1519 out = g_malloc(strlen(txt)+1);
1521 pref_get_unescaped_pref(out, txt);
1523 gtk_entry_set_text(entry, out);
1528 /* get the \-escaped internal representation of a pref from the contents of
1529 a textview widget. textview must be non-NULL. */
1530 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1532 GtkTextBuffer *buffer;
1533 GtkTextIter start, end;
1536 cm_return_val_if_fail( textview != NULL, "" );
1538 buffer = gtk_text_view_get_buffer(textview);
1539 gtk_text_buffer_get_start_iter(buffer, &start);
1540 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1541 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1542 out = malloc(2*strlen(tmp)+1);
1544 pref_get_escaped_pref(out, tmp);
1550 /* get the \-escaped internal representation of a pref from the contents of
1551 a gtkentry widget. entry must be non-NULL. */
1552 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1556 cm_return_val_if_fail( entry != NULL, "" );
1558 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1559 out = malloc(2*strlen(tmp)+1);
1562 pref_get_escaped_pref(out, tmp);
1568 /* ugly hack to be able to get this pref from ssl_certificate.c */
1569 gboolean prefs_common_unsafe_ssl_certs(void)
1571 return prefs_common.unsafe_ssl_certs;
1574 gboolean prefs_common_enable_log_standard(void)
1576 return prefs_common.enable_log_standard;
1579 gboolean prefs_common_enable_log_warning(void)
1581 return prefs_common.enable_log_warning;
1583 gboolean prefs_common_enable_log_error(void)
1585 return prefs_common.enable_log_error;
1587 gboolean prefs_common_enable_log_status(void)
1589 return prefs_common.enable_log_status;
1593 return the translated name of a header, if the translate_header option is
1594 set, otherwise return the untranslated header name (header_name itself).
1595 this function is provided for convenience, it's an interface to
1596 prefs_common.trans_hdr.
1597 works with header names either with or without trailing colon, provided
1598 that gettext found such header name in the sources (they should all be
1599 found in src/gtk/headers.h anyway).
1601 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1603 if (header_name == NULL || *header_name == '\0')
1606 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1609 const gchar *prefs_common_get_uri_cmd(void)
1616 if (!prefs_common.cmds_use_system_default)
1617 return prefs_common.uri_cmd;
1619 tmp = g_find_program_in_path("xdg-open");
1621 return prefs_common.uri_cmd;
1624 return "xdg-open %s";
1628 const gchar *prefs_common_get_ext_editor_cmd(void)
1630 return prefs_common.ext_editor_cmd;
1631 #if 0 /* we should do that, but it detaches the editor and breaks
1632 compose.c's external composition. */
1635 if (!prefs_common.cmds_use_system_default)
1636 return prefs_common.ext_editor_cmd;
1638 tmp = g_find_program_in_path("xdg-open");
1640 return prefs_common.ext_editor_cmd;
1643 return "xdg-open %s";
1647 gboolean prefs_common_get_use_shred(void)
1649 return prefs_common.use_shred;
1652 gboolean prefs_common_get_flush_metadata (void)
1654 return prefs_common.flush_metadata;
1657 PrefsCommon *prefs_common_get_prefs(void)
1659 return &prefs_common;