2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2011 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},
229 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
233 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
235 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
237 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
239 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
241 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
243 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
245 {"autosave", "TRUE", &prefs_common.autosave,
246 P_BOOL, NULL, NULL, NULL},
247 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
249 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
250 P_BOOL, NULL, NULL, NULL},
251 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
252 P_INT, NULL, NULL, NULL},
254 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
256 {"dictionary", "", &prefs_common.dictionary, P_STRING,
258 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
260 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
262 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
264 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
265 P_BOOL, NULL, NULL, NULL},
266 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
268 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
271 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
273 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
276 /* Account autoselection */
277 {"reply_account_autoselect", "TRUE",
278 &prefs_common.reply_account_autosel, P_BOOL,
280 {"forward_account_autoselect", "TRUE",
281 &prefs_common.forward_account_autosel, P_BOOL,
283 {"reedit_account_autoselect", "TRUE",
284 &prefs_common.reedit_account_autosel, P_BOOL,
287 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
291 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
294 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
299 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
301 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
302 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
304 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
306 {"forward_quote_format",
307 N_("\\n\\nBegin forwarded message:\\n\\n"
308 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
309 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
310 &prefs_common.fw_quotefmt, P_STRING,
312 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
316 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
317 {"widget_font", NULL,
318 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
319 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
320 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
321 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
322 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
323 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
324 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
325 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
326 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
330 {"widget_font_gtk2", NULL,
331 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
332 {"message_font_gtk2", "Monospace 9",
333 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
334 {"print_font_gtk2", "Monospace 9",
335 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
336 {"small_font_gtk2", "Sans 9",
337 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
338 {"normal_font_gtk2", "Sans 9",
339 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
340 {"bold_font_gtk2", "Sans Bold 9",
341 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
343 {"widget_font_gtk2", NULL,
344 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
345 {"message_font_gtk2", "Monospace 8",
346 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
347 {"print_font_gtk2", "Monospace 8",
348 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
349 {"small_font_gtk2", "Sans 8",
350 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
351 {"normal_font_gtk2", "Sans 8",
352 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
353 {"bold_font_gtk2", "Sans Bold 8",
354 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
357 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
359 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
363 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
365 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
367 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
369 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
371 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
373 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
375 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
377 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
379 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
381 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
383 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
385 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
387 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
389 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
391 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
393 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
395 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
397 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
399 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
401 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
403 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
405 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
407 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
409 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
411 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
413 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
415 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
417 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
419 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
421 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
425 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
427 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
429 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
432 {"display_folder_unread_num", "0",
433 &prefs_common.display_folder_unread, P_INT,
435 {"newsgroup_abbrev_len", "16",
436 &prefs_common.ng_abbrev_len, P_INT,
439 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
442 /* Display: Summary View */
443 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
445 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
447 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
448 P_STRING, NULL, NULL, NULL},
449 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
452 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
455 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
458 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
461 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
464 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
466 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
469 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
471 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
474 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
476 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
480 {"summary_col_show_mark", "TRUE",
481 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
482 {"summary_col_show_unread", "TRUE",
483 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
484 {"summary_col_show_subject", "TRUE",
485 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
486 {"summary_col_show_from", "TRUE",
487 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
488 {"summary_col_show_to", "FALSE",
489 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
490 {"summary_col_show_date", "TRUE",
491 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
492 {"summary_col_show_mime", "TRUE",
493 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
494 {"summary_col_show_size", "TRUE",
495 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
496 {"summary_col_show_number", "FALSE",
497 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
498 {"summary_col_show_score", "FALSE",
499 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
500 {"summary_col_show_locked", "FALSE",
501 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
502 {"summary_col_show_tags", "FALSE",
503 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
505 {"summary_col_pos_mark", "0",
506 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
507 {"summary_col_pos_unread", "1",
508 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
509 {"summary_col_pos_mime", "2",
510 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
511 {"summary_col_pos_subject", "3",
512 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
513 {"summary_col_pos_from", "4",
514 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
515 {"summary_col_pos_date", "5",
516 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
517 {"summary_col_pos_size", "6",
518 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
519 {"summary_col_pos_number", "7",
520 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
521 {"summary_col_pos_score", "8",
522 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
523 {"summary_col_pos_locked", "9",
524 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
525 {"summary_col_pos_to", "10",
526 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
527 {"summary_col_pos_tags", "11",
528 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_mark", "10",
531 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_unread", "13",
533 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_mime", "10",
535 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_subject", "200",
538 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_from", "120",
540 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_to", "120",
542 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
544 {"summary_col_size_subject", "300",
545 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_from", "150",
547 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
548 {"summary_col_size_to", "150",
549 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
552 {"summary_col_size_date", "118",
553 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
554 {"summary_col_size_size", "45",
555 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
556 {"summary_col_size_number", "40",
557 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
558 {"summary_col_size_score", "40",
559 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
560 {"summary_col_size_locked", "13",
561 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
562 {"summary_col_size_tags", "150",
563 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
566 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
568 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
570 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
572 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
574 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
577 {"folder_col_show_folder", "TRUE",
578 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
579 {"folder_col_show_new", "TRUE",
580 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
581 {"folder_col_show_unread", "TRUE",
582 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
583 {"folder_col_show_total", "TRUE",
584 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
586 {"folder_col_pos_folder", "0",
587 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
588 {"folder_col_pos_new", "1",
589 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
590 {"folder_col_pos_unread", "2",
591 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
592 {"folder_col_pos_total", "3",
593 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
596 {"folder_col_size_folder", "120",
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 {"folder_col_size_folder", "400",
606 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
607 {"folder_col_size_new", "32",
608 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
609 {"folder_col_size_unread", "32",
610 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
611 {"folder_col_size_total", "32",
612 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
614 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
616 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
619 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
621 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
623 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
625 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
627 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
630 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
632 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
634 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
636 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
638 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
640 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
642 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
644 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
647 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
649 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
651 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
653 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
655 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
657 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
659 {"compose_width", "600", &prefs_common.compose_width, P_INT,
661 {"compose_height", "560", &prefs_common.compose_height, P_INT,
664 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
666 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
668 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
670 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
672 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
674 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
676 {"compose_width", "700", &prefs_common.compose_width, P_INT,
678 {"compose_height", "470", &prefs_common.compose_height, P_INT,
681 {"compose_x", "0", &prefs_common.compose_x, P_INT,
683 {"compose_y", "0", &prefs_common.compose_y, P_INT,
686 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
689 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
691 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
693 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
695 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
697 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
699 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
701 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
703 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
705 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
707 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
709 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
711 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
712 P_BOOL, NULL, NULL, NULL},
714 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
715 P_BOOL, NULL, NULL, NULL},
716 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
718 {"display_xface", "TRUE", &prefs_common.display_xface,
719 P_BOOL, NULL, NULL, NULL},
720 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
722 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
724 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
726 {"line_space", "2", &prefs_common.line_space, P_INT,
728 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
731 {"enable_smooth_scroll", "FALSE",
732 &prefs_common.enable_smooth_scroll, P_BOOL,
734 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
736 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
738 {"hide_quoted", "TRUE",
739 &prefs_common.hide_quoted, P_BOOL,
741 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
744 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
747 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
749 {"attach_save_directory", NULL,
750 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
751 {"attach_load_directory", NULL,
752 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
755 {"mime_textviewer", NULL,
756 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
757 {"mime_open_command", "gedit '%s'",
758 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
759 {"show_inline_attachments", "TRUE",
760 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
764 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
767 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
770 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
771 NULL, NULL, NULL}, */
772 {"always_show_message_when_selected", "0",
773 &prefs_common.always_show_msg,
774 P_ENUM, NULL, NULL, NULL},
775 {"select_on_entry", "3", &prefs_common.select_on_entry,
776 P_ENUM, NULL, NULL, NULL},
777 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
778 P_BOOL, NULL, NULL, NULL},
780 /* do it SUMMARY_OPEN_ACTIONS-1 times */
781 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
783 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
785 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
787 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
789 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
791 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
793 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
796 {"mark_as_read_on_new_window", "FALSE",
797 &prefs_common.mark_as_read_on_new_window,
798 P_BOOL, NULL, NULL, NULL},
799 {"mark_as_read_delay", "0",
800 &prefs_common.mark_as_read_delay, P_INT,
802 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
804 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
806 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
809 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
810 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
813 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
816 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
818 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
822 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
823 P_BOOL, NULL, NULL, NULL},
824 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
825 P_INT, NULL, NULL, NULL},
826 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
827 P_INT, NULL, NULL, NULL},
831 {"uri_open_command", DEFAULT_BROWSER_CMD,
832 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
834 {"ext_editor_command", DEFAULT_EDITOR_CMD,
835 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
836 {"cmds_use_system_default", "TRUE",
837 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
838 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
839 P_BOOL, NULL, NULL, NULL},
840 {"session_passwords", "FALSE", &prefs_common.session_passwords,
841 P_BOOL, NULL, NULL, NULL},
842 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
844 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
846 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
848 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
849 P_BOOL, NULL, NULL, NULL},
850 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
852 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
855 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
858 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
862 #if defined(__OpenBSD__)
863 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
864 P_INT, NULL, NULL, NULL},
866 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
867 P_INT, NULL, NULL, NULL},
869 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
871 {"important_score", "1", &prefs_common.important_score, P_INT,
874 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
876 {"log_length", "500", &prefs_common.loglength, P_INT,
879 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
881 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
883 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
885 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
888 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
890 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
892 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
894 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
897 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
899 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
901 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
903 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
905 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
907 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
909 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
911 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
914 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
916 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
918 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
920 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
922 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
924 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
926 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
928 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
930 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
933 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
936 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
939 /* Some windows' sizes */
940 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
942 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
945 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
947 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
950 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
952 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
955 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
957 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
960 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
962 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
965 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
967 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
970 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
972 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
975 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
977 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
980 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
982 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
985 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
987 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
990 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
992 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
995 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
997 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1000 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1003 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1005 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1008 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1010 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1013 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1015 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1018 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1020 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1023 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1025 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1028 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1030 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1033 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1035 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1038 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1040 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1043 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1045 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1048 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1050 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1054 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1056 {"utf8_instead_of_locale_for_broken_mail", "0",
1057 &prefs_common.broken_are_utf8, P_INT,
1059 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1061 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1063 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1065 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1067 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1069 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1071 {"folderview_vscrollbar_policy", "0",
1072 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1074 {"textview_cursor_visible", "FALSE",
1075 &prefs_common.textview_cursor_visible, P_BOOL,
1077 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1079 #ifndef GENERIC_UMPC
1080 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1082 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1085 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1087 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1090 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1091 P_INT, NULL, NULL, NULL },
1092 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1093 P_STRING, NULL, NULL, NULL },
1094 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1095 P_BOOL, NULL, NULL, NULL },
1096 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1098 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1100 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1102 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1104 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1106 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1108 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1110 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1112 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1114 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1116 #ifndef GENERIC_UMPC
1117 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1120 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1124 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1126 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1128 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1130 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1132 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1134 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1136 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1138 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1140 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1142 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1144 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1146 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1148 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1150 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1152 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1155 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1156 P_BOOL, NULL, NULL, NULL },
1158 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1161 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1164 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1168 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1169 * Fallback to default_list if history file is not found
1171 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1172 GList *default_list)
1176 gchar buf[PREFSBUFSIZE];
1180 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1181 G_DIR_SEPARATOR_S, history,
1184 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1187 if ((fp = g_fopen(path, "rb")) == NULL) {
1188 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1190 /* returns default list if set, otherwise NULL */
1191 return default_list;
1194 while (fgets(buf, sizeof(buf), fp) != NULL) {
1196 if (buf[0] == '\0') continue;
1197 tmp = add_history(tmp, buf);
1201 tmp = g_list_reverse(tmp);
1207 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1209 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1211 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1215 * Read history list from the specified history file
1217 static GList *prefs_common_read_history(const gchar *history)
1219 return prefs_common_read_history_from_dir(NULL, history);
1222 void prefs_common_read_config(void)
1227 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1228 prefs_read_config(param, "Common", rcpath, NULL);
1230 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1235 tmp = g_strdup(gettext(prefs_common.date_format));
1236 g_free(prefs_common.date_format);
1237 prefs_common.date_format = tmp;
1239 prefs_common.mime_open_cmd_history =
1240 prefs_common_read_history(COMMAND_HISTORY);
1241 prefs_common.summary_quicksearch_history =
1242 prefs_common_read_history(QUICKSEARCH_HISTORY);
1243 prefs_common.summary_search_from_history =
1244 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1245 prefs_common.summary_search_to_history =
1246 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1247 prefs_common.summary_search_subject_history =
1248 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1249 prefs_common.summary_search_body_history =
1250 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1251 prefs_common.summary_search_adv_condition_history =
1252 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1253 prefs_common.message_search_history =
1254 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1255 prefs_common.compose_save_to_history =
1256 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1258 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1260 colorlabel_update_colortable_from_prefs();
1266 g_warning("failed to write\n"); \
1271 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1273 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1277 gchar *path, *tmp_path;
1280 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1281 G_DIR_SEPARATOR_S, history,
1284 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1287 tmp_path = g_strconcat(path, ".tmp", NULL);
1289 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1290 FILE_OP_ERROR(tmp_path, "fopen");
1294 for (cur = list; cur != NULL; cur = cur->next) {
1295 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1296 fputc('\n', fp) != EOF);
1299 if (fclose(fp) == EOF) {
1300 FILE_OP_ERROR(tmp_path, "fclose");
1308 if (g_rename(tmp_path, path) < 0) {
1309 FILE_OP_ERROR(path, "rename");
1321 * Save history list to the specified history file
1323 static void prefs_common_save_history(const gchar *history, GList *list)
1325 prefs_common_save_history_to_dir(NULL, history, list);
1330 void prefs_common_write_config(void)
1332 prefs_write_config(param, "Common", COMMON_RC);
1334 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1337 prefs_common_save_history(COMMAND_HISTORY,
1338 prefs_common.mime_open_cmd_history);
1339 prefs_common_save_history(QUICKSEARCH_HISTORY,
1340 prefs_common.summary_quicksearch_history);
1341 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1342 prefs_common.summary_search_from_history);
1343 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1344 prefs_common.summary_search_to_history);
1345 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1346 prefs_common.summary_search_subject_history);
1347 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1348 prefs_common.summary_search_body_history);
1349 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1350 prefs_common.summary_search_adv_condition_history);
1351 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1352 prefs_common.message_search_history);
1353 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1354 prefs_common.compose_save_to_history);
1356 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1357 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1358 prefs_common.addressbook_custom_attributes);
1361 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1362 both 'in' and 'out' must be non-NULL.
1363 'out' must be a pointer to a buffer whose size is at least equal
1364 to strlen(txt)+1, this buffer will get cleared. out's contents
1365 will always get set to a valid string, even if it's "".*/
1366 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1373 cm_return_if_fail( in != NULL );
1374 cm_return_if_fail( out != NULL );
1378 memset(out, 0, strlen(in)+1);
1379 while (*i != '\0') {
1380 if (*i == '\\' && *(i+1) == 'n') {
1383 } else if (*i == '\\' && *(i+1) == 't') {
1386 } else if (*i == '\\' && *(i+1) == '\\') {
1397 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1398 both 'in' and 'out' must be non-NULL.
1399 'out' must be a pointer to a buffer whose size is at least equal
1400 to 2*strlen(txt)+1. out's contents will always get set to a valid
1401 string, even if it's "". */
1402 void pref_get_escaped_pref(gchar *out, const gchar *in)
1409 cm_return_if_fail( in != NULL );
1410 cm_return_if_fail( out != NULL );
1414 while (*i != '\0') {
1418 } else if (*i == '\t') {
1421 } else if (*i == '\\') {
1432 /* set the contents of a textview widget from the internal \-escaped
1433 representation of a pref string. both txt and textview must be non-NULL. */
1434 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1436 GtkTextBuffer *buffer;
1439 cm_return_if_fail( textview != NULL );
1441 buffer = gtk_text_view_get_buffer(textview);
1444 gtk_text_buffer_set_text(buffer, "", -1);
1446 out = g_malloc(strlen(txt)+1);
1448 pref_get_unescaped_pref(out, txt);
1450 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1455 /* set the contents of a gtkentry widget from the internal \-escaped
1456 representation of a pref string. both txt and entry must be non-NULL. */
1457 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1461 cm_return_if_fail( entry != NULL );
1463 gtk_entry_set_text(entry, "");
1465 out = g_malloc(strlen(txt)+1);
1467 pref_get_unescaped_pref(out, txt);
1469 gtk_entry_set_text(entry, out?out:"");
1474 /* get the \-escaped internal representation of a pref from the contents of
1475 a textview widget. textview must be non-NULL. */
1476 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1478 GtkTextBuffer *buffer;
1479 GtkTextIter start, end;
1482 cm_return_val_if_fail( textview != NULL, "" );
1484 buffer = gtk_text_view_get_buffer(textview);
1485 gtk_text_buffer_get_start_iter(buffer, &start);
1486 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1487 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1488 out = malloc(2*strlen(tmp)+1);
1490 pref_get_escaped_pref(out, tmp);
1496 /* get the \-escaped internal representation of a pref from the contents of
1497 a gtkentry widget. entry must be non-NULL. */
1498 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1502 cm_return_val_if_fail( entry != NULL, "" );
1504 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1505 out = malloc(2*strlen(tmp)+1);
1508 pref_get_escaped_pref(out, tmp);
1514 /* ugly hack to be able to get this pref from ssl_certificate.c */
1515 gboolean prefs_common_unsafe_ssl_certs(void)
1517 return prefs_common.unsafe_ssl_certs;
1520 gboolean prefs_common_enable_log_standard(void)
1522 return prefs_common.enable_log_standard;
1525 gboolean prefs_common_enable_log_warning(void)
1527 return prefs_common.enable_log_warning;
1529 gboolean prefs_common_enable_log_error(void)
1531 return prefs_common.enable_log_error;
1533 gboolean prefs_common_enable_log_status(void)
1535 return prefs_common.enable_log_status;
1539 const gchar *prefs_common_get_data_root(void)
1541 if (prefs_common.data_root && *prefs_common.data_root)
1542 return prefs_common.data_root;
1548 return the translated name of a header, if the translate_header option is
1549 set, otherwise return the untranslated header name (header_name itself).
1550 this function is provided for convenience, it's an interface to
1551 prefs_common.trans_hdr.
1552 works with header names either with or without trailing colon, provided
1553 that gettext found such header name in the sources (they should all be
1554 found in src/gtk/headers.h anyway).
1556 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1558 if (header_name == NULL || *header_name == '\0')
1561 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1564 const gchar *prefs_common_get_uri_cmd(void)
1571 if (!prefs_common.cmds_use_system_default)
1572 return prefs_common.uri_cmd;
1574 tmp = g_find_program_in_path("xdg-open");
1576 return prefs_common.uri_cmd;
1579 return "xdg-open %s";
1583 const gchar *prefs_common_get_ext_editor_cmd(void)
1585 return prefs_common.ext_editor_cmd;
1586 #if 0 /* we should do that, but it detaches the editor and breaks
1587 compose.c's external composition. */
1590 if (!prefs_common.cmds_use_system_default)
1591 return prefs_common.ext_editor_cmd;
1593 tmp = g_find_program_in_path("xdg-open");
1595 return prefs_common.ext_editor_cmd;
1598 return "xdg-open %s";
1602 gboolean prefs_common_get_use_shred(void)
1604 return prefs_common.use_shred;
1607 gboolean prefs_common_get_flush_metadata (void)
1609 return prefs_common.flush_metadata;
1612 PrefsCommon *prefs_common_get_prefs(void)
1614 return &prefs_common;