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 {"autosave_encrypted", "TRUE", &prefs_common.autosave_encrypted,
243 P_BOOL, NULL, NULL, NULL},
244 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
245 P_BOOL, NULL, NULL, NULL},
246 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
247 P_INT, NULL, NULL, NULL},
249 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
251 {"dictionary", "", &prefs_common.dictionary, P_STRING,
253 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
255 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
257 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
259 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
260 P_BOOL, NULL, NULL, NULL},
261 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
263 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
266 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
268 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
271 /* Account autoselection */
272 {"reply_account_autoselect", "TRUE",
273 &prefs_common.reply_account_autosel, P_BOOL,
275 {"forward_account_autoselect", "TRUE",
276 &prefs_common.forward_account_autosel, P_BOOL,
278 {"reedit_account_autoselect", "TRUE",
279 &prefs_common.reedit_account_autosel, P_BOOL,
282 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
286 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
289 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
294 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
296 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
297 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
299 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
301 {"forward_quote_format",
302 N_("\\n\\nBegin forwarded message:\\n\\n"
303 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
304 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
305 &prefs_common.fw_quotefmt, P_STRING,
307 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
311 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
312 {"widget_font", NULL,
313 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
314 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
315 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
317 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
318 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
319 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
320 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
321 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
325 {"widget_font_gtk2", NULL,
326 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
327 {"message_font_gtk2", "Monospace 9",
328 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
329 {"print_font_gtk2", "Monospace 9",
330 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
331 {"small_font_gtk2", "Sans 9",
332 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
333 {"normal_font_gtk2", "Sans 9",
334 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
335 {"bold_font_gtk2", "Sans Bold 9",
336 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
338 {"widget_font_gtk2", NULL,
339 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
340 {"message_font_gtk2", "Monospace 8",
341 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
342 {"print_font_gtk2", "Monospace 8",
343 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
344 {"small_font_gtk2", "Sans 8",
345 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
346 {"normal_font_gtk2", "Sans 8",
347 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
348 {"bold_font_gtk2", "Sans Bold 8",
349 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
352 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
354 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
358 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
360 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
362 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
364 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
366 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
368 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
370 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
372 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
374 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
376 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
378 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
380 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
382 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
384 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
386 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
388 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
390 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
392 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
394 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
396 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
398 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
400 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
402 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
404 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
406 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
408 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
410 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
412 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
414 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
416 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
420 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
422 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
424 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
427 {"display_folder_unread_num", "0",
428 &prefs_common.display_folder_unread, P_INT,
430 {"newsgroup_abbrev_len", "16",
431 &prefs_common.ng_abbrev_len, P_INT,
434 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
437 /* Display: Summary View */
438 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
440 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
442 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
443 P_STRING, NULL, NULL, NULL},
444 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
447 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
450 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
453 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
456 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
459 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
461 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
464 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
466 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
469 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
471 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
475 {"summary_col_show_mark", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_unread", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_subject", "TRUE",
480 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_from", "TRUE",
482 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_to", "FALSE",
484 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_date", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_mime", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_size", "TRUE",
490 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_number", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_score", "FALSE",
494 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_locked", "FALSE",
496 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_tags", "FALSE",
498 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
500 {"summary_col_pos_mark", "0",
501 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_unread", "1",
503 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_mime", "2",
505 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_subject", "3",
507 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_from", "4",
509 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_date", "5",
511 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_size", "6",
513 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_number", "7",
515 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_score", "8",
517 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_locked", "9",
519 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_to", "10",
521 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_tags", "11",
523 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
525 {"summary_col_size_mark", "10",
526 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
527 {"summary_col_size_unread", "13",
528 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
529 {"summary_col_size_mime", "10",
530 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_subject", "200",
533 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_from", "120",
535 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
536 {"summary_col_size_to", "120",
537 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_subject", "300",
540 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_from", "150",
542 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_to", "150",
544 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_date", "118",
548 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_size", "45",
550 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_number", "40",
552 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_score", "40",
554 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_locked", "13",
556 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
557 {"summary_col_size_tags", "150",
558 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
561 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
563 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
565 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
567 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
569 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
572 {"folder_col_show_folder", "TRUE",
573 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
574 {"folder_col_show_new", "TRUE",
575 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
576 {"folder_col_show_unread", "TRUE",
577 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
578 {"folder_col_show_total", "TRUE",
579 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
581 {"folder_col_pos_folder", "0",
582 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
583 {"folder_col_pos_new", "1",
584 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
585 {"folder_col_pos_unread", "2",
586 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
587 {"folder_col_pos_total", "3",
588 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
591 {"folder_col_size_folder", "120",
592 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
593 {"folder_col_size_new", "32",
594 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
595 {"folder_col_size_unread", "32",
596 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
597 {"folder_col_size_total", "32",
598 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_folder", "400",
601 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_new", "32",
603 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
604 {"folder_col_size_unread", "32",
605 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
606 {"folder_col_size_total", "32",
607 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
609 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
611 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
614 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
616 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
618 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
620 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
622 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
625 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
627 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
629 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
631 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
633 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
635 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
637 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
639 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
641 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
644 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
646 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
648 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
650 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
652 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
654 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
656 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
658 {"compose_width", "600", &prefs_common.compose_width, P_INT,
660 {"compose_height", "560", &prefs_common.compose_height, P_INT,
663 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
665 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
667 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
669 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
671 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
673 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
675 {"compose_width", "700", &prefs_common.compose_width, P_INT,
677 {"compose_height", "470", &prefs_common.compose_height, P_INT,
680 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
682 {"compose_x", "0", &prefs_common.compose_x, P_INT,
684 {"compose_y", "0", &prefs_common.compose_y, P_INT,
687 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
690 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
692 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
694 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
696 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
698 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
700 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
702 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
704 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
706 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
708 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
710 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
712 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
713 P_BOOL, NULL, NULL, NULL},
715 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
716 P_BOOL, NULL, NULL, NULL},
717 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
719 {"display_xface", "TRUE", &prefs_common.display_xface,
720 P_BOOL, NULL, NULL, NULL},
721 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
723 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
725 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
727 {"line_space", "2", &prefs_common.line_space, P_INT,
729 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
732 {"enable_smooth_scroll", "FALSE",
733 &prefs_common.enable_smooth_scroll, P_BOOL,
735 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
737 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
739 {"hide_quoted", "TRUE",
740 &prefs_common.hide_quoted, P_BOOL,
742 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
744 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
747 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
750 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
752 {"attach_save_directory", NULL,
753 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
754 {"attach_load_directory", NULL,
755 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
758 {"mime_textviewer", NULL,
759 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
760 {"mime_open_command", "gedit '%s'",
761 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
762 {"show_inline_attachments", "TRUE",
763 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
767 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
770 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
773 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
774 NULL, NULL, NULL}, */
775 {"always_show_message_when_selected", "0",
776 &prefs_common.always_show_msg,
777 P_ENUM, NULL, NULL, NULL},
778 {"select_on_entry", "3", &prefs_common.select_on_entry,
779 P_ENUM, NULL, NULL, NULL},
780 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
781 P_BOOL, NULL, NULL, NULL},
783 /* do it SUMMARY_OPEN_ACTIONS-1 times */
784 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
786 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
788 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
790 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
792 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
794 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
796 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
799 {"mark_as_read_on_new_window", "FALSE",
800 &prefs_common.mark_as_read_on_new_window,
801 P_BOOL, NULL, NULL, NULL},
802 {"mark_as_read_delay", "0",
803 &prefs_common.mark_as_read_delay, P_INT,
805 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
807 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
809 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
812 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
813 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
816 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
819 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
821 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
825 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
826 P_BOOL, NULL, NULL, NULL},
827 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
828 P_INT, NULL, NULL, NULL},
829 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
830 P_INT, NULL, NULL, NULL},
834 {"uri_open_command", DEFAULT_BROWSER_CMD,
835 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
837 {"gtk_theme", DEFAULT_W32_GTK_THEME,
838 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
840 {"ext_editor_command", DEFAULT_EDITOR_CMD,
841 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
842 {"cmds_use_system_default", "TRUE",
843 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
844 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
845 P_BOOL, NULL, NULL, NULL},
846 {"session_passwords", "FALSE", &prefs_common.session_passwords,
847 P_BOOL, NULL, NULL, NULL},
848 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
850 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
852 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
854 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
855 P_BOOL, NULL, NULL, NULL},
856 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
858 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
861 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
864 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
868 #if defined(__OpenBSD__)
869 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
870 P_INT, NULL, NULL, NULL},
872 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
873 P_INT, NULL, NULL, NULL},
875 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
877 {"important_score", "1", &prefs_common.important_score, P_INT,
880 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
882 {"log_length", "500", &prefs_common.loglength, P_INT,
885 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
887 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
889 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
891 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
894 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
896 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
898 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
900 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
903 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
905 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
907 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
909 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
911 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
913 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
915 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
917 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
920 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
922 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
924 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
926 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
928 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
930 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
932 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
934 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
936 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
939 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
942 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
945 /* Some windows' sizes */
946 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
948 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
951 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
953 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
956 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
958 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
961 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
963 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
966 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
968 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
971 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
973 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
976 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
978 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
981 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
983 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
986 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
988 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
991 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
993 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
996 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
998 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1001 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1003 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1006 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1009 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1011 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1014 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1016 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1019 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1021 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1024 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1026 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1029 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1031 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1034 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1036 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1039 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1041 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1044 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1046 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1049 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1051 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1054 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1056 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1060 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1062 {"utf8_instead_of_locale_for_broken_mail", "0",
1063 &prefs_common.broken_are_utf8, P_INT,
1065 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1067 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1069 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1071 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1073 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1075 {"folderview_vscrollbar_policy", "0",
1076 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1078 {"textview_cursor_visible", "FALSE",
1079 &prefs_common.textview_cursor_visible, P_BOOL,
1081 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1083 #ifndef GENERIC_UMPC
1084 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1086 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1089 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1091 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1094 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1095 P_INT, NULL, NULL, NULL },
1096 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1097 P_STRING, NULL, NULL, NULL },
1098 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1099 P_BOOL, NULL, NULL, NULL },
1100 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1102 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1104 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1106 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1108 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1110 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1112 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1114 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1116 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1118 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1120 #ifndef GENERIC_UMPC
1121 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1124 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1128 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1130 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1132 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1134 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1136 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1138 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1140 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1142 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1144 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1146 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1148 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1150 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1152 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1154 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1156 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1159 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1160 P_BOOL, NULL, NULL, NULL },
1162 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1165 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1168 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1171 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1173 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1175 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1178 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1180 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1182 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1184 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1188 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1189 * Fallback to default_list if history file is not found
1191 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1192 GList *default_list)
1196 gchar buf[PREFSBUFSIZE];
1200 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1201 G_DIR_SEPARATOR_S, history,
1204 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1207 if ((fp = g_fopen(path, "rb")) == NULL) {
1208 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1210 /* returns default list if set, otherwise NULL */
1211 return default_list;
1214 while (fgets(buf, sizeof(buf), fp) != NULL) {
1216 if (buf[0] == '\0') continue;
1217 tmp = add_history(tmp, buf);
1221 tmp = g_list_reverse(tmp);
1227 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1229 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1231 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1235 * Read history list from the specified history file
1237 static GList *prefs_common_read_history(const gchar *history)
1239 return prefs_common_read_history_from_dir(NULL, history);
1242 void prefs_common_read_config(void)
1247 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1248 prefs_read_config(param, "Common", rcpath, NULL);
1250 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1255 tmp = g_strdup(gettext(prefs_common.date_format));
1256 g_free(prefs_common.date_format);
1257 prefs_common.date_format = tmp;
1259 prefs_common.mime_open_cmd_history =
1260 prefs_common_read_history(COMMAND_HISTORY);
1261 prefs_common.summary_quicksearch_history =
1262 prefs_common_read_history(QUICKSEARCH_HISTORY);
1263 prefs_common.summary_search_from_history =
1264 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1265 prefs_common.summary_search_to_history =
1266 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1267 prefs_common.summary_search_subject_history =
1268 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1269 prefs_common.summary_search_body_history =
1270 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1271 prefs_common.summary_search_adv_condition_history =
1272 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1273 prefs_common.message_search_history =
1274 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1275 prefs_common.compose_save_to_history =
1276 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1277 #ifndef USE_NEW_ADDRBOOK
1278 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1280 colorlabel_update_colortable_from_prefs();
1286 g_warning("failed to write\n"); \
1291 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1293 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1297 gchar *path, *tmp_path;
1300 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1301 G_DIR_SEPARATOR_S, history,
1304 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1307 tmp_path = g_strconcat(path, ".tmp", NULL);
1309 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1310 FILE_OP_ERROR(tmp_path, "fopen");
1314 for (cur = list; cur != NULL; cur = cur->next) {
1315 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1316 fputc('\n', fp) != EOF);
1319 if (fclose(fp) == EOF) {
1320 FILE_OP_ERROR(tmp_path, "fclose");
1328 if (g_rename(tmp_path, path) < 0) {
1329 FILE_OP_ERROR(path, "rename");
1341 * Save history list to the specified history file
1343 static void prefs_common_save_history(const gchar *history, GList *list)
1345 prefs_common_save_history_to_dir(NULL, history, list);
1350 void prefs_common_write_config(void)
1352 prefs_write_config(param, "Common", COMMON_RC);
1354 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1357 prefs_common_save_history(COMMAND_HISTORY,
1358 prefs_common.mime_open_cmd_history);
1359 prefs_common_save_history(QUICKSEARCH_HISTORY,
1360 prefs_common.summary_quicksearch_history);
1361 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1362 prefs_common.summary_search_from_history);
1363 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1364 prefs_common.summary_search_to_history);
1365 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1366 prefs_common.summary_search_subject_history);
1367 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1368 prefs_common.summary_search_body_history);
1369 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1370 prefs_common.summary_search_adv_condition_history);
1371 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1372 prefs_common.message_search_history);
1373 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1374 prefs_common.compose_save_to_history);
1376 #ifndef USE_NEW_ADDRBOOK
1377 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1378 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1379 prefs_common.addressbook_custom_attributes);
1383 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1384 both 'in' and 'out' must be non-NULL.
1385 'out' must be a pointer to a buffer whose size is at least equal
1386 to strlen(txt)+1, this buffer will get cleared. out's contents
1387 will always get set to a valid string, even if it's "".*/
1388 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1395 cm_return_if_fail( in != NULL );
1396 cm_return_if_fail( out != NULL );
1400 memset(out, 0, strlen(in)+1);
1401 while (*i != '\0') {
1402 if (*i == '\\' && *(i+1) == 'n') {
1405 } else if (*i == '\\' && *(i+1) == 't') {
1408 } else if (*i == '\\' && *(i+1) == '\\') {
1419 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1420 both 'in' and 'out' must be non-NULL.
1421 'out' must be a pointer to a buffer whose size is at least equal
1422 to 2*strlen(txt)+1. out's contents will always get set to a valid
1423 string, even if it's "". */
1424 void pref_get_escaped_pref(gchar *out, const gchar *in)
1431 cm_return_if_fail( in != NULL );
1432 cm_return_if_fail( out != NULL );
1436 while (*i != '\0') {
1440 } else if (*i == '\t') {
1443 } else if (*i == '\\') {
1454 /* set the contents of a textview widget from the internal \-escaped
1455 representation of a pref string. both txt and textview must be non-NULL. */
1456 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1458 GtkTextBuffer *buffer;
1461 cm_return_if_fail( textview != NULL );
1463 buffer = gtk_text_view_get_buffer(textview);
1466 gtk_text_buffer_set_text(buffer, "", -1);
1468 out = g_malloc(strlen(txt)+1);
1470 pref_get_unescaped_pref(out, txt);
1472 gtk_text_buffer_set_text(buffer, out, -1);
1477 /* set the contents of a gtkentry widget from the internal \-escaped
1478 representation of a pref string. both txt and entry must be non-NULL. */
1479 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1483 cm_return_if_fail( entry != NULL );
1485 gtk_entry_set_text(entry, "");
1487 out = g_malloc(strlen(txt)+1);
1489 pref_get_unescaped_pref(out, txt);
1491 gtk_entry_set_text(entry, out);
1496 /* get the \-escaped internal representation of a pref from the contents of
1497 a textview widget. textview must be non-NULL. */
1498 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1500 GtkTextBuffer *buffer;
1501 GtkTextIter start, end;
1504 cm_return_val_if_fail( textview != NULL, "" );
1506 buffer = gtk_text_view_get_buffer(textview);
1507 gtk_text_buffer_get_start_iter(buffer, &start);
1508 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1509 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1510 out = malloc(2*strlen(tmp)+1);
1512 pref_get_escaped_pref(out, tmp);
1518 /* get the \-escaped internal representation of a pref from the contents of
1519 a gtkentry widget. entry must be non-NULL. */
1520 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1524 cm_return_val_if_fail( entry != NULL, "" );
1526 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1527 out = malloc(2*strlen(tmp)+1);
1530 pref_get_escaped_pref(out, tmp);
1536 /* ugly hack to be able to get this pref from ssl_certificate.c */
1537 gboolean prefs_common_unsafe_ssl_certs(void)
1539 return prefs_common.unsafe_ssl_certs;
1542 gboolean prefs_common_enable_log_standard(void)
1544 return prefs_common.enable_log_standard;
1547 gboolean prefs_common_enable_log_warning(void)
1549 return prefs_common.enable_log_warning;
1551 gboolean prefs_common_enable_log_error(void)
1553 return prefs_common.enable_log_error;
1555 gboolean prefs_common_enable_log_status(void)
1557 return prefs_common.enable_log_status;
1561 return the translated name of a header, if the translate_header option is
1562 set, otherwise return the untranslated header name (header_name itself).
1563 this function is provided for convenience, it's an interface to
1564 prefs_common.trans_hdr.
1565 works with header names either with or without trailing colon, provided
1566 that gettext found such header name in the sources (they should all be
1567 found in src/gtk/headers.h anyway).
1569 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1571 if (header_name == NULL || *header_name == '\0')
1574 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1577 const gchar *prefs_common_get_uri_cmd(void)
1584 if (!prefs_common.cmds_use_system_default)
1585 return prefs_common.uri_cmd;
1587 tmp = g_find_program_in_path("xdg-open");
1589 return prefs_common.uri_cmd;
1592 return "xdg-open %s";
1596 const gchar *prefs_common_get_ext_editor_cmd(void)
1598 return prefs_common.ext_editor_cmd;
1599 #if 0 /* we should do that, but it detaches the editor and breaks
1600 compose.c's external composition. */
1603 if (!prefs_common.cmds_use_system_default)
1604 return prefs_common.ext_editor_cmd;
1606 tmp = g_find_program_in_path("xdg-open");
1608 return prefs_common.ext_editor_cmd;
1611 return "xdg-open %s";
1615 gboolean prefs_common_get_use_shred(void)
1617 return prefs_common.use_shred;
1620 gboolean prefs_common_get_flush_metadata (void)
1622 return prefs_common.flush_metadata;
1625 PrefsCommon *prefs_common_get_prefs(void)
1627 return &prefs_common;