2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2009 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 #include "addrcustomattr.h"
70 PrefsCommon prefs_common;
76 * In the Windows version prefs_common contains
77 * - the non-OS-specific settings of the "Common" section and
78 * - the OS-specific settings of the "CommonWin32" section
79 * The OS-specific settings of the "Common" section are not used
80 * but saved in prefs_unix.
83 # define SPECIFIC_PREFS prefs_unix
85 static PrefsCommon prefs_unix;
87 static PrefParam param_os_specific[] = {
90 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
91 {"newmail_notify_cmd", "",
92 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
95 {"widget_font_gtk2", NULL,
96 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
97 {"message_font_gtk2", "Monospace 9",
98 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
99 {"print_font_gtk2", "Monospace 9",
100 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
101 {"small_font_gtk2", "Sans 9",
102 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
103 {"normal_font_gtk2", "Sans 9",
104 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
105 {"bold_font_gtk2", "Sans 9 Bold",
106 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
108 {"attach_save_directory", NULL,
109 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
110 {"attach_load_directory", NULL,
111 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
114 {"mime_textviewer", NULL,
115 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
116 {"mime_open_command", "notepad '%s'",
117 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
120 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
121 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
124 {"ext_editor_command", "notepad %s",
125 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
127 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
130 # define SPECIFIC_PREFS prefs_common
134 parameter name, default value, pointer to the prefs variable, data type,
135 pointer to the widget pointer,
136 pointer to the function for data setting,
137 pointer to the function for widget setting
140 static PrefParam param[] = {
142 {"data_root", "", &prefs_common.data_root, P_STRING,
146 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
148 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
151 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
153 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
155 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
157 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
158 P_BOOL, NULL, NULL, NULL},
159 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
160 P_BOOL, NULL, NULL, NULL},
161 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
162 P_BOOL, NULL, NULL, NULL},
163 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
164 P_BOOL, NULL, NULL, NULL},
165 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
168 {"maemo_show_led", "TRUE", &prefs_common.maemo_show_led, P_BOOL,
170 {"maemo_play_sound", "FALSE", &prefs_common.maemo_play_sound, P_BOOL,
172 {"maemo_show_banner", "FALSE", &prefs_common.maemo_show_banner, P_BOOL,
175 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
177 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
179 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
181 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
182 P_BOOL, NULL, NULL, NULL},
183 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
184 P_BOOL, NULL, NULL, NULL},
187 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
189 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
190 P_BOOL, NULL, NULL, NULL},
192 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
195 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
198 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
200 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
203 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
205 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
207 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
210 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
211 P_BOOL, NULL, NULL, NULL},
214 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
216 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
217 P_BOOL, NULL, NULL, NULL},
218 {"redirect_keep_from", "FALSE",
219 &prefs_common.redirect_keep_from, P_BOOL,
221 {"undo_level", "50", &prefs_common.undolevels, P_INT,
223 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
225 {"compose_subject_format", "",
226 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
227 {"compose_body_format", N_("Hello,\\n"),
228 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
230 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
232 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
234 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
236 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
238 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
240 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
242 {"autosave", "TRUE", &prefs_common.autosave,
243 P_BOOL, NULL, NULL, NULL},
244 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
247 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
249 {"dictionary", "", &prefs_common.dictionary, P_STRING,
251 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
253 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
255 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
257 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
258 P_BOOL, NULL, NULL, NULL},
259 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
261 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
264 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
266 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
269 /* Account autoselection */
270 {"reply_account_autoselect", "TRUE",
271 &prefs_common.reply_account_autosel, P_BOOL,
273 {"forward_account_autoselect", "TRUE",
274 &prefs_common.forward_account_autosel, P_BOOL,
276 {"reedit_account_autoselect", "TRUE",
277 &prefs_common.reedit_account_autosel, P_BOOL,
280 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
284 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
287 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
292 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
294 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
295 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
297 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
299 {"forward_quote_format",
300 N_("\\n\\nBegin forwarded message:\\n\\n"
301 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
302 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
303 &prefs_common.fw_quotefmt, P_STRING,
305 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
309 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
310 {"widget_font", NULL,
311 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
312 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
313 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
314 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
315 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
317 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
318 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
319 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
323 {"widget_font_gtk2", NULL,
324 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
325 {"message_font_gtk2", "Monospace 9",
326 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
327 {"print_font_gtk2", "Monospace 9",
328 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
329 {"small_font_gtk2", "Sans 9",
330 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
331 {"normal_font_gtk2", "Sans 9",
332 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
333 {"bold_font_gtk2", "Sans Bold 9",
334 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
336 {"widget_font_gtk2", NULL,
337 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
338 {"message_font_gtk2", "Monospace 8",
339 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
340 {"print_font_gtk2", "Monospace 8",
341 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
342 {"small_font_gtk2", "Sans 8",
343 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
344 {"normal_font_gtk2", "Sans 8",
345 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
346 {"bold_font_gtk2", "Sans Bold 8",
347 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
350 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
352 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
356 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
358 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
360 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
362 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
364 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
366 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
368 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
370 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
372 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
374 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
376 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
378 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
380 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
382 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
384 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
386 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
388 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
390 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
392 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
394 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
396 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
398 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
400 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
402 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
404 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
406 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
408 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
410 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
412 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
414 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
418 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
420 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
422 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
425 {"display_folder_unread_num", "0",
426 &prefs_common.display_folder_unread, P_INT,
428 {"newsgroup_abbrev_len", "16",
429 &prefs_common.ng_abbrev_len, P_INT,
432 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
435 /* Display: Summary View */
436 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
438 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
440 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
441 P_STRING, NULL, NULL, NULL},
443 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
446 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
449 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
452 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
455 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
457 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
460 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
462 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
465 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
467 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
471 {"summary_col_show_mark", "TRUE",
472 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
473 {"summary_col_show_unread", "TRUE",
474 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
475 {"summary_col_show_subject", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_from", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_to", "FALSE",
480 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_date", "TRUE",
482 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_mime", "TRUE",
484 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_size", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_number", "FALSE",
488 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_score", "FALSE",
490 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_locked", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_tags", "FALSE",
494 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
496 {"summary_col_pos_mark", "0",
497 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
498 {"summary_col_pos_unread", "1",
499 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
500 {"summary_col_pos_mime", "2",
501 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_subject", "3",
503 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_from", "4",
505 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_date", "5",
507 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_size", "6",
509 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_number", "7",
511 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_score", "8",
513 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_locked", "9",
515 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_to", "10",
517 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_tags", "11",
519 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
521 {"summary_col_size_mark", "10",
522 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
523 {"summary_col_size_unread", "13",
524 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
525 {"summary_col_size_mime", "10",
526 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
528 {"summary_col_size_subject", "200",
529 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_from", "120",
531 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_to", "120",
533 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
535 {"summary_col_size_subject", "300",
536 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_from", "150",
538 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_to", "150",
540 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_date", "118",
544 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_size", "45",
546 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_number", "40",
548 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_score", "40",
550 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_locked", "13",
552 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_tags", "150",
554 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
557 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
559 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
561 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
563 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
565 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
568 {"folder_col_show_folder", "TRUE",
569 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
570 {"folder_col_show_new", "TRUE",
571 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
572 {"folder_col_show_unread", "TRUE",
573 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
574 {"folder_col_show_total", "TRUE",
575 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
577 {"folder_col_pos_folder", "0",
578 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
579 {"folder_col_pos_new", "1",
580 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
581 {"folder_col_pos_unread", "2",
582 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
583 {"folder_col_pos_total", "3",
584 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
587 {"folder_col_size_folder", "120",
588 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
589 {"folder_col_size_new", "32",
590 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
591 {"folder_col_size_unread", "32",
592 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
593 {"folder_col_size_total", "32",
594 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
596 {"folder_col_size_folder", "400",
597 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
598 {"folder_col_size_new", "32",
599 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_unread", "32",
601 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_total", "32",
603 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
605 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
607 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
610 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
612 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
614 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
616 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
618 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
621 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
623 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
625 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
627 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
629 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
631 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
633 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
635 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
638 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
640 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
642 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
644 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
646 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
648 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
650 {"compose_width", "600", &prefs_common.compose_width, P_INT,
652 {"compose_height", "560", &prefs_common.compose_height, P_INT,
655 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
657 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
659 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
661 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
663 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
665 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
667 {"compose_width", "700", &prefs_common.compose_width, P_INT,
669 {"compose_height", "470", &prefs_common.compose_height, P_INT,
672 {"compose_x", "0", &prefs_common.compose_x, P_INT,
674 {"compose_y", "0", &prefs_common.compose_y, P_INT,
677 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
680 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
682 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
684 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
686 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
688 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
690 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
692 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
694 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
696 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
698 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
700 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
702 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
703 P_BOOL, NULL, NULL, NULL},
705 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
706 P_BOOL, NULL, NULL, NULL},
707 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
709 {"display_xface", "TRUE", &prefs_common.display_xface,
710 P_BOOL, NULL, NULL, NULL},
711 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
713 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
715 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
717 {"line_space", "2", &prefs_common.line_space, P_INT,
719 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
722 {"enable_smooth_scroll", "FALSE",
723 &prefs_common.enable_smooth_scroll, P_BOOL,
725 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
727 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
729 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
732 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
735 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
737 {"attach_save_directory", NULL,
738 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
739 {"attach_load_directory", NULL,
740 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
743 {"mime_textviewer", NULL,
744 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
745 {"mime_open_command", "gedit '%s'",
746 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
750 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
753 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
756 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
757 NULL, NULL, NULL}, */
758 {"always_show_message_when_selected", "0",
759 &prefs_common.always_show_msg,
760 P_ENUM, NULL, NULL, NULL},
761 {"select_on_entry", "3", &prefs_common.select_on_entry,
762 P_ENUM, NULL, NULL, NULL},
763 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
764 P_BOOL, NULL, NULL, NULL},
766 /* do it SUMMARY_OPEN_ACTIONS-1 times */
767 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
769 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
771 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
773 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
775 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
777 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
779 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
782 {"mark_as_read_on_new_window", "FALSE",
783 &prefs_common.mark_as_read_on_new_window,
784 P_BOOL, NULL, NULL, NULL},
785 {"mark_as_read_delay", "0",
786 &prefs_common.mark_as_read_delay, P_INT,
788 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
790 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
793 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
794 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
797 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
800 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
802 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
806 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
807 P_BOOL, NULL, NULL, NULL},
808 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
809 P_INT, NULL, NULL, NULL},
810 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
811 P_INT, NULL, NULL, NULL},
815 {"uri_open_command", DEFAULT_BROWSER_CMD,
816 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
817 {"print_command", "lpr %s",
818 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
820 {"ext_editor_command", DEFAULT_EDITOR_CMD,
821 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
822 {"cmds_use_system_default", "TRUE",
823 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
824 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
825 P_BOOL, NULL, NULL, NULL},
826 {"session_passwords", "FALSE", &prefs_common.session_passwords,
827 P_BOOL, NULL, NULL, NULL},
828 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
830 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
832 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
834 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
835 P_BOOL, NULL, NULL, NULL},
836 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
838 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
841 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
844 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
848 #if defined(__OpenBSD__)
849 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
850 P_INT, NULL, NULL, NULL},
852 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
853 P_INT, NULL, NULL, NULL},
855 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
857 {"important_score", "1", &prefs_common.important_score, P_INT,
860 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
862 {"log_length", "500", &prefs_common.loglength, P_INT,
865 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
867 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
869 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
871 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
874 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
876 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
878 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
880 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
883 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
885 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
887 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
889 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
891 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
893 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
895 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
897 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
900 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
902 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
904 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
906 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
908 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
910 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
912 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
914 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
916 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
919 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
922 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
925 /* Some windows' sizes */
926 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
928 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
931 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
933 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
936 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
938 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
941 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
943 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
946 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
948 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
951 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
953 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
956 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
958 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
961 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
963 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
966 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
968 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
971 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
973 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
976 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
978 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
981 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
983 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
986 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
989 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
991 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
994 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
996 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
999 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1001 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1004 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1006 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1009 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1011 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1014 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1016 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1019 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1021 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1024 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1026 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1030 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1032 {"utf8_instead_of_locale_for_broken_mail", "0",
1033 &prefs_common.broken_are_utf8, P_INT,
1035 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1037 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1039 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1041 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1043 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1045 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1047 {"folderview_vscrollbar_policy", "0",
1048 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1050 {"textview_cursor_visible", "FALSE",
1051 &prefs_common.textview_cursor_visible, P_BOOL,
1053 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1055 #ifndef GENERIC_UMPC
1056 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1058 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1061 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1063 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1066 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1067 P_INT, NULL, NULL, NULL },
1068 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1069 P_STRING, NULL, NULL, NULL },
1070 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1071 P_BOOL, NULL, NULL, NULL },
1072 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1074 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1076 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1078 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1080 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1082 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1084 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1086 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1088 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1090 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1092 #ifndef GENERIC_UMPC
1093 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1096 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1100 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1102 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1104 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1106 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1108 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1110 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1112 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1114 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1116 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1118 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1120 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1122 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1124 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1126 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1128 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1131 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1132 P_BOOL, NULL, NULL, NULL },
1134 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1137 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1140 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1144 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1145 * Fallback to default_list if history file is not found
1147 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1148 GList *default_list)
1152 gchar buf[PREFSBUFSIZE];
1156 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1157 G_DIR_SEPARATOR_S, history,
1160 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1163 if ((fp = g_fopen(path, "rb")) == NULL) {
1164 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1166 /* returns default list if set, otherwise NULL */
1167 return default_list;
1170 while (fgets(buf, sizeof(buf), fp) != NULL) {
1172 if (buf[0] == '\0') continue;
1173 tmp = add_history(tmp, buf);
1177 tmp = g_list_reverse(tmp);
1183 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1185 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1187 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1191 * Read history list from the specified history file
1193 static GList *prefs_common_read_history(const gchar *history)
1195 return prefs_common_read_history_from_dir(NULL, history);
1198 void prefs_common_read_config(void)
1203 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1204 prefs_read_config(param, "Common", rcpath, NULL);
1206 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1211 tmp = g_strdup(gettext(prefs_common.date_format));
1212 g_free(prefs_common.date_format);
1213 prefs_common.date_format = tmp;
1215 prefs_common.mime_open_cmd_history =
1216 prefs_common_read_history(COMMAND_HISTORY);
1217 prefs_common.summary_quicksearch_history =
1218 prefs_common_read_history(QUICKSEARCH_HISTORY);
1219 prefs_common.summary_search_from_history =
1220 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1221 prefs_common.summary_search_to_history =
1222 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1223 prefs_common.summary_search_subject_history =
1224 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1225 prefs_common.summary_search_body_history =
1226 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1227 prefs_common.summary_search_adv_condition_history =
1228 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1229 prefs_common.message_search_history =
1230 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1231 prefs_common.compose_save_to_history =
1232 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1234 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1236 colorlabel_update_colortable_from_prefs();
1242 g_warning("failed to write\n"); \
1247 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1249 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1253 gchar *path, *tmp_path;
1256 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1257 G_DIR_SEPARATOR_S, history,
1260 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1263 tmp_path = g_strconcat(path, ".tmp", NULL);
1265 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1266 FILE_OP_ERROR(tmp_path, "fopen");
1270 for (cur = list; cur != NULL; cur = cur->next) {
1271 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1272 fputc('\n', fp) != EOF);
1275 if (fclose(fp) == EOF) {
1276 FILE_OP_ERROR(tmp_path, "fclose");
1284 if (g_rename(tmp_path, path) < 0) {
1285 FILE_OP_ERROR(path, "rename");
1297 * Save history list to the specified history file
1299 static void prefs_common_save_history(const gchar *history, GList *list)
1301 prefs_common_save_history_to_dir(NULL, history, list);
1306 void prefs_common_write_config(void)
1308 prefs_write_config(param, "Common", COMMON_RC);
1310 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1313 prefs_common_save_history(COMMAND_HISTORY,
1314 prefs_common.mime_open_cmd_history);
1315 prefs_common_save_history(QUICKSEARCH_HISTORY,
1316 prefs_common.summary_quicksearch_history);
1317 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1318 prefs_common.summary_search_from_history);
1319 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1320 prefs_common.summary_search_to_history);
1321 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1322 prefs_common.summary_search_subject_history);
1323 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1324 prefs_common.summary_search_body_history);
1325 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1326 prefs_common.summary_search_adv_condition_history);
1327 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1328 prefs_common.message_search_history);
1329 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1330 prefs_common.compose_save_to_history);
1332 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1333 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1334 prefs_common.addressbook_custom_attributes);
1337 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1338 both 'in' and 'out' must be non-NULL.
1339 'out' must be a pointer to a buffer whose size is at least equal
1340 to strlen(txt)+1, this buffer will get cleared. out's contents
1341 will always get set to a valid string, even if it's "".*/
1342 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1349 cm_return_if_fail( in != NULL );
1350 cm_return_if_fail( out != NULL );
1354 memset(out, 0, strlen(in)+1);
1355 while (*i != '\0') {
1356 if (*i == '\\' && *(i+1) == 'n') {
1359 } else if (*i == '\\' && *(i+1) == 't') {
1362 } else if (*i == '\\' && *(i+1) == '\\') {
1373 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1374 both 'in' and 'out' must be non-NULL.
1375 'out' must be a pointer to a buffer whose size is at least equal
1376 to 2*strlen(txt)+1. out's contents will always get set to a valid
1377 string, even if it's "". */
1378 void pref_get_escaped_pref(gchar *out, const gchar *in)
1385 cm_return_if_fail( in != NULL );
1386 cm_return_if_fail( out != NULL );
1390 while (*i != '\0') {
1394 } else if (*i == '\t') {
1397 } else if (*i == '\\') {
1408 /* set the contents of a textview widget from the internal \-escaped
1409 representation of a pref string. both txt and textview must be non-NULL. */
1410 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1412 GtkTextBuffer *buffer;
1415 cm_return_if_fail( textview != NULL );
1417 buffer = gtk_text_view_get_buffer(textview);
1420 gtk_text_buffer_set_text(buffer, "", -1);
1422 out = malloc(strlen(txt)+1);
1424 pref_get_unescaped_pref(out, txt);
1426 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1431 /* set the contents of a gtkentry widget from the internal \-escaped
1432 representation of a pref string. both txt and entry must be non-NULL. */
1433 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1437 cm_return_if_fail( entry != NULL );
1439 gtk_entry_set_text(entry, "");
1441 out = malloc(strlen(txt)+1);
1443 pref_get_unescaped_pref(out, txt);
1445 gtk_entry_set_text(entry, out?out:"");
1450 /* get the \-escaped internal representation of a pref from the contents of
1451 a textview widget. textview must be non-NULL. */
1452 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1454 GtkTextBuffer *buffer;
1455 GtkTextIter start, end;
1458 cm_return_val_if_fail( textview != NULL, "" );
1460 buffer = gtk_text_view_get_buffer(textview);
1461 gtk_text_buffer_get_start_iter(buffer, &start);
1462 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1463 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1464 out = malloc(2*strlen(tmp)+1);
1466 pref_get_escaped_pref(out, tmp);
1472 /* get the \-escaped internal representation of a pref from the contents of
1473 a gtkentry widget. entry must be non-NULL. */
1474 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1478 cm_return_val_if_fail( entry != NULL, "" );
1480 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1481 out = malloc(2*strlen(tmp)+1);
1484 pref_get_escaped_pref(out, tmp);
1490 /* ugly hack to be able to get this pref from ssl_certificate.c */
1491 gboolean prefs_common_unsafe_ssl_certs(void)
1493 return prefs_common.unsafe_ssl_certs;
1496 gboolean prefs_common_enable_log_standard(void)
1498 return prefs_common.enable_log_standard;
1501 gboolean prefs_common_enable_log_warning(void)
1503 return prefs_common.enable_log_warning;
1505 gboolean prefs_common_enable_log_error(void)
1507 return prefs_common.enable_log_error;
1509 gboolean prefs_common_enable_log_status(void)
1511 return prefs_common.enable_log_status;
1515 const gchar *prefs_common_get_data_root(void)
1517 if (prefs_common.data_root && *prefs_common.data_root)
1518 return prefs_common.data_root;
1524 return the translated name of a header, if the translate_header option is
1525 set, otherwise return the untranslated header name (header_name itself).
1526 this function is provided for convenience, it's an interface to
1527 prefs_common.trans_hdr.
1528 works with header names either with or without trailing colon, provided
1529 that gettext found such header name in the sources (they should all be
1530 found in src/gtk/headers.h anyway).
1532 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1534 if (header_name == NULL || *header_name == '\0')
1537 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1540 const gchar *prefs_common_get_uri_cmd(void)
1547 if (!prefs_common.cmds_use_system_default)
1548 return prefs_common.uri_cmd;
1550 tmp = g_find_program_in_path("xdg-open");
1552 return prefs_common.uri_cmd;
1555 return "xdg-open %s";
1559 const gchar *prefs_common_get_ext_editor_cmd(void)
1561 return prefs_common.ext_editor_cmd;
1562 #if 0 /* we should do that, but it detaches the editor and breaks
1563 compose.c's external composition. */
1566 if (!prefs_common.cmds_use_system_default)
1567 return prefs_common.ext_editor_cmd;
1569 tmp = g_find_program_in_path("xdg-open");
1571 return prefs_common.ext_editor_cmd;
1574 return "xdg-open %s";
1578 gboolean prefs_common_get_use_shred(void)
1580 return prefs_common.use_shred;
1583 gboolean prefs_common_get_flush_metadata (void)
1585 return prefs_common.flush_metadata;
1588 PrefsCommon *prefs_common_get_prefs(void)
1590 return &prefs_common;