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,
226 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
228 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
230 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
232 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
234 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
236 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
238 {"autosave", "TRUE", &prefs_common.autosave,
239 P_BOOL, NULL, NULL, NULL},
240 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
242 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
243 P_BOOL, NULL, NULL, NULL},
244 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
245 P_INT, NULL, NULL, NULL},
247 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
249 {"dictionary", "", &prefs_common.dictionary, P_STRING,
251 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
253 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
255 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
257 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
258 P_BOOL, NULL, NULL, NULL},
259 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
261 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
264 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
266 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
269 /* Account autoselection */
270 {"reply_account_autoselect", "TRUE",
271 &prefs_common.reply_account_autosel, P_BOOL,
273 {"forward_account_autoselect", "TRUE",
274 &prefs_common.forward_account_autosel, P_BOOL,
276 {"reedit_account_autoselect", "TRUE",
277 &prefs_common.reedit_account_autosel, P_BOOL,
280 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
284 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
287 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
292 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
294 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
295 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
297 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
299 {"forward_quote_format",
300 N_("\\n\\nBegin forwarded message:\\n\\n"
301 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
302 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
303 &prefs_common.fw_quotefmt, P_STRING,
305 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
309 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
310 {"widget_font", NULL,
311 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
312 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
313 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
314 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
315 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
317 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
318 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
319 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
323 {"widget_font_gtk2", NULL,
324 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
325 {"message_font_gtk2", "Monospace 9",
326 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
327 {"print_font_gtk2", "Monospace 9",
328 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
329 {"small_font_gtk2", "Sans 9",
330 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
331 {"normal_font_gtk2", "Sans 9",
332 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
333 {"bold_font_gtk2", "Sans Bold 9",
334 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
336 {"widget_font_gtk2", NULL,
337 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
338 {"message_font_gtk2", "Monospace 8",
339 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
340 {"print_font_gtk2", "Monospace 8",
341 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
342 {"small_font_gtk2", "Sans 8",
343 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
344 {"normal_font_gtk2", "Sans 8",
345 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
346 {"bold_font_gtk2", "Sans Bold 8",
347 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
350 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
352 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
356 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
358 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
360 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
362 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
364 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
366 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
368 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
370 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
372 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
374 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
376 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
378 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
380 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
382 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
384 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
386 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
388 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
390 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
392 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
394 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
396 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
398 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
400 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
402 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
404 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
406 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
408 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
410 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
412 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
414 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
418 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
420 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
422 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
425 {"display_folder_unread_num", "0",
426 &prefs_common.display_folder_unread, P_INT,
428 {"newsgroup_abbrev_len", "16",
429 &prefs_common.ng_abbrev_len, P_INT,
432 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
435 /* Display: Summary View */
436 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
438 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
440 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
441 P_STRING, NULL, NULL, NULL},
442 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
445 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
448 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
451 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
454 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
457 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
459 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
462 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
464 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
467 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
469 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
473 {"summary_col_show_mark", "TRUE",
474 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
475 {"summary_col_show_unread", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_subject", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_from", "TRUE",
480 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_to", "FALSE",
482 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_date", "TRUE",
484 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_mime", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_size", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_number", "FALSE",
490 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_score", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_locked", "FALSE",
494 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_tags", "FALSE",
496 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
498 {"summary_col_pos_mark", "0",
499 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
500 {"summary_col_pos_unread", "1",
501 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_mime", "2",
503 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_subject", "3",
505 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_from", "4",
507 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_date", "5",
509 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_size", "6",
511 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_number", "7",
513 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_score", "8",
515 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_locked", "9",
517 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_to", "10",
519 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_tags", "11",
521 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
523 {"summary_col_size_mark", "10",
524 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
525 {"summary_col_size_unread", "13",
526 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
527 {"summary_col_size_mime", "10",
528 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_subject", "200",
531 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_from", "120",
533 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_to", "120",
535 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_subject", "300",
538 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_from", "150",
540 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_to", "150",
542 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_date", "118",
546 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_size", "45",
548 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_number", "40",
550 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_score", "40",
552 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_locked", "13",
554 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_tags", "150",
556 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
559 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
561 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
563 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
565 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
567 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
570 {"folder_col_show_folder", "TRUE",
571 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
572 {"folder_col_show_new", "TRUE",
573 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
574 {"folder_col_show_unread", "TRUE",
575 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
576 {"folder_col_show_total", "TRUE",
577 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
579 {"folder_col_pos_folder", "0",
580 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
581 {"folder_col_pos_new", "1",
582 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
583 {"folder_col_pos_unread", "2",
584 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
585 {"folder_col_pos_total", "3",
586 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
589 {"folder_col_size_folder", "120",
590 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
591 {"folder_col_size_new", "32",
592 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
593 {"folder_col_size_unread", "32",
594 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
595 {"folder_col_size_total", "32",
596 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
598 {"folder_col_size_folder", "400",
599 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_new", "32",
601 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_unread", "32",
603 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
604 {"folder_col_size_total", "32",
605 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
607 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
609 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
612 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
614 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
616 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
618 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
620 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
623 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
625 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
627 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
629 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
631 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
633 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
635 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
637 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
640 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
642 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
644 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
646 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
648 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
650 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
652 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
654 {"compose_width", "600", &prefs_common.compose_width, P_INT,
656 {"compose_height", "560", &prefs_common.compose_height, P_INT,
659 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
661 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
663 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
665 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
667 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
669 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
671 {"compose_width", "700", &prefs_common.compose_width, P_INT,
673 {"compose_height", "470", &prefs_common.compose_height, P_INT,
676 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
678 {"compose_x", "0", &prefs_common.compose_x, P_INT,
680 {"compose_y", "0", &prefs_common.compose_y, P_INT,
683 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
686 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
688 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
690 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
692 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
694 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
696 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
698 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
700 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
702 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
704 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
706 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
708 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
709 P_BOOL, NULL, NULL, NULL},
711 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
712 P_BOOL, NULL, NULL, NULL},
713 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
715 {"display_xface", "TRUE", &prefs_common.display_xface,
716 P_BOOL, NULL, NULL, NULL},
717 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
719 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
721 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
723 {"line_space", "2", &prefs_common.line_space, P_INT,
725 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
728 {"enable_smooth_scroll", "FALSE",
729 &prefs_common.enable_smooth_scroll, P_BOOL,
731 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
733 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
735 {"hide_quoted", "TRUE",
736 &prefs_common.hide_quoted, P_BOOL,
738 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
740 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
743 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
746 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
748 {"attach_save_directory", NULL,
749 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
750 {"attach_load_directory", NULL,
751 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
754 {"mime_textviewer", NULL,
755 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
756 {"mime_open_command", "gedit '%s'",
757 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
758 {"show_inline_attachments", "TRUE",
759 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
763 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
766 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
769 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
770 NULL, NULL, NULL}, */
771 {"always_show_message_when_selected", "0",
772 &prefs_common.always_show_msg,
773 P_ENUM, NULL, NULL, NULL},
774 {"select_on_entry", "3", &prefs_common.select_on_entry,
775 P_ENUM, NULL, NULL, NULL},
776 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
777 P_BOOL, NULL, NULL, NULL},
779 /* do it SUMMARY_OPEN_ACTIONS-1 times */
780 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
782 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
784 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
786 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
788 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
790 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
792 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
795 {"mark_as_read_on_new_window", "FALSE",
796 &prefs_common.mark_as_read_on_new_window,
797 P_BOOL, NULL, NULL, NULL},
798 {"mark_as_read_delay", "0",
799 &prefs_common.mark_as_read_delay, P_INT,
801 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
803 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
805 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
808 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
809 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
812 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
815 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
817 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
821 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
822 P_BOOL, NULL, NULL, NULL},
823 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
824 P_INT, NULL, NULL, NULL},
825 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
826 P_INT, NULL, NULL, NULL},
830 {"uri_open_command", DEFAULT_BROWSER_CMD,
831 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
833 {"gtk_theme", DEFAULT_W32_GTK_THEME,
834 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
836 {"ext_editor_command", DEFAULT_EDITOR_CMD,
837 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
838 {"cmds_use_system_default", "TRUE",
839 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
840 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
841 P_BOOL, NULL, NULL, NULL},
842 {"session_passwords", "FALSE", &prefs_common.session_passwords,
843 P_BOOL, NULL, NULL, NULL},
844 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
846 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
848 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
850 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
851 P_BOOL, NULL, NULL, NULL},
852 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
854 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
857 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
860 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
864 #if defined(__OpenBSD__)
865 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
866 P_INT, NULL, NULL, NULL},
868 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
869 P_INT, NULL, NULL, NULL},
871 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
873 {"important_score", "1", &prefs_common.important_score, P_INT,
876 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
878 {"log_length", "500", &prefs_common.loglength, P_INT,
881 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
883 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
885 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
887 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
890 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
892 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
894 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
896 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
899 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
901 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
903 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
905 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
907 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
909 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
911 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
913 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
916 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
918 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
920 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
922 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
924 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
926 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
928 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
930 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
932 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
935 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
938 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
941 /* Some windows' sizes */
942 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
944 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
947 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
949 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
952 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
954 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
957 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
959 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
962 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
964 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
967 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
969 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
972 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
974 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
977 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
979 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
982 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
984 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
987 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
989 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
992 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
994 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
997 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
999 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1002 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1005 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1007 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1010 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1012 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1015 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1017 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1020 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1022 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1025 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1027 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1030 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1032 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1035 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1037 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1040 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1042 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1045 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1047 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1050 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1052 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1056 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1058 {"utf8_instead_of_locale_for_broken_mail", "0",
1059 &prefs_common.broken_are_utf8, P_INT,
1061 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1063 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1065 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1067 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1069 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1071 {"folderview_vscrollbar_policy", "0",
1072 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1074 {"textview_cursor_visible", "FALSE",
1075 &prefs_common.textview_cursor_visible, P_BOOL,
1077 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1079 #ifndef GENERIC_UMPC
1080 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1082 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1085 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1087 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1090 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1091 P_INT, NULL, NULL, NULL },
1092 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1093 P_STRING, NULL, NULL, NULL },
1094 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1095 P_BOOL, NULL, NULL, NULL },
1096 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1098 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1100 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1102 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1104 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1106 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1108 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1110 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1112 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1114 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1116 #ifndef GENERIC_UMPC
1117 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1120 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1124 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1126 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1128 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1130 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1132 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1134 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1136 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1138 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1140 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1142 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1144 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1146 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1148 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1150 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1152 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1155 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1156 P_BOOL, NULL, NULL, NULL },
1158 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1161 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1164 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1167 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1169 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1171 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1174 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1178 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1179 * Fallback to default_list if history file is not found
1181 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1182 GList *default_list)
1186 gchar buf[PREFSBUFSIZE];
1190 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1191 G_DIR_SEPARATOR_S, history,
1194 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1197 if ((fp = g_fopen(path, "rb")) == NULL) {
1198 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1200 /* returns default list if set, otherwise NULL */
1201 return default_list;
1204 while (fgets(buf, sizeof(buf), fp) != NULL) {
1206 if (buf[0] == '\0') continue;
1207 tmp = add_history(tmp, buf);
1211 tmp = g_list_reverse(tmp);
1217 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1219 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1221 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1225 * Read history list from the specified history file
1227 static GList *prefs_common_read_history(const gchar *history)
1229 return prefs_common_read_history_from_dir(NULL, history);
1232 void prefs_common_read_config(void)
1237 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1238 prefs_read_config(param, "Common", rcpath, NULL);
1240 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1245 tmp = g_strdup(gettext(prefs_common.date_format));
1246 g_free(prefs_common.date_format);
1247 prefs_common.date_format = tmp;
1249 prefs_common.mime_open_cmd_history =
1250 prefs_common_read_history(COMMAND_HISTORY);
1251 prefs_common.summary_quicksearch_history =
1252 prefs_common_read_history(QUICKSEARCH_HISTORY);
1253 prefs_common.summary_search_from_history =
1254 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1255 prefs_common.summary_search_to_history =
1256 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1257 prefs_common.summary_search_subject_history =
1258 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1259 prefs_common.summary_search_body_history =
1260 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1261 prefs_common.summary_search_adv_condition_history =
1262 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1263 prefs_common.message_search_history =
1264 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1265 prefs_common.compose_save_to_history =
1266 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1267 #ifndef USE_NEW_ADDRBOOK
1268 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1270 colorlabel_update_colortable_from_prefs();
1276 g_warning("failed to write\n"); \
1281 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1283 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1287 gchar *path, *tmp_path;
1290 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1291 G_DIR_SEPARATOR_S, history,
1294 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1297 tmp_path = g_strconcat(path, ".tmp", NULL);
1299 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1300 FILE_OP_ERROR(tmp_path, "fopen");
1304 for (cur = list; cur != NULL; cur = cur->next) {
1305 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1306 fputc('\n', fp) != EOF);
1309 if (fclose(fp) == EOF) {
1310 FILE_OP_ERROR(tmp_path, "fclose");
1318 if (g_rename(tmp_path, path) < 0) {
1319 FILE_OP_ERROR(path, "rename");
1331 * Save history list to the specified history file
1333 static void prefs_common_save_history(const gchar *history, GList *list)
1335 prefs_common_save_history_to_dir(NULL, history, list);
1340 void prefs_common_write_config(void)
1342 prefs_write_config(param, "Common", COMMON_RC);
1344 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1347 prefs_common_save_history(COMMAND_HISTORY,
1348 prefs_common.mime_open_cmd_history);
1349 prefs_common_save_history(QUICKSEARCH_HISTORY,
1350 prefs_common.summary_quicksearch_history);
1351 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1352 prefs_common.summary_search_from_history);
1353 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1354 prefs_common.summary_search_to_history);
1355 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1356 prefs_common.summary_search_subject_history);
1357 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1358 prefs_common.summary_search_body_history);
1359 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1360 prefs_common.summary_search_adv_condition_history);
1361 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1362 prefs_common.message_search_history);
1363 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1364 prefs_common.compose_save_to_history);
1366 #ifndef USE_NEW_ADDRBOOK
1367 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1368 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1369 prefs_common.addressbook_custom_attributes);
1373 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1374 both 'in' and 'out' must be non-NULL.
1375 'out' must be a pointer to a buffer whose size is at least equal
1376 to strlen(txt)+1, this buffer will get cleared. out's contents
1377 will always get set to a valid string, even if it's "".*/
1378 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1385 cm_return_if_fail( in != NULL );
1386 cm_return_if_fail( out != NULL );
1390 memset(out, 0, strlen(in)+1);
1391 while (*i != '\0') {
1392 if (*i == '\\' && *(i+1) == 'n') {
1395 } else if (*i == '\\' && *(i+1) == 't') {
1398 } else if (*i == '\\' && *(i+1) == '\\') {
1409 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1410 both 'in' and 'out' must be non-NULL.
1411 'out' must be a pointer to a buffer whose size is at least equal
1412 to 2*strlen(txt)+1. out's contents will always get set to a valid
1413 string, even if it's "". */
1414 void pref_get_escaped_pref(gchar *out, const gchar *in)
1421 cm_return_if_fail( in != NULL );
1422 cm_return_if_fail( out != NULL );
1426 while (*i != '\0') {
1430 } else if (*i == '\t') {
1433 } else if (*i == '\\') {
1444 /* set the contents of a textview widget from the internal \-escaped
1445 representation of a pref string. both txt and textview must be non-NULL. */
1446 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1448 GtkTextBuffer *buffer;
1451 cm_return_if_fail( textview != NULL );
1453 buffer = gtk_text_view_get_buffer(textview);
1456 gtk_text_buffer_set_text(buffer, "", -1);
1458 out = g_malloc(strlen(txt)+1);
1460 pref_get_unescaped_pref(out, txt);
1462 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1467 /* set the contents of a gtkentry widget from the internal \-escaped
1468 representation of a pref string. both txt and entry must be non-NULL. */
1469 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1473 cm_return_if_fail( entry != NULL );
1475 gtk_entry_set_text(entry, "");
1477 out = g_malloc(strlen(txt)+1);
1479 pref_get_unescaped_pref(out, txt);
1481 gtk_entry_set_text(entry, out?out:"");
1486 /* get the \-escaped internal representation of a pref from the contents of
1487 a textview widget. textview must be non-NULL. */
1488 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1490 GtkTextBuffer *buffer;
1491 GtkTextIter start, end;
1494 cm_return_val_if_fail( textview != NULL, "" );
1496 buffer = gtk_text_view_get_buffer(textview);
1497 gtk_text_buffer_get_start_iter(buffer, &start);
1498 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1499 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1500 out = malloc(2*strlen(tmp)+1);
1502 pref_get_escaped_pref(out, tmp);
1508 /* get the \-escaped internal representation of a pref from the contents of
1509 a gtkentry widget. entry must be non-NULL. */
1510 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1514 cm_return_val_if_fail( entry != NULL, "" );
1516 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1517 out = malloc(2*strlen(tmp)+1);
1520 pref_get_escaped_pref(out, tmp);
1526 /* ugly hack to be able to get this pref from ssl_certificate.c */
1527 gboolean prefs_common_unsafe_ssl_certs(void)
1529 return prefs_common.unsafe_ssl_certs;
1532 gboolean prefs_common_enable_log_standard(void)
1534 return prefs_common.enable_log_standard;
1537 gboolean prefs_common_enable_log_warning(void)
1539 return prefs_common.enable_log_warning;
1541 gboolean prefs_common_enable_log_error(void)
1543 return prefs_common.enable_log_error;
1545 gboolean prefs_common_enable_log_status(void)
1547 return prefs_common.enable_log_status;
1551 return the translated name of a header, if the translate_header option is
1552 set, otherwise return the untranslated header name (header_name itself).
1553 this function is provided for convenience, it's an interface to
1554 prefs_common.trans_hdr.
1555 works with header names either with or without trailing colon, provided
1556 that gettext found such header name in the sources (they should all be
1557 found in src/gtk/headers.h anyway).
1559 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1561 if (header_name == NULL || *header_name == '\0')
1564 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1567 const gchar *prefs_common_get_uri_cmd(void)
1574 if (!prefs_common.cmds_use_system_default)
1575 return prefs_common.uri_cmd;
1577 tmp = g_find_program_in_path("xdg-open");
1579 return prefs_common.uri_cmd;
1582 return "xdg-open %s";
1586 const gchar *prefs_common_get_ext_editor_cmd(void)
1588 return prefs_common.ext_editor_cmd;
1589 #if 0 /* we should do that, but it detaches the editor and breaks
1590 compose.c's external composition. */
1593 if (!prefs_common.cmds_use_system_default)
1594 return prefs_common.ext_editor_cmd;
1596 tmp = g_find_program_in_path("xdg-open");
1598 return prefs_common.ext_editor_cmd;
1601 return "xdg-open %s";
1605 gboolean prefs_common_get_use_shred(void)
1607 return prefs_common.use_shred;
1610 gboolean prefs_common_get_flush_metadata (void)
1612 return prefs_common.flush_metadata;
1615 PrefsCommon *prefs_common_get_prefs(void)
1617 return &prefs_common;