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,
201 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
202 P_BOOL, NULL, NULL, NULL},
205 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
207 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
208 P_BOOL, NULL, NULL, NULL},
209 {"redirect_keep_from", "FALSE",
210 &prefs_common.redirect_keep_from, P_BOOL,
212 {"undo_level", "50", &prefs_common.undolevels, P_INT,
214 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
216 {"compose_subject_format", "",
217 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
218 {"compose_body_format", N_("Hello,\\n"),
219 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
220 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
224 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
226 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
228 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
230 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
232 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
234 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
236 {"autosave", "TRUE", &prefs_common.autosave,
237 P_BOOL, NULL, NULL, NULL},
238 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
240 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
241 P_BOOL, NULL, NULL, NULL},
242 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
243 P_INT, NULL, NULL, NULL},
245 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
247 {"dictionary", "", &prefs_common.dictionary, P_STRING,
249 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
251 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
253 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
255 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
256 P_BOOL, NULL, NULL, NULL},
257 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
259 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
262 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
264 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
267 /* Account autoselection */
268 {"reply_account_autoselect", "TRUE",
269 &prefs_common.reply_account_autosel, P_BOOL,
271 {"forward_account_autoselect", "TRUE",
272 &prefs_common.forward_account_autosel, P_BOOL,
274 {"reedit_account_autoselect", "TRUE",
275 &prefs_common.reedit_account_autosel, P_BOOL,
278 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
282 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
285 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
290 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
292 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
293 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
295 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
297 {"forward_quote_format",
298 N_("\\n\\nBegin forwarded message:\\n\\n"
299 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
300 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
301 &prefs_common.fw_quotefmt, P_STRING,
303 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
307 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
308 {"widget_font", NULL,
309 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
310 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
311 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
312 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
313 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
314 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
315 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
317 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
321 {"widget_font_gtk2", NULL,
322 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
323 {"message_font_gtk2", "Monospace 9",
324 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
325 {"print_font_gtk2", "Monospace 9",
326 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
327 {"small_font_gtk2", "Sans 9",
328 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
329 {"normal_font_gtk2", "Sans 9",
330 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
331 {"bold_font_gtk2", "Sans Bold 9",
332 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
334 {"widget_font_gtk2", NULL,
335 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
336 {"message_font_gtk2", "Monospace 8",
337 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
338 {"print_font_gtk2", "Monospace 8",
339 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
340 {"small_font_gtk2", "Sans 8",
341 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
342 {"normal_font_gtk2", "Sans 8",
343 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
344 {"bold_font_gtk2", "Sans Bold 8",
345 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
348 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
350 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
354 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
356 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
358 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
360 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
362 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
364 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
366 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
368 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
370 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
372 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
374 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
376 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
378 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
380 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
382 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
384 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
386 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
388 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
390 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
392 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
394 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
396 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
398 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
400 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
402 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
404 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
406 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
408 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
410 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
412 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
416 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
418 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
420 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
423 {"display_folder_unread_num", "0",
424 &prefs_common.display_folder_unread, P_INT,
426 {"newsgroup_abbrev_len", "16",
427 &prefs_common.ng_abbrev_len, P_INT,
430 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
433 /* Display: Summary View */
434 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
436 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
438 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
439 P_STRING, NULL, NULL, NULL},
440 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
443 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
446 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
449 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
452 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
455 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
457 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
460 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
462 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
465 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
467 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
471 {"summary_col_show_mark", "TRUE",
472 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
473 {"summary_col_show_unread", "TRUE",
474 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
475 {"summary_col_show_subject", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_from", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_to", "FALSE",
480 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_date", "TRUE",
482 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_mime", "TRUE",
484 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_size", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_number", "FALSE",
488 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_score", "FALSE",
490 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_locked", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_tags", "FALSE",
494 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
496 {"summary_col_pos_mark", "0",
497 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
498 {"summary_col_pos_unread", "1",
499 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
500 {"summary_col_pos_mime", "2",
501 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_subject", "3",
503 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_from", "4",
505 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_date", "5",
507 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_size", "6",
509 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_number", "7",
511 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_score", "8",
513 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_locked", "9",
515 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_to", "10",
517 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_tags", "11",
519 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
521 {"summary_col_size_mark", "10",
522 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
523 {"summary_col_size_unread", "13",
524 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
525 {"summary_col_size_mime", "10",
526 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
528 {"summary_col_size_subject", "200",
529 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_from", "120",
531 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_to", "120",
533 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
535 {"summary_col_size_subject", "300",
536 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_from", "150",
538 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_to", "150",
540 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_date", "118",
544 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_size", "45",
546 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_number", "40",
548 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_score", "40",
550 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_locked", "13",
552 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_tags", "150",
554 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
557 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
559 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
561 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
563 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
565 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
568 {"folder_col_show_folder", "TRUE",
569 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
570 {"folder_col_show_new", "TRUE",
571 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
572 {"folder_col_show_unread", "TRUE",
573 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
574 {"folder_col_show_total", "TRUE",
575 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
577 {"folder_col_pos_folder", "0",
578 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
579 {"folder_col_pos_new", "1",
580 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
581 {"folder_col_pos_unread", "2",
582 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
583 {"folder_col_pos_total", "3",
584 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
587 {"folder_col_size_folder", "120",
588 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
589 {"folder_col_size_new", "32",
590 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
591 {"folder_col_size_unread", "32",
592 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
593 {"folder_col_size_total", "32",
594 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
596 {"folder_col_size_folder", "400",
597 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
598 {"folder_col_size_new", "32",
599 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_unread", "32",
601 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_total", "32",
603 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
605 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
607 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
610 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
612 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
614 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
616 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
618 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
621 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
623 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
625 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
627 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
629 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
631 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
633 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
635 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
638 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
640 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
642 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
644 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
646 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
648 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
650 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
652 {"compose_width", "600", &prefs_common.compose_width, P_INT,
654 {"compose_height", "560", &prefs_common.compose_height, P_INT,
657 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
659 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
661 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
663 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
665 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
667 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
669 {"compose_width", "700", &prefs_common.compose_width, P_INT,
671 {"compose_height", "470", &prefs_common.compose_height, P_INT,
674 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
676 {"compose_x", "0", &prefs_common.compose_x, P_INT,
678 {"compose_y", "0", &prefs_common.compose_y, P_INT,
681 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
684 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
686 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
688 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
690 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
692 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
694 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
696 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
698 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
700 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
702 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
704 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
706 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
707 P_BOOL, NULL, NULL, NULL},
709 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
710 P_BOOL, NULL, NULL, NULL},
711 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
713 {"display_xface", "TRUE", &prefs_common.display_xface,
714 P_BOOL, NULL, NULL, NULL},
715 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
717 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
719 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
721 {"line_space", "2", &prefs_common.line_space, P_INT,
723 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
726 {"enable_smooth_scroll", "FALSE",
727 &prefs_common.enable_smooth_scroll, P_BOOL,
729 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
731 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
733 {"hide_quoted", "TRUE",
734 &prefs_common.hide_quoted, P_BOOL,
736 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
738 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
741 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
744 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
746 {"attach_save_directory", NULL,
747 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
748 {"attach_load_directory", NULL,
749 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
752 {"mime_textviewer", NULL,
753 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
754 {"mime_open_command", "gedit '%s'",
755 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
756 {"show_inline_attachments", "TRUE",
757 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
761 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
764 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
767 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
768 NULL, NULL, NULL}, */
769 {"always_show_message_when_selected", "0",
770 &prefs_common.always_show_msg,
771 P_ENUM, NULL, NULL, NULL},
772 {"select_on_entry", "3", &prefs_common.select_on_entry,
773 P_ENUM, NULL, NULL, NULL},
774 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
775 P_BOOL, NULL, NULL, NULL},
777 /* do it SUMMARY_OPEN_ACTIONS-1 times */
778 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
780 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
782 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
784 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
786 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
788 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
790 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
793 {"mark_as_read_on_new_window", "FALSE",
794 &prefs_common.mark_as_read_on_new_window,
795 P_BOOL, NULL, NULL, NULL},
796 {"mark_as_read_delay", "0",
797 &prefs_common.mark_as_read_delay, P_INT,
799 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
801 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
803 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
806 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
807 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
810 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
813 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
815 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
819 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
820 P_BOOL, NULL, NULL, NULL},
821 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
822 P_INT, NULL, NULL, NULL},
823 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
824 P_INT, NULL, NULL, NULL},
828 {"uri_open_command", DEFAULT_BROWSER_CMD,
829 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
831 {"gtk_theme", DEFAULT_W32_GTK_THEME,
832 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
834 {"ext_editor_command", DEFAULT_EDITOR_CMD,
835 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
836 {"cmds_use_system_default", "TRUE",
837 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
838 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
839 P_BOOL, NULL, NULL, NULL},
840 {"session_passwords", "FALSE", &prefs_common.session_passwords,
841 P_BOOL, NULL, NULL, NULL},
842 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
844 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
846 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
848 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
849 P_BOOL, NULL, NULL, NULL},
850 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
852 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
855 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
858 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
862 #if defined(__OpenBSD__)
863 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
864 P_INT, NULL, NULL, NULL},
866 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
867 P_INT, NULL, NULL, NULL},
869 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
871 {"important_score", "1", &prefs_common.important_score, P_INT,
874 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
876 {"log_length", "500", &prefs_common.loglength, P_INT,
879 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
881 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
883 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
885 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
888 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
890 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
892 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
894 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
897 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
899 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
901 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
903 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
905 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
907 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
909 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
911 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
914 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
916 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
918 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
920 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
922 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
924 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
926 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
928 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
930 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
933 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
936 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
939 /* Some windows' sizes */
940 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
942 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
945 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
947 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
950 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
952 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
955 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
957 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
960 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
962 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
965 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
967 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
970 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
972 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
975 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
977 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
980 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
982 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
985 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
987 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
990 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
992 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
995 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
997 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1000 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1003 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1005 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1008 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1010 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1013 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1015 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1018 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1020 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1023 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1025 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1028 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1030 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1033 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1035 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1038 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1040 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1043 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1045 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1048 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1050 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1054 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1056 {"utf8_instead_of_locale_for_broken_mail", "0",
1057 &prefs_common.broken_are_utf8, P_INT,
1059 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1061 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1063 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1065 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1067 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1069 {"folderview_vscrollbar_policy", "0",
1070 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1072 {"textview_cursor_visible", "FALSE",
1073 &prefs_common.textview_cursor_visible, P_BOOL,
1075 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1077 #ifndef GENERIC_UMPC
1078 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1080 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1083 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1085 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1088 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1089 P_INT, NULL, NULL, NULL },
1090 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1091 P_STRING, NULL, NULL, NULL },
1092 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1093 P_BOOL, NULL, NULL, NULL },
1094 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1096 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1098 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1100 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1102 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1104 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1106 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1108 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1110 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1112 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1114 #ifndef GENERIC_UMPC
1115 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1118 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1122 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1124 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1126 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1128 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1130 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1132 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1134 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1136 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1138 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1140 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1142 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1144 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1146 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1148 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1150 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1153 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1154 P_BOOL, NULL, NULL, NULL },
1156 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1159 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1162 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1165 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1167 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1169 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1172 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1176 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1177 * Fallback to default_list if history file is not found
1179 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1180 GList *default_list)
1184 gchar buf[PREFSBUFSIZE];
1188 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1189 G_DIR_SEPARATOR_S, history,
1192 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1195 if ((fp = g_fopen(path, "rb")) == NULL) {
1196 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1198 /* returns default list if set, otherwise NULL */
1199 return default_list;
1202 while (fgets(buf, sizeof(buf), fp) != NULL) {
1204 if (buf[0] == '\0') continue;
1205 tmp = add_history(tmp, buf);
1209 tmp = g_list_reverse(tmp);
1215 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1217 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1219 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1223 * Read history list from the specified history file
1225 static GList *prefs_common_read_history(const gchar *history)
1227 return prefs_common_read_history_from_dir(NULL, history);
1230 void prefs_common_read_config(void)
1235 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1236 prefs_read_config(param, "Common", rcpath, NULL);
1238 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1243 tmp = g_strdup(gettext(prefs_common.date_format));
1244 g_free(prefs_common.date_format);
1245 prefs_common.date_format = tmp;
1247 prefs_common.mime_open_cmd_history =
1248 prefs_common_read_history(COMMAND_HISTORY);
1249 prefs_common.summary_quicksearch_history =
1250 prefs_common_read_history(QUICKSEARCH_HISTORY);
1251 prefs_common.summary_search_from_history =
1252 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1253 prefs_common.summary_search_to_history =
1254 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1255 prefs_common.summary_search_subject_history =
1256 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1257 prefs_common.summary_search_body_history =
1258 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1259 prefs_common.summary_search_adv_condition_history =
1260 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1261 prefs_common.message_search_history =
1262 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1263 prefs_common.compose_save_to_history =
1264 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1265 #ifndef USE_NEW_ADDRBOOK
1266 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1268 colorlabel_update_colortable_from_prefs();
1274 g_warning("failed to write\n"); \
1279 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1281 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1285 gchar *path, *tmp_path;
1288 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1289 G_DIR_SEPARATOR_S, history,
1292 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1295 tmp_path = g_strconcat(path, ".tmp", NULL);
1297 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1298 FILE_OP_ERROR(tmp_path, "fopen");
1302 for (cur = list; cur != NULL; cur = cur->next) {
1303 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1304 fputc('\n', fp) != EOF);
1307 if (fclose(fp) == EOF) {
1308 FILE_OP_ERROR(tmp_path, "fclose");
1316 if (g_rename(tmp_path, path) < 0) {
1317 FILE_OP_ERROR(path, "rename");
1329 * Save history list to the specified history file
1331 static void prefs_common_save_history(const gchar *history, GList *list)
1333 prefs_common_save_history_to_dir(NULL, history, list);
1338 void prefs_common_write_config(void)
1340 prefs_write_config(param, "Common", COMMON_RC);
1342 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1345 prefs_common_save_history(COMMAND_HISTORY,
1346 prefs_common.mime_open_cmd_history);
1347 prefs_common_save_history(QUICKSEARCH_HISTORY,
1348 prefs_common.summary_quicksearch_history);
1349 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1350 prefs_common.summary_search_from_history);
1351 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1352 prefs_common.summary_search_to_history);
1353 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1354 prefs_common.summary_search_subject_history);
1355 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1356 prefs_common.summary_search_body_history);
1357 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1358 prefs_common.summary_search_adv_condition_history);
1359 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1360 prefs_common.message_search_history);
1361 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1362 prefs_common.compose_save_to_history);
1364 #ifndef USE_NEW_ADDRBOOK
1365 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1366 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1367 prefs_common.addressbook_custom_attributes);
1371 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1372 both 'in' and 'out' must be non-NULL.
1373 'out' must be a pointer to a buffer whose size is at least equal
1374 to strlen(txt)+1, this buffer will get cleared. out's contents
1375 will always get set to a valid string, even if it's "".*/
1376 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1383 cm_return_if_fail( in != NULL );
1384 cm_return_if_fail( out != NULL );
1388 memset(out, 0, strlen(in)+1);
1389 while (*i != '\0') {
1390 if (*i == '\\' && *(i+1) == 'n') {
1393 } else if (*i == '\\' && *(i+1) == 't') {
1396 } else if (*i == '\\' && *(i+1) == '\\') {
1407 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1408 both 'in' and 'out' must be non-NULL.
1409 'out' must be a pointer to a buffer whose size is at least equal
1410 to 2*strlen(txt)+1. out's contents will always get set to a valid
1411 string, even if it's "". */
1412 void pref_get_escaped_pref(gchar *out, const gchar *in)
1419 cm_return_if_fail( in != NULL );
1420 cm_return_if_fail( out != NULL );
1424 while (*i != '\0') {
1428 } else if (*i == '\t') {
1431 } else if (*i == '\\') {
1442 /* set the contents of a textview widget from the internal \-escaped
1443 representation of a pref string. both txt and textview must be non-NULL. */
1444 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1446 GtkTextBuffer *buffer;
1449 cm_return_if_fail( textview != NULL );
1451 buffer = gtk_text_view_get_buffer(textview);
1454 gtk_text_buffer_set_text(buffer, "", -1);
1456 out = g_malloc(strlen(txt)+1);
1458 pref_get_unescaped_pref(out, txt);
1460 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1465 /* set the contents of a gtkentry widget from the internal \-escaped
1466 representation of a pref string. both txt and entry must be non-NULL. */
1467 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1471 cm_return_if_fail( entry != NULL );
1473 gtk_entry_set_text(entry, "");
1475 out = g_malloc(strlen(txt)+1);
1477 pref_get_unescaped_pref(out, txt);
1479 gtk_entry_set_text(entry, out?out:"");
1484 /* get the \-escaped internal representation of a pref from the contents of
1485 a textview widget. textview must be non-NULL. */
1486 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1488 GtkTextBuffer *buffer;
1489 GtkTextIter start, end;
1492 cm_return_val_if_fail( textview != NULL, "" );
1494 buffer = gtk_text_view_get_buffer(textview);
1495 gtk_text_buffer_get_start_iter(buffer, &start);
1496 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1497 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1498 out = malloc(2*strlen(tmp)+1);
1500 pref_get_escaped_pref(out, tmp);
1506 /* get the \-escaped internal representation of a pref from the contents of
1507 a gtkentry widget. entry must be non-NULL. */
1508 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1512 cm_return_val_if_fail( entry != NULL, "" );
1514 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1515 out = malloc(2*strlen(tmp)+1);
1518 pref_get_escaped_pref(out, tmp);
1524 /* ugly hack to be able to get this pref from ssl_certificate.c */
1525 gboolean prefs_common_unsafe_ssl_certs(void)
1527 return prefs_common.unsafe_ssl_certs;
1530 gboolean prefs_common_enable_log_standard(void)
1532 return prefs_common.enable_log_standard;
1535 gboolean prefs_common_enable_log_warning(void)
1537 return prefs_common.enable_log_warning;
1539 gboolean prefs_common_enable_log_error(void)
1541 return prefs_common.enable_log_error;
1543 gboolean prefs_common_enable_log_status(void)
1545 return prefs_common.enable_log_status;
1549 return the translated name of a header, if the translate_header option is
1550 set, otherwise return the untranslated header name (header_name itself).
1551 this function is provided for convenience, it's an interface to
1552 prefs_common.trans_hdr.
1553 works with header names either with or without trailing colon, provided
1554 that gettext found such header name in the sources (they should all be
1555 found in src/gtk/headers.h anyway).
1557 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1559 if (header_name == NULL || *header_name == '\0')
1562 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1565 const gchar *prefs_common_get_uri_cmd(void)
1572 if (!prefs_common.cmds_use_system_default)
1573 return prefs_common.uri_cmd;
1575 tmp = g_find_program_in_path("xdg-open");
1577 return prefs_common.uri_cmd;
1580 return "xdg-open %s";
1584 const gchar *prefs_common_get_ext_editor_cmd(void)
1586 return prefs_common.ext_editor_cmd;
1587 #if 0 /* we should do that, but it detaches the editor and breaks
1588 compose.c's external composition. */
1591 if (!prefs_common.cmds_use_system_default)
1592 return prefs_common.ext_editor_cmd;
1594 tmp = g_find_program_in_path("xdg-open");
1596 return prefs_common.ext_editor_cmd;
1599 return "xdg-open %s";
1603 gboolean prefs_common_get_use_shred(void)
1605 return prefs_common.use_shred;
1608 gboolean prefs_common_get_flush_metadata (void)
1610 return prefs_common.flush_metadata;
1613 PrefsCommon *prefs_common_get_prefs(void)
1615 return &prefs_common;