2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2011 Hiroyuki Yamamoto and the Claws Mail team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
27 #include <glib/gi18n.h>
29 #include <gdk/gdkkeysyms.h>
34 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "mainwindow.h"
45 #include "summaryview.h"
46 #include "folderview.h"
47 #include "messageview.h"
48 #include "manage_window.h"
54 #include "alertpanel.h"
58 #include "folderview.h"
59 #include "stock_pixmap.h"
60 #include "prefswindow.h"
61 #include "colorlabel.h"
62 #include "addrcustomattr.h"
70 PrefsCommon prefs_common;
76 * In the Windows version prefs_common contains
77 * - the non-OS-specific settings of the "Common" section and
78 * - the OS-specific settings of the "CommonWin32" section
79 * The OS-specific settings of the "Common" section are not used
80 * but saved in prefs_unix.
83 # define SPECIFIC_PREFS prefs_unix
85 static PrefsCommon prefs_unix;
87 static PrefParam param_os_specific[] = {
90 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
91 {"newmail_notify_cmd", "",
92 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
95 {"widget_font_gtk2", NULL,
96 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
97 {"message_font_gtk2", "Monospace 9",
98 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
99 {"print_font_gtk2", "Monospace 9",
100 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
101 {"small_font_gtk2", "Sans 9",
102 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
103 {"normal_font_gtk2", "Sans 9",
104 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
105 {"bold_font_gtk2", "Sans 9 Bold",
106 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
108 {"attach_save_directory", NULL,
109 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
110 {"attach_load_directory", NULL,
111 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
114 {"mime_textviewer", NULL,
115 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
116 {"mime_open_command", "notepad '%s'",
117 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
120 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
121 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
124 {"ext_editor_command", "notepad %s",
125 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
127 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
130 # define SPECIFIC_PREFS prefs_common
134 parameter name, default value, pointer to the prefs variable, data type,
135 pointer to the widget pointer,
136 pointer to the function for data setting,
137 pointer to the function for widget setting
140 static PrefParam param[] = {
142 {"data_root", "", &prefs_common.data_root, P_STRING,
146 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
148 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
151 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
153 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
155 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
157 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
158 P_BOOL, NULL, NULL, NULL},
159 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
160 P_BOOL, NULL, NULL, NULL},
161 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
162 P_BOOL, NULL, NULL, NULL},
163 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
164 P_BOOL, NULL, NULL, NULL},
165 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
168 {"maemo_show_led", "TRUE", &prefs_common.maemo_show_led, P_BOOL,
170 {"maemo_play_sound", "FALSE", &prefs_common.maemo_play_sound, P_BOOL,
172 {"maemo_show_banner", "FALSE", &prefs_common.maemo_show_banner, P_BOOL,
175 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
177 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
179 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
181 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
182 P_BOOL, NULL, NULL, NULL},
183 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
184 P_BOOL, NULL, NULL, NULL},
187 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
189 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
190 P_BOOL, NULL, NULL, NULL},
192 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
195 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
198 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
200 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
203 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
205 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
207 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
210 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
211 P_BOOL, NULL, NULL, NULL},
214 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
216 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
217 P_BOOL, NULL, NULL, NULL},
218 {"redirect_keep_from", "FALSE",
219 &prefs_common.redirect_keep_from, P_BOOL,
221 {"undo_level", "50", &prefs_common.undolevels, P_INT,
223 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
225 {"compose_subject_format", "",
226 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
227 {"compose_body_format", N_("Hello,\\n"),
228 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
229 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
233 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
235 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
237 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
239 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
241 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
243 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
245 {"autosave", "TRUE", &prefs_common.autosave,
246 P_BOOL, NULL, NULL, NULL},
247 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
249 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
250 P_BOOL, NULL, NULL, NULL},
251 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
252 P_INT, NULL, NULL, NULL},
254 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
256 {"dictionary", "", &prefs_common.dictionary, P_STRING,
258 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
260 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
262 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
264 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
265 P_BOOL, NULL, NULL, NULL},
266 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
268 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
271 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
273 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
276 /* Account autoselection */
277 {"reply_account_autoselect", "TRUE",
278 &prefs_common.reply_account_autosel, P_BOOL,
280 {"forward_account_autoselect", "TRUE",
281 &prefs_common.forward_account_autosel, P_BOOL,
283 {"reedit_account_autoselect", "TRUE",
284 &prefs_common.reedit_account_autosel, P_BOOL,
287 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
291 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
294 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
299 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
301 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
302 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
304 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
306 {"forward_quote_format",
307 N_("\\n\\nBegin forwarded message:\\n\\n"
308 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
309 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
310 &prefs_common.fw_quotefmt, P_STRING,
312 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
316 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
317 {"widget_font", NULL,
318 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
319 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
320 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
321 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
322 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
323 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
324 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
325 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
326 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
330 {"widget_font_gtk2", NULL,
331 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
332 {"message_font_gtk2", "Monospace 9",
333 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
334 {"print_font_gtk2", "Monospace 9",
335 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
336 {"small_font_gtk2", "Sans 9",
337 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
338 {"normal_font_gtk2", "Sans 9",
339 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
340 {"bold_font_gtk2", "Sans Bold 9",
341 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
343 {"widget_font_gtk2", NULL,
344 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
345 {"message_font_gtk2", "Monospace 8",
346 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
347 {"print_font_gtk2", "Monospace 8",
348 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
349 {"small_font_gtk2", "Sans 8",
350 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
351 {"normal_font_gtk2", "Sans 8",
352 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
353 {"bold_font_gtk2", "Sans Bold 8",
354 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
357 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
359 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
363 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
365 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
367 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
369 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
371 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
373 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
375 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
377 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
379 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
381 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
383 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
385 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
387 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
389 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
391 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
393 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
395 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
397 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
399 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
401 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
403 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
405 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
407 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
409 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
411 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
413 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
415 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
417 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
419 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
421 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
425 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
427 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
429 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
432 {"display_folder_unread_num", "0",
433 &prefs_common.display_folder_unread, P_INT,
435 {"newsgroup_abbrev_len", "16",
436 &prefs_common.ng_abbrev_len, P_INT,
439 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
442 /* Display: Summary View */
443 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
445 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
447 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
448 P_STRING, NULL, NULL, NULL},
449 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
452 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
455 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
458 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
461 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
464 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
466 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
469 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
471 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
474 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
476 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
480 {"summary_col_show_mark", "TRUE",
481 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
482 {"summary_col_show_unread", "TRUE",
483 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
484 {"summary_col_show_subject", "TRUE",
485 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
486 {"summary_col_show_from", "TRUE",
487 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
488 {"summary_col_show_to", "FALSE",
489 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
490 {"summary_col_show_date", "TRUE",
491 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
492 {"summary_col_show_mime", "TRUE",
493 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
494 {"summary_col_show_size", "TRUE",
495 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
496 {"summary_col_show_number", "FALSE",
497 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
498 {"summary_col_show_score", "FALSE",
499 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
500 {"summary_col_show_locked", "FALSE",
501 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
502 {"summary_col_show_tags", "FALSE",
503 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
505 {"summary_col_pos_mark", "0",
506 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
507 {"summary_col_pos_unread", "1",
508 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
509 {"summary_col_pos_mime", "2",
510 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
511 {"summary_col_pos_subject", "3",
512 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
513 {"summary_col_pos_from", "4",
514 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
515 {"summary_col_pos_date", "5",
516 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
517 {"summary_col_pos_size", "6",
518 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
519 {"summary_col_pos_number", "7",
520 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
521 {"summary_col_pos_score", "8",
522 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
523 {"summary_col_pos_locked", "9",
524 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
525 {"summary_col_pos_to", "10",
526 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
527 {"summary_col_pos_tags", "11",
528 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_mark", "10",
531 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_unread", "13",
533 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_mime", "10",
535 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_subject", "200",
538 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_from", "120",
540 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_to", "120",
542 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
544 {"summary_col_size_subject", "300",
545 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_from", "150",
547 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
548 {"summary_col_size_to", "150",
549 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
552 {"summary_col_size_date", "118",
553 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
554 {"summary_col_size_size", "45",
555 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
556 {"summary_col_size_number", "40",
557 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
558 {"summary_col_size_score", "40",
559 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
560 {"summary_col_size_locked", "13",
561 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
562 {"summary_col_size_tags", "150",
563 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
566 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
568 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
570 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
572 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
574 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
577 {"folder_col_show_folder", "TRUE",
578 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
579 {"folder_col_show_new", "TRUE",
580 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
581 {"folder_col_show_unread", "TRUE",
582 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
583 {"folder_col_show_total", "TRUE",
584 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
586 {"folder_col_pos_folder", "0",
587 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
588 {"folder_col_pos_new", "1",
589 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
590 {"folder_col_pos_unread", "2",
591 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
592 {"folder_col_pos_total", "3",
593 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
596 {"folder_col_size_folder", "120",
597 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
598 {"folder_col_size_new", "32",
599 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_unread", "32",
601 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_total", "32",
603 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
605 {"folder_col_size_folder", "400",
606 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
607 {"folder_col_size_new", "32",
608 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
609 {"folder_col_size_unread", "32",
610 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
611 {"folder_col_size_total", "32",
612 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
614 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
616 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
619 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
621 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
623 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
625 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
627 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
630 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
632 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
634 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
636 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
638 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
640 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
642 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
644 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
647 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
649 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
651 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
653 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
655 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
657 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
659 {"compose_width", "600", &prefs_common.compose_width, P_INT,
661 {"compose_height", "560", &prefs_common.compose_height, P_INT,
664 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
666 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
668 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
670 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
672 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
674 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
676 {"compose_width", "700", &prefs_common.compose_width, P_INT,
678 {"compose_height", "470", &prefs_common.compose_height, P_INT,
681 {"compose_x", "0", &prefs_common.compose_x, P_INT,
683 {"compose_y", "0", &prefs_common.compose_y, P_INT,
686 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
689 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
691 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
693 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
695 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
697 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
699 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
701 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
703 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
705 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
707 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
709 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
711 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
712 P_BOOL, NULL, NULL, NULL},
714 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
715 P_BOOL, NULL, NULL, NULL},
716 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
718 {"display_xface", "TRUE", &prefs_common.display_xface,
719 P_BOOL, NULL, NULL, NULL},
720 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
722 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
724 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
726 {"line_space", "2", &prefs_common.line_space, P_INT,
728 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
731 {"enable_smooth_scroll", "FALSE",
732 &prefs_common.enable_smooth_scroll, P_BOOL,
734 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
736 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
738 {"hide_quoted", "TRUE",
739 &prefs_common.hide_quoted, P_BOOL,
741 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
744 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
747 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
749 {"attach_save_directory", NULL,
750 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
751 {"attach_load_directory", NULL,
752 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
755 {"mime_textviewer", NULL,
756 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
757 {"mime_open_command", "gedit '%s'",
758 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
762 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
765 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
768 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
769 NULL, NULL, NULL}, */
770 {"always_show_message_when_selected", "0",
771 &prefs_common.always_show_msg,
772 P_ENUM, NULL, NULL, NULL},
773 {"select_on_entry", "3", &prefs_common.select_on_entry,
774 P_ENUM, NULL, NULL, NULL},
775 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
776 P_BOOL, NULL, NULL, NULL},
778 /* do it SUMMARY_OPEN_ACTIONS-1 times */
779 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
781 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
783 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
785 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
787 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
789 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
791 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
794 {"mark_as_read_on_new_window", "FALSE",
795 &prefs_common.mark_as_read_on_new_window,
796 P_BOOL, NULL, NULL, NULL},
797 {"mark_as_read_delay", "0",
798 &prefs_common.mark_as_read_delay, P_INT,
800 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
802 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
805 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
806 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
809 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
812 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
814 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
818 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
819 P_BOOL, NULL, NULL, NULL},
820 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
821 P_INT, NULL, NULL, NULL},
822 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
823 P_INT, NULL, NULL, NULL},
827 {"uri_open_command", DEFAULT_BROWSER_CMD,
828 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
830 {"ext_editor_command", DEFAULT_EDITOR_CMD,
831 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
832 {"cmds_use_system_default", "TRUE",
833 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
834 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
835 P_BOOL, NULL, NULL, NULL},
836 {"session_passwords", "FALSE", &prefs_common.session_passwords,
837 P_BOOL, NULL, NULL, NULL},
838 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
840 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
842 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
844 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
845 P_BOOL, NULL, NULL, NULL},
846 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
848 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
851 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
854 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
858 #if defined(__OpenBSD__)
859 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
860 P_INT, NULL, NULL, NULL},
862 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
863 P_INT, NULL, NULL, NULL},
865 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
867 {"important_score", "1", &prefs_common.important_score, P_INT,
870 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
872 {"log_length", "500", &prefs_common.loglength, P_INT,
875 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
877 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
879 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
881 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
884 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
886 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
888 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
890 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
893 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
895 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
897 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
899 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
901 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
903 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
905 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
907 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
910 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
912 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
914 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
916 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
918 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
920 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
922 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
924 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
926 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
929 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
932 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
935 /* Some windows' sizes */
936 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
938 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
941 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
943 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
946 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
948 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
951 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
953 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
956 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
958 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
961 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
963 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
966 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
968 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
971 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
973 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
976 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
978 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
981 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
983 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
986 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
988 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
991 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
993 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
996 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
999 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1001 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1004 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1006 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1009 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1011 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1014 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1016 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1019 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1021 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1024 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1026 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1029 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1031 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1034 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1036 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1039 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1041 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1044 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1046 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1050 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1052 {"utf8_instead_of_locale_for_broken_mail", "0",
1053 &prefs_common.broken_are_utf8, P_INT,
1055 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1057 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1059 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1061 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1063 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1065 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1067 {"folderview_vscrollbar_policy", "0",
1068 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1070 {"textview_cursor_visible", "FALSE",
1071 &prefs_common.textview_cursor_visible, P_BOOL,
1073 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1075 #ifndef GENERIC_UMPC
1076 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1078 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1081 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1083 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1086 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1087 P_INT, NULL, NULL, NULL },
1088 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1089 P_STRING, NULL, NULL, NULL },
1090 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1091 P_BOOL, NULL, NULL, NULL },
1092 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1094 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1096 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1098 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1100 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1102 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1104 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1106 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1108 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1110 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1112 #ifndef GENERIC_UMPC
1113 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1116 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1120 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1122 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1124 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1126 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1128 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1130 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1132 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1134 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1136 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1138 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1140 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1142 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1144 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1146 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1148 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1151 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1152 P_BOOL, NULL, NULL, NULL },
1154 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1157 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1160 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1164 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1165 * Fallback to default_list if history file is not found
1167 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1168 GList *default_list)
1172 gchar buf[PREFSBUFSIZE];
1176 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1177 G_DIR_SEPARATOR_S, history,
1180 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1183 if ((fp = g_fopen(path, "rb")) == NULL) {
1184 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1186 /* returns default list if set, otherwise NULL */
1187 return default_list;
1190 while (fgets(buf, sizeof(buf), fp) != NULL) {
1192 if (buf[0] == '\0') continue;
1193 tmp = add_history(tmp, buf);
1197 tmp = g_list_reverse(tmp);
1203 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1205 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1207 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1211 * Read history list from the specified history file
1213 static GList *prefs_common_read_history(const gchar *history)
1215 return prefs_common_read_history_from_dir(NULL, history);
1218 void prefs_common_read_config(void)
1223 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1224 prefs_read_config(param, "Common", rcpath, NULL);
1226 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1231 tmp = g_strdup(gettext(prefs_common.date_format));
1232 g_free(prefs_common.date_format);
1233 prefs_common.date_format = tmp;
1235 prefs_common.mime_open_cmd_history =
1236 prefs_common_read_history(COMMAND_HISTORY);
1237 prefs_common.summary_quicksearch_history =
1238 prefs_common_read_history(QUICKSEARCH_HISTORY);
1239 prefs_common.summary_search_from_history =
1240 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1241 prefs_common.summary_search_to_history =
1242 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1243 prefs_common.summary_search_subject_history =
1244 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1245 prefs_common.summary_search_body_history =
1246 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1247 prefs_common.summary_search_adv_condition_history =
1248 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1249 prefs_common.message_search_history =
1250 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1251 prefs_common.compose_save_to_history =
1252 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1254 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1256 colorlabel_update_colortable_from_prefs();
1262 g_warning("failed to write\n"); \
1267 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1269 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1273 gchar *path, *tmp_path;
1276 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1277 G_DIR_SEPARATOR_S, history,
1280 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1283 tmp_path = g_strconcat(path, ".tmp", NULL);
1285 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1286 FILE_OP_ERROR(tmp_path, "fopen");
1290 for (cur = list; cur != NULL; cur = cur->next) {
1291 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1292 fputc('\n', fp) != EOF);
1295 if (fclose(fp) == EOF) {
1296 FILE_OP_ERROR(tmp_path, "fclose");
1304 if (g_rename(tmp_path, path) < 0) {
1305 FILE_OP_ERROR(path, "rename");
1317 * Save history list to the specified history file
1319 static void prefs_common_save_history(const gchar *history, GList *list)
1321 prefs_common_save_history_to_dir(NULL, history, list);
1326 void prefs_common_write_config(void)
1328 prefs_write_config(param, "Common", COMMON_RC);
1330 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1333 prefs_common_save_history(COMMAND_HISTORY,
1334 prefs_common.mime_open_cmd_history);
1335 prefs_common_save_history(QUICKSEARCH_HISTORY,
1336 prefs_common.summary_quicksearch_history);
1337 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1338 prefs_common.summary_search_from_history);
1339 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1340 prefs_common.summary_search_to_history);
1341 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1342 prefs_common.summary_search_subject_history);
1343 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1344 prefs_common.summary_search_body_history);
1345 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1346 prefs_common.summary_search_adv_condition_history);
1347 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1348 prefs_common.message_search_history);
1349 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1350 prefs_common.compose_save_to_history);
1352 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1353 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1354 prefs_common.addressbook_custom_attributes);
1357 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1358 both 'in' and 'out' must be non-NULL.
1359 'out' must be a pointer to a buffer whose size is at least equal
1360 to strlen(txt)+1, this buffer will get cleared. out's contents
1361 will always get set to a valid string, even if it's "".*/
1362 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1369 cm_return_if_fail( in != NULL );
1370 cm_return_if_fail( out != NULL );
1374 memset(out, 0, strlen(in)+1);
1375 while (*i != '\0') {
1376 if (*i == '\\' && *(i+1) == 'n') {
1379 } else if (*i == '\\' && *(i+1) == 't') {
1382 } else if (*i == '\\' && *(i+1) == '\\') {
1393 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1394 both 'in' and 'out' must be non-NULL.
1395 'out' must be a pointer to a buffer whose size is at least equal
1396 to 2*strlen(txt)+1. out's contents will always get set to a valid
1397 string, even if it's "". */
1398 void pref_get_escaped_pref(gchar *out, const gchar *in)
1405 cm_return_if_fail( in != NULL );
1406 cm_return_if_fail( out != NULL );
1410 while (*i != '\0') {
1414 } else if (*i == '\t') {
1417 } else if (*i == '\\') {
1428 /* set the contents of a textview widget from the internal \-escaped
1429 representation of a pref string. both txt and textview must be non-NULL. */
1430 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1432 GtkTextBuffer *buffer;
1435 cm_return_if_fail( textview != NULL );
1437 buffer = gtk_text_view_get_buffer(textview);
1440 gtk_text_buffer_set_text(buffer, "", -1);
1442 out = malloc(strlen(txt)+1);
1444 pref_get_unescaped_pref(out, txt);
1446 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1451 /* set the contents of a gtkentry widget from the internal \-escaped
1452 representation of a pref string. both txt and entry must be non-NULL. */
1453 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1457 cm_return_if_fail( entry != NULL );
1459 gtk_entry_set_text(entry, "");
1461 out = malloc(strlen(txt)+1);
1463 pref_get_unescaped_pref(out, txt);
1465 gtk_entry_set_text(entry, out?out:"");
1470 /* get the \-escaped internal representation of a pref from the contents of
1471 a textview widget. textview must be non-NULL. */
1472 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1474 GtkTextBuffer *buffer;
1475 GtkTextIter start, end;
1478 cm_return_val_if_fail( textview != NULL, "" );
1480 buffer = gtk_text_view_get_buffer(textview);
1481 gtk_text_buffer_get_start_iter(buffer, &start);
1482 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1483 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1484 out = malloc(2*strlen(tmp)+1);
1486 pref_get_escaped_pref(out, tmp);
1492 /* get the \-escaped internal representation of a pref from the contents of
1493 a gtkentry widget. entry must be non-NULL. */
1494 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1498 cm_return_val_if_fail( entry != NULL, "" );
1500 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1501 out = malloc(2*strlen(tmp)+1);
1504 pref_get_escaped_pref(out, tmp);
1510 /* ugly hack to be able to get this pref from ssl_certificate.c */
1511 gboolean prefs_common_unsafe_ssl_certs(void)
1513 return prefs_common.unsafe_ssl_certs;
1516 gboolean prefs_common_enable_log_standard(void)
1518 return prefs_common.enable_log_standard;
1521 gboolean prefs_common_enable_log_warning(void)
1523 return prefs_common.enable_log_warning;
1525 gboolean prefs_common_enable_log_error(void)
1527 return prefs_common.enable_log_error;
1529 gboolean prefs_common_enable_log_status(void)
1531 return prefs_common.enable_log_status;
1535 const gchar *prefs_common_get_data_root(void)
1537 if (prefs_common.data_root && *prefs_common.data_root)
1538 return prefs_common.data_root;
1544 return the translated name of a header, if the translate_header option is
1545 set, otherwise return the untranslated header name (header_name itself).
1546 this function is provided for convenience, it's an interface to
1547 prefs_common.trans_hdr.
1548 works with header names either with or without trailing colon, provided
1549 that gettext found such header name in the sources (they should all be
1550 found in src/gtk/headers.h anyway).
1552 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1554 if (header_name == NULL || *header_name == '\0')
1557 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1560 const gchar *prefs_common_get_uri_cmd(void)
1567 if (!prefs_common.cmds_use_system_default)
1568 return prefs_common.uri_cmd;
1570 tmp = g_find_program_in_path("xdg-open");
1572 return prefs_common.uri_cmd;
1575 return "xdg-open %s";
1579 const gchar *prefs_common_get_ext_editor_cmd(void)
1581 return prefs_common.ext_editor_cmd;
1582 #if 0 /* we should do that, but it detaches the editor and breaks
1583 compose.c's external composition. */
1586 if (!prefs_common.cmds_use_system_default)
1587 return prefs_common.ext_editor_cmd;
1589 tmp = g_find_program_in_path("xdg-open");
1591 return prefs_common.ext_editor_cmd;
1594 return "xdg-open %s";
1598 gboolean prefs_common_get_use_shred(void)
1600 return prefs_common.use_shred;
1603 gboolean prefs_common_get_flush_metadata (void)
1605 return prefs_common.flush_metadata;
1608 PrefsCommon *prefs_common_get_prefs(void)
1610 return &prefs_common;