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/>.
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 {"message_font_gtk2", "Monospace 9",
99 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
100 {"print_font_gtk2", "Monospace 9",
101 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
102 {"small_font_gtk2", "Sans 9",
103 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
104 {"normal_font_gtk2", "Sans 9",
105 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
106 {"bold_font_gtk2", "Sans 9 Bold",
107 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
109 {"attach_save_directory", NULL,
110 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
111 {"attach_load_directory", NULL,
112 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
115 {"mime_textviewer", NULL,
116 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
117 {"mime_open_command", "notepad '%s'",
118 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
121 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
122 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
125 {"ext_editor_command", "notepad %s",
126 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
128 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
131 # define SPECIFIC_PREFS prefs_common
135 parameter name, default value, pointer to the prefs variable, data type,
136 pointer to the widget pointer,
137 pointer to the function for data setting,
138 pointer to the function for widget setting
141 static PrefParam param[] = {
143 {"data_root", "", &prefs_common.data_root, P_STRING,
147 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
149 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
152 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
154 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
156 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
158 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
159 P_BOOL, NULL, NULL, NULL},
160 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
161 P_BOOL, NULL, NULL, NULL},
162 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
163 P_BOOL, NULL, NULL, NULL},
164 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
165 P_BOOL, NULL, NULL, NULL},
166 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
169 {"maemo_show_led", "TRUE", &prefs_common.maemo_show_led, P_BOOL,
171 {"maemo_play_sound", "FALSE", &prefs_common.maemo_play_sound, P_BOOL,
173 {"maemo_show_banner", "FALSE", &prefs_common.maemo_show_banner, P_BOOL,
176 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
178 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
180 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
182 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
183 P_BOOL, NULL, NULL, NULL},
184 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
185 P_BOOL, NULL, NULL, NULL},
188 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
190 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
191 P_BOOL, NULL, NULL, NULL},
193 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
196 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
199 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
201 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
204 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
206 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
208 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
211 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
212 P_BOOL, NULL, NULL, NULL},
215 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
217 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
218 P_BOOL, NULL, NULL, NULL},
219 {"redirect_keep_from", "FALSE",
220 &prefs_common.redirect_keep_from, P_BOOL,
222 {"undo_level", "50", &prefs_common.undolevels, P_INT,
224 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
226 {"compose_subject_format", "",
227 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
228 {"compose_body_format", N_("Hello,\\n"),
229 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
230 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
234 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
236 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
238 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
240 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
242 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
244 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
246 {"autosave", "TRUE", &prefs_common.autosave,
247 P_BOOL, NULL, NULL, NULL},
248 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
250 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
251 P_BOOL, NULL, NULL, NULL},
252 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
253 P_INT, NULL, NULL, NULL},
255 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
257 {"dictionary", "", &prefs_common.dictionary, P_STRING,
259 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
261 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
263 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
265 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
266 P_BOOL, NULL, NULL, NULL},
267 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
269 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
272 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
274 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
277 /* Account autoselection */
278 {"reply_account_autoselect", "TRUE",
279 &prefs_common.reply_account_autosel, P_BOOL,
281 {"forward_account_autoselect", "TRUE",
282 &prefs_common.forward_account_autosel, P_BOOL,
284 {"reedit_account_autoselect", "TRUE",
285 &prefs_common.reedit_account_autosel, P_BOOL,
288 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
292 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
295 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
300 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
302 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
303 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
305 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
307 {"forward_quote_format",
308 N_("\\n\\nBegin forwarded message:\\n\\n"
309 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
310 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
311 &prefs_common.fw_quotefmt, P_STRING,
313 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
317 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
318 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
319 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
320 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
321 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
322 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
323 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
324 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
325 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
329 {"message_font_gtk2", "Monospace 9",
330 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
331 {"print_font_gtk2", "Monospace 9",
332 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
333 {"small_font_gtk2", "Sans 9",
334 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
335 {"normal_font_gtk2", "Sans 9",
336 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
337 {"bold_font_gtk2", "Sans Bold 9",
338 &SPECIFIC_PREFS.boldfont, 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 {"ext_editor_command", DEFAULT_EDITOR_CMD,
836 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
837 {"cmds_use_system_default", "TRUE",
838 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
839 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
840 P_BOOL, NULL, NULL, NULL},
841 {"session_passwords", "FALSE", &prefs_common.session_passwords,
842 P_BOOL, NULL, NULL, NULL},
843 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
845 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
847 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
849 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
850 P_BOOL, NULL, NULL, NULL},
851 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
853 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
856 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
859 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
863 #if defined(__OpenBSD__)
864 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
865 P_INT, NULL, NULL, NULL},
867 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
868 P_INT, NULL, NULL, NULL},
870 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
872 {"important_score", "1", &prefs_common.important_score, P_INT,
875 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
877 {"log_length", "500", &prefs_common.loglength, P_INT,
880 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
882 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
884 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
886 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
889 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
891 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
893 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
895 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
898 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
900 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
902 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
904 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
906 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
908 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
910 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
912 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
915 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
917 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
919 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
921 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
923 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
925 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
927 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
929 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
931 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
934 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
937 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
940 /* Some windows' sizes */
941 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
943 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
946 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
948 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
951 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
953 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
956 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
958 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
961 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
963 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
966 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
968 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
971 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
973 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
976 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
978 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
981 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
983 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
986 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
988 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
991 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
993 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
996 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
998 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1001 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1004 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1006 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1009 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1011 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1014 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1016 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1019 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1021 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1024 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1026 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1029 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1031 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1034 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1036 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1039 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1041 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1044 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1046 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1049 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1051 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1055 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1057 {"utf8_instead_of_locale_for_broken_mail", "0",
1058 &prefs_common.broken_are_utf8, P_INT,
1060 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1062 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1064 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1066 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1068 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1070 {"folderview_vscrollbar_policy", "0",
1071 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1073 {"textview_cursor_visible", "FALSE",
1074 &prefs_common.textview_cursor_visible, P_BOOL,
1076 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1078 #ifndef GENERIC_UMPC
1079 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1081 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1084 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1086 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1089 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1090 P_INT, NULL, NULL, NULL },
1091 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1092 P_STRING, NULL, NULL, NULL },
1093 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1094 P_BOOL, NULL, NULL, NULL },
1095 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1097 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1099 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1101 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1103 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1105 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1107 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1109 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1111 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1113 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1115 #ifndef GENERIC_UMPC
1116 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1119 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1123 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1125 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1127 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1129 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1131 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1133 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1135 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1137 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1139 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1141 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1143 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1145 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1147 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1149 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1151 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1154 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1155 P_BOOL, NULL, NULL, NULL },
1157 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1160 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1163 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1166 {"diff_added_color", "#008b8b", &prefs_common.diff_added_color, P_COLOR,
1168 {"diff_deleted_color", "#6a5acd", &prefs_common.diff_deleted_color, P_COLOR,
1170 {"diff_hunk_color", "#a52a2a", &prefs_common.diff_hunk_color, P_COLOR,
1173 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1177 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1178 * Fallback to default_list if history file is not found
1180 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1181 GList *default_list)
1185 gchar buf[PREFSBUFSIZE];
1189 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1190 G_DIR_SEPARATOR_S, history,
1193 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1196 if ((fp = g_fopen(path, "rb")) == NULL) {
1197 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1199 /* returns default list if set, otherwise NULL */
1200 return default_list;
1203 while (fgets(buf, sizeof(buf), fp) != NULL) {
1205 if (buf[0] == '\0') continue;
1206 tmp = add_history(tmp, buf);
1210 tmp = g_list_reverse(tmp);
1216 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1218 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1220 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1224 * Read history list from the specified history file
1226 static GList *prefs_common_read_history(const gchar *history)
1228 return prefs_common_read_history_from_dir(NULL, history);
1231 void prefs_common_read_config(void)
1236 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1237 prefs_read_config(param, "Common", rcpath, NULL);
1239 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1244 tmp = g_strdup(gettext(prefs_common.date_format));
1245 g_free(prefs_common.date_format);
1246 prefs_common.date_format = tmp;
1248 prefs_common.mime_open_cmd_history =
1249 prefs_common_read_history(COMMAND_HISTORY);
1250 prefs_common.summary_quicksearch_history =
1251 prefs_common_read_history(QUICKSEARCH_HISTORY);
1252 prefs_common.summary_search_from_history =
1253 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1254 prefs_common.summary_search_to_history =
1255 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1256 prefs_common.summary_search_subject_history =
1257 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1258 prefs_common.summary_search_body_history =
1259 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1260 prefs_common.summary_search_adv_condition_history =
1261 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1262 prefs_common.message_search_history =
1263 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1264 prefs_common.compose_save_to_history =
1265 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1266 #ifndef USE_NEW_ADDRBOOK
1267 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1269 colorlabel_update_colortable_from_prefs();
1275 g_warning("failed to write\n"); \
1280 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1282 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1286 gchar *path, *tmp_path;
1289 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1290 G_DIR_SEPARATOR_S, history,
1293 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1296 tmp_path = g_strconcat(path, ".tmp", NULL);
1298 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1299 FILE_OP_ERROR(tmp_path, "fopen");
1303 for (cur = list; cur != NULL; cur = cur->next) {
1304 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1305 fputc('\n', fp) != EOF);
1308 if (fclose(fp) == EOF) {
1309 FILE_OP_ERROR(tmp_path, "fclose");
1317 if (g_rename(tmp_path, path) < 0) {
1318 FILE_OP_ERROR(path, "rename");
1330 * Save history list to the specified history file
1332 static void prefs_common_save_history(const gchar *history, GList *list)
1334 prefs_common_save_history_to_dir(NULL, history, list);
1339 void prefs_common_write_config(void)
1341 prefs_write_config(param, "Common", COMMON_RC);
1343 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1346 prefs_common_save_history(COMMAND_HISTORY,
1347 prefs_common.mime_open_cmd_history);
1348 prefs_common_save_history(QUICKSEARCH_HISTORY,
1349 prefs_common.summary_quicksearch_history);
1350 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1351 prefs_common.summary_search_from_history);
1352 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1353 prefs_common.summary_search_to_history);
1354 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1355 prefs_common.summary_search_subject_history);
1356 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1357 prefs_common.summary_search_body_history);
1358 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1359 prefs_common.summary_search_adv_condition_history);
1360 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1361 prefs_common.message_search_history);
1362 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1363 prefs_common.compose_save_to_history);
1365 #ifndef USE_NEW_ADDRBOOK
1366 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1367 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1368 prefs_common.addressbook_custom_attributes);
1372 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1373 both 'in' and 'out' must be non-NULL.
1374 'out' must be a pointer to a buffer whose size is at least equal
1375 to strlen(txt)+1, this buffer will get cleared. out's contents
1376 will always get set to a valid string, even if it's "".*/
1377 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1384 cm_return_if_fail( in != NULL );
1385 cm_return_if_fail( out != NULL );
1389 memset(out, 0, strlen(in)+1);
1390 while (*i != '\0') {
1391 if (*i == '\\' && *(i+1) == 'n') {
1394 } else if (*i == '\\' && *(i+1) == 't') {
1397 } else if (*i == '\\' && *(i+1) == '\\') {
1408 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1409 both 'in' and 'out' must be non-NULL.
1410 'out' must be a pointer to a buffer whose size is at least equal
1411 to 2*strlen(txt)+1. out's contents will always get set to a valid
1412 string, even if it's "". */
1413 void pref_get_escaped_pref(gchar *out, const gchar *in)
1420 cm_return_if_fail( in != NULL );
1421 cm_return_if_fail( out != NULL );
1425 while (*i != '\0') {
1429 } else if (*i == '\t') {
1432 } else if (*i == '\\') {
1443 /* set the contents of a textview widget from the internal \-escaped
1444 representation of a pref string. both txt and textview must be non-NULL. */
1445 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1447 GtkTextBuffer *buffer;
1450 cm_return_if_fail( textview != NULL );
1452 buffer = gtk_text_view_get_buffer(textview);
1455 gtk_text_buffer_set_text(buffer, "", -1);
1457 out = g_malloc(strlen(txt)+1);
1459 pref_get_unescaped_pref(out, txt);
1461 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1466 /* set the contents of a gtkentry widget from the internal \-escaped
1467 representation of a pref string. both txt and entry must be non-NULL. */
1468 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1472 cm_return_if_fail( entry != NULL );
1474 gtk_entry_set_text(entry, "");
1476 out = g_malloc(strlen(txt)+1);
1478 pref_get_unescaped_pref(out, txt);
1480 gtk_entry_set_text(entry, out?out:"");
1485 /* get the \-escaped internal representation of a pref from the contents of
1486 a textview widget. textview must be non-NULL. */
1487 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1489 GtkTextBuffer *buffer;
1490 GtkTextIter start, end;
1493 cm_return_val_if_fail( textview != NULL, "" );
1495 buffer = gtk_text_view_get_buffer(textview);
1496 gtk_text_buffer_get_start_iter(buffer, &start);
1497 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1498 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1499 out = malloc(2*strlen(tmp)+1);
1501 pref_get_escaped_pref(out, tmp);
1507 /* get the \-escaped internal representation of a pref from the contents of
1508 a gtkentry widget. entry must be non-NULL. */
1509 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1513 cm_return_val_if_fail( entry != NULL, "" );
1515 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1516 out = malloc(2*strlen(tmp)+1);
1519 pref_get_escaped_pref(out, tmp);
1525 /* ugly hack to be able to get this pref from ssl_certificate.c */
1526 gboolean prefs_common_unsafe_ssl_certs(void)
1528 return prefs_common.unsafe_ssl_certs;
1531 gboolean prefs_common_enable_log_standard(void)
1533 return prefs_common.enable_log_standard;
1536 gboolean prefs_common_enable_log_warning(void)
1538 return prefs_common.enable_log_warning;
1540 gboolean prefs_common_enable_log_error(void)
1542 return prefs_common.enable_log_error;
1544 gboolean prefs_common_enable_log_status(void)
1546 return prefs_common.enable_log_status;
1550 const gchar *prefs_common_get_data_root(void)
1552 if (prefs_common.data_root && *prefs_common.data_root)
1553 return prefs_common.data_root;
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;
1628 void prefs_common_zoom_font(gchar **font, ZoomType type)
1630 PangoFontDescription *font_desc;
1633 if (font == NULL || *font == '\0')
1636 font_desc = pango_font_description_from_string(*font);
1637 size = pango_font_description_get_size(font_desc)/PANGO_SCALE;
1639 if (type == ZOOM_IN && size < 30)
1641 if (type == ZOOM_OUT && size > 5)
1644 pango_font_description_set_size(font_desc, size*PANGO_SCALE);
1647 *font = pango_font_description_to_string(font_desc);
1648 pango_font_description_free(font_desc);