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},
821 {"print_command", "lpr %s",
822 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
824 {"ext_editor_command", DEFAULT_EDITOR_CMD,
825 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
826 {"cmds_use_system_default", "TRUE",
827 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
828 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
829 P_BOOL, NULL, NULL, NULL},
830 {"session_passwords", "FALSE", &prefs_common.session_passwords,
831 P_BOOL, NULL, NULL, NULL},
832 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
834 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
836 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
838 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
839 P_BOOL, NULL, NULL, NULL},
840 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
842 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
845 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
848 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
852 #if defined(__OpenBSD__)
853 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
854 P_INT, NULL, NULL, NULL},
856 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
857 P_INT, NULL, NULL, NULL},
859 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
861 {"important_score", "1", &prefs_common.important_score, P_INT,
864 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
866 {"log_length", "500", &prefs_common.loglength, P_INT,
869 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
871 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
873 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
875 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
878 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
880 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
882 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
884 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
887 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
889 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
891 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
893 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
895 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
897 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
899 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
901 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
904 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
906 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
908 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
910 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
912 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
914 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
916 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
918 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
920 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
923 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
926 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
929 /* Some windows' sizes */
930 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
932 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
935 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
937 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
940 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
942 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
945 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
947 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
950 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
952 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
955 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
957 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
960 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
962 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
965 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
967 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
970 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
972 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
975 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
977 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
980 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
982 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
985 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
987 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
990 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
993 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
995 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
998 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1000 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1003 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1005 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1008 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1010 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1013 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1015 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1018 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1020 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1023 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1025 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1028 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1030 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1034 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1036 {"utf8_instead_of_locale_for_broken_mail", "0",
1037 &prefs_common.broken_are_utf8, P_INT,
1039 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1041 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1043 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1045 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1047 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1049 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1051 {"folderview_vscrollbar_policy", "0",
1052 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1054 {"textview_cursor_visible", "FALSE",
1055 &prefs_common.textview_cursor_visible, P_BOOL,
1057 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1059 #ifndef GENERIC_UMPC
1060 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1062 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1065 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1067 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1070 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1071 P_INT, NULL, NULL, NULL },
1072 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1073 P_STRING, NULL, NULL, NULL },
1074 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1075 P_BOOL, NULL, NULL, NULL },
1076 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1078 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1080 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1082 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1084 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1086 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1088 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1090 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1092 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1094 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1096 #ifndef GENERIC_UMPC
1097 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1100 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1104 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1106 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1108 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1110 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1112 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1114 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1116 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1118 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1120 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1122 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1124 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1126 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1128 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1130 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1132 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1135 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1136 P_BOOL, NULL, NULL, NULL },
1138 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1141 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1144 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1148 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1149 * Fallback to default_list if history file is not found
1151 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1152 GList *default_list)
1156 gchar buf[PREFSBUFSIZE];
1160 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1161 G_DIR_SEPARATOR_S, history,
1164 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1167 if ((fp = g_fopen(path, "rb")) == NULL) {
1168 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1170 /* returns default list if set, otherwise NULL */
1171 return default_list;
1174 while (fgets(buf, sizeof(buf), fp) != NULL) {
1176 if (buf[0] == '\0') continue;
1177 tmp = add_history(tmp, buf);
1181 tmp = g_list_reverse(tmp);
1187 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1189 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1191 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1195 * Read history list from the specified history file
1197 static GList *prefs_common_read_history(const gchar *history)
1199 return prefs_common_read_history_from_dir(NULL, history);
1202 void prefs_common_read_config(void)
1207 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1208 prefs_read_config(param, "Common", rcpath, NULL);
1210 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1215 tmp = g_strdup(gettext(prefs_common.date_format));
1216 g_free(prefs_common.date_format);
1217 prefs_common.date_format = tmp;
1219 prefs_common.mime_open_cmd_history =
1220 prefs_common_read_history(COMMAND_HISTORY);
1221 prefs_common.summary_quicksearch_history =
1222 prefs_common_read_history(QUICKSEARCH_HISTORY);
1223 prefs_common.summary_search_from_history =
1224 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1225 prefs_common.summary_search_to_history =
1226 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1227 prefs_common.summary_search_subject_history =
1228 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1229 prefs_common.summary_search_body_history =
1230 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1231 prefs_common.summary_search_adv_condition_history =
1232 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1233 prefs_common.message_search_history =
1234 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1235 prefs_common.compose_save_to_history =
1236 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1238 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1240 colorlabel_update_colortable_from_prefs();
1246 g_warning("failed to write\n"); \
1251 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1253 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1257 gchar *path, *tmp_path;
1260 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1261 G_DIR_SEPARATOR_S, history,
1264 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1267 tmp_path = g_strconcat(path, ".tmp", NULL);
1269 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1270 FILE_OP_ERROR(tmp_path, "fopen");
1274 for (cur = list; cur != NULL; cur = cur->next) {
1275 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1276 fputc('\n', fp) != EOF);
1279 if (fclose(fp) == EOF) {
1280 FILE_OP_ERROR(tmp_path, "fclose");
1288 if (g_rename(tmp_path, path) < 0) {
1289 FILE_OP_ERROR(path, "rename");
1301 * Save history list to the specified history file
1303 static void prefs_common_save_history(const gchar *history, GList *list)
1305 prefs_common_save_history_to_dir(NULL, history, list);
1310 void prefs_common_write_config(void)
1312 prefs_write_config(param, "Common", COMMON_RC);
1314 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1317 prefs_common_save_history(COMMAND_HISTORY,
1318 prefs_common.mime_open_cmd_history);
1319 prefs_common_save_history(QUICKSEARCH_HISTORY,
1320 prefs_common.summary_quicksearch_history);
1321 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1322 prefs_common.summary_search_from_history);
1323 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1324 prefs_common.summary_search_to_history);
1325 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1326 prefs_common.summary_search_subject_history);
1327 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1328 prefs_common.summary_search_body_history);
1329 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1330 prefs_common.summary_search_adv_condition_history);
1331 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1332 prefs_common.message_search_history);
1333 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1334 prefs_common.compose_save_to_history);
1336 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1337 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1338 prefs_common.addressbook_custom_attributes);
1341 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1342 both 'in' and 'out' must be non-NULL.
1343 'out' must be a pointer to a buffer whose size is at least equal
1344 to strlen(txt)+1, this buffer will get cleared. out's contents
1345 will always get set to a valid string, even if it's "".*/
1346 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1353 cm_return_if_fail( in != NULL );
1354 cm_return_if_fail( out != NULL );
1358 memset(out, 0, strlen(in)+1);
1359 while (*i != '\0') {
1360 if (*i == '\\' && *(i+1) == 'n') {
1363 } else if (*i == '\\' && *(i+1) == 't') {
1366 } else if (*i == '\\' && *(i+1) == '\\') {
1377 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1378 both 'in' and 'out' must be non-NULL.
1379 'out' must be a pointer to a buffer whose size is at least equal
1380 to 2*strlen(txt)+1. out's contents will always get set to a valid
1381 string, even if it's "". */
1382 void pref_get_escaped_pref(gchar *out, const gchar *in)
1389 cm_return_if_fail( in != NULL );
1390 cm_return_if_fail( out != NULL );
1394 while (*i != '\0') {
1398 } else if (*i == '\t') {
1401 } else if (*i == '\\') {
1412 /* set the contents of a textview widget from the internal \-escaped
1413 representation of a pref string. both txt and textview must be non-NULL. */
1414 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1416 GtkTextBuffer *buffer;
1419 cm_return_if_fail( textview != NULL );
1421 buffer = gtk_text_view_get_buffer(textview);
1424 gtk_text_buffer_set_text(buffer, "", -1);
1426 out = malloc(strlen(txt)+1);
1428 pref_get_unescaped_pref(out, txt);
1430 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1435 /* set the contents of a gtkentry widget from the internal \-escaped
1436 representation of a pref string. both txt and entry must be non-NULL. */
1437 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1441 cm_return_if_fail( entry != NULL );
1443 gtk_entry_set_text(entry, "");
1445 out = malloc(strlen(txt)+1);
1447 pref_get_unescaped_pref(out, txt);
1449 gtk_entry_set_text(entry, out?out:"");
1454 /* get the \-escaped internal representation of a pref from the contents of
1455 a textview widget. textview must be non-NULL. */
1456 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1458 GtkTextBuffer *buffer;
1459 GtkTextIter start, end;
1462 cm_return_val_if_fail( textview != NULL, "" );
1464 buffer = gtk_text_view_get_buffer(textview);
1465 gtk_text_buffer_get_start_iter(buffer, &start);
1466 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1467 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1468 out = malloc(2*strlen(tmp)+1);
1470 pref_get_escaped_pref(out, tmp);
1476 /* get the \-escaped internal representation of a pref from the contents of
1477 a gtkentry widget. entry must be non-NULL. */
1478 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1482 cm_return_val_if_fail( entry != NULL, "" );
1484 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1485 out = malloc(2*strlen(tmp)+1);
1488 pref_get_escaped_pref(out, tmp);
1494 /* ugly hack to be able to get this pref from ssl_certificate.c */
1495 gboolean prefs_common_unsafe_ssl_certs(void)
1497 return prefs_common.unsafe_ssl_certs;
1500 gboolean prefs_common_enable_log_standard(void)
1502 return prefs_common.enable_log_standard;
1505 gboolean prefs_common_enable_log_warning(void)
1507 return prefs_common.enable_log_warning;
1509 gboolean prefs_common_enable_log_error(void)
1511 return prefs_common.enable_log_error;
1513 gboolean prefs_common_enable_log_status(void)
1515 return prefs_common.enable_log_status;
1519 const gchar *prefs_common_get_data_root(void)
1521 if (prefs_common.data_root && *prefs_common.data_root)
1522 return prefs_common.data_root;
1528 return the translated name of a header, if the translate_header option is
1529 set, otherwise return the untranslated header name (header_name itself).
1530 this function is provided for convenience, it's an interface to
1531 prefs_common.trans_hdr.
1532 works with header names either with or without trailing colon, provided
1533 that gettext found such header name in the sources (they should all be
1534 found in src/gtk/headers.h anyway).
1536 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1538 if (header_name == NULL || *header_name == '\0')
1541 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1544 const gchar *prefs_common_get_uri_cmd(void)
1551 if (!prefs_common.cmds_use_system_default)
1552 return prefs_common.uri_cmd;
1554 tmp = g_find_program_in_path("xdg-open");
1556 return prefs_common.uri_cmd;
1559 return "xdg-open %s";
1563 const gchar *prefs_common_get_ext_editor_cmd(void)
1565 return prefs_common.ext_editor_cmd;
1566 #if 0 /* we should do that, but it detaches the editor and breaks
1567 compose.c's external composition. */
1570 if (!prefs_common.cmds_use_system_default)
1571 return prefs_common.ext_editor_cmd;
1573 tmp = g_find_program_in_path("xdg-open");
1575 return prefs_common.ext_editor_cmd;
1578 return "xdg-open %s";
1582 gboolean prefs_common_get_use_shred(void)
1584 return prefs_common.use_shred;
1587 gboolean prefs_common_get_flush_metadata (void)
1589 return prefs_common.flush_metadata;
1592 PrefsCommon *prefs_common_get_prefs(void)
1594 return &prefs_common;