2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2012 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/>.
27 #include <glib/gi18n.h>
29 #include <gdk/gdkkeysyms.h>
34 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "mainwindow.h"
45 #include "summaryview.h"
46 #include "folderview.h"
47 #include "messageview.h"
48 #include "manage_window.h"
54 #include "alertpanel.h"
58 #include "folderview.h"
59 #include "stock_pixmap.h"
60 #include "prefswindow.h"
61 #include "colorlabel.h"
62 #ifndef USE_NEW_ADDRBOOK
63 #include "addrcustomattr.h"
72 PrefsCommon prefs_common;
78 * In the Windows version prefs_common contains
79 * - the non-OS-specific settings of the "Common" section and
80 * - the OS-specific settings of the "CommonWin32" section
81 * The OS-specific settings of the "Common" section are not used
82 * but saved in prefs_unix.
85 # define SPECIFIC_PREFS prefs_unix
87 static PrefsCommon prefs_unix;
89 static PrefParam param_os_specific[] = {
92 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
93 {"newmail_notify_cmd", "",
94 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
97 {"widget_font_gtk2", NULL,
98 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
99 {"message_font_gtk2", "Monospace 9",
100 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
101 {"print_font_gtk2", "Monospace 9",
102 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
103 {"small_font_gtk2", "Sans 9",
104 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
105 {"normal_font_gtk2", "Sans 9",
106 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
107 {"bold_font_gtk2", "Sans 9 Bold",
108 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
110 {"attach_save_directory", NULL,
111 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
112 {"attach_load_directory", NULL,
113 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
116 {"mime_textviewer", NULL,
117 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
118 {"mime_open_command", "notepad '%s'",
119 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
122 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
123 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
126 {"ext_editor_command", "notepad %s",
127 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
129 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
132 # define SPECIFIC_PREFS prefs_common
136 parameter name, default value, pointer to the prefs variable, data type,
137 pointer to the widget pointer,
138 pointer to the function for data setting,
139 pointer to the function for widget setting
142 static PrefParam param[] = {
144 {"data_root", "", &prefs_common.data_root, P_STRING,
148 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
150 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
153 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
155 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
157 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
159 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
160 P_BOOL, NULL, NULL, NULL},
161 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
162 P_BOOL, NULL, NULL, NULL},
163 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
164 P_BOOL, NULL, NULL, NULL},
165 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
166 P_BOOL, NULL, NULL, NULL},
167 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
170 {"maemo_show_led", "TRUE", &prefs_common.maemo_show_led, P_BOOL,
172 {"maemo_play_sound", "FALSE", &prefs_common.maemo_play_sound, P_BOOL,
174 {"maemo_show_banner", "FALSE", &prefs_common.maemo_show_banner, P_BOOL,
177 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
179 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
181 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
183 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
184 P_BOOL, NULL, NULL, NULL},
185 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
186 P_BOOL, NULL, NULL, NULL},
189 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
191 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
192 P_BOOL, NULL, NULL, NULL},
194 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
197 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
200 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
202 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
205 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
207 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
209 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
212 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
213 P_BOOL, NULL, NULL, NULL},
216 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
218 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
219 P_BOOL, NULL, NULL, NULL},
220 {"redirect_keep_from", "FALSE",
221 &prefs_common.redirect_keep_from, P_BOOL,
223 {"undo_level", "50", &prefs_common.undolevels, P_INT,
225 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
227 {"compose_subject_format", "",
228 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
229 {"compose_body_format", N_("Hello,\\n"),
230 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
231 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
235 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
237 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
239 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
241 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
243 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
245 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
247 {"autosave", "TRUE", &prefs_common.autosave,
248 P_BOOL, NULL, NULL, NULL},
249 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
251 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
252 P_BOOL, NULL, NULL, NULL},
253 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
254 P_INT, NULL, NULL, NULL},
256 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
258 {"dictionary", "", &prefs_common.dictionary, P_STRING,
260 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
262 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
264 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
266 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
267 P_BOOL, NULL, NULL, NULL},
268 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
270 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
273 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
275 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
278 /* Account autoselection */
279 {"reply_account_autoselect", "TRUE",
280 &prefs_common.reply_account_autosel, P_BOOL,
282 {"forward_account_autoselect", "TRUE",
283 &prefs_common.forward_account_autosel, P_BOOL,
285 {"reedit_account_autoselect", "TRUE",
286 &prefs_common.reedit_account_autosel, P_BOOL,
289 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
293 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
296 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
301 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
303 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
304 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
306 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
308 {"forward_quote_format",
309 N_("\\n\\nBegin forwarded message:\\n\\n"
310 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
311 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
312 &prefs_common.fw_quotefmt, P_STRING,
314 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
318 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
319 {"widget_font", NULL,
320 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
321 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
322 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
323 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
324 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
325 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
326 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
327 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
328 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
332 {"widget_font_gtk2", NULL,
333 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
334 {"message_font_gtk2", "Monospace 9",
335 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
336 {"print_font_gtk2", "Monospace 9",
337 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
338 {"small_font_gtk2", "Sans 9",
339 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
340 {"normal_font_gtk2", "Sans 9",
341 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
342 {"bold_font_gtk2", "Sans Bold 9",
343 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
345 {"widget_font_gtk2", NULL,
346 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
347 {"message_font_gtk2", "Monospace 8",
348 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
349 {"print_font_gtk2", "Monospace 8",
350 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
351 {"small_font_gtk2", "Sans 8",
352 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
353 {"normal_font_gtk2", "Sans 8",
354 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
355 {"bold_font_gtk2", "Sans Bold 8",
356 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
359 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
361 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
365 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
367 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
369 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
371 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
373 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
375 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
377 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
379 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
381 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
383 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
385 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
387 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
389 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
391 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
393 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
395 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
397 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
399 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
401 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
403 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
405 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
407 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
409 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
411 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
413 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
415 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
417 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
419 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
421 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
423 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
427 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
429 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
431 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
434 {"display_folder_unread_num", "0",
435 &prefs_common.display_folder_unread, P_INT,
437 {"newsgroup_abbrev_len", "16",
438 &prefs_common.ng_abbrev_len, P_INT,
441 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
444 /* Display: Summary View */
445 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
447 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
449 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
450 P_STRING, NULL, NULL, NULL},
451 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
454 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
457 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
460 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
463 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
466 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
468 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
471 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
473 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
476 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
478 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
482 {"summary_col_show_mark", "TRUE",
483 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
484 {"summary_col_show_unread", "TRUE",
485 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
486 {"summary_col_show_subject", "TRUE",
487 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
488 {"summary_col_show_from", "TRUE",
489 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
490 {"summary_col_show_to", "FALSE",
491 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
492 {"summary_col_show_date", "TRUE",
493 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
494 {"summary_col_show_mime", "TRUE",
495 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
496 {"summary_col_show_size", "TRUE",
497 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
498 {"summary_col_show_number", "FALSE",
499 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
500 {"summary_col_show_score", "FALSE",
501 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
502 {"summary_col_show_locked", "FALSE",
503 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
504 {"summary_col_show_tags", "FALSE",
505 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
507 {"summary_col_pos_mark", "0",
508 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
509 {"summary_col_pos_unread", "1",
510 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
511 {"summary_col_pos_mime", "2",
512 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
513 {"summary_col_pos_subject", "3",
514 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
515 {"summary_col_pos_from", "4",
516 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
517 {"summary_col_pos_date", "5",
518 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
519 {"summary_col_pos_size", "6",
520 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
521 {"summary_col_pos_number", "7",
522 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
523 {"summary_col_pos_score", "8",
524 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
525 {"summary_col_pos_locked", "9",
526 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
527 {"summary_col_pos_to", "10",
528 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
529 {"summary_col_pos_tags", "11",
530 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_mark", "10",
533 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_unread", "13",
535 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
536 {"summary_col_size_mime", "10",
537 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_subject", "200",
540 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_from", "120",
542 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_to", "120",
544 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_subject", "300",
547 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
548 {"summary_col_size_from", "150",
549 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
550 {"summary_col_size_to", "150",
551 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
554 {"summary_col_size_date", "118",
555 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
556 {"summary_col_size_size", "45",
557 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
558 {"summary_col_size_number", "40",
559 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
560 {"summary_col_size_score", "40",
561 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
562 {"summary_col_size_locked", "13",
563 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
564 {"summary_col_size_tags", "150",
565 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
568 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
570 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
572 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
574 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
576 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
579 {"folder_col_show_folder", "TRUE",
580 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
581 {"folder_col_show_new", "TRUE",
582 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
583 {"folder_col_show_unread", "TRUE",
584 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
585 {"folder_col_show_total", "TRUE",
586 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
588 {"folder_col_pos_folder", "0",
589 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
590 {"folder_col_pos_new", "1",
591 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
592 {"folder_col_pos_unread", "2",
593 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
594 {"folder_col_pos_total", "3",
595 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
598 {"folder_col_size_folder", "120",
599 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_new", "32",
601 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_unread", "32",
603 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
604 {"folder_col_size_total", "32",
605 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
607 {"folder_col_size_folder", "400",
608 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
609 {"folder_col_size_new", "32",
610 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
611 {"folder_col_size_unread", "32",
612 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
613 {"folder_col_size_total", "32",
614 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
616 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
618 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
621 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
623 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
625 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
627 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
629 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
632 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
634 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
636 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
638 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
640 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
642 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
644 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
646 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
649 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
651 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
653 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
655 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
657 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
659 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
661 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
663 {"compose_width", "600", &prefs_common.compose_width, P_INT,
665 {"compose_height", "560", &prefs_common.compose_height, P_INT,
668 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
670 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
672 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
674 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
676 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
678 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
680 {"compose_width", "700", &prefs_common.compose_width, P_INT,
682 {"compose_height", "470", &prefs_common.compose_height, P_INT,
685 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
687 {"compose_x", "0", &prefs_common.compose_x, P_INT,
689 {"compose_y", "0", &prefs_common.compose_y, P_INT,
692 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
695 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
697 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
699 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
701 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
703 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
705 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
707 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
709 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
711 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
713 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
715 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
717 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
718 P_BOOL, NULL, NULL, NULL},
720 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
721 P_BOOL, NULL, NULL, NULL},
722 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
724 {"display_xface", "TRUE", &prefs_common.display_xface,
725 P_BOOL, NULL, NULL, NULL},
726 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
728 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
730 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
732 {"line_space", "2", &prefs_common.line_space, P_INT,
734 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
737 {"enable_smooth_scroll", "FALSE",
738 &prefs_common.enable_smooth_scroll, P_BOOL,
740 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
742 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
744 {"hide_quoted", "TRUE",
745 &prefs_common.hide_quoted, P_BOOL,
747 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
749 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
752 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
755 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
757 {"attach_save_directory", NULL,
758 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
759 {"attach_load_directory", NULL,
760 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
763 {"mime_textviewer", NULL,
764 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
765 {"mime_open_command", "gedit '%s'",
766 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
767 {"show_inline_attachments", "TRUE",
768 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
772 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
775 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
778 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
779 NULL, NULL, NULL}, */
780 {"always_show_message_when_selected", "0",
781 &prefs_common.always_show_msg,
782 P_ENUM, NULL, NULL, NULL},
783 {"select_on_entry", "3", &prefs_common.select_on_entry,
784 P_ENUM, NULL, NULL, NULL},
785 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
786 P_BOOL, NULL, NULL, NULL},
788 /* do it SUMMARY_OPEN_ACTIONS-1 times */
789 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
791 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
793 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
795 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
797 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
799 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
801 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
804 {"mark_as_read_on_new_window", "FALSE",
805 &prefs_common.mark_as_read_on_new_window,
806 P_BOOL, NULL, NULL, NULL},
807 {"mark_as_read_delay", "0",
808 &prefs_common.mark_as_read_delay, P_INT,
810 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
812 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
814 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
817 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
818 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
821 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
824 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
826 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
830 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
831 P_BOOL, NULL, NULL, NULL},
832 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
833 P_INT, NULL, NULL, NULL},
834 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
835 P_INT, NULL, NULL, NULL},
839 {"uri_open_command", DEFAULT_BROWSER_CMD,
840 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
842 {"ext_editor_command", DEFAULT_EDITOR_CMD,
843 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
844 {"cmds_use_system_default", "TRUE",
845 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
846 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
847 P_BOOL, NULL, NULL, NULL},
848 {"session_passwords", "FALSE", &prefs_common.session_passwords,
849 P_BOOL, NULL, NULL, NULL},
850 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
852 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
854 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
856 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
857 P_BOOL, NULL, NULL, NULL},
858 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
860 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
863 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
866 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
870 #if defined(__OpenBSD__)
871 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
872 P_INT, NULL, NULL, NULL},
874 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
875 P_INT, NULL, NULL, NULL},
877 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
879 {"important_score", "1", &prefs_common.important_score, P_INT,
882 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
884 {"log_length", "500", &prefs_common.loglength, P_INT,
887 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
889 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
891 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
893 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
896 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
898 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
900 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
902 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
905 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
907 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
909 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
911 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
913 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
915 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
917 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
919 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
922 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
924 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
926 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
928 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
930 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
932 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
934 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
936 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
938 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
941 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
944 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
947 /* Some windows' sizes */
948 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
950 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
953 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
955 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
958 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
960 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
963 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
965 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
968 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
970 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
973 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
975 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
978 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
980 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
983 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
985 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
988 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
990 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
993 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
995 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
998 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1000 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1003 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1005 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1008 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1011 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1013 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1016 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1018 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1021 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1023 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1026 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1028 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1031 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1033 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1036 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1038 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1041 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1043 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1046 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1048 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1051 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1053 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1056 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1058 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1062 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1064 {"utf8_instead_of_locale_for_broken_mail", "0",
1065 &prefs_common.broken_are_utf8, P_INT,
1067 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1069 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1071 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1073 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1075 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1077 {"folderview_vscrollbar_policy", "0",
1078 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1080 {"textview_cursor_visible", "FALSE",
1081 &prefs_common.textview_cursor_visible, P_BOOL,
1083 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1085 #ifndef GENERIC_UMPC
1086 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1088 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1091 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1093 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1096 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1097 P_INT, NULL, NULL, NULL },
1098 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1099 P_STRING, NULL, NULL, NULL },
1100 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1101 P_BOOL, NULL, NULL, NULL },
1102 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1104 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1106 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1108 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1110 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1112 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1114 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1116 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1118 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1120 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1122 #ifndef GENERIC_UMPC
1123 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1126 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1130 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1132 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1134 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1136 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1138 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1140 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1142 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1144 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1146 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1148 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1150 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1152 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1154 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1156 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1158 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1161 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1162 P_BOOL, NULL, NULL, NULL },
1164 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1167 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1170 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1173 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1175 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1177 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1180 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1184 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1185 * Fallback to default_list if history file is not found
1187 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1188 GList *default_list)
1192 gchar buf[PREFSBUFSIZE];
1196 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1197 G_DIR_SEPARATOR_S, history,
1200 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1203 if ((fp = g_fopen(path, "rb")) == NULL) {
1204 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1206 /* returns default list if set, otherwise NULL */
1207 return default_list;
1210 while (fgets(buf, sizeof(buf), fp) != NULL) {
1212 if (buf[0] == '\0') continue;
1213 tmp = add_history(tmp, buf);
1217 tmp = g_list_reverse(tmp);
1223 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1225 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1227 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1231 * Read history list from the specified history file
1233 static GList *prefs_common_read_history(const gchar *history)
1235 return prefs_common_read_history_from_dir(NULL, history);
1238 void prefs_common_read_config(void)
1243 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1244 prefs_read_config(param, "Common", rcpath, NULL);
1246 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1251 tmp = g_strdup(gettext(prefs_common.date_format));
1252 g_free(prefs_common.date_format);
1253 prefs_common.date_format = tmp;
1255 prefs_common.mime_open_cmd_history =
1256 prefs_common_read_history(COMMAND_HISTORY);
1257 prefs_common.summary_quicksearch_history =
1258 prefs_common_read_history(QUICKSEARCH_HISTORY);
1259 prefs_common.summary_search_from_history =
1260 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1261 prefs_common.summary_search_to_history =
1262 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1263 prefs_common.summary_search_subject_history =
1264 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1265 prefs_common.summary_search_body_history =
1266 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1267 prefs_common.summary_search_adv_condition_history =
1268 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1269 prefs_common.message_search_history =
1270 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1271 prefs_common.compose_save_to_history =
1272 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1273 #ifndef USE_NEW_ADDRBOOK
1274 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1276 colorlabel_update_colortable_from_prefs();
1282 g_warning("failed to write\n"); \
1287 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1289 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1293 gchar *path, *tmp_path;
1296 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1297 G_DIR_SEPARATOR_S, history,
1300 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1303 tmp_path = g_strconcat(path, ".tmp", NULL);
1305 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1306 FILE_OP_ERROR(tmp_path, "fopen");
1310 for (cur = list; cur != NULL; cur = cur->next) {
1311 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1312 fputc('\n', fp) != EOF);
1315 if (fclose(fp) == EOF) {
1316 FILE_OP_ERROR(tmp_path, "fclose");
1324 if (g_rename(tmp_path, path) < 0) {
1325 FILE_OP_ERROR(path, "rename");
1337 * Save history list to the specified history file
1339 static void prefs_common_save_history(const gchar *history, GList *list)
1341 prefs_common_save_history_to_dir(NULL, history, list);
1346 void prefs_common_write_config(void)
1348 prefs_write_config(param, "Common", COMMON_RC);
1350 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1353 prefs_common_save_history(COMMAND_HISTORY,
1354 prefs_common.mime_open_cmd_history);
1355 prefs_common_save_history(QUICKSEARCH_HISTORY,
1356 prefs_common.summary_quicksearch_history);
1357 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1358 prefs_common.summary_search_from_history);
1359 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1360 prefs_common.summary_search_to_history);
1361 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1362 prefs_common.summary_search_subject_history);
1363 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1364 prefs_common.summary_search_body_history);
1365 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1366 prefs_common.summary_search_adv_condition_history);
1367 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1368 prefs_common.message_search_history);
1369 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1370 prefs_common.compose_save_to_history);
1372 #ifndef USE_NEW_ADDRBOOK
1373 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1374 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1375 prefs_common.addressbook_custom_attributes);
1379 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1380 both 'in' and 'out' must be non-NULL.
1381 'out' must be a pointer to a buffer whose size is at least equal
1382 to strlen(txt)+1, this buffer will get cleared. out's contents
1383 will always get set to a valid string, even if it's "".*/
1384 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1391 cm_return_if_fail( in != NULL );
1392 cm_return_if_fail( out != NULL );
1396 memset(out, 0, strlen(in)+1);
1397 while (*i != '\0') {
1398 if (*i == '\\' && *(i+1) == 'n') {
1401 } else if (*i == '\\' && *(i+1) == 't') {
1404 } else if (*i == '\\' && *(i+1) == '\\') {
1415 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1416 both 'in' and 'out' must be non-NULL.
1417 'out' must be a pointer to a buffer whose size is at least equal
1418 to 2*strlen(txt)+1. out's contents will always get set to a valid
1419 string, even if it's "". */
1420 void pref_get_escaped_pref(gchar *out, const gchar *in)
1427 cm_return_if_fail( in != NULL );
1428 cm_return_if_fail( out != NULL );
1432 while (*i != '\0') {
1436 } else if (*i == '\t') {
1439 } else if (*i == '\\') {
1450 /* set the contents of a textview widget from the internal \-escaped
1451 representation of a pref string. both txt and textview must be non-NULL. */
1452 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1454 GtkTextBuffer *buffer;
1457 cm_return_if_fail( textview != NULL );
1459 buffer = gtk_text_view_get_buffer(textview);
1462 gtk_text_buffer_set_text(buffer, "", -1);
1464 out = g_malloc(strlen(txt)+1);
1466 pref_get_unescaped_pref(out, txt);
1468 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1473 /* set the contents of a gtkentry widget from the internal \-escaped
1474 representation of a pref string. both txt and entry must be non-NULL. */
1475 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1479 cm_return_if_fail( entry != NULL );
1481 gtk_entry_set_text(entry, "");
1483 out = g_malloc(strlen(txt)+1);
1485 pref_get_unescaped_pref(out, txt);
1487 gtk_entry_set_text(entry, out?out:"");
1492 /* get the \-escaped internal representation of a pref from the contents of
1493 a textview widget. textview must be non-NULL. */
1494 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1496 GtkTextBuffer *buffer;
1497 GtkTextIter start, end;
1500 cm_return_val_if_fail( textview != NULL, "" );
1502 buffer = gtk_text_view_get_buffer(textview);
1503 gtk_text_buffer_get_start_iter(buffer, &start);
1504 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1505 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1506 out = malloc(2*strlen(tmp)+1);
1508 pref_get_escaped_pref(out, tmp);
1514 /* get the \-escaped internal representation of a pref from the contents of
1515 a gtkentry widget. entry must be non-NULL. */
1516 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1520 cm_return_val_if_fail( entry != NULL, "" );
1522 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1523 out = malloc(2*strlen(tmp)+1);
1526 pref_get_escaped_pref(out, tmp);
1532 /* ugly hack to be able to get this pref from ssl_certificate.c */
1533 gboolean prefs_common_unsafe_ssl_certs(void)
1535 return prefs_common.unsafe_ssl_certs;
1538 gboolean prefs_common_enable_log_standard(void)
1540 return prefs_common.enable_log_standard;
1543 gboolean prefs_common_enable_log_warning(void)
1545 return prefs_common.enable_log_warning;
1547 gboolean prefs_common_enable_log_error(void)
1549 return prefs_common.enable_log_error;
1551 gboolean prefs_common_enable_log_status(void)
1553 return prefs_common.enable_log_status;
1557 const gchar *prefs_common_get_data_root(void)
1559 if (prefs_common.data_root && *prefs_common.data_root)
1560 return prefs_common.data_root;
1566 return the translated name of a header, if the translate_header option is
1567 set, otherwise return the untranslated header name (header_name itself).
1568 this function is provided for convenience, it's an interface to
1569 prefs_common.trans_hdr.
1570 works with header names either with or without trailing colon, provided
1571 that gettext found such header name in the sources (they should all be
1572 found in src/gtk/headers.h anyway).
1574 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1576 if (header_name == NULL || *header_name == '\0')
1579 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1582 const gchar *prefs_common_get_uri_cmd(void)
1589 if (!prefs_common.cmds_use_system_default)
1590 return prefs_common.uri_cmd;
1592 tmp = g_find_program_in_path("xdg-open");
1594 return prefs_common.uri_cmd;
1597 return "xdg-open %s";
1601 const gchar *prefs_common_get_ext_editor_cmd(void)
1603 return prefs_common.ext_editor_cmd;
1604 #if 0 /* we should do that, but it detaches the editor and breaks
1605 compose.c's external composition. */
1608 if (!prefs_common.cmds_use_system_default)
1609 return prefs_common.ext_editor_cmd;
1611 tmp = g_find_program_in_path("xdg-open");
1613 return prefs_common.ext_editor_cmd;
1616 return "xdg-open %s";
1620 gboolean prefs_common_get_use_shred(void)
1622 return prefs_common.use_shred;
1625 gboolean prefs_common_get_flush_metadata (void)
1627 return prefs_common.flush_metadata;
1630 PrefsCommon *prefs_common_get_prefs(void)
1632 return &prefs_common;