2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2013 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/>.
22 #include "claws-features.h"
28 #include <glib/gi18n.h>
30 #include <gdk/gdkkeysyms.h>
35 #include <sys/types.h>
40 #include "prefs_gtk.h"
41 #include "prefs_common.h"
42 #include "prefs_display_header.h"
43 #include "prefs_summary_column.h"
44 #include "prefs_folder_column.h"
45 #include "mainwindow.h"
46 #include "summaryview.h"
47 #include "folderview.h"
48 #include "messageview.h"
49 #include "manage_window.h"
55 #include "alertpanel.h"
59 #include "folderview.h"
60 #include "stock_pixmap.h"
61 #include "prefswindow.h"
62 #include "colorlabel.h"
63 #ifndef USE_NEW_ADDRBOOK
64 #include "addrcustomattr.h"
73 PrefsCommon prefs_common;
79 * In the Windows version prefs_common contains
80 * - the non-OS-specific settings of the "Common" section and
81 * - the OS-specific settings of the "CommonWin32" section
82 * The OS-specific settings of the "Common" section are not used
83 * but saved in prefs_unix.
86 # define SPECIFIC_PREFS prefs_unix
88 static PrefsCommon prefs_unix;
90 static PrefParam param_os_specific[] = {
93 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
94 {"newmail_notify_cmd", "",
95 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
98 {"widget_font_gtk2", NULL,
99 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
100 {"message_font_gtk2", "Monospace 9",
101 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
102 {"print_font_gtk2", "Monospace 9",
103 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
104 {"small_font_gtk2", "Sans 9",
105 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
106 {"normal_font_gtk2", "Sans 9",
107 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
108 {"bold_font_gtk2", "Sans 9 Bold",
109 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
111 {"attach_save_directory", NULL,
112 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
113 {"attach_load_directory", NULL,
114 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
117 {"mime_textviewer", NULL,
118 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
119 {"mime_open_command", "notepad '%s'",
120 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
123 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
124 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
127 {"ext_editor_command", "notepad %s",
128 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
130 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
133 # define SPECIFIC_PREFS prefs_common
137 parameter name, default value, pointer to the prefs variable, data type,
138 pointer to the widget pointer,
139 pointer to the function for data setting,
140 pointer to the function for widget setting
143 static PrefParam param[] = {
145 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
147 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
150 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
152 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
154 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
156 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
157 P_BOOL, NULL, NULL, NULL},
158 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
159 P_BOOL, NULL, NULL, NULL},
160 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
161 P_BOOL, NULL, NULL, NULL},
162 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
163 P_BOOL, NULL, NULL, NULL},
164 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
166 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
168 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
170 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
172 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
173 P_BOOL, NULL, NULL, NULL},
174 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
175 P_BOOL, NULL, NULL, NULL},
178 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
180 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
181 P_BOOL, NULL, NULL, NULL},
183 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
186 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
189 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
191 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
194 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
196 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
198 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
200 {"warn_empty_subj", "TRUE", &prefs_common.warn_empty_subj,
201 P_BOOL, NULL, NULL, NULL},
203 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
204 P_BOOL, NULL, NULL, NULL},
207 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
209 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
210 P_BOOL, NULL, NULL, NULL},
211 {"redirect_keep_from", "FALSE",
212 &prefs_common.redirect_keep_from, P_BOOL,
214 {"undo_level", "50", &prefs_common.undolevels, P_INT,
216 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
218 {"compose_subject_format", "",
219 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
220 {"compose_body_format", N_("Hello,\\n"),
221 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
222 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
224 {"type_any_header", "FALSE", &prefs_common.type_any_header, P_BOOL,
228 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
230 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
232 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
234 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
236 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
238 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
240 {"autosave", "TRUE", &prefs_common.autosave,
241 P_BOOL, NULL, NULL, NULL},
242 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
244 {"autosave_encrypted", "TRUE", &prefs_common.autosave_encrypted,
245 P_BOOL, NULL, NULL, NULL},
246 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
247 P_BOOL, NULL, NULL, NULL},
248 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
249 P_INT, NULL, NULL, NULL},
251 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
253 {"dictionary", "", &prefs_common.dictionary, P_STRING,
255 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
257 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
259 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
261 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
262 P_BOOL, NULL, NULL, NULL},
263 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
265 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
268 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
270 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
273 /* Account autoselection */
274 {"reply_account_autoselect", "TRUE",
275 &prefs_common.reply_account_autosel, P_BOOL,
277 {"forward_account_autoselect", "TRUE",
278 &prefs_common.forward_account_autosel, P_BOOL,
280 {"reedit_account_autoselect", "TRUE",
281 &prefs_common.reedit_account_autosel, P_BOOL,
284 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
288 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
291 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
296 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
298 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
299 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
301 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
303 {"forward_quote_format",
304 N_("\\n\\nBegin forwarded message:\\n\\n"
305 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
306 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
307 &prefs_common.fw_quotefmt, P_STRING,
309 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
313 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
314 {"widget_font", NULL,
315 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
317 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
318 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
319 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
320 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
321 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
322 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
323 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
327 {"widget_font_gtk2", NULL,
328 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
329 {"message_font_gtk2", "Monospace 9",
330 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
331 {"print_font_gtk2", "Monospace 9",
332 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
333 {"small_font_gtk2", "Sans 9",
334 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
335 {"normal_font_gtk2", "Sans 9",
336 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
337 {"bold_font_gtk2", "Sans Bold 9",
338 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
340 {"widget_font_gtk2", NULL,
341 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
342 {"message_font_gtk2", "Monospace 8",
343 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
344 {"print_font_gtk2", "Monospace 8",
345 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
346 {"small_font_gtk2", "Sans 8",
347 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
348 {"normal_font_gtk2", "Sans 8",
349 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
350 {"bold_font_gtk2", "Sans Bold 8",
351 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
354 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
356 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
360 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
362 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
364 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
366 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
368 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
370 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
372 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
374 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
376 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
378 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
380 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
382 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
384 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
386 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
388 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
390 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
392 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
394 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
396 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
398 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
400 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
402 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
404 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
406 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
408 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
410 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
412 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
414 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
416 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
418 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
422 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
424 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
426 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
429 {"display_folder_unread_num", "0",
430 &prefs_common.display_folder_unread, P_INT,
432 {"newsgroup_abbrev_len", "16",
433 &prefs_common.ng_abbrev_len, P_INT,
436 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
439 /* Display: Summary View */
440 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
442 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
444 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
445 P_STRING, NULL, NULL, NULL},
446 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
449 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
452 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
455 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
458 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
461 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
463 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
466 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
468 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
471 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
473 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
477 {"summary_col_show_mark", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_unread", "TRUE",
480 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_subject", "TRUE",
482 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_from", "TRUE",
484 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_to", "FALSE",
486 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_date", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_mime", "TRUE",
490 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_size", "TRUE",
492 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_number", "FALSE",
494 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_score", "FALSE",
496 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_locked", "FALSE",
498 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
499 {"summary_col_show_tags", "FALSE",
500 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
502 {"summary_col_pos_mark", "0",
503 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_unread", "1",
505 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_mime", "2",
507 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_subject", "3",
509 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_from", "4",
511 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_date", "5",
513 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_size", "6",
515 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_number", "7",
517 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_score", "8",
519 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_locked", "9",
521 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_to", "10",
523 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
524 {"summary_col_pos_tags", "11",
525 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
527 {"summary_col_size_mark", "10",
528 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
529 {"summary_col_size_unread", "13",
530 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
531 {"summary_col_size_mime", "10",
532 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_subject", "200",
535 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
536 {"summary_col_size_from", "120",
537 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
538 {"summary_col_size_to", "120",
539 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_subject", "300",
542 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_from", "150",
544 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_to", "150",
546 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_date", "118",
550 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_size", "45",
552 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_number", "40",
554 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_score", "40",
556 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
557 {"summary_col_size_locked", "13",
558 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
559 {"summary_col_size_tags", "150",
560 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
563 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
565 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
567 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
569 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
571 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
574 {"folder_col_show_folder", "TRUE",
575 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
576 {"folder_col_show_new", "TRUE",
577 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
578 {"folder_col_show_unread", "TRUE",
579 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
580 {"folder_col_show_total", "TRUE",
581 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
583 {"folder_col_pos_folder", "0",
584 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
585 {"folder_col_pos_new", "1",
586 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
587 {"folder_col_pos_unread", "2",
588 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
589 {"folder_col_pos_total", "3",
590 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
593 {"folder_col_size_folder", "120",
594 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
595 {"folder_col_size_new", "32",
596 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
597 {"folder_col_size_unread", "32",
598 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
599 {"folder_col_size_total", "32",
600 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_folder", "400",
603 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
604 {"folder_col_size_new", "32",
605 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
606 {"folder_col_size_unread", "32",
607 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
608 {"folder_col_size_total", "32",
609 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
611 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
613 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
616 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
618 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
620 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
622 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
624 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
627 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
629 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
631 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
633 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
635 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
637 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
639 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
641 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
643 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
646 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
648 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
650 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
652 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
654 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
656 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
658 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
660 {"compose_width", "600", &prefs_common.compose_width, P_INT,
662 {"compose_height", "560", &prefs_common.compose_height, P_INT,
665 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
667 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
669 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
671 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
673 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
675 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
677 {"compose_width", "700", &prefs_common.compose_width, P_INT,
679 {"compose_height", "470", &prefs_common.compose_height, P_INT,
682 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
684 {"compose_x", "0", &prefs_common.compose_x, P_INT,
686 {"compose_y", "0", &prefs_common.compose_y, P_INT,
689 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
692 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
694 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
696 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
698 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
700 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
702 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
704 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
706 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
708 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
710 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
712 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
714 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
715 P_BOOL, NULL, NULL, NULL},
717 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
718 P_BOOL, NULL, NULL, NULL},
719 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
721 {"display_xface", "TRUE", &prefs_common.display_xface,
722 P_BOOL, NULL, NULL, NULL},
723 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
725 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
727 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
729 {"line_space", "2", &prefs_common.line_space, P_INT,
731 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
734 {"enable_smooth_scroll", "FALSE",
735 &prefs_common.enable_smooth_scroll, P_BOOL,
737 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
739 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
741 {"hide_quoted", "TRUE",
742 &prefs_common.hide_quoted, P_BOOL,
744 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
746 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
749 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
752 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
754 {"attach_save_directory", NULL,
755 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
756 {"attach_load_directory", NULL,
757 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
760 {"mime_textviewer", NULL,
761 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
762 {"mime_open_command", "gedit '%s'",
763 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
764 {"show_inline_attachments", "TRUE",
765 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
769 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
772 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
775 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
776 NULL, NULL, NULL}, */
777 {"always_show_message_when_selected", "0",
778 &prefs_common.always_show_msg,
779 P_ENUM, NULL, NULL, NULL},
780 {"select_on_entry", "3", &prefs_common.select_on_entry,
781 P_ENUM, NULL, NULL, NULL},
782 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
783 P_BOOL, NULL, NULL, NULL},
785 /* do it SUMMARY_OPEN_ACTIONS-1 times */
786 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
788 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
790 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
792 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
794 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
796 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
798 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
801 {"mark_as_read_on_new_window", "FALSE",
802 &prefs_common.mark_as_read_on_new_window,
803 P_BOOL, NULL, NULL, NULL},
804 {"mark_as_read_delay", "0",
805 &prefs_common.mark_as_read_delay, P_INT,
807 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
809 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
811 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
814 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
815 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
818 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
821 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
823 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
827 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
828 P_BOOL, NULL, NULL, NULL},
829 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
830 P_INT, NULL, NULL, NULL},
831 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
832 P_INT, NULL, NULL, NULL},
836 {"uri_open_command", DEFAULT_BROWSER_CMD,
837 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
839 {"gtk_theme", DEFAULT_W32_GTK_THEME,
840 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
842 {"ext_editor_command", DEFAULT_EDITOR_CMD,
843 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
844 {"cmds_use_system_default", "TRUE",
845 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
846 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
847 P_BOOL, NULL, NULL, NULL},
848 {"session_passwords", "FALSE", &prefs_common.session_passwords,
849 P_BOOL, NULL, NULL, NULL},
850 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
852 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
854 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
856 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
857 P_BOOL, NULL, NULL, NULL},
858 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
860 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
863 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
866 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
870 #if defined(__OpenBSD__)
871 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
872 P_INT, NULL, NULL, NULL},
874 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
875 P_INT, NULL, NULL, NULL},
877 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
879 {"important_score", "1", &prefs_common.important_score, P_INT,
882 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
884 {"log_length", "500", &prefs_common.loglength, P_INT,
887 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
889 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
891 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
893 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
896 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
898 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
900 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
902 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
905 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
907 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
909 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
911 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
913 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
915 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
917 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
919 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
922 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
924 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
926 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
928 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
930 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
932 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
934 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
936 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
938 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
941 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
944 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
947 /* Some windows' sizes */
948 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
950 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
953 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
955 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
958 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
960 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
963 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
965 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
968 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
970 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
973 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
975 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
978 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
980 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
983 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
985 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
988 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
990 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
993 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
995 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
998 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1000 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1003 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1005 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1008 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1011 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1013 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1016 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1018 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1021 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1023 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1026 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1028 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1031 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1033 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1036 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1038 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1041 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1043 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1046 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1048 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1051 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1053 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1056 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1058 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1062 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1064 {"utf8_instead_of_locale_for_broken_mail", "0",
1065 &prefs_common.broken_are_utf8, P_INT,
1067 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1069 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1071 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1073 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1075 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1077 {"folderview_vscrollbar_policy", "0",
1078 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1080 {"textview_cursor_visible", "FALSE",
1081 &prefs_common.textview_cursor_visible, P_BOOL,
1083 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1085 #ifndef GENERIC_UMPC
1086 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1088 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1091 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1093 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1096 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1097 P_INT, NULL, NULL, NULL },
1098 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1099 P_STRING, NULL, NULL, NULL },
1100 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1101 P_BOOL, NULL, NULL, NULL },
1102 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1104 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1106 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1108 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1110 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1112 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1114 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1116 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1118 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1120 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1122 #ifndef GENERIC_UMPC
1123 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1126 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1130 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1132 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1134 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1136 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1138 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1140 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1142 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1144 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1146 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1148 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1150 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1152 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1154 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1156 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1158 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1161 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1162 P_BOOL, NULL, NULL, NULL },
1164 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1167 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1170 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1173 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1175 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1177 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1180 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1182 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1184 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1186 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1190 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1191 * Fallback to default_list if history file is not found
1193 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1194 GList *default_list)
1198 gchar buf[PREFSBUFSIZE];
1202 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1203 G_DIR_SEPARATOR_S, history,
1206 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1209 if ((fp = g_fopen(path, "rb")) == NULL) {
1210 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1212 /* returns default list if set, otherwise NULL */
1213 return default_list;
1216 while (fgets(buf, sizeof(buf), fp) != NULL) {
1218 if (buf[0] == '\0') continue;
1219 tmp = add_history(tmp, buf);
1223 tmp = g_list_reverse(tmp);
1229 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1231 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1233 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1237 * Read history list from the specified history file
1239 static GList *prefs_common_read_history(const gchar *history)
1241 return prefs_common_read_history_from_dir(NULL, history);
1244 void prefs_common_read_config(void)
1249 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1250 prefs_read_config(param, "Common", rcpath, NULL);
1252 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1257 tmp = g_strdup(gettext(prefs_common.date_format));
1258 g_free(prefs_common.date_format);
1259 prefs_common.date_format = tmp;
1261 prefs_common.mime_open_cmd_history =
1262 prefs_common_read_history(COMMAND_HISTORY);
1263 prefs_common.summary_quicksearch_history =
1264 prefs_common_read_history(QUICKSEARCH_HISTORY);
1265 prefs_common.summary_search_from_history =
1266 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1267 prefs_common.summary_search_to_history =
1268 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1269 prefs_common.summary_search_subject_history =
1270 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1271 prefs_common.summary_search_body_history =
1272 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1273 prefs_common.summary_search_adv_condition_history =
1274 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1275 prefs_common.message_search_history =
1276 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1277 prefs_common.compose_save_to_history =
1278 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1279 #ifndef USE_NEW_ADDRBOOK
1280 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1282 colorlabel_update_colortable_from_prefs();
1288 g_warning("failed to write\n"); \
1293 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1295 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1299 gchar *path, *tmp_path;
1302 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1303 G_DIR_SEPARATOR_S, history,
1306 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1309 tmp_path = g_strconcat(path, ".tmp", NULL);
1311 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1312 FILE_OP_ERROR(tmp_path, "fopen");
1316 for (cur = list; cur != NULL; cur = cur->next) {
1317 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1318 fputc('\n', fp) != EOF);
1321 if (fclose(fp) == EOF) {
1322 FILE_OP_ERROR(tmp_path, "fclose");
1330 if (g_rename(tmp_path, path) < 0) {
1331 FILE_OP_ERROR(path, "rename");
1343 * Save history list to the specified history file
1345 static void prefs_common_save_history(const gchar *history, GList *list)
1347 prefs_common_save_history_to_dir(NULL, history, list);
1352 void prefs_common_write_config(void)
1354 prefs_write_config(param, "Common", COMMON_RC);
1356 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1359 prefs_common_save_history(COMMAND_HISTORY,
1360 prefs_common.mime_open_cmd_history);
1361 prefs_common_save_history(QUICKSEARCH_HISTORY,
1362 prefs_common.summary_quicksearch_history);
1363 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1364 prefs_common.summary_search_from_history);
1365 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1366 prefs_common.summary_search_to_history);
1367 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1368 prefs_common.summary_search_subject_history);
1369 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1370 prefs_common.summary_search_body_history);
1371 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1372 prefs_common.summary_search_adv_condition_history);
1373 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1374 prefs_common.message_search_history);
1375 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1376 prefs_common.compose_save_to_history);
1378 #ifndef USE_NEW_ADDRBOOK
1379 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1380 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1381 prefs_common.addressbook_custom_attributes);
1385 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1386 both 'in' and 'out' must be non-NULL.
1387 'out' must be a pointer to a buffer whose size is at least equal
1388 to strlen(txt)+1, this buffer will get cleared. out's contents
1389 will always get set to a valid string, even if it's "".*/
1390 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1397 cm_return_if_fail( in != NULL );
1398 cm_return_if_fail( out != NULL );
1402 memset(out, 0, strlen(in)+1);
1403 while (*i != '\0') {
1404 if (*i == '\\' && *(i+1) == 'n') {
1407 } else if (*i == '\\' && *(i+1) == 't') {
1410 } else if (*i == '\\' && *(i+1) == '\\') {
1421 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1422 both 'in' and 'out' must be non-NULL.
1423 'out' must be a pointer to a buffer whose size is at least equal
1424 to 2*strlen(txt)+1. out's contents will always get set to a valid
1425 string, even if it's "". */
1426 void pref_get_escaped_pref(gchar *out, const gchar *in)
1433 cm_return_if_fail( in != NULL );
1434 cm_return_if_fail( out != NULL );
1438 while (*i != '\0') {
1442 } else if (*i == '\t') {
1445 } else if (*i == '\\') {
1456 /* set the contents of a textview widget from the internal \-escaped
1457 representation of a pref string. both txt and textview must be non-NULL. */
1458 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1460 GtkTextBuffer *buffer;
1463 cm_return_if_fail( textview != NULL );
1465 buffer = gtk_text_view_get_buffer(textview);
1468 gtk_text_buffer_set_text(buffer, "", -1);
1470 out = g_malloc(strlen(txt)+1);
1472 pref_get_unescaped_pref(out, txt);
1474 gtk_text_buffer_set_text(buffer, out, -1);
1479 /* set the contents of a gtkentry widget from the internal \-escaped
1480 representation of a pref string. both txt and entry must be non-NULL. */
1481 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1485 cm_return_if_fail( entry != NULL );
1487 gtk_entry_set_text(entry, "");
1489 out = g_malloc(strlen(txt)+1);
1491 pref_get_unescaped_pref(out, txt);
1493 gtk_entry_set_text(entry, out);
1498 /* get the \-escaped internal representation of a pref from the contents of
1499 a textview widget. textview must be non-NULL. */
1500 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1502 GtkTextBuffer *buffer;
1503 GtkTextIter start, end;
1506 cm_return_val_if_fail( textview != NULL, "" );
1508 buffer = gtk_text_view_get_buffer(textview);
1509 gtk_text_buffer_get_start_iter(buffer, &start);
1510 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1511 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1512 out = malloc(2*strlen(tmp)+1);
1514 pref_get_escaped_pref(out, tmp);
1520 /* get the \-escaped internal representation of a pref from the contents of
1521 a gtkentry widget. entry must be non-NULL. */
1522 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1526 cm_return_val_if_fail( entry != NULL, "" );
1528 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1529 out = malloc(2*strlen(tmp)+1);
1532 pref_get_escaped_pref(out, tmp);
1538 /* ugly hack to be able to get this pref from ssl_certificate.c */
1539 gboolean prefs_common_unsafe_ssl_certs(void)
1541 return prefs_common.unsafe_ssl_certs;
1544 gboolean prefs_common_enable_log_standard(void)
1546 return prefs_common.enable_log_standard;
1549 gboolean prefs_common_enable_log_warning(void)
1551 return prefs_common.enable_log_warning;
1553 gboolean prefs_common_enable_log_error(void)
1555 return prefs_common.enable_log_error;
1557 gboolean prefs_common_enable_log_status(void)
1559 return prefs_common.enable_log_status;
1563 return the translated name of a header, if the translate_header option is
1564 set, otherwise return the untranslated header name (header_name itself).
1565 this function is provided for convenience, it's an interface to
1566 prefs_common.trans_hdr.
1567 works with header names either with or without trailing colon, provided
1568 that gettext found such header name in the sources (they should all be
1569 found in src/gtk/headers.h anyway).
1571 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1573 if (header_name == NULL || *header_name == '\0')
1576 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1579 const gchar *prefs_common_get_uri_cmd(void)
1586 if (!prefs_common.cmds_use_system_default)
1587 return prefs_common.uri_cmd;
1589 tmp = g_find_program_in_path("xdg-open");
1591 return prefs_common.uri_cmd;
1594 return "xdg-open %s";
1598 const gchar *prefs_common_get_ext_editor_cmd(void)
1600 return prefs_common.ext_editor_cmd;
1601 #if 0 /* we should do that, but it detaches the editor and breaks
1602 compose.c's external composition. */
1605 if (!prefs_common.cmds_use_system_default)
1606 return prefs_common.ext_editor_cmd;
1608 tmp = g_find_program_in_path("xdg-open");
1610 return prefs_common.ext_editor_cmd;
1613 return "xdg-open %s";
1617 gboolean prefs_common_get_use_shred(void)
1619 return prefs_common.use_shred;
1622 gboolean prefs_common_get_flush_metadata (void)
1624 return prefs_common.flush_metadata;
1627 PrefsCommon *prefs_common_get_prefs(void)
1629 return &prefs_common;