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 {"hide_quoted", "TRUE",
734 &prefs_common.hide_quoted, P_BOOL,
736 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
739 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
742 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
744 {"attach_save_directory", NULL,
745 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
746 {"attach_load_directory", NULL,
747 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
750 {"mime_textviewer", NULL,
751 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
752 {"mime_open_command", "gedit '%s'",
753 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
757 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
760 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
763 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
764 NULL, NULL, NULL}, */
765 {"always_show_message_when_selected", "0",
766 &prefs_common.always_show_msg,
767 P_ENUM, NULL, NULL, NULL},
768 {"select_on_entry", "3", &prefs_common.select_on_entry,
769 P_ENUM, NULL, NULL, NULL},
770 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
771 P_BOOL, NULL, NULL, NULL},
773 /* do it SUMMARY_OPEN_ACTIONS-1 times */
774 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
776 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
778 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
780 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
782 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
784 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
786 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
789 {"mark_as_read_on_new_window", "FALSE",
790 &prefs_common.mark_as_read_on_new_window,
791 P_BOOL, NULL, NULL, NULL},
792 {"mark_as_read_delay", "0",
793 &prefs_common.mark_as_read_delay, P_INT,
795 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
797 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
800 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
801 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
804 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
807 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
809 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
813 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
814 P_BOOL, NULL, NULL, NULL},
815 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
816 P_INT, NULL, NULL, NULL},
817 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
818 P_INT, NULL, NULL, NULL},
822 {"uri_open_command", DEFAULT_BROWSER_CMD,
823 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
825 {"ext_editor_command", DEFAULT_EDITOR_CMD,
826 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
827 {"cmds_use_system_default", "TRUE",
828 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
829 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
830 P_BOOL, NULL, NULL, NULL},
831 {"session_passwords", "FALSE", &prefs_common.session_passwords,
832 P_BOOL, NULL, NULL, NULL},
833 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
835 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
837 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
839 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
840 P_BOOL, NULL, NULL, NULL},
841 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
843 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
846 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
849 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
853 #if defined(__OpenBSD__)
854 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
855 P_INT, NULL, NULL, NULL},
857 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
858 P_INT, NULL, NULL, NULL},
860 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
862 {"important_score", "1", &prefs_common.important_score, P_INT,
865 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
867 {"log_length", "500", &prefs_common.loglength, P_INT,
870 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
872 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
874 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
876 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
879 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
881 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
883 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
885 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
888 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
890 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
892 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
894 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
896 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
898 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
900 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
902 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
905 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
907 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
909 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
911 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
913 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
915 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
917 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
919 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
921 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
924 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
927 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
930 /* Some windows' sizes */
931 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
933 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
936 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
938 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
941 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
943 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
946 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
948 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
951 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
953 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
956 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
958 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
961 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
963 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
966 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
968 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
971 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
973 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
976 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
978 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
981 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
983 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
986 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
988 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
991 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
994 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
996 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
999 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1001 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1004 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1006 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1009 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1011 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1014 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1016 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1019 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1021 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1024 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1026 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1029 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1031 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1034 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1036 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1039 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1041 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1045 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1047 {"utf8_instead_of_locale_for_broken_mail", "0",
1048 &prefs_common.broken_are_utf8, P_INT,
1050 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1052 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1054 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1056 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1058 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1060 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1062 {"folderview_vscrollbar_policy", "0",
1063 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1065 {"textview_cursor_visible", "FALSE",
1066 &prefs_common.textview_cursor_visible, P_BOOL,
1068 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1070 #ifndef GENERIC_UMPC
1071 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1073 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1076 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1078 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1081 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1082 P_INT, NULL, NULL, NULL },
1083 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1084 P_STRING, NULL, NULL, NULL },
1085 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1086 P_BOOL, NULL, NULL, NULL },
1087 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1089 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1091 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1093 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1095 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1097 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1099 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1101 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1103 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1105 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1107 #ifndef GENERIC_UMPC
1108 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1111 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1115 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1117 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1119 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1121 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1123 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1125 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1127 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1129 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1131 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1133 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1135 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1137 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1139 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1141 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1143 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1146 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1147 P_BOOL, NULL, NULL, NULL },
1149 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1152 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1155 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1159 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1160 * Fallback to default_list if history file is not found
1162 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1163 GList *default_list)
1167 gchar buf[PREFSBUFSIZE];
1171 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1172 G_DIR_SEPARATOR_S, history,
1175 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1178 if ((fp = g_fopen(path, "rb")) == NULL) {
1179 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1181 /* returns default list if set, otherwise NULL */
1182 return default_list;
1185 while (fgets(buf, sizeof(buf), fp) != NULL) {
1187 if (buf[0] == '\0') continue;
1188 tmp = add_history(tmp, buf);
1192 tmp = g_list_reverse(tmp);
1198 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1200 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1202 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1206 * Read history list from the specified history file
1208 static GList *prefs_common_read_history(const gchar *history)
1210 return prefs_common_read_history_from_dir(NULL, history);
1213 void prefs_common_read_config(void)
1218 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1219 prefs_read_config(param, "Common", rcpath, NULL);
1221 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1226 tmp = g_strdup(gettext(prefs_common.date_format));
1227 g_free(prefs_common.date_format);
1228 prefs_common.date_format = tmp;
1230 prefs_common.mime_open_cmd_history =
1231 prefs_common_read_history(COMMAND_HISTORY);
1232 prefs_common.summary_quicksearch_history =
1233 prefs_common_read_history(QUICKSEARCH_HISTORY);
1234 prefs_common.summary_search_from_history =
1235 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1236 prefs_common.summary_search_to_history =
1237 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1238 prefs_common.summary_search_subject_history =
1239 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1240 prefs_common.summary_search_body_history =
1241 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1242 prefs_common.summary_search_adv_condition_history =
1243 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1244 prefs_common.message_search_history =
1245 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1246 prefs_common.compose_save_to_history =
1247 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1249 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1251 colorlabel_update_colortable_from_prefs();
1257 g_warning("failed to write\n"); \
1262 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1264 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1268 gchar *path, *tmp_path;
1271 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1272 G_DIR_SEPARATOR_S, history,
1275 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1278 tmp_path = g_strconcat(path, ".tmp", NULL);
1280 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1281 FILE_OP_ERROR(tmp_path, "fopen");
1285 for (cur = list; cur != NULL; cur = cur->next) {
1286 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1287 fputc('\n', fp) != EOF);
1290 if (fclose(fp) == EOF) {
1291 FILE_OP_ERROR(tmp_path, "fclose");
1299 if (g_rename(tmp_path, path) < 0) {
1300 FILE_OP_ERROR(path, "rename");
1312 * Save history list to the specified history file
1314 static void prefs_common_save_history(const gchar *history, GList *list)
1316 prefs_common_save_history_to_dir(NULL, history, list);
1321 void prefs_common_write_config(void)
1323 prefs_write_config(param, "Common", COMMON_RC);
1325 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1328 prefs_common_save_history(COMMAND_HISTORY,
1329 prefs_common.mime_open_cmd_history);
1330 prefs_common_save_history(QUICKSEARCH_HISTORY,
1331 prefs_common.summary_quicksearch_history);
1332 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1333 prefs_common.summary_search_from_history);
1334 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1335 prefs_common.summary_search_to_history);
1336 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1337 prefs_common.summary_search_subject_history);
1338 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1339 prefs_common.summary_search_body_history);
1340 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1341 prefs_common.summary_search_adv_condition_history);
1342 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1343 prefs_common.message_search_history);
1344 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1345 prefs_common.compose_save_to_history);
1347 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1348 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1349 prefs_common.addressbook_custom_attributes);
1352 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1353 both 'in' and 'out' must be non-NULL.
1354 'out' must be a pointer to a buffer whose size is at least equal
1355 to strlen(txt)+1, this buffer will get cleared. out's contents
1356 will always get set to a valid string, even if it's "".*/
1357 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1364 cm_return_if_fail( in != NULL );
1365 cm_return_if_fail( out != NULL );
1369 memset(out, 0, strlen(in)+1);
1370 while (*i != '\0') {
1371 if (*i == '\\' && *(i+1) == 'n') {
1374 } else if (*i == '\\' && *(i+1) == 't') {
1377 } else if (*i == '\\' && *(i+1) == '\\') {
1388 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1389 both 'in' and 'out' must be non-NULL.
1390 'out' must be a pointer to a buffer whose size is at least equal
1391 to 2*strlen(txt)+1. out's contents will always get set to a valid
1392 string, even if it's "". */
1393 void pref_get_escaped_pref(gchar *out, const gchar *in)
1400 cm_return_if_fail( in != NULL );
1401 cm_return_if_fail( out != NULL );
1405 while (*i != '\0') {
1409 } else if (*i == '\t') {
1412 } else if (*i == '\\') {
1423 /* set the contents of a textview widget from the internal \-escaped
1424 representation of a pref string. both txt and textview must be non-NULL. */
1425 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1427 GtkTextBuffer *buffer;
1430 cm_return_if_fail( textview != NULL );
1432 buffer = gtk_text_view_get_buffer(textview);
1435 gtk_text_buffer_set_text(buffer, "", -1);
1437 out = malloc(strlen(txt)+1);
1439 pref_get_unescaped_pref(out, txt);
1441 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1446 /* set the contents of a gtkentry widget from the internal \-escaped
1447 representation of a pref string. both txt and entry must be non-NULL. */
1448 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1452 cm_return_if_fail( entry != NULL );
1454 gtk_entry_set_text(entry, "");
1456 out = malloc(strlen(txt)+1);
1458 pref_get_unescaped_pref(out, txt);
1460 gtk_entry_set_text(entry, out?out:"");
1465 /* get the \-escaped internal representation of a pref from the contents of
1466 a textview widget. textview must be non-NULL. */
1467 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1469 GtkTextBuffer *buffer;
1470 GtkTextIter start, end;
1473 cm_return_val_if_fail( textview != NULL, "" );
1475 buffer = gtk_text_view_get_buffer(textview);
1476 gtk_text_buffer_get_start_iter(buffer, &start);
1477 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1478 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1479 out = malloc(2*strlen(tmp)+1);
1481 pref_get_escaped_pref(out, tmp);
1487 /* get the \-escaped internal representation of a pref from the contents of
1488 a gtkentry widget. entry must be non-NULL. */
1489 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1493 cm_return_val_if_fail( entry != NULL, "" );
1495 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1496 out = malloc(2*strlen(tmp)+1);
1499 pref_get_escaped_pref(out, tmp);
1505 /* ugly hack to be able to get this pref from ssl_certificate.c */
1506 gboolean prefs_common_unsafe_ssl_certs(void)
1508 return prefs_common.unsafe_ssl_certs;
1511 gboolean prefs_common_enable_log_standard(void)
1513 return prefs_common.enable_log_standard;
1516 gboolean prefs_common_enable_log_warning(void)
1518 return prefs_common.enable_log_warning;
1520 gboolean prefs_common_enable_log_error(void)
1522 return prefs_common.enable_log_error;
1524 gboolean prefs_common_enable_log_status(void)
1526 return prefs_common.enable_log_status;
1530 const gchar *prefs_common_get_data_root(void)
1532 if (prefs_common.data_root && *prefs_common.data_root)
1533 return prefs_common.data_root;
1539 return the translated name of a header, if the translate_header option is
1540 set, otherwise return the untranslated header name (header_name itself).
1541 this function is provided for convenience, it's an interface to
1542 prefs_common.trans_hdr.
1543 works with header names either with or without trailing colon, provided
1544 that gettext found such header name in the sources (they should all be
1545 found in src/gtk/headers.h anyway).
1547 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1549 if (header_name == NULL || *header_name == '\0')
1552 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1555 const gchar *prefs_common_get_uri_cmd(void)
1562 if (!prefs_common.cmds_use_system_default)
1563 return prefs_common.uri_cmd;
1565 tmp = g_find_program_in_path("xdg-open");
1567 return prefs_common.uri_cmd;
1570 return "xdg-open %s";
1574 const gchar *prefs_common_get_ext_editor_cmd(void)
1576 return prefs_common.ext_editor_cmd;
1577 #if 0 /* we should do that, but it detaches the editor and breaks
1578 compose.c's external composition. */
1581 if (!prefs_common.cmds_use_system_default)
1582 return prefs_common.ext_editor_cmd;
1584 tmp = g_find_program_in_path("xdg-open");
1586 return prefs_common.ext_editor_cmd;
1589 return "xdg-open %s";
1593 gboolean prefs_common_get_use_shred(void)
1595 return prefs_common.use_shred;
1598 gboolean prefs_common_get_flush_metadata (void)
1600 return prefs_common.flush_metadata;
1603 PrefsCommon *prefs_common_get_prefs(void)
1605 return &prefs_common;