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,
642 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
644 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
646 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
648 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
650 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
652 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
654 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
656 {"compose_width", "600", &prefs_common.compose_width, P_INT,
658 {"compose_height", "560", &prefs_common.compose_height, P_INT,
661 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
663 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
665 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
667 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
669 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
671 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
673 {"compose_width", "700", &prefs_common.compose_width, P_INT,
675 {"compose_height", "470", &prefs_common.compose_height, P_INT,
678 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
680 {"compose_x", "0", &prefs_common.compose_x, P_INT,
682 {"compose_y", "0", &prefs_common.compose_y, P_INT,
685 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
688 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
690 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
692 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
694 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
696 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
698 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
700 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
702 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
704 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
706 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
708 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
710 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
711 P_BOOL, NULL, NULL, NULL},
713 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
714 P_BOOL, NULL, NULL, NULL},
715 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
717 {"display_xface", "TRUE", &prefs_common.display_xface,
718 P_BOOL, NULL, NULL, NULL},
719 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
721 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
723 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
725 {"line_space", "2", &prefs_common.line_space, P_INT,
727 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
730 {"enable_smooth_scroll", "FALSE",
731 &prefs_common.enable_smooth_scroll, P_BOOL,
733 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
735 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
737 {"hide_quoted", "TRUE",
738 &prefs_common.hide_quoted, P_BOOL,
740 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
742 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
745 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
748 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
750 {"attach_save_directory", NULL,
751 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
752 {"attach_load_directory", NULL,
753 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
756 {"mime_textviewer", NULL,
757 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
758 {"mime_open_command", "gedit '%s'",
759 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
760 {"show_inline_attachments", "TRUE",
761 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
765 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
768 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
771 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
772 NULL, NULL, NULL}, */
773 {"always_show_message_when_selected", "0",
774 &prefs_common.always_show_msg,
775 P_ENUM, NULL, NULL, NULL},
776 {"select_on_entry", "3", &prefs_common.select_on_entry,
777 P_ENUM, NULL, NULL, NULL},
778 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
779 P_BOOL, NULL, NULL, NULL},
781 /* do it SUMMARY_OPEN_ACTIONS-1 times */
782 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
784 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
786 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
788 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
790 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
792 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
794 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
797 {"mark_as_read_on_new_window", "FALSE",
798 &prefs_common.mark_as_read_on_new_window,
799 P_BOOL, NULL, NULL, NULL},
800 {"mark_as_read_delay", "0",
801 &prefs_common.mark_as_read_delay, P_INT,
803 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
805 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
807 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
810 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
811 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
814 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
817 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
819 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
823 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
824 P_BOOL, NULL, NULL, NULL},
825 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
826 P_INT, NULL, NULL, NULL},
827 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
828 P_INT, NULL, NULL, NULL},
832 {"uri_open_command", DEFAULT_BROWSER_CMD,
833 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
835 {"gtk_theme", DEFAULT_W32_GTK_THEME,
836 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
838 {"ext_editor_command", DEFAULT_EDITOR_CMD,
839 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
840 {"cmds_use_system_default", "TRUE",
841 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
842 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
843 P_BOOL, NULL, NULL, NULL},
844 {"session_passwords", "FALSE", &prefs_common.session_passwords,
845 P_BOOL, NULL, NULL, NULL},
846 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
848 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
850 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
852 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
853 P_BOOL, NULL, NULL, NULL},
854 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
856 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
859 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
862 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
866 #if defined(__OpenBSD__)
867 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
868 P_INT, NULL, NULL, NULL},
870 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
871 P_INT, NULL, NULL, NULL},
873 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
875 {"important_score", "1", &prefs_common.important_score, P_INT,
878 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
880 {"log_length", "500", &prefs_common.loglength, P_INT,
883 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
885 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
887 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
889 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
892 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
894 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
896 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
898 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
901 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
903 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
905 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
907 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
909 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
911 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
913 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
915 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
918 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
920 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
922 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
924 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
926 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
928 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
930 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
932 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
934 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
937 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
940 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
943 /* Some windows' sizes */
944 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
946 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
949 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
951 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
954 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
956 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
959 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
961 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
964 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
966 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
969 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
971 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
974 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
976 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
979 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
981 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
984 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
986 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
989 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
991 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
994 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
996 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
999 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1001 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1004 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1007 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1009 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1012 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1014 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1017 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1019 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1022 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1024 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1027 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1029 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1032 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1034 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1037 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1039 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1042 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1044 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1047 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1049 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1052 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1054 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1058 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1060 {"utf8_instead_of_locale_for_broken_mail", "0",
1061 &prefs_common.broken_are_utf8, P_INT,
1063 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1065 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1067 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1069 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1071 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1073 {"folderview_vscrollbar_policy", "0",
1074 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1076 {"textview_cursor_visible", "FALSE",
1077 &prefs_common.textview_cursor_visible, P_BOOL,
1079 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1081 #ifndef GENERIC_UMPC
1082 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1084 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1087 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1089 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1092 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1093 P_INT, NULL, NULL, NULL },
1094 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1095 P_STRING, NULL, NULL, NULL },
1096 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1097 P_BOOL, NULL, NULL, NULL },
1098 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1100 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1102 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1104 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1106 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1108 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1110 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1112 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1114 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1116 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1118 #ifndef GENERIC_UMPC
1119 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1122 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1126 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1128 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1130 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1132 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1134 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1136 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1138 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1140 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1142 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1144 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1146 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1148 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1150 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1152 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1154 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1157 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1158 P_BOOL, NULL, NULL, NULL },
1160 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1163 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1166 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1169 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1171 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1173 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1176 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1178 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1180 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1182 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1186 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1187 * Fallback to default_list if history file is not found
1189 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1190 GList *default_list)
1194 gchar buf[PREFSBUFSIZE];
1198 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1199 G_DIR_SEPARATOR_S, history,
1202 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1205 if ((fp = g_fopen(path, "rb")) == NULL) {
1206 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1208 /* returns default list if set, otherwise NULL */
1209 return default_list;
1212 while (fgets(buf, sizeof(buf), fp) != NULL) {
1214 if (buf[0] == '\0') continue;
1215 tmp = add_history(tmp, buf);
1219 tmp = g_list_reverse(tmp);
1225 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1227 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1229 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1233 * Read history list from the specified history file
1235 static GList *prefs_common_read_history(const gchar *history)
1237 return prefs_common_read_history_from_dir(NULL, history);
1240 void prefs_common_read_config(void)
1245 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1246 prefs_read_config(param, "Common", rcpath, NULL);
1248 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1253 tmp = g_strdup(gettext(prefs_common.date_format));
1254 g_free(prefs_common.date_format);
1255 prefs_common.date_format = tmp;
1257 prefs_common.mime_open_cmd_history =
1258 prefs_common_read_history(COMMAND_HISTORY);
1259 prefs_common.summary_quicksearch_history =
1260 prefs_common_read_history(QUICKSEARCH_HISTORY);
1261 prefs_common.summary_search_from_history =
1262 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1263 prefs_common.summary_search_to_history =
1264 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1265 prefs_common.summary_search_subject_history =
1266 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1267 prefs_common.summary_search_body_history =
1268 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1269 prefs_common.summary_search_adv_condition_history =
1270 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1271 prefs_common.message_search_history =
1272 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1273 prefs_common.compose_save_to_history =
1274 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1275 #ifndef USE_NEW_ADDRBOOK
1276 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1278 colorlabel_update_colortable_from_prefs();
1284 g_warning("failed to write\n"); \
1289 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1291 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1295 gchar *path, *tmp_path;
1298 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1299 G_DIR_SEPARATOR_S, history,
1302 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1305 tmp_path = g_strconcat(path, ".tmp", NULL);
1307 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1308 FILE_OP_ERROR(tmp_path, "fopen");
1312 for (cur = list; cur != NULL; cur = cur->next) {
1313 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1314 fputc('\n', fp) != EOF);
1317 if (fclose(fp) == EOF) {
1318 FILE_OP_ERROR(tmp_path, "fclose");
1326 if (g_rename(tmp_path, path) < 0) {
1327 FILE_OP_ERROR(path, "rename");
1339 * Save history list to the specified history file
1341 static void prefs_common_save_history(const gchar *history, GList *list)
1343 prefs_common_save_history_to_dir(NULL, history, list);
1348 void prefs_common_write_config(void)
1350 prefs_write_config(param, "Common", COMMON_RC);
1352 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1355 prefs_common_save_history(COMMAND_HISTORY,
1356 prefs_common.mime_open_cmd_history);
1357 prefs_common_save_history(QUICKSEARCH_HISTORY,
1358 prefs_common.summary_quicksearch_history);
1359 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1360 prefs_common.summary_search_from_history);
1361 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1362 prefs_common.summary_search_to_history);
1363 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1364 prefs_common.summary_search_subject_history);
1365 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1366 prefs_common.summary_search_body_history);
1367 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1368 prefs_common.summary_search_adv_condition_history);
1369 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1370 prefs_common.message_search_history);
1371 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1372 prefs_common.compose_save_to_history);
1374 #ifndef USE_NEW_ADDRBOOK
1375 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1376 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1377 prefs_common.addressbook_custom_attributes);
1381 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1382 both 'in' and 'out' must be non-NULL.
1383 'out' must be a pointer to a buffer whose size is at least equal
1384 to strlen(txt)+1, this buffer will get cleared. out's contents
1385 will always get set to a valid string, even if it's "".*/
1386 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1393 cm_return_if_fail( in != NULL );
1394 cm_return_if_fail( out != NULL );
1398 memset(out, 0, strlen(in)+1);
1399 while (*i != '\0') {
1400 if (*i == '\\' && *(i+1) == 'n') {
1403 } else if (*i == '\\' && *(i+1) == 't') {
1406 } else if (*i == '\\' && *(i+1) == '\\') {
1417 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1418 both 'in' and 'out' must be non-NULL.
1419 'out' must be a pointer to a buffer whose size is at least equal
1420 to 2*strlen(txt)+1. out's contents will always get set to a valid
1421 string, even if it's "". */
1422 void pref_get_escaped_pref(gchar *out, const gchar *in)
1429 cm_return_if_fail( in != NULL );
1430 cm_return_if_fail( out != NULL );
1434 while (*i != '\0') {
1438 } else if (*i == '\t') {
1441 } else if (*i == '\\') {
1452 /* set the contents of a textview widget from the internal \-escaped
1453 representation of a pref string. both txt and textview must be non-NULL. */
1454 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1456 GtkTextBuffer *buffer;
1459 cm_return_if_fail( textview != NULL );
1461 buffer = gtk_text_view_get_buffer(textview);
1464 gtk_text_buffer_set_text(buffer, "", -1);
1466 out = g_malloc(strlen(txt)+1);
1468 pref_get_unescaped_pref(out, txt);
1470 gtk_text_buffer_set_text(buffer, out, -1);
1475 /* set the contents of a gtkentry widget from the internal \-escaped
1476 representation of a pref string. both txt and entry must be non-NULL. */
1477 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1481 cm_return_if_fail( entry != NULL );
1483 gtk_entry_set_text(entry, "");
1485 out = g_malloc(strlen(txt)+1);
1487 pref_get_unescaped_pref(out, txt);
1489 gtk_entry_set_text(entry, out);
1494 /* get the \-escaped internal representation of a pref from the contents of
1495 a textview widget. textview must be non-NULL. */
1496 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1498 GtkTextBuffer *buffer;
1499 GtkTextIter start, end;
1502 cm_return_val_if_fail( textview != NULL, "" );
1504 buffer = gtk_text_view_get_buffer(textview);
1505 gtk_text_buffer_get_start_iter(buffer, &start);
1506 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1507 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1508 out = malloc(2*strlen(tmp)+1);
1510 pref_get_escaped_pref(out, tmp);
1516 /* get the \-escaped internal representation of a pref from the contents of
1517 a gtkentry widget. entry must be non-NULL. */
1518 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1522 cm_return_val_if_fail( entry != NULL, "" );
1524 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1525 out = malloc(2*strlen(tmp)+1);
1528 pref_get_escaped_pref(out, tmp);
1534 /* ugly hack to be able to get this pref from ssl_certificate.c */
1535 gboolean prefs_common_unsafe_ssl_certs(void)
1537 return prefs_common.unsafe_ssl_certs;
1540 gboolean prefs_common_enable_log_standard(void)
1542 return prefs_common.enable_log_standard;
1545 gboolean prefs_common_enable_log_warning(void)
1547 return prefs_common.enable_log_warning;
1549 gboolean prefs_common_enable_log_error(void)
1551 return prefs_common.enable_log_error;
1553 gboolean prefs_common_enable_log_status(void)
1555 return prefs_common.enable_log_status;
1559 return the translated name of a header, if the translate_header option is
1560 set, otherwise return the untranslated header name (header_name itself).
1561 this function is provided for convenience, it's an interface to
1562 prefs_common.trans_hdr.
1563 works with header names either with or without trailing colon, provided
1564 that gettext found such header name in the sources (they should all be
1565 found in src/gtk/headers.h anyway).
1567 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1569 if (header_name == NULL || *header_name == '\0')
1572 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1575 const gchar *prefs_common_get_uri_cmd(void)
1582 if (!prefs_common.cmds_use_system_default)
1583 return prefs_common.uri_cmd;
1585 tmp = g_find_program_in_path("xdg-open");
1587 return prefs_common.uri_cmd;
1590 return "xdg-open %s";
1594 const gchar *prefs_common_get_ext_editor_cmd(void)
1596 return prefs_common.ext_editor_cmd;
1597 #if 0 /* we should do that, but it detaches the editor and breaks
1598 compose.c's external composition. */
1601 if (!prefs_common.cmds_use_system_default)
1602 return prefs_common.ext_editor_cmd;
1604 tmp = g_find_program_in_path("xdg-open");
1606 return prefs_common.ext_editor_cmd;
1609 return "xdg-open %s";
1613 gboolean prefs_common_get_use_shred(void)
1615 return prefs_common.use_shred;
1618 gboolean prefs_common_get_flush_metadata (void)
1620 return prefs_common.flush_metadata;
1623 PrefsCommon *prefs_common_get_prefs(void)
1625 return &prefs_common;