2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2009 Hiroyuki Yamamoto and the Claws Mail team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
27 #include <glib/gi18n.h>
29 #include <gdk/gdkkeysyms.h>
34 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "mainwindow.h"
45 #include "summaryview.h"
46 #include "folderview.h"
47 #include "messageview.h"
48 #include "manage_window.h"
54 #include "alertpanel.h"
58 #include "folderview.h"
59 #include "stock_pixmap.h"
60 #include "prefswindow.h"
61 #include "colorlabel.h"
62 #include "addrcustomattr.h"
70 PrefsCommon prefs_common;
76 * In the Windows version prefs_common contains
77 * - the non-OS-specific settings of the "Common" section and
78 * - the OS-specific settings of the "CommonWin32" section
79 * The OS-specific settings of the "Common" section are not used
80 * but saved in prefs_unix.
83 # define SPECIFIC_PREFS prefs_unix
85 static PrefsCommon prefs_unix;
87 static PrefParam param_os_specific[] = {
90 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
91 {"newmail_notify_cmd", "",
92 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
95 {"widget_font_gtk2", NULL,
96 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
97 {"message_font_gtk2", "Monospace 9",
98 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
99 {"print_font_gtk2", "Monospace 9",
100 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
101 {"small_font_gtk2", "Sans 9",
102 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
103 {"normal_font_gtk2", "Sans 9",
104 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
105 {"bold_font_gtk2", "Sans 9 Bold",
106 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
108 {"attach_save_directory", NULL,
109 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
110 {"attach_load_directory", NULL,
111 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
114 {"mime_textviewer", NULL,
115 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
116 {"mime_open_command", "notepad '%s'",
117 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
120 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
121 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
124 {"ext_editor_command", "notepad %s",
125 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
127 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
130 # define SPECIFIC_PREFS prefs_common
134 parameter name, default value, pointer to the prefs variable, data type,
135 pointer to the widget pointer,
136 pointer to the function for data setting,
137 pointer to the function for widget setting
140 static PrefParam param[] = {
142 {"data_root", "", &prefs_common.data_root, P_STRING,
146 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
148 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
151 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
153 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
155 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
157 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
158 P_BOOL, NULL, NULL, NULL},
159 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
160 P_BOOL, NULL, NULL, NULL},
161 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
162 P_BOOL, NULL, NULL, NULL},
163 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
164 P_BOOL, NULL, NULL, NULL},
165 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
168 {"maemo_show_led", "TRUE", &prefs_common.maemo_show_led, P_BOOL,
170 {"maemo_play_sound", "FALSE", &prefs_common.maemo_play_sound, P_BOOL,
172 {"maemo_show_banner", "FALSE", &prefs_common.maemo_show_banner, P_BOOL,
175 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
177 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
179 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
181 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
182 P_BOOL, NULL, NULL, NULL},
183 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
184 P_BOOL, NULL, NULL, NULL},
187 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
189 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
190 P_BOOL, NULL, NULL, NULL},
192 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
195 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
198 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
200 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
203 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
205 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
207 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
210 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
211 P_BOOL, NULL, NULL, NULL},
214 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
216 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
217 P_BOOL, NULL, NULL, NULL},
218 {"redirect_keep_from", "FALSE",
219 &prefs_common.redirect_keep_from, P_BOOL,
221 {"undo_level", "50", &prefs_common.undolevels, P_INT,
223 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
225 {"compose_subject_format", "",
226 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
227 {"compose_body_format", N_("Hello,\\n"),
228 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
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},
450 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
453 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
456 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
459 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
462 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
464 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
467 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
469 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
472 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
474 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
478 {"summary_col_show_mark", "TRUE",
479 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
480 {"summary_col_show_unread", "TRUE",
481 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
482 {"summary_col_show_subject", "TRUE",
483 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
484 {"summary_col_show_from", "TRUE",
485 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
486 {"summary_col_show_to", "FALSE",
487 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
488 {"summary_col_show_date", "TRUE",
489 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
490 {"summary_col_show_mime", "TRUE",
491 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
492 {"summary_col_show_size", "TRUE",
493 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
494 {"summary_col_show_number", "FALSE",
495 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
496 {"summary_col_show_score", "FALSE",
497 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
498 {"summary_col_show_locked", "FALSE",
499 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
500 {"summary_col_show_tags", "FALSE",
501 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
503 {"summary_col_pos_mark", "0",
504 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
505 {"summary_col_pos_unread", "1",
506 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
507 {"summary_col_pos_mime", "2",
508 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
509 {"summary_col_pos_subject", "3",
510 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
511 {"summary_col_pos_from", "4",
512 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
513 {"summary_col_pos_date", "5",
514 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
515 {"summary_col_pos_size", "6",
516 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
517 {"summary_col_pos_number", "7",
518 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
519 {"summary_col_pos_score", "8",
520 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
521 {"summary_col_pos_locked", "9",
522 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
523 {"summary_col_pos_to", "10",
524 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
525 {"summary_col_pos_tags", "11",
526 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
528 {"summary_col_size_mark", "10",
529 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_unread", "13",
531 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_mime", "10",
533 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
535 {"summary_col_size_subject", "200",
536 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_from", "120",
538 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_to", "120",
540 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
542 {"summary_col_size_subject", "300",
543 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
544 {"summary_col_size_from", "150",
545 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_to", "150",
547 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
550 {"summary_col_size_date", "118",
551 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
552 {"summary_col_size_size", "45",
553 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
554 {"summary_col_size_number", "40",
555 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
556 {"summary_col_size_score", "40",
557 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
558 {"summary_col_size_locked", "13",
559 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
560 {"summary_col_size_tags", "150",
561 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
564 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
566 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
568 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
570 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
572 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
575 {"folder_col_show_folder", "TRUE",
576 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
577 {"folder_col_show_new", "TRUE",
578 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
579 {"folder_col_show_unread", "TRUE",
580 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
581 {"folder_col_show_total", "TRUE",
582 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
584 {"folder_col_pos_folder", "0",
585 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
586 {"folder_col_pos_new", "1",
587 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
588 {"folder_col_pos_unread", "2",
589 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
590 {"folder_col_pos_total", "3",
591 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
594 {"folder_col_size_folder", "120",
595 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
596 {"folder_col_size_new", "32",
597 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
598 {"folder_col_size_unread", "32",
599 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_total", "32",
601 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
603 {"folder_col_size_folder", "400",
604 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
605 {"folder_col_size_new", "32",
606 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
607 {"folder_col_size_unread", "32",
608 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
609 {"folder_col_size_total", "32",
610 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
612 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
614 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
617 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
619 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
621 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
623 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
625 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
628 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
630 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
632 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
634 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
636 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
638 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
640 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
642 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
645 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
647 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
649 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
651 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
653 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
655 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
657 {"compose_width", "600", &prefs_common.compose_width, P_INT,
659 {"compose_height", "560", &prefs_common.compose_height, P_INT,
662 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
664 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
666 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
668 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
670 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
672 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
674 {"compose_width", "700", &prefs_common.compose_width, P_INT,
676 {"compose_height", "470", &prefs_common.compose_height, P_INT,
679 {"compose_x", "0", &prefs_common.compose_x, P_INT,
681 {"compose_y", "0", &prefs_common.compose_y, P_INT,
684 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
687 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
689 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
691 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
693 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
695 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
697 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
699 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
701 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
703 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
705 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
707 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
709 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
710 P_BOOL, NULL, NULL, NULL},
712 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
713 P_BOOL, NULL, NULL, NULL},
714 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
716 {"display_xface", "TRUE", &prefs_common.display_xface,
717 P_BOOL, NULL, NULL, NULL},
718 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
720 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
722 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
724 {"line_space", "2", &prefs_common.line_space, P_INT,
726 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
729 {"enable_smooth_scroll", "FALSE",
730 &prefs_common.enable_smooth_scroll, P_BOOL,
732 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
734 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
736 {"hide_quoted", "TRUE",
737 &prefs_common.hide_quoted, P_BOOL,
739 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
742 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
745 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
747 {"attach_save_directory", NULL,
748 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
749 {"attach_load_directory", NULL,
750 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
753 {"mime_textviewer", NULL,
754 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
755 {"mime_open_command", "gedit '%s'",
756 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
760 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
763 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
766 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
767 NULL, NULL, NULL}, */
768 {"always_show_message_when_selected", "0",
769 &prefs_common.always_show_msg,
770 P_ENUM, NULL, NULL, NULL},
771 {"select_on_entry", "3", &prefs_common.select_on_entry,
772 P_ENUM, NULL, NULL, NULL},
773 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
774 P_BOOL, NULL, NULL, NULL},
776 /* do it SUMMARY_OPEN_ACTIONS-1 times */
777 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
779 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
781 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
783 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
785 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
787 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
789 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
792 {"mark_as_read_on_new_window", "FALSE",
793 &prefs_common.mark_as_read_on_new_window,
794 P_BOOL, NULL, NULL, NULL},
795 {"mark_as_read_delay", "0",
796 &prefs_common.mark_as_read_delay, P_INT,
798 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
800 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
803 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
804 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
807 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
810 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
812 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
816 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
817 P_BOOL, NULL, NULL, NULL},
818 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
819 P_INT, NULL, NULL, NULL},
820 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
821 P_INT, NULL, NULL, NULL},
825 {"uri_open_command", DEFAULT_BROWSER_CMD,
826 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
828 {"ext_editor_command", DEFAULT_EDITOR_CMD,
829 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
830 {"cmds_use_system_default", "TRUE",
831 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
832 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
833 P_BOOL, NULL, NULL, NULL},
834 {"session_passwords", "FALSE", &prefs_common.session_passwords,
835 P_BOOL, NULL, NULL, NULL},
836 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
838 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
840 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
842 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
843 P_BOOL, NULL, NULL, NULL},
844 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
846 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
849 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
852 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
856 #if defined(__OpenBSD__)
857 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
858 P_INT, NULL, NULL, NULL},
860 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
861 P_INT, NULL, NULL, NULL},
863 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
865 {"important_score", "1", &prefs_common.important_score, P_INT,
868 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
870 {"log_length", "500", &prefs_common.loglength, P_INT,
873 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
875 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
877 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
879 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
882 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
884 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
886 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
888 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
891 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
893 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
895 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
897 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
899 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
901 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
903 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
905 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
908 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
910 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
912 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
914 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
916 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
918 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
920 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
922 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
924 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
927 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
930 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
933 /* Some windows' sizes */
934 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
936 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
939 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
941 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
944 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
946 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
949 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
951 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
954 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
956 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
959 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
961 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
964 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
966 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
969 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
971 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
974 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
976 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
979 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
981 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
984 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
986 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
989 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
991 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
994 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
997 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
999 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1002 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1004 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1007 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1009 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1012 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1014 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1017 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1019 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1022 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1024 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1027 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1029 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1032 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1034 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1037 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1039 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1042 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1044 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1048 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1050 {"utf8_instead_of_locale_for_broken_mail", "0",
1051 &prefs_common.broken_are_utf8, P_INT,
1053 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1055 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1057 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1059 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1061 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1063 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1065 {"folderview_vscrollbar_policy", "0",
1066 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1068 {"textview_cursor_visible", "FALSE",
1069 &prefs_common.textview_cursor_visible, P_BOOL,
1071 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1073 #ifndef GENERIC_UMPC
1074 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1076 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1079 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1081 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1084 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1085 P_INT, NULL, NULL, NULL },
1086 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1087 P_STRING, NULL, NULL, NULL },
1088 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1089 P_BOOL, NULL, NULL, NULL },
1090 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1092 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1094 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1096 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1098 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1100 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1102 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1104 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1106 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1108 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1110 #ifndef GENERIC_UMPC
1111 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1114 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1118 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1120 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1122 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1124 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1126 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1128 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1130 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1132 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1134 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1136 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1138 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1140 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1142 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1144 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1146 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1149 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1150 P_BOOL, NULL, NULL, NULL },
1152 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1155 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1158 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1162 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1163 * Fallback to default_list if history file is not found
1165 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1166 GList *default_list)
1170 gchar buf[PREFSBUFSIZE];
1174 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1175 G_DIR_SEPARATOR_S, history,
1178 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1181 if ((fp = g_fopen(path, "rb")) == NULL) {
1182 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1184 /* returns default list if set, otherwise NULL */
1185 return default_list;
1188 while (fgets(buf, sizeof(buf), fp) != NULL) {
1190 if (buf[0] == '\0') continue;
1191 tmp = add_history(tmp, buf);
1195 tmp = g_list_reverse(tmp);
1201 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1203 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1205 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1209 * Read history list from the specified history file
1211 static GList *prefs_common_read_history(const gchar *history)
1213 return prefs_common_read_history_from_dir(NULL, history);
1216 void prefs_common_read_config(void)
1221 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1222 prefs_read_config(param, "Common", rcpath, NULL);
1224 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1229 tmp = g_strdup(gettext(prefs_common.date_format));
1230 g_free(prefs_common.date_format);
1231 prefs_common.date_format = tmp;
1233 prefs_common.mime_open_cmd_history =
1234 prefs_common_read_history(COMMAND_HISTORY);
1235 prefs_common.summary_quicksearch_history =
1236 prefs_common_read_history(QUICKSEARCH_HISTORY);
1237 prefs_common.summary_search_from_history =
1238 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1239 prefs_common.summary_search_to_history =
1240 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1241 prefs_common.summary_search_subject_history =
1242 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1243 prefs_common.summary_search_body_history =
1244 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1245 prefs_common.summary_search_adv_condition_history =
1246 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1247 prefs_common.message_search_history =
1248 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1249 prefs_common.compose_save_to_history =
1250 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1252 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1254 colorlabel_update_colortable_from_prefs();
1260 g_warning("failed to write\n"); \
1265 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1267 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1271 gchar *path, *tmp_path;
1274 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1275 G_DIR_SEPARATOR_S, history,
1278 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1281 tmp_path = g_strconcat(path, ".tmp", NULL);
1283 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1284 FILE_OP_ERROR(tmp_path, "fopen");
1288 for (cur = list; cur != NULL; cur = cur->next) {
1289 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1290 fputc('\n', fp) != EOF);
1293 if (fclose(fp) == EOF) {
1294 FILE_OP_ERROR(tmp_path, "fclose");
1302 if (g_rename(tmp_path, path) < 0) {
1303 FILE_OP_ERROR(path, "rename");
1315 * Save history list to the specified history file
1317 static void prefs_common_save_history(const gchar *history, GList *list)
1319 prefs_common_save_history_to_dir(NULL, history, list);
1324 void prefs_common_write_config(void)
1326 prefs_write_config(param, "Common", COMMON_RC);
1328 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1331 prefs_common_save_history(COMMAND_HISTORY,
1332 prefs_common.mime_open_cmd_history);
1333 prefs_common_save_history(QUICKSEARCH_HISTORY,
1334 prefs_common.summary_quicksearch_history);
1335 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1336 prefs_common.summary_search_from_history);
1337 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1338 prefs_common.summary_search_to_history);
1339 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1340 prefs_common.summary_search_subject_history);
1341 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1342 prefs_common.summary_search_body_history);
1343 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1344 prefs_common.summary_search_adv_condition_history);
1345 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1346 prefs_common.message_search_history);
1347 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1348 prefs_common.compose_save_to_history);
1350 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1351 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1352 prefs_common.addressbook_custom_attributes);
1355 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1356 both 'in' and 'out' must be non-NULL.
1357 'out' must be a pointer to a buffer whose size is at least equal
1358 to strlen(txt)+1, this buffer will get cleared. out's contents
1359 will always get set to a valid string, even if it's "".*/
1360 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1367 cm_return_if_fail( in != NULL );
1368 cm_return_if_fail( out != NULL );
1372 memset(out, 0, strlen(in)+1);
1373 while (*i != '\0') {
1374 if (*i == '\\' && *(i+1) == 'n') {
1377 } else if (*i == '\\' && *(i+1) == 't') {
1380 } else if (*i == '\\' && *(i+1) == '\\') {
1391 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1392 both 'in' and 'out' must be non-NULL.
1393 'out' must be a pointer to a buffer whose size is at least equal
1394 to 2*strlen(txt)+1. out's contents will always get set to a valid
1395 string, even if it's "". */
1396 void pref_get_escaped_pref(gchar *out, const gchar *in)
1403 cm_return_if_fail( in != NULL );
1404 cm_return_if_fail( out != NULL );
1408 while (*i != '\0') {
1412 } else if (*i == '\t') {
1415 } else if (*i == '\\') {
1426 /* set the contents of a textview widget from the internal \-escaped
1427 representation of a pref string. both txt and textview must be non-NULL. */
1428 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1430 GtkTextBuffer *buffer;
1433 cm_return_if_fail( textview != NULL );
1435 buffer = gtk_text_view_get_buffer(textview);
1438 gtk_text_buffer_set_text(buffer, "", -1);
1440 out = malloc(strlen(txt)+1);
1442 pref_get_unescaped_pref(out, txt);
1444 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1449 /* set the contents of a gtkentry widget from the internal \-escaped
1450 representation of a pref string. both txt and entry must be non-NULL. */
1451 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1455 cm_return_if_fail( entry != NULL );
1457 gtk_entry_set_text(entry, "");
1459 out = malloc(strlen(txt)+1);
1461 pref_get_unescaped_pref(out, txt);
1463 gtk_entry_set_text(entry, out?out:"");
1468 /* get the \-escaped internal representation of a pref from the contents of
1469 a textview widget. textview must be non-NULL. */
1470 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1472 GtkTextBuffer *buffer;
1473 GtkTextIter start, end;
1476 cm_return_val_if_fail( textview != NULL, "" );
1478 buffer = gtk_text_view_get_buffer(textview);
1479 gtk_text_buffer_get_start_iter(buffer, &start);
1480 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1481 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1482 out = malloc(2*strlen(tmp)+1);
1484 pref_get_escaped_pref(out, tmp);
1490 /* get the \-escaped internal representation of a pref from the contents of
1491 a gtkentry widget. entry must be non-NULL. */
1492 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1496 cm_return_val_if_fail( entry != NULL, "" );
1498 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1499 out = malloc(2*strlen(tmp)+1);
1502 pref_get_escaped_pref(out, tmp);
1508 /* ugly hack to be able to get this pref from ssl_certificate.c */
1509 gboolean prefs_common_unsafe_ssl_certs(void)
1511 return prefs_common.unsafe_ssl_certs;
1514 gboolean prefs_common_enable_log_standard(void)
1516 return prefs_common.enable_log_standard;
1519 gboolean prefs_common_enable_log_warning(void)
1521 return prefs_common.enable_log_warning;
1523 gboolean prefs_common_enable_log_error(void)
1525 return prefs_common.enable_log_error;
1527 gboolean prefs_common_enable_log_status(void)
1529 return prefs_common.enable_log_status;
1533 const gchar *prefs_common_get_data_root(void)
1535 if (prefs_common.data_root && *prefs_common.data_root)
1536 return prefs_common.data_root;
1542 return the translated name of a header, if the translate_header option is
1543 set, otherwise return the untranslated header name (header_name itself).
1544 this function is provided for convenience, it's an interface to
1545 prefs_common.trans_hdr.
1546 works with header names either with or without trailing colon, provided
1547 that gettext found such header name in the sources (they should all be
1548 found in src/gtk/headers.h anyway).
1550 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1552 if (header_name == NULL || *header_name == '\0')
1555 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1558 const gchar *prefs_common_get_uri_cmd(void)
1565 if (!prefs_common.cmds_use_system_default)
1566 return prefs_common.uri_cmd;
1568 tmp = g_find_program_in_path("xdg-open");
1570 return prefs_common.uri_cmd;
1573 return "xdg-open %s";
1577 const gchar *prefs_common_get_ext_editor_cmd(void)
1579 return prefs_common.ext_editor_cmd;
1580 #if 0 /* we should do that, but it detaches the editor and breaks
1581 compose.c's external composition. */
1584 if (!prefs_common.cmds_use_system_default)
1585 return prefs_common.ext_editor_cmd;
1587 tmp = g_find_program_in_path("xdg-open");
1589 return prefs_common.ext_editor_cmd;
1592 return "xdg-open %s";
1596 gboolean prefs_common_get_use_shred(void)
1598 return prefs_common.use_shred;
1601 gboolean prefs_common_get_flush_metadata (void)
1603 return prefs_common.flush_metadata;
1606 PrefsCommon *prefs_common_get_prefs(void)
1608 return &prefs_common;