2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2009 Hiroyuki Yamamoto and the Claws Mail team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
27 #include <glib/gi18n.h>
29 #include <gdk/gdkkeysyms.h>
34 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "mainwindow.h"
45 #include "summaryview.h"
46 #include "folderview.h"
47 #include "messageview.h"
48 #include "manage_window.h"
54 #include "alertpanel.h"
58 #include "folderview.h"
59 #include "stock_pixmap.h"
60 #include "prefswindow.h"
61 #include "colorlabel.h"
62 #include "addrcustomattr.h"
70 PrefsCommon prefs_common;
76 * In the Windows version prefs_common contains
77 * - the non-OS-specific settings of the "Common" section and
78 * - the OS-specific settings of the "CommonWin32" section
79 * The OS-specific settings of the "Common" section are not used
80 * but saved in prefs_unix.
83 # define SPECIFIC_PREFS prefs_unix
85 static PrefsCommon prefs_unix;
87 static PrefParam param_os_specific[] = {
90 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
91 {"newmail_notify_cmd", "",
92 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
95 {"widget_font_gtk2", NULL,
96 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
97 {"message_font_gtk2", "Monospace 9",
98 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
99 {"print_font_gtk2", "Monospace 9",
100 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
101 {"small_font_gtk2", "Sans 9",
102 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
103 {"normal_font_gtk2", "Sans 9",
104 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
105 {"bold_font_gtk2", "Sans 9 Bold",
106 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
108 {"attach_save_directory", NULL,
109 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
110 {"attach_load_directory", NULL,
111 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
114 {"mime_textviewer", NULL,
115 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
116 {"mime_open_command", "notepad '%s'",
117 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
120 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
121 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
124 {"ext_editor_command", "notepad %s",
125 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
127 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
130 # define SPECIFIC_PREFS prefs_common
134 parameter name, default value, pointer to the prefs variable, data type,
135 pointer to the widget pointer,
136 pointer to the function for data setting,
137 pointer to the function for widget setting
140 static PrefParam param[] = {
142 {"data_root", "", &prefs_common.data_root, P_STRING,
146 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
148 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
151 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
153 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
155 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
157 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
158 P_BOOL, NULL, NULL, NULL},
159 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
160 P_BOOL, NULL, NULL, NULL},
161 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
162 P_BOOL, NULL, NULL, NULL},
163 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
164 P_BOOL, NULL, NULL, NULL},
165 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
168 {"maemo_show_led", "TRUE", &prefs_common.maemo_show_led, P_BOOL,
170 {"maemo_play_sound", "FALSE", &prefs_common.maemo_play_sound, P_BOOL,
172 {"maemo_show_banner", "FALSE", &prefs_common.maemo_show_banner, P_BOOL,
175 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
177 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
179 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
181 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
182 P_BOOL, NULL, NULL, NULL},
183 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
184 P_BOOL, NULL, NULL, NULL},
187 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
189 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
190 P_BOOL, NULL, NULL, NULL},
192 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
195 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
198 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
200 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
203 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
205 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
207 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
210 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
211 P_BOOL, NULL, NULL, NULL},
214 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
216 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
217 P_BOOL, NULL, NULL, NULL},
218 {"redirect_keep_from", "FALSE",
219 &prefs_common.redirect_keep_from, P_BOOL,
221 {"undo_level", "50", &prefs_common.undolevels, P_INT,
223 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
225 {"compose_subject_format", "",
226 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
227 {"compose_body_format", N_("Hello,\\n"),
228 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
230 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
232 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
234 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
236 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
238 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
240 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
242 {"autosave", "TRUE", &prefs_common.autosave,
243 P_BOOL, NULL, NULL, NULL},
244 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
246 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
247 P_BOOL, NULL, NULL, NULL},
248 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
249 P_INT, NULL, NULL, NULL},
251 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
253 {"dictionary", "", &prefs_common.dictionary, P_STRING,
255 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
257 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
259 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
261 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
262 P_BOOL, NULL, NULL, NULL},
263 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
265 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
268 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
270 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
273 /* Account autoselection */
274 {"reply_account_autoselect", "TRUE",
275 &prefs_common.reply_account_autosel, P_BOOL,
277 {"forward_account_autoselect", "TRUE",
278 &prefs_common.forward_account_autosel, P_BOOL,
280 {"reedit_account_autoselect", "TRUE",
281 &prefs_common.reedit_account_autosel, P_BOOL,
284 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
288 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
291 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
296 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
298 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
299 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
301 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
303 {"forward_quote_format",
304 N_("\\n\\nBegin forwarded message:\\n\\n"
305 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
306 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
307 &prefs_common.fw_quotefmt, P_STRING,
309 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
313 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
314 {"widget_font", NULL,
315 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
317 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
318 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
319 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
320 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
321 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
322 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
323 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
327 {"widget_font_gtk2", NULL,
328 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
329 {"message_font_gtk2", "Monospace 9",
330 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
331 {"print_font_gtk2", "Monospace 9",
332 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
333 {"small_font_gtk2", "Sans 9",
334 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
335 {"normal_font_gtk2", "Sans 9",
336 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
337 {"bold_font_gtk2", "Sans Bold 9",
338 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
340 {"widget_font_gtk2", NULL,
341 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
342 {"message_font_gtk2", "Monospace 8",
343 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
344 {"print_font_gtk2", "Monospace 8",
345 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
346 {"small_font_gtk2", "Sans 8",
347 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
348 {"normal_font_gtk2", "Sans 8",
349 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
350 {"bold_font_gtk2", "Sans Bold 8",
351 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
354 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
356 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
360 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
362 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
364 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
366 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
368 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
370 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
372 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
374 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
376 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
378 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
380 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
382 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
384 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
386 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
388 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
390 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
392 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
394 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
396 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
398 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
400 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
402 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
404 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
406 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
408 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
410 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
412 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
414 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
416 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
418 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
422 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
424 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
426 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
429 {"display_folder_unread_num", "0",
430 &prefs_common.display_folder_unread, P_INT,
432 {"newsgroup_abbrev_len", "16",
433 &prefs_common.ng_abbrev_len, P_INT,
436 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
439 /* Display: Summary View */
440 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
442 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
444 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
445 P_STRING, NULL, NULL, NULL},
447 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
450 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
453 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
456 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
459 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
461 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
464 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
466 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
469 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
471 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
475 {"summary_col_show_mark", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_unread", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_subject", "TRUE",
480 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_from", "TRUE",
482 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_to", "FALSE",
484 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_date", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_mime", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_size", "TRUE",
490 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_number", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_score", "FALSE",
494 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_locked", "FALSE",
496 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_tags", "FALSE",
498 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
500 {"summary_col_pos_mark", "0",
501 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_unread", "1",
503 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_mime", "2",
505 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_subject", "3",
507 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_from", "4",
509 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_date", "5",
511 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_size", "6",
513 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_number", "7",
515 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_score", "8",
517 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_locked", "9",
519 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_to", "10",
521 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_tags", "11",
523 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
525 {"summary_col_size_mark", "10",
526 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
527 {"summary_col_size_unread", "13",
528 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
529 {"summary_col_size_mime", "10",
530 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_subject", "200",
533 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_from", "120",
535 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
536 {"summary_col_size_to", "120",
537 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_subject", "300",
540 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_from", "150",
542 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_to", "150",
544 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_date", "118",
548 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_size", "45",
550 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_number", "40",
552 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_score", "40",
554 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_locked", "13",
556 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
557 {"summary_col_size_tags", "150",
558 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
561 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
563 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
565 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
567 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
569 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
572 {"folder_col_show_folder", "TRUE",
573 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
574 {"folder_col_show_new", "TRUE",
575 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
576 {"folder_col_show_unread", "TRUE",
577 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
578 {"folder_col_show_total", "TRUE",
579 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
581 {"folder_col_pos_folder", "0",
582 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
583 {"folder_col_pos_new", "1",
584 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
585 {"folder_col_pos_unread", "2",
586 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
587 {"folder_col_pos_total", "3",
588 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
591 {"folder_col_size_folder", "120",
592 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
593 {"folder_col_size_new", "32",
594 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
595 {"folder_col_size_unread", "32",
596 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
597 {"folder_col_size_total", "32",
598 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_folder", "400",
601 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_new", "32",
603 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
604 {"folder_col_size_unread", "32",
605 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
606 {"folder_col_size_total", "32",
607 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
609 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
611 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
614 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
616 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
618 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
620 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
622 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
625 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
627 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
629 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
631 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
633 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
635 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
637 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
639 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
642 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
644 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
646 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
648 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
650 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
652 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
654 {"compose_width", "600", &prefs_common.compose_width, P_INT,
656 {"compose_height", "560", &prefs_common.compose_height, P_INT,
659 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
661 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
663 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
665 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
667 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
669 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
671 {"compose_width", "700", &prefs_common.compose_width, P_INT,
673 {"compose_height", "470", &prefs_common.compose_height, P_INT,
676 {"compose_x", "0", &prefs_common.compose_x, P_INT,
678 {"compose_y", "0", &prefs_common.compose_y, P_INT,
681 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
684 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
686 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
688 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
690 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
692 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
694 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
696 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
698 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
700 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
702 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
704 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
706 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
707 P_BOOL, NULL, NULL, NULL},
709 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
710 P_BOOL, NULL, NULL, NULL},
711 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
713 {"display_xface", "TRUE", &prefs_common.display_xface,
714 P_BOOL, NULL, NULL, NULL},
715 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
717 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
719 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
721 {"line_space", "2", &prefs_common.line_space, P_INT,
723 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
726 {"enable_smooth_scroll", "FALSE",
727 &prefs_common.enable_smooth_scroll, P_BOOL,
729 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
731 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
733 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
736 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
739 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
741 {"attach_save_directory", NULL,
742 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
743 {"attach_load_directory", NULL,
744 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
747 {"mime_textviewer", NULL,
748 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
749 {"mime_open_command", "gedit '%s'",
750 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
754 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
757 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
760 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
761 NULL, NULL, NULL}, */
762 {"always_show_message_when_selected", "0",
763 &prefs_common.always_show_msg,
764 P_ENUM, NULL, NULL, NULL},
765 {"select_on_entry", "3", &prefs_common.select_on_entry,
766 P_ENUM, NULL, NULL, NULL},
767 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
768 P_BOOL, NULL, NULL, NULL},
770 /* do it SUMMARY_OPEN_ACTIONS-1 times */
771 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
773 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
775 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
777 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
779 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
781 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
783 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
786 {"mark_as_read_on_new_window", "FALSE",
787 &prefs_common.mark_as_read_on_new_window,
788 P_BOOL, NULL, NULL, NULL},
789 {"mark_as_read_delay", "0",
790 &prefs_common.mark_as_read_delay, P_INT,
792 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
794 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
797 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
798 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
801 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
804 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
806 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
810 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
811 P_BOOL, NULL, NULL, NULL},
812 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
813 P_INT, NULL, NULL, NULL},
814 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
815 P_INT, NULL, NULL, NULL},
819 {"uri_open_command", DEFAULT_BROWSER_CMD,
820 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
822 {"ext_editor_command", DEFAULT_EDITOR_CMD,
823 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
824 {"cmds_use_system_default", "TRUE",
825 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
826 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
827 P_BOOL, NULL, NULL, NULL},
828 {"session_passwords", "FALSE", &prefs_common.session_passwords,
829 P_BOOL, NULL, NULL, NULL},
830 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
832 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
834 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
836 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
837 P_BOOL, NULL, NULL, NULL},
838 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
840 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
843 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
846 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
850 #if defined(__OpenBSD__)
851 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
852 P_INT, NULL, NULL, NULL},
854 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
855 P_INT, NULL, NULL, NULL},
857 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
859 {"important_score", "1", &prefs_common.important_score, P_INT,
862 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
864 {"log_length", "500", &prefs_common.loglength, P_INT,
867 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
869 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
871 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
873 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
876 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
878 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
880 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
882 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
885 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
887 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
889 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
891 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
893 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
895 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
897 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
899 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
902 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
904 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
906 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
908 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
910 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
912 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
914 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
916 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
918 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
921 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
924 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
927 /* Some windows' sizes */
928 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
930 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
933 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
935 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
938 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
940 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
943 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
945 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
948 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
950 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
953 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
955 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
958 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
960 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
963 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
965 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
968 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
970 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
973 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
975 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
978 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
980 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
983 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
985 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
988 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
991 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
993 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
996 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
998 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1001 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1003 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1006 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1008 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1011 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1013 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1016 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1018 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1021 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1023 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1026 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1028 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1031 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1033 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1036 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1038 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1042 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1044 {"utf8_instead_of_locale_for_broken_mail", "0",
1045 &prefs_common.broken_are_utf8, P_INT,
1047 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1049 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1051 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1053 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1055 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1057 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1059 {"folderview_vscrollbar_policy", "0",
1060 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1062 {"textview_cursor_visible", "FALSE",
1063 &prefs_common.textview_cursor_visible, P_BOOL,
1065 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1067 #ifndef GENERIC_UMPC
1068 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1070 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1073 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1075 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1078 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1079 P_INT, NULL, NULL, NULL },
1080 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1081 P_STRING, NULL, NULL, NULL },
1082 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1083 P_BOOL, NULL, NULL, NULL },
1084 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1086 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1088 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1090 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1092 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1094 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1096 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1098 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1100 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1102 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1104 #ifndef GENERIC_UMPC
1105 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1108 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1112 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1114 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1116 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1118 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1120 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1122 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1124 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1126 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1128 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1130 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1132 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1134 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1136 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1138 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1140 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1143 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1144 P_BOOL, NULL, NULL, NULL },
1146 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1149 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1152 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1156 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1157 * Fallback to default_list if history file is not found
1159 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1160 GList *default_list)
1164 gchar buf[PREFSBUFSIZE];
1168 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1169 G_DIR_SEPARATOR_S, history,
1172 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1175 if ((fp = g_fopen(path, "rb")) == NULL) {
1176 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1178 /* returns default list if set, otherwise NULL */
1179 return default_list;
1182 while (fgets(buf, sizeof(buf), fp) != NULL) {
1184 if (buf[0] == '\0') continue;
1185 tmp = add_history(tmp, buf);
1189 tmp = g_list_reverse(tmp);
1195 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1197 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1199 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1203 * Read history list from the specified history file
1205 static GList *prefs_common_read_history(const gchar *history)
1207 return prefs_common_read_history_from_dir(NULL, history);
1210 void prefs_common_read_config(void)
1215 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1216 prefs_read_config(param, "Common", rcpath, NULL);
1218 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1223 tmp = g_strdup(gettext(prefs_common.date_format));
1224 g_free(prefs_common.date_format);
1225 prefs_common.date_format = tmp;
1227 prefs_common.mime_open_cmd_history =
1228 prefs_common_read_history(COMMAND_HISTORY);
1229 prefs_common.summary_quicksearch_history =
1230 prefs_common_read_history(QUICKSEARCH_HISTORY);
1231 prefs_common.summary_search_from_history =
1232 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1233 prefs_common.summary_search_to_history =
1234 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1235 prefs_common.summary_search_subject_history =
1236 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1237 prefs_common.summary_search_body_history =
1238 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1239 prefs_common.summary_search_adv_condition_history =
1240 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1241 prefs_common.message_search_history =
1242 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1243 prefs_common.compose_save_to_history =
1244 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1246 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1248 colorlabel_update_colortable_from_prefs();
1254 g_warning("failed to write\n"); \
1259 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1261 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1265 gchar *path, *tmp_path;
1268 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1269 G_DIR_SEPARATOR_S, history,
1272 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1275 tmp_path = g_strconcat(path, ".tmp", NULL);
1277 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1278 FILE_OP_ERROR(tmp_path, "fopen");
1282 for (cur = list; cur != NULL; cur = cur->next) {
1283 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1284 fputc('\n', fp) != EOF);
1287 if (fclose(fp) == EOF) {
1288 FILE_OP_ERROR(tmp_path, "fclose");
1296 if (g_rename(tmp_path, path) < 0) {
1297 FILE_OP_ERROR(path, "rename");
1309 * Save history list to the specified history file
1311 static void prefs_common_save_history(const gchar *history, GList *list)
1313 prefs_common_save_history_to_dir(NULL, history, list);
1318 void prefs_common_write_config(void)
1320 prefs_write_config(param, "Common", COMMON_RC);
1322 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1325 prefs_common_save_history(COMMAND_HISTORY,
1326 prefs_common.mime_open_cmd_history);
1327 prefs_common_save_history(QUICKSEARCH_HISTORY,
1328 prefs_common.summary_quicksearch_history);
1329 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1330 prefs_common.summary_search_from_history);
1331 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1332 prefs_common.summary_search_to_history);
1333 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1334 prefs_common.summary_search_subject_history);
1335 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1336 prefs_common.summary_search_body_history);
1337 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1338 prefs_common.summary_search_adv_condition_history);
1339 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1340 prefs_common.message_search_history);
1341 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1342 prefs_common.compose_save_to_history);
1344 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1345 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1346 prefs_common.addressbook_custom_attributes);
1349 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1350 both 'in' and 'out' must be non-NULL.
1351 'out' must be a pointer to a buffer whose size is at least equal
1352 to strlen(txt)+1, this buffer will get cleared. out's contents
1353 will always get set to a valid string, even if it's "".*/
1354 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1361 cm_return_if_fail( in != NULL );
1362 cm_return_if_fail( out != NULL );
1366 memset(out, 0, strlen(in)+1);
1367 while (*i != '\0') {
1368 if (*i == '\\' && *(i+1) == 'n') {
1371 } else if (*i == '\\' && *(i+1) == 't') {
1374 } else if (*i == '\\' && *(i+1) == '\\') {
1385 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1386 both 'in' and 'out' must be non-NULL.
1387 'out' must be a pointer to a buffer whose size is at least equal
1388 to 2*strlen(txt)+1. out's contents will always get set to a valid
1389 string, even if it's "". */
1390 void pref_get_escaped_pref(gchar *out, const gchar *in)
1397 cm_return_if_fail( in != NULL );
1398 cm_return_if_fail( out != NULL );
1402 while (*i != '\0') {
1406 } else if (*i == '\t') {
1409 } else if (*i == '\\') {
1420 /* set the contents of a textview widget from the internal \-escaped
1421 representation of a pref string. both txt and textview must be non-NULL. */
1422 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1424 GtkTextBuffer *buffer;
1427 cm_return_if_fail( textview != NULL );
1429 buffer = gtk_text_view_get_buffer(textview);
1432 gtk_text_buffer_set_text(buffer, "", -1);
1434 out = malloc(strlen(txt)+1);
1436 pref_get_unescaped_pref(out, txt);
1438 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1443 /* set the contents of a gtkentry widget from the internal \-escaped
1444 representation of a pref string. both txt and entry must be non-NULL. */
1445 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1449 cm_return_if_fail( entry != NULL );
1451 gtk_entry_set_text(entry, "");
1453 out = malloc(strlen(txt)+1);
1455 pref_get_unescaped_pref(out, txt);
1457 gtk_entry_set_text(entry, out?out:"");
1462 /* get the \-escaped internal representation of a pref from the contents of
1463 a textview widget. textview must be non-NULL. */
1464 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1466 GtkTextBuffer *buffer;
1467 GtkTextIter start, end;
1470 cm_return_val_if_fail( textview != NULL, "" );
1472 buffer = gtk_text_view_get_buffer(textview);
1473 gtk_text_buffer_get_start_iter(buffer, &start);
1474 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1475 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1476 out = malloc(2*strlen(tmp)+1);
1478 pref_get_escaped_pref(out, tmp);
1484 /* get the \-escaped internal representation of a pref from the contents of
1485 a gtkentry widget. entry must be non-NULL. */
1486 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1490 cm_return_val_if_fail( entry != NULL, "" );
1492 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1493 out = malloc(2*strlen(tmp)+1);
1496 pref_get_escaped_pref(out, tmp);
1502 /* ugly hack to be able to get this pref from ssl_certificate.c */
1503 gboolean prefs_common_unsafe_ssl_certs(void)
1505 return prefs_common.unsafe_ssl_certs;
1508 gboolean prefs_common_enable_log_standard(void)
1510 return prefs_common.enable_log_standard;
1513 gboolean prefs_common_enable_log_warning(void)
1515 return prefs_common.enable_log_warning;
1517 gboolean prefs_common_enable_log_error(void)
1519 return prefs_common.enable_log_error;
1521 gboolean prefs_common_enable_log_status(void)
1523 return prefs_common.enable_log_status;
1527 const gchar *prefs_common_get_data_root(void)
1529 if (prefs_common.data_root && *prefs_common.data_root)
1530 return prefs_common.data_root;
1536 return the translated name of a header, if the translate_header option is
1537 set, otherwise return the untranslated header name (header_name itself).
1538 this function is provided for convenience, it's an interface to
1539 prefs_common.trans_hdr.
1540 works with header names either with or without trailing colon, provided
1541 that gettext found such header name in the sources (they should all be
1542 found in src/gtk/headers.h anyway).
1544 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1546 if (header_name == NULL || *header_name == '\0')
1549 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1552 const gchar *prefs_common_get_uri_cmd(void)
1559 if (!prefs_common.cmds_use_system_default)
1560 return prefs_common.uri_cmd;
1562 tmp = g_find_program_in_path("xdg-open");
1564 return prefs_common.uri_cmd;
1567 return "xdg-open %s";
1571 const gchar *prefs_common_get_ext_editor_cmd(void)
1573 return prefs_common.ext_editor_cmd;
1574 #if 0 /* we should do that, but it detaches the editor and breaks
1575 compose.c's external composition. */
1578 if (!prefs_common.cmds_use_system_default)
1579 return prefs_common.ext_editor_cmd;
1581 tmp = g_find_program_in_path("xdg-open");
1583 return prefs_common.ext_editor_cmd;
1586 return "xdg-open %s";
1590 gboolean prefs_common_get_use_shred(void)
1592 return prefs_common.use_shred;
1595 gboolean prefs_common_get_flush_metadata (void)
1597 return prefs_common.flush_metadata;
1600 PrefsCommon *prefs_common_get_prefs(void)
1602 return &prefs_common;