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,
322 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
323 {"widget_font", NULL,
324 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
325 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
326 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
327 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
328 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
329 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
330 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
331 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
332 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
336 {"widget_font_gtk2", NULL,
337 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
338 {"message_font_gtk2", "Monospace 9",
339 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
340 {"print_font_gtk2", "Monospace 9",
341 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
342 {"small_font_gtk2", "Sans 9",
343 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
344 {"normal_font_gtk2", "Sans 9",
345 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
346 {"bold_font_gtk2", "Sans Bold 9",
347 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
349 {"widget_font_gtk2", NULL,
350 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
351 {"message_font_gtk2", "Monospace 8",
352 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
353 {"print_font_gtk2", "Monospace 8",
354 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
355 {"small_font_gtk2", "Sans 8",
356 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
357 {"normal_font_gtk2", "Sans 8",
358 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
359 {"bold_font_gtk2", "Sans Bold 8",
360 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
363 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
365 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
369 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
371 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
373 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
375 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
377 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
379 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
381 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
383 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
385 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
387 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
389 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
391 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
393 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
395 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
397 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
399 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
401 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
403 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
405 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
407 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
409 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
411 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
413 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
415 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
417 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
419 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
421 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
423 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
425 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
427 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
431 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
433 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
435 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
438 {"display_folder_unread_num", "0",
439 &prefs_common.display_folder_unread, P_INT,
441 {"newsgroup_abbrev_len", "16",
442 &prefs_common.ng_abbrev_len, P_INT,
445 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
448 /* Display: Summary View */
449 {"default_sort_key", "3", &prefs_common.default_sort_key, P_ENUM,
451 {"default_sort_type", "1", &prefs_common.default_sort_type, P_ENUM,
453 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
455 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
457 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
458 P_STRING, NULL, NULL, NULL},
459 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
462 {"next_on_delete", "FALSE", &prefs_common.next_on_delete, P_BOOL,
465 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
468 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
471 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
474 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
477 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
479 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
482 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
484 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
487 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
489 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
493 {"summary_col_show_mark", "TRUE",
494 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_unread", "TRUE",
496 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_subject", "TRUE",
498 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
499 {"summary_col_show_from", "TRUE",
500 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
501 {"summary_col_show_to", "FALSE",
502 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
503 {"summary_col_show_date", "TRUE",
504 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
505 {"summary_col_show_mime", "TRUE",
506 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
507 {"summary_col_show_size", "TRUE",
508 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
509 {"summary_col_show_number", "FALSE",
510 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
511 {"summary_col_show_score", "FALSE",
512 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
513 {"summary_col_show_locked", "FALSE",
514 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
515 {"summary_col_show_tags", "FALSE",
516 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
518 {"summary_col_pos_mark", "0",
519 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_unread", "1",
521 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_mime", "2",
523 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
524 {"summary_col_pos_subject", "3",
525 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
526 {"summary_col_pos_from", "4",
527 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
528 {"summary_col_pos_date", "5",
529 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
530 {"summary_col_pos_size", "6",
531 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
532 {"summary_col_pos_number", "7",
533 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
534 {"summary_col_pos_score", "8",
535 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
536 {"summary_col_pos_locked", "9",
537 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
538 {"summary_col_pos_to", "10",
539 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
540 {"summary_col_pos_tags", "11",
541 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_mark", "10",
544 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_unread", "13",
546 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_mime", "10",
548 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
550 {"summary_col_size_subject", "200",
551 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
552 {"summary_col_size_from", "120",
553 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
554 {"summary_col_size_to", "120",
555 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
557 {"summary_col_size_subject", "300",
558 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
559 {"summary_col_size_from", "150",
560 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
561 {"summary_col_size_to", "150",
562 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
565 {"summary_col_size_date", "118",
566 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
567 {"summary_col_size_size", "45",
568 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
569 {"summary_col_size_number", "40",
570 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
571 {"summary_col_size_score", "40",
572 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
573 {"summary_col_size_locked", "13",
574 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
575 {"summary_col_size_tags", "150",
576 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
579 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
581 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
583 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
585 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
587 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
590 {"folder_col_show_folder", "TRUE",
591 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
592 {"folder_col_show_new", "TRUE",
593 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
594 {"folder_col_show_unread", "TRUE",
595 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
596 {"folder_col_show_total", "TRUE",
597 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
599 {"folder_col_pos_folder", "0",
600 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
601 {"folder_col_pos_new", "1",
602 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
603 {"folder_col_pos_unread", "2",
604 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
605 {"folder_col_pos_total", "3",
606 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
609 {"folder_col_size_folder", "120",
610 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
611 {"folder_col_size_new", "32",
612 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
613 {"folder_col_size_unread", "32",
614 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
615 {"folder_col_size_total", "32",
616 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
618 {"folder_col_size_folder", "400",
619 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
620 {"folder_col_size_new", "32",
621 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
622 {"folder_col_size_unread", "32",
623 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
624 {"folder_col_size_total", "32",
625 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
627 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
629 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
632 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
634 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
636 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
638 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
640 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
643 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
645 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
647 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
649 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
651 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
653 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
655 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
657 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
659 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
662 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
664 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
666 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
668 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
670 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
672 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
674 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
676 {"compose_width", "600", &prefs_common.compose_width, P_INT,
678 {"compose_height", "560", &prefs_common.compose_height, P_INT,
681 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
683 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
685 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
687 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
689 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
691 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
693 {"compose_width", "700", &prefs_common.compose_width, P_INT,
695 {"compose_height", "470", &prefs_common.compose_height, P_INT,
698 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
700 {"compose_x", "0", &prefs_common.compose_x, P_INT,
702 {"compose_y", "0", &prefs_common.compose_y, P_INT,
705 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
708 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
710 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
712 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
714 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
716 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
718 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
720 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
722 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
724 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
726 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
728 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
730 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
731 P_BOOL, NULL, NULL, NULL},
733 {"default_header_color", "#000000", &prefs_common.default_header_color, P_COLOR,
735 {"default_header_bgcolor", "#f5f6be", &prefs_common.default_header_bgcolor, P_COLOR,
737 {"tags_color", "#000000", &prefs_common.tags_color, P_COLOR,
739 {"tags_bgcolor", "#f5f6be", &prefs_common.tags_bgcolor, P_COLOR,
741 {"qs_active_color", "#000000", &prefs_common.qs_active_color, P_COLOR,
743 {"qs_active_bgcolor", "#f5f6be", &prefs_common.qs_active_bgcolor, P_COLOR,
745 {"qs_error_color", "#000000", &prefs_common.qs_error_color, P_COLOR,
747 {"qs_error_bgcolor", "#ff7070", &prefs_common.qs_error_bgcolor, P_COLOR,
750 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
751 P_BOOL, NULL, NULL, NULL},
752 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
754 {"display_xface", "TRUE", &prefs_common.display_xface,
755 P_BOOL, NULL, NULL, NULL},
756 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
758 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
760 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
762 {"line_space", "2", &prefs_common.line_space, P_INT,
764 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
767 {"enable_smooth_scroll", "FALSE",
768 &prefs_common.enable_smooth_scroll, P_BOOL,
770 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
772 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
774 {"hide_quoted", "TRUE",
775 &prefs_common.hide_quoted, P_BOOL,
777 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
779 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
782 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
785 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
787 {"attach_save_directory", NULL,
788 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
789 {"attach_load_directory", NULL,
790 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
793 {"mime_textviewer", NULL,
794 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
795 {"mime_open_command", "gedit '%s'",
796 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
797 {"show_inline_attachments", "TRUE",
798 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
802 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
805 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
808 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
809 NULL, NULL, NULL}, */
810 {"open_selected_message_on_folder_open", "FALSE",
811 &prefs_common.open_selected_on_folder_open,
812 P_BOOL, NULL, NULL, NULL},
813 {"always_show_message_when_selected", "0",
814 &prefs_common.always_show_msg,
815 P_ENUM, NULL, NULL, NULL},
816 {"select_on_entry", "3", &prefs_common.select_on_entry,
817 P_ENUM, NULL, NULL, NULL},
818 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
819 P_BOOL, NULL, NULL, NULL},
821 /* do it SUMMARY_OPEN_ACTIONS-1 times */
822 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
824 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
826 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
828 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
830 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
832 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
834 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
837 {"mark_as_read_on_new_window", "FALSE",
838 &prefs_common.mark_as_read_on_new_window,
839 P_BOOL, NULL, NULL, NULL},
840 {"mark_as_read_delay", "0",
841 &prefs_common.mark_as_read_delay, P_INT,
843 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
845 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
847 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
850 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
851 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
854 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
857 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
859 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
863 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
864 P_BOOL, NULL, NULL, NULL},
865 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
866 P_INT, NULL, NULL, NULL},
867 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
868 P_INT, NULL, NULL, NULL},
872 {"uri_open_command", DEFAULT_BROWSER_CMD,
873 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
875 {"gtk_theme", DEFAULT_W32_GTK_THEME,
876 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
878 {"ext_editor_command", DEFAULT_EDITOR_CMD,
879 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
880 {"cmds_use_system_default", "TRUE",
881 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
882 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
883 P_BOOL, NULL, NULL, NULL},
884 {"session_passwords", "FALSE", &prefs_common.session_passwords,
885 P_BOOL, NULL, NULL, NULL},
886 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
888 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
890 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
892 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
893 P_BOOL, NULL, NULL, NULL},
894 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
896 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
899 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
902 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
906 #if defined(__OpenBSD__)
907 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
908 P_INT, NULL, NULL, NULL},
910 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
911 P_INT, NULL, NULL, NULL},
913 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
915 {"important_score", "1", &prefs_common.important_score, P_INT,
918 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
920 {"log_length", "500", &prefs_common.loglength, P_INT,
923 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
925 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
927 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
929 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
932 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
934 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
936 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
938 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
941 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
943 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
945 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
947 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
949 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
951 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
953 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
955 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
958 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
960 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
962 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
964 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
966 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
968 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
970 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
972 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
974 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
977 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
980 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
983 /* Some windows' sizes */
984 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
986 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
989 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
991 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
994 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
996 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
999 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
1001 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
1004 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
1006 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
1009 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
1011 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1014 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1016 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1019 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1021 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1024 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1026 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1029 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1031 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1034 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1036 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1039 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1041 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1044 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1047 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1049 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1052 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1054 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1057 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1059 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1062 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1064 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1067 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1069 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1072 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1074 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1077 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1079 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1082 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1084 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1087 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1089 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1092 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1094 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1098 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1100 {"utf8_instead_of_locale_for_broken_mail", "0",
1101 &prefs_common.broken_are_utf8, P_INT,
1103 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1105 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1107 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1109 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1111 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1113 {"folderview_vscrollbar_policy", "0",
1114 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1116 {"textview_cursor_visible", "FALSE",
1117 &prefs_common.textview_cursor_visible, P_BOOL,
1119 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1121 #ifndef GENERIC_UMPC
1122 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1124 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1127 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1129 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1132 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1133 P_INT, NULL, NULL, NULL },
1134 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1135 P_STRING, NULL, NULL, NULL },
1136 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1137 P_BOOL, NULL, NULL, NULL },
1138 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1140 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1142 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1144 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1146 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1148 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1150 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1152 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1154 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1156 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1158 #ifndef GENERIC_UMPC
1159 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1162 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1166 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1168 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1170 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1172 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1174 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1176 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1178 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1180 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1182 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1184 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1186 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1188 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1190 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1192 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1194 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1197 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1198 P_BOOL, NULL, NULL, NULL },
1200 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1203 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1206 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1209 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1211 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1213 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1216 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1218 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1220 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1221 #ifndef PASSWORD_CRYPTO_OLD
1222 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1223 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1224 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1225 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1228 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1232 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1233 * Fallback to default_list if history file is not found
1235 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1236 GList *default_list)
1240 gchar buf[PREFSBUFSIZE];
1244 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1245 G_DIR_SEPARATOR_S, history,
1248 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1251 if ((fp = g_fopen(path, "rb")) == NULL) {
1252 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1254 /* returns default list if set, otherwise NULL */
1255 return default_list;
1258 while (fgets(buf, sizeof(buf), fp) != NULL) {
1260 if (buf[0] == '\0') continue;
1261 tmp = add_history(tmp, buf);
1265 tmp = g_list_reverse(tmp);
1271 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1273 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1275 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1279 * Read history list from the specified history file
1281 static GList *prefs_common_read_history(const gchar *history)
1283 return prefs_common_read_history_from_dir(NULL, history);
1286 void prefs_common_read_config(void)
1291 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1292 prefs_read_config(param, "Common", rcpath, NULL);
1294 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1299 tmp = g_strdup(gettext(prefs_common.date_format));
1300 g_free(prefs_common.date_format);
1301 prefs_common.date_format = tmp;
1303 prefs_common.mime_open_cmd_history =
1304 prefs_common_read_history(COMMAND_HISTORY);
1305 prefs_common.summary_quicksearch_history =
1306 prefs_common_read_history(QUICKSEARCH_HISTORY);
1307 prefs_common.summary_search_from_history =
1308 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1309 prefs_common.summary_search_to_history =
1310 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1311 prefs_common.summary_search_subject_history =
1312 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1313 prefs_common.summary_search_body_history =
1314 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1315 prefs_common.summary_search_adv_condition_history =
1316 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1317 prefs_common.message_search_history =
1318 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1319 prefs_common.compose_save_to_history =
1320 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1321 #ifndef USE_ALT_ADDRBOOK
1322 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1324 colorlabel_update_colortable_from_prefs();
1330 g_warning("failed to write"); \
1335 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1337 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1341 gchar *path, *tmp_path;
1344 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1345 G_DIR_SEPARATOR_S, history,
1348 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1351 tmp_path = g_strconcat(path, ".tmp", NULL);
1353 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1354 FILE_OP_ERROR(tmp_path, "fopen");
1358 for (cur = list; cur != NULL; cur = cur->next) {
1359 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1360 fputc('\n', fp) != EOF);
1363 if (fclose(fp) == EOF) {
1364 FILE_OP_ERROR(tmp_path, "fclose");
1372 if (g_rename(tmp_path, path) < 0) {
1373 FILE_OP_ERROR(path, "rename");
1385 * Save history list to the specified history file
1387 static void prefs_common_save_history(const gchar *history, GList *list)
1389 prefs_common_save_history_to_dir(NULL, history, list);
1394 void prefs_common_write_config(void)
1396 prefs_write_config(param, "Common", COMMON_RC);
1398 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1401 prefs_common_save_history(COMMAND_HISTORY,
1402 prefs_common.mime_open_cmd_history);
1403 prefs_common_save_history(QUICKSEARCH_HISTORY,
1404 prefs_common.summary_quicksearch_history);
1405 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1406 prefs_common.summary_search_from_history);
1407 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1408 prefs_common.summary_search_to_history);
1409 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1410 prefs_common.summary_search_subject_history);
1411 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1412 prefs_common.summary_search_body_history);
1413 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1414 prefs_common.summary_search_adv_condition_history);
1415 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1416 prefs_common.message_search_history);
1417 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1418 prefs_common.compose_save_to_history);
1420 #ifndef USE_ALT_ADDRBOOK
1421 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1422 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1423 prefs_common.addressbook_custom_attributes);
1427 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1428 both 'in' and 'out' must be non-NULL.
1429 'out' must be a pointer to a buffer whose size is at least equal
1430 to strlen(txt)+1, this buffer will get cleared. out's contents
1431 will always get set to a valid string, even if it's "".*/
1432 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1439 cm_return_if_fail( in != NULL );
1440 cm_return_if_fail( out != NULL );
1444 memset(out, 0, strlen(in)+1);
1445 while (*i != '\0') {
1446 if (*i == '\\' && *(i+1) == 'n') {
1449 } else if (*i == '\\' && *(i+1) == 't') {
1452 } else if (*i == '\\' && *(i+1) == '\\') {
1463 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1464 both 'in' and 'out' must be non-NULL.
1465 'out' must be a pointer to a buffer whose size is at least equal
1466 to 2*strlen(txt)+1. out's contents will always get set to a valid
1467 string, even if it's "". */
1468 void pref_get_escaped_pref(gchar *out, const gchar *in)
1475 cm_return_if_fail( in != NULL );
1476 cm_return_if_fail( out != NULL );
1480 while (*i != '\0') {
1484 } else if (*i == '\t') {
1487 } else if (*i == '\\') {
1498 /* set the contents of a textview widget from the internal \-escaped
1499 representation of a pref string. both txt and textview must be non-NULL. */
1500 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1502 GtkTextBuffer *buffer;
1505 cm_return_if_fail( textview != NULL );
1507 buffer = gtk_text_view_get_buffer(textview);
1510 gtk_text_buffer_set_text(buffer, "", -1);
1512 out = g_malloc(strlen(txt)+1);
1514 pref_get_unescaped_pref(out, txt);
1516 gtk_text_buffer_set_text(buffer, out, -1);
1521 /* set the contents of a gtkentry widget from the internal \-escaped
1522 representation of a pref string. both txt and entry must be non-NULL. */
1523 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1527 cm_return_if_fail( entry != NULL );
1529 gtk_entry_set_text(entry, "");
1531 out = g_malloc(strlen(txt)+1);
1533 pref_get_unescaped_pref(out, txt);
1535 gtk_entry_set_text(entry, out);
1540 /* get the \-escaped internal representation of a pref from the contents of
1541 a textview widget. textview must be non-NULL. */
1542 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1544 GtkTextBuffer *buffer;
1545 GtkTextIter start, end;
1548 cm_return_val_if_fail( textview != NULL, "" );
1550 buffer = gtk_text_view_get_buffer(textview);
1551 gtk_text_buffer_get_start_iter(buffer, &start);
1552 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1553 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1554 out = malloc(2*strlen(tmp)+1);
1556 pref_get_escaped_pref(out, tmp);
1562 /* get the \-escaped internal representation of a pref from the contents of
1563 a gtkentry widget. entry must be non-NULL. */
1564 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1568 cm_return_val_if_fail( entry != NULL, "" );
1570 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1571 out = malloc(2*strlen(tmp)+1);
1574 pref_get_escaped_pref(out, tmp);
1580 /* ugly hack to be able to get this pref from ssl_certificate.c */
1581 gboolean prefs_common_unsafe_ssl_certs(void)
1583 return prefs_common.unsafe_ssl_certs;
1586 gboolean prefs_common_enable_log_standard(void)
1588 return prefs_common.enable_log_standard;
1591 gboolean prefs_common_enable_log_warning(void)
1593 return prefs_common.enable_log_warning;
1595 gboolean prefs_common_enable_log_error(void)
1597 return prefs_common.enable_log_error;
1599 gboolean prefs_common_enable_log_status(void)
1601 return prefs_common.enable_log_status;
1605 return the translated name of a header, if the translate_header option is
1606 set, otherwise return the untranslated header name (header_name itself).
1607 this function is provided for convenience, it's an interface to
1608 prefs_common.trans_hdr.
1609 works with header names either with or without trailing colon, provided
1610 that gettext found such header name in the sources (they should all be
1611 found in src/gtk/headers.h anyway).
1613 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1615 if (header_name == NULL || *header_name == '\0')
1618 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1621 const gchar *prefs_common_get_uri_cmd(void)
1628 if (!prefs_common.cmds_use_system_default)
1629 return prefs_common.uri_cmd;
1631 tmp = g_find_program_in_path("xdg-open");
1633 return prefs_common.uri_cmd;
1636 return "xdg-open %s";
1640 const gchar *prefs_common_get_ext_editor_cmd(void)
1642 return prefs_common.ext_editor_cmd;
1643 #if 0 /* we should do that, but it detaches the editor and breaks
1644 compose.c's external composition. */
1647 if (!prefs_common.cmds_use_system_default)
1648 return prefs_common.ext_editor_cmd;
1650 tmp = g_find_program_in_path("xdg-open");
1652 return prefs_common.ext_editor_cmd;
1655 return "xdg-open %s";
1659 gboolean prefs_common_get_use_shred(void)
1661 return prefs_common.use_shred;
1664 gboolean prefs_common_get_flush_metadata (void)
1666 return prefs_common.flush_metadata;
1669 PrefsCommon *prefs_common_get_prefs(void)
1671 return &prefs_common;