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},
230 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
232 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
234 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
236 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
238 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
240 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
242 {"autosave", "TRUE", &prefs_common.autosave,
243 P_BOOL, NULL, NULL, NULL},
244 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
246 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
247 P_BOOL, NULL, NULL, NULL},
248 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
249 P_INT, NULL, NULL, NULL},
251 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
253 {"dictionary", "", &prefs_common.dictionary, P_STRING,
255 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
257 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
259 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
261 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
262 P_BOOL, NULL, NULL, NULL},
263 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
265 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
268 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
270 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
273 /* Account autoselection */
274 {"reply_account_autoselect", "TRUE",
275 &prefs_common.reply_account_autosel, P_BOOL,
277 {"forward_account_autoselect", "TRUE",
278 &prefs_common.forward_account_autosel, P_BOOL,
280 {"reedit_account_autoselect", "TRUE",
281 &prefs_common.reedit_account_autosel, P_BOOL,
284 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
288 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
291 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
296 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
298 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
299 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
301 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
303 {"forward_quote_format",
304 N_("\\n\\nBegin forwarded message:\\n\\n"
305 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
306 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
307 &prefs_common.fw_quotefmt, P_STRING,
309 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
313 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
314 {"widget_font", NULL,
315 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
317 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
318 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
319 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
320 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
321 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
322 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
323 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
327 {"widget_font_gtk2", NULL,
328 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
329 {"message_font_gtk2", "Monospace 9",
330 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
331 {"print_font_gtk2", "Monospace 9",
332 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
333 {"small_font_gtk2", "Sans 9",
334 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
335 {"normal_font_gtk2", "Sans 9",
336 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
337 {"bold_font_gtk2", "Sans Bold 9",
338 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
340 {"widget_font_gtk2", NULL,
341 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
342 {"message_font_gtk2", "Monospace 8",
343 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
344 {"print_font_gtk2", "Monospace 8",
345 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
346 {"small_font_gtk2", "Sans 8",
347 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
348 {"normal_font_gtk2", "Sans 8",
349 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
350 {"bold_font_gtk2", "Sans Bold 8",
351 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
354 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
356 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
360 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
362 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
364 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
366 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
368 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
370 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
372 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
374 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
376 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
378 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
380 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
382 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
384 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
386 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
388 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
390 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
392 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
394 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
396 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
398 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
400 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
402 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
404 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
406 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
408 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
410 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
412 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
414 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
416 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
418 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
422 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
424 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
426 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
429 {"display_folder_unread_num", "0",
430 &prefs_common.display_folder_unread, P_INT,
432 {"newsgroup_abbrev_len", "16",
433 &prefs_common.ng_abbrev_len, P_INT,
436 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
439 /* Display: Summary View */
440 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
442 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
444 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
445 P_STRING, NULL, NULL, NULL},
447 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
450 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
453 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
456 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
459 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
461 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
464 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
466 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
469 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
471 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
475 {"summary_col_show_mark", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_unread", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_subject", "TRUE",
480 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_from", "TRUE",
482 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_to", "FALSE",
484 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_date", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_mime", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_size", "TRUE",
490 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_number", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_score", "FALSE",
494 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_locked", "FALSE",
496 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_tags", "FALSE",
498 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
500 {"summary_col_pos_mark", "0",
501 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_unread", "1",
503 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_mime", "2",
505 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_subject", "3",
507 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_from", "4",
509 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_date", "5",
511 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_size", "6",
513 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_number", "7",
515 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_score", "8",
517 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_locked", "9",
519 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_to", "10",
521 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_tags", "11",
523 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
525 {"summary_col_size_mark", "10",
526 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
527 {"summary_col_size_unread", "13",
528 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
529 {"summary_col_size_mime", "10",
530 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_subject", "200",
533 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_from", "120",
535 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
536 {"summary_col_size_to", "120",
537 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_subject", "300",
540 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_from", "150",
542 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_to", "150",
544 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_date", "118",
548 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_size", "45",
550 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_number", "40",
552 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_score", "40",
554 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_locked", "13",
556 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
557 {"summary_col_size_tags", "150",
558 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
561 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
563 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
565 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
567 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
569 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
572 {"folder_col_show_folder", "TRUE",
573 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
574 {"folder_col_show_new", "TRUE",
575 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
576 {"folder_col_show_unread", "TRUE",
577 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
578 {"folder_col_show_total", "TRUE",
579 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
581 {"folder_col_pos_folder", "0",
582 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
583 {"folder_col_pos_new", "1",
584 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
585 {"folder_col_pos_unread", "2",
586 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
587 {"folder_col_pos_total", "3",
588 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
591 {"folder_col_size_folder", "120",
592 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
593 {"folder_col_size_new", "32",
594 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
595 {"folder_col_size_unread", "32",
596 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
597 {"folder_col_size_total", "32",
598 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_folder", "400",
601 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_new", "32",
603 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
604 {"folder_col_size_unread", "32",
605 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
606 {"folder_col_size_total", "32",
607 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
609 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
611 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
614 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
616 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
618 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
620 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
622 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
625 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
627 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
629 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
631 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
633 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
635 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
637 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
639 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
642 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
644 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
646 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
648 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
650 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
652 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
654 {"compose_width", "600", &prefs_common.compose_width, P_INT,
656 {"compose_height", "560", &prefs_common.compose_height, P_INT,
659 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
661 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
663 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
665 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
667 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
669 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
671 {"compose_width", "700", &prefs_common.compose_width, P_INT,
673 {"compose_height", "470", &prefs_common.compose_height, P_INT,
676 {"compose_x", "0", &prefs_common.compose_x, P_INT,
678 {"compose_y", "0", &prefs_common.compose_y, P_INT,
681 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
684 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
686 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
688 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
690 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
692 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
694 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
696 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
698 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
700 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
702 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
704 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
706 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
707 P_BOOL, NULL, NULL, NULL},
709 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
710 P_BOOL, NULL, NULL, NULL},
711 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
713 {"display_xface", "TRUE", &prefs_common.display_xface,
714 P_BOOL, NULL, NULL, NULL},
715 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
717 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
719 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
721 {"line_space", "2", &prefs_common.line_space, P_INT,
723 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
726 {"enable_smooth_scroll", "FALSE",
727 &prefs_common.enable_smooth_scroll, P_BOOL,
729 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
731 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
733 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
736 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
739 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
741 {"attach_save_directory", NULL,
742 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
743 {"attach_load_directory", NULL,
744 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
747 {"mime_textviewer", NULL,
748 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
749 {"mime_open_command", "gedit '%s'",
750 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
754 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
757 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
760 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
761 NULL, NULL, NULL}, */
762 {"always_show_message_when_selected", "0",
763 &prefs_common.always_show_msg,
764 P_ENUM, NULL, NULL, NULL},
765 {"select_on_entry", "3", &prefs_common.select_on_entry,
766 P_ENUM, NULL, NULL, NULL},
767 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
768 P_BOOL, NULL, NULL, NULL},
770 /* do it SUMMARY_OPEN_ACTIONS-1 times */
771 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
773 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
775 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
777 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
779 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
781 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
783 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
786 {"mark_as_read_on_new_window", "FALSE",
787 &prefs_common.mark_as_read_on_new_window,
788 P_BOOL, NULL, NULL, NULL},
789 {"mark_as_read_delay", "0",
790 &prefs_common.mark_as_read_delay, P_INT,
792 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
794 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
797 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
798 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
801 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
804 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
806 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
810 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
811 P_BOOL, NULL, NULL, NULL},
812 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
813 P_INT, NULL, NULL, NULL},
814 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
815 P_INT, NULL, NULL, NULL},
819 {"uri_open_command", DEFAULT_BROWSER_CMD,
820 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
822 {"ext_editor_command", DEFAULT_EDITOR_CMD,
823 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
824 {"cmds_use_system_default", "TRUE",
825 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
826 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
827 P_BOOL, NULL, NULL, NULL},
828 {"session_passwords", "FALSE", &prefs_common.session_passwords,
829 P_BOOL, NULL, NULL, NULL},
830 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
832 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
834 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
836 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
837 P_BOOL, NULL, NULL, NULL},
838 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
840 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
843 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
846 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
850 #if defined(__OpenBSD__)
851 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
852 P_INT, NULL, NULL, NULL},
854 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
855 P_INT, NULL, NULL, NULL},
857 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
859 {"important_score", "1", &prefs_common.important_score, P_INT,
862 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
864 {"log_length", "500", &prefs_common.loglength, P_INT,
867 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
869 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
871 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
873 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
876 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
878 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
880 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
882 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
885 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
887 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
889 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
891 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
893 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
895 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
897 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
899 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
902 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
904 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
906 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
908 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
910 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
912 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
914 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
916 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
918 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
921 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
924 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
927 /* Some windows' sizes */
928 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
930 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
933 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
935 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
938 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
940 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
943 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
945 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
948 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
950 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
953 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
955 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
958 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
960 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
963 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
965 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
968 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
970 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
973 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
975 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
978 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
980 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
983 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
985 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
988 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
991 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
993 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
996 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
998 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1001 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1003 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1006 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1008 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1011 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1013 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1016 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1018 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1021 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1023 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1026 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1028 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1031 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1033 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1037 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1039 {"utf8_instead_of_locale_for_broken_mail", "0",
1040 &prefs_common.broken_are_utf8, P_INT,
1042 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1044 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1046 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1048 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1050 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1052 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1054 {"folderview_vscrollbar_policy", "0",
1055 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1057 {"textview_cursor_visible", "FALSE",
1058 &prefs_common.textview_cursor_visible, P_BOOL,
1060 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1062 #ifndef GENERIC_UMPC
1063 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1065 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1068 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1070 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1073 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1074 P_INT, NULL, NULL, NULL },
1075 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1076 P_STRING, NULL, NULL, NULL },
1077 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1078 P_BOOL, NULL, NULL, NULL },
1079 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1081 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1083 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1085 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1087 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1089 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1091 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1093 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1095 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1097 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1099 #ifndef GENERIC_UMPC
1100 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1103 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1107 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1109 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1111 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1113 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1115 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1117 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1119 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1121 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1123 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1125 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1127 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1129 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1131 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1133 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1135 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1138 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1139 P_BOOL, NULL, NULL, NULL },
1141 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1144 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1147 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1151 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1152 * Fallback to default_list if history file is not found
1154 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1155 GList *default_list)
1159 gchar buf[PREFSBUFSIZE];
1163 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1164 G_DIR_SEPARATOR_S, history,
1167 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1170 if ((fp = g_fopen(path, "rb")) == NULL) {
1171 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1173 /* returns default list if set, otherwise NULL */
1174 return default_list;
1177 while (fgets(buf, sizeof(buf), fp) != NULL) {
1179 if (buf[0] == '\0') continue;
1180 tmp = add_history(tmp, buf);
1184 tmp = g_list_reverse(tmp);
1190 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1192 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1194 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1198 * Read history list from the specified history file
1200 static GList *prefs_common_read_history(const gchar *history)
1202 return prefs_common_read_history_from_dir(NULL, history);
1205 void prefs_common_read_config(void)
1210 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1211 prefs_read_config(param, "Common", rcpath, NULL);
1213 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1218 tmp = g_strdup(gettext(prefs_common.date_format));
1219 g_free(prefs_common.date_format);
1220 prefs_common.date_format = tmp;
1222 prefs_common.mime_open_cmd_history =
1223 prefs_common_read_history(COMMAND_HISTORY);
1224 prefs_common.summary_quicksearch_history =
1225 prefs_common_read_history(QUICKSEARCH_HISTORY);
1226 prefs_common.summary_search_from_history =
1227 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1228 prefs_common.summary_search_to_history =
1229 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1230 prefs_common.summary_search_subject_history =
1231 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1232 prefs_common.summary_search_body_history =
1233 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1234 prefs_common.summary_search_adv_condition_history =
1235 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1236 prefs_common.message_search_history =
1237 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1238 prefs_common.compose_save_to_history =
1239 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1241 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1243 colorlabel_update_colortable_from_prefs();
1249 g_warning("failed to write\n"); \
1254 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1256 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1260 gchar *path, *tmp_path;
1263 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1264 G_DIR_SEPARATOR_S, history,
1267 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1270 tmp_path = g_strconcat(path, ".tmp", NULL);
1272 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1273 FILE_OP_ERROR(tmp_path, "fopen");
1277 for (cur = list; cur != NULL; cur = cur->next) {
1278 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1279 fputc('\n', fp) != EOF);
1282 if (fclose(fp) == EOF) {
1283 FILE_OP_ERROR(tmp_path, "fclose");
1291 if (g_rename(tmp_path, path) < 0) {
1292 FILE_OP_ERROR(path, "rename");
1304 * Save history list to the specified history file
1306 static void prefs_common_save_history(const gchar *history, GList *list)
1308 prefs_common_save_history_to_dir(NULL, history, list);
1313 void prefs_common_write_config(void)
1315 prefs_write_config(param, "Common", COMMON_RC);
1317 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1320 prefs_common_save_history(COMMAND_HISTORY,
1321 prefs_common.mime_open_cmd_history);
1322 prefs_common_save_history(QUICKSEARCH_HISTORY,
1323 prefs_common.summary_quicksearch_history);
1324 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1325 prefs_common.summary_search_from_history);
1326 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1327 prefs_common.summary_search_to_history);
1328 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1329 prefs_common.summary_search_subject_history);
1330 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1331 prefs_common.summary_search_body_history);
1332 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1333 prefs_common.summary_search_adv_condition_history);
1334 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1335 prefs_common.message_search_history);
1336 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1337 prefs_common.compose_save_to_history);
1339 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1340 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1341 prefs_common.addressbook_custom_attributes);
1344 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1345 both 'in' and 'out' must be non-NULL.
1346 'out' must be a pointer to a buffer whose size is at least equal
1347 to strlen(txt)+1, this buffer will get cleared. out's contents
1348 will always get set to a valid string, even if it's "".*/
1349 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1356 cm_return_if_fail( in != NULL );
1357 cm_return_if_fail( out != NULL );
1361 memset(out, 0, strlen(in)+1);
1362 while (*i != '\0') {
1363 if (*i == '\\' && *(i+1) == 'n') {
1366 } else if (*i == '\\' && *(i+1) == 't') {
1369 } else if (*i == '\\' && *(i+1) == '\\') {
1380 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1381 both 'in' and 'out' must be non-NULL.
1382 'out' must be a pointer to a buffer whose size is at least equal
1383 to 2*strlen(txt)+1. out's contents will always get set to a valid
1384 string, even if it's "". */
1385 void pref_get_escaped_pref(gchar *out, const gchar *in)
1392 cm_return_if_fail( in != NULL );
1393 cm_return_if_fail( out != NULL );
1397 while (*i != '\0') {
1401 } else if (*i == '\t') {
1404 } else if (*i == '\\') {
1415 /* set the contents of a textview widget from the internal \-escaped
1416 representation of a pref string. both txt and textview must be non-NULL. */
1417 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1419 GtkTextBuffer *buffer;
1422 cm_return_if_fail( textview != NULL );
1424 buffer = gtk_text_view_get_buffer(textview);
1427 gtk_text_buffer_set_text(buffer, "", -1);
1429 out = malloc(strlen(txt)+1);
1431 pref_get_unescaped_pref(out, txt);
1433 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1438 /* set the contents of a gtkentry widget from the internal \-escaped
1439 representation of a pref string. both txt and entry must be non-NULL. */
1440 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1444 cm_return_if_fail( entry != NULL );
1446 gtk_entry_set_text(entry, "");
1448 out = malloc(strlen(txt)+1);
1450 pref_get_unescaped_pref(out, txt);
1452 gtk_entry_set_text(entry, out?out:"");
1457 /* get the \-escaped internal representation of a pref from the contents of
1458 a textview widget. textview must be non-NULL. */
1459 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1461 GtkTextBuffer *buffer;
1462 GtkTextIter start, end;
1465 cm_return_val_if_fail( textview != NULL, "" );
1467 buffer = gtk_text_view_get_buffer(textview);
1468 gtk_text_buffer_get_start_iter(buffer, &start);
1469 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1470 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1471 out = malloc(2*strlen(tmp)+1);
1473 pref_get_escaped_pref(out, tmp);
1479 /* get the \-escaped internal representation of a pref from the contents of
1480 a gtkentry widget. entry must be non-NULL. */
1481 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1485 cm_return_val_if_fail( entry != NULL, "" );
1487 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1488 out = malloc(2*strlen(tmp)+1);
1491 pref_get_escaped_pref(out, tmp);
1497 /* ugly hack to be able to get this pref from ssl_certificate.c */
1498 gboolean prefs_common_unsafe_ssl_certs(void)
1500 return prefs_common.unsafe_ssl_certs;
1503 gboolean prefs_common_enable_log_standard(void)
1505 return prefs_common.enable_log_standard;
1508 gboolean prefs_common_enable_log_warning(void)
1510 return prefs_common.enable_log_warning;
1512 gboolean prefs_common_enable_log_error(void)
1514 return prefs_common.enable_log_error;
1516 gboolean prefs_common_enable_log_status(void)
1518 return prefs_common.enable_log_status;
1522 const gchar *prefs_common_get_data_root(void)
1524 if (prefs_common.data_root && *prefs_common.data_root)
1525 return prefs_common.data_root;
1531 return the translated name of a header, if the translate_header option is
1532 set, otherwise return the untranslated header name (header_name itself).
1533 this function is provided for convenience, it's an interface to
1534 prefs_common.trans_hdr.
1535 works with header names either with or without trailing colon, provided
1536 that gettext found such header name in the sources (they should all be
1537 found in src/gtk/headers.h anyway).
1539 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1541 if (header_name == NULL || *header_name == '\0')
1544 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1547 const gchar *prefs_common_get_uri_cmd(void)
1554 if (!prefs_common.cmds_use_system_default)
1555 return prefs_common.uri_cmd;
1557 tmp = g_find_program_in_path("xdg-open");
1559 return prefs_common.uri_cmd;
1562 return "xdg-open %s";
1566 const gchar *prefs_common_get_ext_editor_cmd(void)
1568 return prefs_common.ext_editor_cmd;
1569 #if 0 /* we should do that, but it detaches the editor and breaks
1570 compose.c's external composition. */
1573 if (!prefs_common.cmds_use_system_default)
1574 return prefs_common.ext_editor_cmd;
1576 tmp = g_find_program_in_path("xdg-open");
1578 return prefs_common.ext_editor_cmd;
1581 return "xdg-open %s";
1585 gboolean prefs_common_get_use_shred(void)
1587 return prefs_common.use_shred;
1590 gboolean prefs_common_get_flush_metadata (void)
1592 return prefs_common.flush_metadata;
1595 PrefsCommon *prefs_common_get_prefs(void)
1597 return &prefs_common;