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_("%x(%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 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
657 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
659 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
661 {"compose_width", "600", &prefs_common.compose_width, P_INT,
663 {"compose_height", "560", &prefs_common.compose_height, P_INT,
666 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
668 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
670 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
672 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
674 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
676 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
678 {"compose_width", "700", &prefs_common.compose_width, P_INT,
680 {"compose_height", "470", &prefs_common.compose_height, P_INT,
683 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
685 {"compose_x", "0", &prefs_common.compose_x, P_INT,
687 {"compose_y", "0", &prefs_common.compose_y, P_INT,
690 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
693 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
695 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
697 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
699 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
701 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
703 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
705 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
707 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
709 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
711 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
713 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
715 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
716 P_BOOL, NULL, NULL, NULL},
718 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
719 P_BOOL, NULL, NULL, NULL},
720 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
722 {"display_xface", "TRUE", &prefs_common.display_xface,
723 P_BOOL, NULL, NULL, NULL},
724 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
726 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
728 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
730 {"line_space", "2", &prefs_common.line_space, P_INT,
732 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
735 {"enable_smooth_scroll", "FALSE",
736 &prefs_common.enable_smooth_scroll, P_BOOL,
738 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
740 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
742 {"hide_quoted", "TRUE",
743 &prefs_common.hide_quoted, P_BOOL,
745 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
748 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
751 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
753 {"attach_save_directory", NULL,
754 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
755 {"attach_load_directory", NULL,
756 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
759 {"mime_textviewer", NULL,
760 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
761 {"mime_open_command", "gedit '%s'",
762 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
763 {"show_inline_attachments", "TRUE",
764 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
768 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
771 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
774 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
775 NULL, NULL, NULL}, */
776 {"always_show_message_when_selected", "0",
777 &prefs_common.always_show_msg,
778 P_ENUM, NULL, NULL, NULL},
779 {"select_on_entry", "3", &prefs_common.select_on_entry,
780 P_ENUM, NULL, NULL, NULL},
781 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
782 P_BOOL, NULL, NULL, NULL},
784 /* do it SUMMARY_OPEN_ACTIONS-1 times */
785 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
787 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
789 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
791 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
793 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
795 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
797 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
800 {"mark_as_read_on_new_window", "FALSE",
801 &prefs_common.mark_as_read_on_new_window,
802 P_BOOL, NULL, NULL, NULL},
803 {"mark_as_read_delay", "0",
804 &prefs_common.mark_as_read_delay, P_INT,
806 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
808 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
810 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
813 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
814 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
817 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
820 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
822 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
826 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
827 P_BOOL, NULL, NULL, NULL},
828 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
829 P_INT, NULL, NULL, NULL},
830 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
831 P_INT, NULL, NULL, NULL},
835 {"uri_open_command", DEFAULT_BROWSER_CMD,
836 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
838 {"ext_editor_command", DEFAULT_EDITOR_CMD,
839 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
840 {"cmds_use_system_default", "TRUE",
841 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
842 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
843 P_BOOL, NULL, NULL, NULL},
844 {"session_passwords", "FALSE", &prefs_common.session_passwords,
845 P_BOOL, NULL, NULL, NULL},
846 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
848 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
850 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
852 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
853 P_BOOL, NULL, NULL, NULL},
854 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
856 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
859 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
862 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
866 #if defined(__OpenBSD__)
867 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
868 P_INT, NULL, NULL, NULL},
870 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
871 P_INT, NULL, NULL, NULL},
873 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
875 {"important_score", "1", &prefs_common.important_score, P_INT,
878 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
880 {"log_length", "500", &prefs_common.loglength, P_INT,
883 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
885 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
887 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
889 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
892 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
894 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
896 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
898 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
901 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
903 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
905 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
907 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
909 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
911 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
913 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
915 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
918 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
920 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
922 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
924 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
926 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
928 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
930 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
932 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
934 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
937 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
940 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
943 /* Some windows' sizes */
944 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
946 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
949 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
951 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
954 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
956 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
959 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
961 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
964 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
966 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
969 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
971 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
974 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
976 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
979 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
981 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
984 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
986 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
989 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
991 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
994 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
996 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
999 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1001 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1004 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1007 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1009 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1012 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1014 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1017 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1019 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1022 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1024 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1027 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1029 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1032 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1034 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1037 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1039 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1042 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1044 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1047 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1049 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1052 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1054 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1058 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1060 {"utf8_instead_of_locale_for_broken_mail", "0",
1061 &prefs_common.broken_are_utf8, P_INT,
1063 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1065 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1067 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1069 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1071 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1073 {"folderview_vscrollbar_policy", "0",
1074 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1076 {"textview_cursor_visible", "FALSE",
1077 &prefs_common.textview_cursor_visible, P_BOOL,
1079 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1081 #ifndef GENERIC_UMPC
1082 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1084 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1087 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1089 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1092 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1093 P_INT, NULL, NULL, NULL },
1094 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1095 P_STRING, NULL, NULL, NULL },
1096 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1097 P_BOOL, NULL, NULL, NULL },
1098 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1100 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1102 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1104 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1106 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1108 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1110 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1112 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1114 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1116 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1118 #ifndef GENERIC_UMPC
1119 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1122 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1126 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1128 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1130 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1132 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1134 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1136 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1138 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1140 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1142 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1144 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1146 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1148 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1150 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1152 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1154 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1157 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1158 P_BOOL, NULL, NULL, NULL },
1160 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1163 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1166 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1170 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1171 * Fallback to default_list if history file is not found
1173 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1174 GList *default_list)
1178 gchar buf[PREFSBUFSIZE];
1182 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1183 G_DIR_SEPARATOR_S, history,
1186 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1189 if ((fp = g_fopen(path, "rb")) == NULL) {
1190 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1192 /* returns default list if set, otherwise NULL */
1193 return default_list;
1196 while (fgets(buf, sizeof(buf), fp) != NULL) {
1198 if (buf[0] == '\0') continue;
1199 tmp = add_history(tmp, buf);
1203 tmp = g_list_reverse(tmp);
1209 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1211 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1213 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1217 * Read history list from the specified history file
1219 static GList *prefs_common_read_history(const gchar *history)
1221 return prefs_common_read_history_from_dir(NULL, history);
1224 void prefs_common_read_config(void)
1229 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1230 prefs_read_config(param, "Common", rcpath, NULL);
1232 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1237 tmp = g_strdup(gettext(prefs_common.date_format));
1238 g_free(prefs_common.date_format);
1239 prefs_common.date_format = tmp;
1241 prefs_common.mime_open_cmd_history =
1242 prefs_common_read_history(COMMAND_HISTORY);
1243 prefs_common.summary_quicksearch_history =
1244 prefs_common_read_history(QUICKSEARCH_HISTORY);
1245 prefs_common.summary_search_from_history =
1246 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1247 prefs_common.summary_search_to_history =
1248 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1249 prefs_common.summary_search_subject_history =
1250 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1251 prefs_common.summary_search_body_history =
1252 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1253 prefs_common.summary_search_adv_condition_history =
1254 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1255 prefs_common.message_search_history =
1256 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1257 prefs_common.compose_save_to_history =
1258 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1260 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1262 colorlabel_update_colortable_from_prefs();
1268 g_warning("failed to write\n"); \
1273 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1275 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1279 gchar *path, *tmp_path;
1282 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1283 G_DIR_SEPARATOR_S, history,
1286 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1289 tmp_path = g_strconcat(path, ".tmp", NULL);
1291 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1292 FILE_OP_ERROR(tmp_path, "fopen");
1296 for (cur = list; cur != NULL; cur = cur->next) {
1297 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1298 fputc('\n', fp) != EOF);
1301 if (fclose(fp) == EOF) {
1302 FILE_OP_ERROR(tmp_path, "fclose");
1310 if (g_rename(tmp_path, path) < 0) {
1311 FILE_OP_ERROR(path, "rename");
1323 * Save history list to the specified history file
1325 static void prefs_common_save_history(const gchar *history, GList *list)
1327 prefs_common_save_history_to_dir(NULL, history, list);
1332 void prefs_common_write_config(void)
1334 prefs_write_config(param, "Common", COMMON_RC);
1336 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1339 prefs_common_save_history(COMMAND_HISTORY,
1340 prefs_common.mime_open_cmd_history);
1341 prefs_common_save_history(QUICKSEARCH_HISTORY,
1342 prefs_common.summary_quicksearch_history);
1343 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1344 prefs_common.summary_search_from_history);
1345 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1346 prefs_common.summary_search_to_history);
1347 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1348 prefs_common.summary_search_subject_history);
1349 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1350 prefs_common.summary_search_body_history);
1351 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1352 prefs_common.summary_search_adv_condition_history);
1353 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1354 prefs_common.message_search_history);
1355 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1356 prefs_common.compose_save_to_history);
1358 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1359 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1360 prefs_common.addressbook_custom_attributes);
1363 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1364 both 'in' and 'out' must be non-NULL.
1365 'out' must be a pointer to a buffer whose size is at least equal
1366 to strlen(txt)+1, this buffer will get cleared. out's contents
1367 will always get set to a valid string, even if it's "".*/
1368 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1375 cm_return_if_fail( in != NULL );
1376 cm_return_if_fail( out != NULL );
1380 memset(out, 0, strlen(in)+1);
1381 while (*i != '\0') {
1382 if (*i == '\\' && *(i+1) == 'n') {
1385 } else if (*i == '\\' && *(i+1) == 't') {
1388 } else if (*i == '\\' && *(i+1) == '\\') {
1399 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1400 both 'in' and 'out' must be non-NULL.
1401 'out' must be a pointer to a buffer whose size is at least equal
1402 to 2*strlen(txt)+1. out's contents will always get set to a valid
1403 string, even if it's "". */
1404 void pref_get_escaped_pref(gchar *out, const gchar *in)
1411 cm_return_if_fail( in != NULL );
1412 cm_return_if_fail( out != NULL );
1416 while (*i != '\0') {
1420 } else if (*i == '\t') {
1423 } else if (*i == '\\') {
1434 /* set the contents of a textview widget from the internal \-escaped
1435 representation of a pref string. both txt and textview must be non-NULL. */
1436 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1438 GtkTextBuffer *buffer;
1441 cm_return_if_fail( textview != NULL );
1443 buffer = gtk_text_view_get_buffer(textview);
1446 gtk_text_buffer_set_text(buffer, "", -1);
1448 out = g_malloc(strlen(txt)+1);
1450 pref_get_unescaped_pref(out, txt);
1452 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1457 /* set the contents of a gtkentry widget from the internal \-escaped
1458 representation of a pref string. both txt and entry must be non-NULL. */
1459 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1463 cm_return_if_fail( entry != NULL );
1465 gtk_entry_set_text(entry, "");
1467 out = g_malloc(strlen(txt)+1);
1469 pref_get_unescaped_pref(out, txt);
1471 gtk_entry_set_text(entry, out?out:"");
1476 /* get the \-escaped internal representation of a pref from the contents of
1477 a textview widget. textview must be non-NULL. */
1478 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1480 GtkTextBuffer *buffer;
1481 GtkTextIter start, end;
1484 cm_return_val_if_fail( textview != NULL, "" );
1486 buffer = gtk_text_view_get_buffer(textview);
1487 gtk_text_buffer_get_start_iter(buffer, &start);
1488 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1489 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1490 out = malloc(2*strlen(tmp)+1);
1492 pref_get_escaped_pref(out, tmp);
1498 /* get the \-escaped internal representation of a pref from the contents of
1499 a gtkentry widget. entry must be non-NULL. */
1500 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1504 cm_return_val_if_fail( entry != NULL, "" );
1506 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1507 out = malloc(2*strlen(tmp)+1);
1510 pref_get_escaped_pref(out, tmp);
1516 /* ugly hack to be able to get this pref from ssl_certificate.c */
1517 gboolean prefs_common_unsafe_ssl_certs(void)
1519 return prefs_common.unsafe_ssl_certs;
1522 gboolean prefs_common_enable_log_standard(void)
1524 return prefs_common.enable_log_standard;
1527 gboolean prefs_common_enable_log_warning(void)
1529 return prefs_common.enable_log_warning;
1531 gboolean prefs_common_enable_log_error(void)
1533 return prefs_common.enable_log_error;
1535 gboolean prefs_common_enable_log_status(void)
1537 return prefs_common.enable_log_status;
1541 const gchar *prefs_common_get_data_root(void)
1543 if (prefs_common.data_root && *prefs_common.data_root)
1544 return prefs_common.data_root;
1550 return the translated name of a header, if the translate_header option is
1551 set, otherwise return the untranslated header name (header_name itself).
1552 this function is provided for convenience, it's an interface to
1553 prefs_common.trans_hdr.
1554 works with header names either with or without trailing colon, provided
1555 that gettext found such header name in the sources (they should all be
1556 found in src/gtk/headers.h anyway).
1558 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1560 if (header_name == NULL || *header_name == '\0')
1563 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1566 const gchar *prefs_common_get_uri_cmd(void)
1573 if (!prefs_common.cmds_use_system_default)
1574 return prefs_common.uri_cmd;
1576 tmp = g_find_program_in_path("xdg-open");
1578 return prefs_common.uri_cmd;
1581 return "xdg-open %s";
1585 const gchar *prefs_common_get_ext_editor_cmd(void)
1587 return prefs_common.ext_editor_cmd;
1588 #if 0 /* we should do that, but it detaches the editor and breaks
1589 compose.c's external composition. */
1592 if (!prefs_common.cmds_use_system_default)
1593 return prefs_common.ext_editor_cmd;
1595 tmp = g_find_program_in_path("xdg-open");
1597 return prefs_common.ext_editor_cmd;
1600 return "xdg-open %s";
1604 gboolean prefs_common_get_use_shred(void)
1606 return prefs_common.use_shred;
1609 gboolean prefs_common_get_flush_metadata (void)
1611 return prefs_common.flush_metadata;
1614 PrefsCommon *prefs_common_get_prefs(void)
1616 return &prefs_common;