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,
1033 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1035 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1039 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1041 {"utf8_instead_of_locale_for_broken_mail", "0",
1042 &prefs_common.broken_are_utf8, P_INT,
1044 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1046 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1048 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1050 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1052 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1054 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1056 {"folderview_vscrollbar_policy", "0",
1057 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1059 {"textview_cursor_visible", "FALSE",
1060 &prefs_common.textview_cursor_visible, P_BOOL,
1062 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1064 #ifndef GENERIC_UMPC
1065 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1067 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1070 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1072 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1075 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1076 P_INT, NULL, NULL, NULL },
1077 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1078 P_STRING, NULL, NULL, NULL },
1079 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1080 P_BOOL, NULL, NULL, NULL },
1081 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1083 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1085 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1087 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1089 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1091 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1093 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1095 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1097 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1099 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1101 #ifndef GENERIC_UMPC
1102 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1105 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1109 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1111 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1113 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1115 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1117 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1119 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1121 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1123 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1125 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1127 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1129 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1131 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1133 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1135 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1137 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1140 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1141 P_BOOL, NULL, NULL, NULL },
1143 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1146 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1149 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1153 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1154 * Fallback to default_list if history file is not found
1156 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1157 GList *default_list)
1161 gchar buf[PREFSBUFSIZE];
1165 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1166 G_DIR_SEPARATOR_S, history,
1169 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1172 if ((fp = g_fopen(path, "rb")) == NULL) {
1173 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1175 /* returns default list if set, otherwise NULL */
1176 return default_list;
1179 while (fgets(buf, sizeof(buf), fp) != NULL) {
1181 if (buf[0] == '\0') continue;
1182 tmp = add_history(tmp, buf);
1186 tmp = g_list_reverse(tmp);
1192 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1194 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1196 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1200 * Read history list from the specified history file
1202 static GList *prefs_common_read_history(const gchar *history)
1204 return prefs_common_read_history_from_dir(NULL, history);
1207 void prefs_common_read_config(void)
1212 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1213 prefs_read_config(param, "Common", rcpath, NULL);
1215 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1220 tmp = g_strdup(gettext(prefs_common.date_format));
1221 g_free(prefs_common.date_format);
1222 prefs_common.date_format = tmp;
1224 prefs_common.mime_open_cmd_history =
1225 prefs_common_read_history(COMMAND_HISTORY);
1226 prefs_common.summary_quicksearch_history =
1227 prefs_common_read_history(QUICKSEARCH_HISTORY);
1228 prefs_common.summary_search_from_history =
1229 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1230 prefs_common.summary_search_to_history =
1231 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1232 prefs_common.summary_search_subject_history =
1233 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1234 prefs_common.summary_search_body_history =
1235 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1236 prefs_common.summary_search_adv_condition_history =
1237 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1238 prefs_common.message_search_history =
1239 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1240 prefs_common.compose_save_to_history =
1241 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1243 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1245 colorlabel_update_colortable_from_prefs();
1251 g_warning("failed to write\n"); \
1256 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1258 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1262 gchar *path, *tmp_path;
1265 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1266 G_DIR_SEPARATOR_S, history,
1269 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1272 tmp_path = g_strconcat(path, ".tmp", NULL);
1274 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1275 FILE_OP_ERROR(tmp_path, "fopen");
1279 for (cur = list; cur != NULL; cur = cur->next) {
1280 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1281 fputc('\n', fp) != EOF);
1284 if (fclose(fp) == EOF) {
1285 FILE_OP_ERROR(tmp_path, "fclose");
1293 if (g_rename(tmp_path, path) < 0) {
1294 FILE_OP_ERROR(path, "rename");
1306 * Save history list to the specified history file
1308 static void prefs_common_save_history(const gchar *history, GList *list)
1310 prefs_common_save_history_to_dir(NULL, history, list);
1315 void prefs_common_write_config(void)
1317 prefs_write_config(param, "Common", COMMON_RC);
1319 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1322 prefs_common_save_history(COMMAND_HISTORY,
1323 prefs_common.mime_open_cmd_history);
1324 prefs_common_save_history(QUICKSEARCH_HISTORY,
1325 prefs_common.summary_quicksearch_history);
1326 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1327 prefs_common.summary_search_from_history);
1328 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1329 prefs_common.summary_search_to_history);
1330 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1331 prefs_common.summary_search_subject_history);
1332 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1333 prefs_common.summary_search_body_history);
1334 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1335 prefs_common.summary_search_adv_condition_history);
1336 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1337 prefs_common.message_search_history);
1338 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1339 prefs_common.compose_save_to_history);
1341 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1342 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1343 prefs_common.addressbook_custom_attributes);
1346 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1347 both 'in' and 'out' must be non-NULL.
1348 'out' must be a pointer to a buffer whose size is at least equal
1349 to strlen(txt)+1, this buffer will get cleared. out's contents
1350 will always get set to a valid string, even if it's "".*/
1351 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1358 cm_return_if_fail( in != NULL );
1359 cm_return_if_fail( out != NULL );
1363 memset(out, 0, strlen(in)+1);
1364 while (*i != '\0') {
1365 if (*i == '\\' && *(i+1) == 'n') {
1368 } else if (*i == '\\' && *(i+1) == 't') {
1371 } else if (*i == '\\' && *(i+1) == '\\') {
1382 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1383 both 'in' and 'out' must be non-NULL.
1384 'out' must be a pointer to a buffer whose size is at least equal
1385 to 2*strlen(txt)+1. out's contents will always get set to a valid
1386 string, even if it's "". */
1387 void pref_get_escaped_pref(gchar *out, const gchar *in)
1394 cm_return_if_fail( in != NULL );
1395 cm_return_if_fail( out != NULL );
1399 while (*i != '\0') {
1403 } else if (*i == '\t') {
1406 } else if (*i == '\\') {
1417 /* set the contents of a textview widget from the internal \-escaped
1418 representation of a pref string. both txt and textview must be non-NULL. */
1419 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1421 GtkTextBuffer *buffer;
1424 cm_return_if_fail( textview != NULL );
1426 buffer = gtk_text_view_get_buffer(textview);
1429 gtk_text_buffer_set_text(buffer, "", -1);
1431 out = malloc(strlen(txt)+1);
1433 pref_get_unescaped_pref(out, txt);
1435 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1440 /* set the contents of a gtkentry widget from the internal \-escaped
1441 representation of a pref string. both txt and entry must be non-NULL. */
1442 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1446 cm_return_if_fail( entry != NULL );
1448 gtk_entry_set_text(entry, "");
1450 out = malloc(strlen(txt)+1);
1452 pref_get_unescaped_pref(out, txt);
1454 gtk_entry_set_text(entry, out?out:"");
1459 /* get the \-escaped internal representation of a pref from the contents of
1460 a textview widget. textview must be non-NULL. */
1461 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1463 GtkTextBuffer *buffer;
1464 GtkTextIter start, end;
1467 cm_return_val_if_fail( textview != NULL, "" );
1469 buffer = gtk_text_view_get_buffer(textview);
1470 gtk_text_buffer_get_start_iter(buffer, &start);
1471 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1472 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1473 out = malloc(2*strlen(tmp)+1);
1475 pref_get_escaped_pref(out, tmp);
1481 /* get the \-escaped internal representation of a pref from the contents of
1482 a gtkentry widget. entry must be non-NULL. */
1483 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1487 cm_return_val_if_fail( entry != NULL, "" );
1489 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1490 out = malloc(2*strlen(tmp)+1);
1493 pref_get_escaped_pref(out, tmp);
1499 /* ugly hack to be able to get this pref from ssl_certificate.c */
1500 gboolean prefs_common_unsafe_ssl_certs(void)
1502 return prefs_common.unsafe_ssl_certs;
1505 gboolean prefs_common_enable_log_standard(void)
1507 return prefs_common.enable_log_standard;
1510 gboolean prefs_common_enable_log_warning(void)
1512 return prefs_common.enable_log_warning;
1514 gboolean prefs_common_enable_log_error(void)
1516 return prefs_common.enable_log_error;
1518 gboolean prefs_common_enable_log_status(void)
1520 return prefs_common.enable_log_status;
1524 const gchar *prefs_common_get_data_root(void)
1526 if (prefs_common.data_root && *prefs_common.data_root)
1527 return prefs_common.data_root;
1533 return the translated name of a header, if the translate_header option is
1534 set, otherwise return the untranslated header name (header_name itself).
1535 this function is provided for convenience, it's an interface to
1536 prefs_common.trans_hdr.
1537 works with header names either with or without trailing colon, provided
1538 that gettext found such header name in the sources (they should all be
1539 found in src/gtk/headers.h anyway).
1541 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1543 if (header_name == NULL || *header_name == '\0')
1546 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1549 const gchar *prefs_common_get_uri_cmd(void)
1556 if (!prefs_common.cmds_use_system_default)
1557 return prefs_common.uri_cmd;
1559 tmp = g_find_program_in_path("xdg-open");
1561 return prefs_common.uri_cmd;
1564 return "xdg-open %s";
1568 const gchar *prefs_common_get_ext_editor_cmd(void)
1570 return prefs_common.ext_editor_cmd;
1571 #if 0 /* we should do that, but it detaches the editor and breaks
1572 compose.c's external composition. */
1575 if (!prefs_common.cmds_use_system_default)
1576 return prefs_common.ext_editor_cmd;
1578 tmp = g_find_program_in_path("xdg-open");
1580 return prefs_common.ext_editor_cmd;
1583 return "xdg-open %s";
1587 gboolean prefs_common_get_use_shred(void)
1589 return prefs_common.use_shred;
1592 gboolean prefs_common_get_flush_metadata (void)
1594 return prefs_common.flush_metadata;
1597 PrefsCommon *prefs_common_get_prefs(void)
1599 return &prefs_common;