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,
747 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
750 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
753 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
755 {"attach_save_directory", NULL,
756 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
757 {"attach_load_directory", NULL,
758 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
761 {"mime_textviewer", NULL,
762 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
763 {"mime_open_command", "gedit '%s'",
764 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
765 {"show_inline_attachments", "TRUE",
766 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
770 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
773 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
776 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
777 NULL, NULL, NULL}, */
778 {"always_show_message_when_selected", "0",
779 &prefs_common.always_show_msg,
780 P_ENUM, NULL, NULL, NULL},
781 {"select_on_entry", "3", &prefs_common.select_on_entry,
782 P_ENUM, NULL, NULL, NULL},
783 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
784 P_BOOL, NULL, NULL, NULL},
786 /* do it SUMMARY_OPEN_ACTIONS-1 times */
787 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
789 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
791 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
793 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
795 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
797 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
799 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
802 {"mark_as_read_on_new_window", "FALSE",
803 &prefs_common.mark_as_read_on_new_window,
804 P_BOOL, NULL, NULL, NULL},
805 {"mark_as_read_delay", "0",
806 &prefs_common.mark_as_read_delay, P_INT,
808 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
810 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
812 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
815 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
816 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
819 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
822 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
824 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
828 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
829 P_BOOL, NULL, NULL, NULL},
830 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
831 P_INT, NULL, NULL, NULL},
832 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
833 P_INT, NULL, NULL, NULL},
837 {"uri_open_command", DEFAULT_BROWSER_CMD,
838 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
840 {"ext_editor_command", DEFAULT_EDITOR_CMD,
841 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
842 {"cmds_use_system_default", "TRUE",
843 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
844 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
845 P_BOOL, NULL, NULL, NULL},
846 {"session_passwords", "FALSE", &prefs_common.session_passwords,
847 P_BOOL, NULL, NULL, NULL},
848 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
850 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
852 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
854 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
855 P_BOOL, NULL, NULL, NULL},
856 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
858 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
861 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
864 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
868 #if defined(__OpenBSD__)
869 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
870 P_INT, NULL, NULL, NULL},
872 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
873 P_INT, NULL, NULL, NULL},
875 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
877 {"important_score", "1", &prefs_common.important_score, P_INT,
880 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
882 {"log_length", "500", &prefs_common.loglength, P_INT,
885 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
887 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
889 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
891 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
894 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
896 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
898 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
900 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
903 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
905 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
907 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
909 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
911 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
913 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
915 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
917 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
920 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
922 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
924 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
926 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
928 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
930 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
932 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
934 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
936 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
939 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
942 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
945 /* Some windows' sizes */
946 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
948 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
951 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
953 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
956 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
958 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
961 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
963 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
966 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
968 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
971 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
973 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
976 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
978 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
981 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
983 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
986 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
988 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
991 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
993 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
996 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
998 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1001 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1003 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1006 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1009 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1011 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1014 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1016 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1019 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1021 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1024 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1026 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1029 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1031 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1034 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1036 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1039 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1041 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1044 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1046 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1049 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1051 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1054 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1056 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1060 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1062 {"utf8_instead_of_locale_for_broken_mail", "0",
1063 &prefs_common.broken_are_utf8, P_INT,
1065 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1067 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1069 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1071 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1073 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1075 {"folderview_vscrollbar_policy", "0",
1076 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1078 {"textview_cursor_visible", "FALSE",
1079 &prefs_common.textview_cursor_visible, P_BOOL,
1081 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1083 #ifndef GENERIC_UMPC
1084 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1086 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1089 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1091 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1094 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1095 P_INT, NULL, NULL, NULL },
1096 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1097 P_STRING, NULL, NULL, NULL },
1098 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1099 P_BOOL, NULL, NULL, NULL },
1100 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1102 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1104 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1106 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1108 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1110 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1112 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1114 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1116 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1118 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1120 #ifndef GENERIC_UMPC
1121 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1124 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1128 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1130 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1132 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1134 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1136 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1138 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1140 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1142 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1144 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1146 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1148 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1150 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1152 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1154 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1156 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1159 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1160 P_BOOL, NULL, NULL, NULL },
1162 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1165 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1168 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1171 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1175 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1176 * Fallback to default_list if history file is not found
1178 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1179 GList *default_list)
1183 gchar buf[PREFSBUFSIZE];
1187 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1188 G_DIR_SEPARATOR_S, history,
1191 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1194 if ((fp = g_fopen(path, "rb")) == NULL) {
1195 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1197 /* returns default list if set, otherwise NULL */
1198 return default_list;
1201 while (fgets(buf, sizeof(buf), fp) != NULL) {
1203 if (buf[0] == '\0') continue;
1204 tmp = add_history(tmp, buf);
1208 tmp = g_list_reverse(tmp);
1214 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1216 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1218 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1222 * Read history list from the specified history file
1224 static GList *prefs_common_read_history(const gchar *history)
1226 return prefs_common_read_history_from_dir(NULL, history);
1229 void prefs_common_read_config(void)
1234 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1235 prefs_read_config(param, "Common", rcpath, NULL);
1237 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1242 tmp = g_strdup(gettext(prefs_common.date_format));
1243 g_free(prefs_common.date_format);
1244 prefs_common.date_format = tmp;
1246 prefs_common.mime_open_cmd_history =
1247 prefs_common_read_history(COMMAND_HISTORY);
1248 prefs_common.summary_quicksearch_history =
1249 prefs_common_read_history(QUICKSEARCH_HISTORY);
1250 prefs_common.summary_search_from_history =
1251 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1252 prefs_common.summary_search_to_history =
1253 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1254 prefs_common.summary_search_subject_history =
1255 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1256 prefs_common.summary_search_body_history =
1257 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1258 prefs_common.summary_search_adv_condition_history =
1259 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1260 prefs_common.message_search_history =
1261 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1262 prefs_common.compose_save_to_history =
1263 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1265 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1267 colorlabel_update_colortable_from_prefs();
1273 g_warning("failed to write\n"); \
1278 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1280 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1284 gchar *path, *tmp_path;
1287 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1288 G_DIR_SEPARATOR_S, history,
1291 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1294 tmp_path = g_strconcat(path, ".tmp", NULL);
1296 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1297 FILE_OP_ERROR(tmp_path, "fopen");
1301 for (cur = list; cur != NULL; cur = cur->next) {
1302 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1303 fputc('\n', fp) != EOF);
1306 if (fclose(fp) == EOF) {
1307 FILE_OP_ERROR(tmp_path, "fclose");
1315 if (g_rename(tmp_path, path) < 0) {
1316 FILE_OP_ERROR(path, "rename");
1328 * Save history list to the specified history file
1330 static void prefs_common_save_history(const gchar *history, GList *list)
1332 prefs_common_save_history_to_dir(NULL, history, list);
1337 void prefs_common_write_config(void)
1339 prefs_write_config(param, "Common", COMMON_RC);
1341 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1344 prefs_common_save_history(COMMAND_HISTORY,
1345 prefs_common.mime_open_cmd_history);
1346 prefs_common_save_history(QUICKSEARCH_HISTORY,
1347 prefs_common.summary_quicksearch_history);
1348 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1349 prefs_common.summary_search_from_history);
1350 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1351 prefs_common.summary_search_to_history);
1352 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1353 prefs_common.summary_search_subject_history);
1354 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1355 prefs_common.summary_search_body_history);
1356 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1357 prefs_common.summary_search_adv_condition_history);
1358 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1359 prefs_common.message_search_history);
1360 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1361 prefs_common.compose_save_to_history);
1363 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1364 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1365 prefs_common.addressbook_custom_attributes);
1368 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1369 both 'in' and 'out' must be non-NULL.
1370 'out' must be a pointer to a buffer whose size is at least equal
1371 to strlen(txt)+1, this buffer will get cleared. out's contents
1372 will always get set to a valid string, even if it's "".*/
1373 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1380 cm_return_if_fail( in != NULL );
1381 cm_return_if_fail( out != NULL );
1385 memset(out, 0, strlen(in)+1);
1386 while (*i != '\0') {
1387 if (*i == '\\' && *(i+1) == 'n') {
1390 } else if (*i == '\\' && *(i+1) == 't') {
1393 } else if (*i == '\\' && *(i+1) == '\\') {
1404 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1405 both 'in' and 'out' must be non-NULL.
1406 'out' must be a pointer to a buffer whose size is at least equal
1407 to 2*strlen(txt)+1. out's contents will always get set to a valid
1408 string, even if it's "". */
1409 void pref_get_escaped_pref(gchar *out, const gchar *in)
1416 cm_return_if_fail( in != NULL );
1417 cm_return_if_fail( out != NULL );
1421 while (*i != '\0') {
1425 } else if (*i == '\t') {
1428 } else if (*i == '\\') {
1439 /* set the contents of a textview widget from the internal \-escaped
1440 representation of a pref string. both txt and textview must be non-NULL. */
1441 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1443 GtkTextBuffer *buffer;
1446 cm_return_if_fail( textview != NULL );
1448 buffer = gtk_text_view_get_buffer(textview);
1451 gtk_text_buffer_set_text(buffer, "", -1);
1453 out = g_malloc(strlen(txt)+1);
1455 pref_get_unescaped_pref(out, txt);
1457 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1462 /* set the contents of a gtkentry widget from the internal \-escaped
1463 representation of a pref string. both txt and entry must be non-NULL. */
1464 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1468 cm_return_if_fail( entry != NULL );
1470 gtk_entry_set_text(entry, "");
1472 out = g_malloc(strlen(txt)+1);
1474 pref_get_unescaped_pref(out, txt);
1476 gtk_entry_set_text(entry, out?out:"");
1481 /* get the \-escaped internal representation of a pref from the contents of
1482 a textview widget. textview must be non-NULL. */
1483 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1485 GtkTextBuffer *buffer;
1486 GtkTextIter start, end;
1489 cm_return_val_if_fail( textview != NULL, "" );
1491 buffer = gtk_text_view_get_buffer(textview);
1492 gtk_text_buffer_get_start_iter(buffer, &start);
1493 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1494 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1495 out = malloc(2*strlen(tmp)+1);
1497 pref_get_escaped_pref(out, tmp);
1503 /* get the \-escaped internal representation of a pref from the contents of
1504 a gtkentry widget. entry must be non-NULL. */
1505 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1509 cm_return_val_if_fail( entry != NULL, "" );
1511 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1512 out = malloc(2*strlen(tmp)+1);
1515 pref_get_escaped_pref(out, tmp);
1521 /* ugly hack to be able to get this pref from ssl_certificate.c */
1522 gboolean prefs_common_unsafe_ssl_certs(void)
1524 return prefs_common.unsafe_ssl_certs;
1527 gboolean prefs_common_enable_log_standard(void)
1529 return prefs_common.enable_log_standard;
1532 gboolean prefs_common_enable_log_warning(void)
1534 return prefs_common.enable_log_warning;
1536 gboolean prefs_common_enable_log_error(void)
1538 return prefs_common.enable_log_error;
1540 gboolean prefs_common_enable_log_status(void)
1542 return prefs_common.enable_log_status;
1546 const gchar *prefs_common_get_data_root(void)
1548 if (prefs_common.data_root && *prefs_common.data_root)
1549 return prefs_common.data_root;
1555 return the translated name of a header, if the translate_header option is
1556 set, otherwise return the untranslated header name (header_name itself).
1557 this function is provided for convenience, it's an interface to
1558 prefs_common.trans_hdr.
1559 works with header names either with or without trailing colon, provided
1560 that gettext found such header name in the sources (they should all be
1561 found in src/gtk/headers.h anyway).
1563 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1565 if (header_name == NULL || *header_name == '\0')
1568 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1571 const gchar *prefs_common_get_uri_cmd(void)
1578 if (!prefs_common.cmds_use_system_default)
1579 return prefs_common.uri_cmd;
1581 tmp = g_find_program_in_path("xdg-open");
1583 return prefs_common.uri_cmd;
1586 return "xdg-open %s";
1590 const gchar *prefs_common_get_ext_editor_cmd(void)
1592 return prefs_common.ext_editor_cmd;
1593 #if 0 /* we should do that, but it detaches the editor and breaks
1594 compose.c's external composition. */
1597 if (!prefs_common.cmds_use_system_default)
1598 return prefs_common.ext_editor_cmd;
1600 tmp = g_find_program_in_path("xdg-open");
1602 return prefs_common.ext_editor_cmd;
1605 return "xdg-open %s";
1609 gboolean prefs_common_get_use_shred(void)
1611 return prefs_common.use_shred;
1614 gboolean prefs_common_get_flush_metadata (void)
1616 return prefs_common.flush_metadata;
1619 PrefsCommon *prefs_common_get_prefs(void)
1621 return &prefs_common;