2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2007 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,
247 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
249 {"dictionary", "", &prefs_common.dictionary, P_STRING,
251 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
253 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
255 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
257 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
258 P_BOOL, NULL, NULL, NULL},
259 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
261 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
264 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
266 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
269 /* Account autoselection */
270 {"reply_account_autoselect", "TRUE",
271 &prefs_common.reply_account_autosel, P_BOOL,
273 {"forward_account_autoselect", "TRUE",
274 &prefs_common.forward_account_autosel, P_BOOL,
276 {"reedit_account_autoselect", "TRUE",
277 &prefs_common.reedit_account_autosel, P_BOOL,
280 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
284 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
287 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
292 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
294 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
295 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
297 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
299 {"forward_quote_format",
300 N_("\\n\\nBegin forwarded message:\\n\\n"
301 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
302 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
303 &prefs_common.fw_quotefmt, P_STRING,
305 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
309 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
310 {"widget_font", NULL,
311 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
312 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
313 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
314 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
315 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
317 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
318 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
319 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
323 {"widget_font_gtk2", NULL,
324 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
325 {"message_font_gtk2", "Monospace 9",
326 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
327 {"print_font_gtk2", "Monospace 9",
328 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
329 {"small_font_gtk2", "Sans 9",
330 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
331 {"normal_font_gtk2", "Sans 9",
332 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
333 {"bold_font_gtk2", "Sans Bold 9",
334 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
336 {"widget_font_gtk2", NULL,
337 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
338 {"message_font_gtk2", "Monospace 8",
339 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
340 {"print_font_gtk2", "Monospace 8",
341 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
342 {"small_font_gtk2", "Sans 8",
343 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
344 {"normal_font_gtk2", "Sans 8",
345 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
346 {"bold_font_gtk2", "Sans Bold 8",
347 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
350 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
352 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
356 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
358 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
360 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
362 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
364 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
366 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
368 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
370 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
372 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
374 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
376 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
378 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
380 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
382 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
384 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
386 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
388 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
390 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
392 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
394 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
396 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
398 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
400 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
402 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
404 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
406 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
408 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
410 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
412 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
414 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
418 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
420 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
422 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
425 {"display_folder_unread_num", "0",
426 &prefs_common.display_folder_unread, P_INT,
428 {"newsgroup_abbrev_len", "16",
429 &prefs_common.ng_abbrev_len, P_INT,
432 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
435 /* Display: Summary View */
436 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
438 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
440 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
441 P_STRING, NULL, NULL, NULL},
443 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
446 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
449 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
452 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
455 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
457 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
460 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
462 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
465 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
467 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
471 {"summary_col_show_mark", "TRUE",
472 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
473 {"summary_col_show_unread", "TRUE",
474 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
475 {"summary_col_show_subject", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_from", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_to", "FALSE",
480 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_date", "TRUE",
482 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_mime", "TRUE",
484 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_size", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_number", "FALSE",
488 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_score", "FALSE",
490 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_locked", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_tags", "FALSE",
494 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
496 {"summary_col_pos_mark", "0",
497 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
498 {"summary_col_pos_unread", "1",
499 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
500 {"summary_col_pos_mime", "2",
501 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_subject", "3",
503 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_from", "4",
505 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_date", "5",
507 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_size", "6",
509 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_number", "7",
511 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_score", "8",
513 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_locked", "9",
515 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_to", "10",
517 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_tags", "11",
519 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
521 {"summary_col_size_mark", "10",
522 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
523 {"summary_col_size_unread", "13",
524 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
525 {"summary_col_size_mime", "10",
526 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
528 {"summary_col_size_subject", "200",
529 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_from", "120",
531 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_to", "120",
533 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
535 {"summary_col_size_subject", "300",
536 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_from", "150",
538 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_to", "150",
540 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_date", "118",
544 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_size", "45",
546 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_number", "40",
548 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_score", "40",
550 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_locked", "13",
552 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_tags", "150",
554 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
557 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
559 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
561 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
563 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
565 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
568 {"folder_col_show_folder", "TRUE",
569 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
570 {"folder_col_show_new", "TRUE",
571 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
572 {"folder_col_show_unread", "TRUE",
573 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
574 {"folder_col_show_total", "TRUE",
575 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
577 {"folder_col_pos_folder", "0",
578 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
579 {"folder_col_pos_new", "1",
580 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
581 {"folder_col_pos_unread", "2",
582 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
583 {"folder_col_pos_total", "3",
584 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
587 {"folder_col_size_folder", "120",
588 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
589 {"folder_col_size_new", "32",
590 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
591 {"folder_col_size_unread", "32",
592 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
593 {"folder_col_size_total", "32",
594 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
596 {"folder_col_size_folder", "400",
597 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
598 {"folder_col_size_new", "32",
599 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_unread", "32",
601 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_total", "32",
603 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
605 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
607 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
610 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
612 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
614 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
616 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
618 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
621 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
623 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
625 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
627 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
629 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
631 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
633 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
635 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
638 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
640 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
642 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
644 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
646 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
648 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
650 {"compose_width", "600", &prefs_common.compose_width, P_INT,
652 {"compose_height", "560", &prefs_common.compose_height, P_INT,
655 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
657 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
659 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
661 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
663 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
665 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
667 {"compose_width", "700", &prefs_common.compose_width, P_INT,
669 {"compose_height", "470", &prefs_common.compose_height, P_INT,
672 {"compose_x", "0", &prefs_common.compose_x, P_INT,
674 {"compose_y", "0", &prefs_common.compose_y, P_INT,
677 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
680 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
682 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
684 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
686 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
688 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
690 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
692 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
694 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
696 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
698 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
700 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
702 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
703 P_BOOL, NULL, NULL, NULL},
705 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
706 P_BOOL, NULL, NULL, NULL},
707 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
709 {"display_xface", "TRUE", &prefs_common.display_xface,
710 P_BOOL, NULL, NULL, NULL},
711 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
713 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
715 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
717 {"line_space", "2", &prefs_common.line_space, P_INT,
719 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
722 {"enable_smooth_scroll", "FALSE",
723 &prefs_common.enable_smooth_scroll, P_BOOL,
725 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
727 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
729 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
732 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
735 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
737 {"attach_save_directory", NULL,
738 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
739 {"attach_load_directory", NULL,
740 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
743 {"mime_textviewer", NULL,
744 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
745 {"mime_open_command", "gedit '%s'",
746 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
750 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
753 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
756 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
757 NULL, NULL, NULL}, */
758 {"always_show_message_when_selected", "0",
759 &prefs_common.always_show_msg,
760 P_ENUM, NULL, NULL, NULL},
761 {"select_on_entry", "3", &prefs_common.select_on_entry,
762 P_ENUM, NULL, NULL, NULL},
763 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
764 P_BOOL, NULL, NULL, NULL},
766 /* do it SUMMARY_OPEN_ACTIONS-1 times */
767 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
769 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
771 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
773 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
775 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
777 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
779 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
782 {"mark_as_read_on_new_window", "FALSE",
783 &prefs_common.mark_as_read_on_new_window,
784 P_BOOL, NULL, NULL, NULL},
785 {"mark_as_read_delay", "0",
786 &prefs_common.mark_as_read_delay, P_INT,
788 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
790 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
793 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
794 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
797 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
800 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
802 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
806 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
807 P_BOOL, NULL, NULL, NULL},
808 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
809 P_INT, NULL, NULL, NULL},
810 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
811 P_INT, NULL, NULL, NULL},
815 {"uri_open_command", DEFAULT_BROWSER_CMD,
816 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
817 {"print_command", "lpr %s",
818 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
820 {"ext_editor_command", DEFAULT_EDITOR_CMD,
821 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
822 {"cmds_use_system_default", "FALSE",
823 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
824 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
825 P_BOOL, NULL, NULL, NULL},
826 {"session_passwords", "FALSE", &prefs_common.session_passwords,
827 P_BOOL, NULL, NULL, NULL},
828 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
830 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
832 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
834 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
835 P_BOOL, NULL, NULL, NULL},
836 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
838 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
841 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
844 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
848 #if defined(__OpenBSD__)
849 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
850 P_INT, NULL, NULL, NULL},
852 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
853 P_INT, NULL, NULL, NULL},
855 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
857 {"important_score", "1", &prefs_common.important_score, P_INT,
860 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
862 {"log_length", "500", &prefs_common.loglength, P_INT,
865 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
867 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
869 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
871 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
874 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
876 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
878 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
880 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
883 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
885 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
887 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
889 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
891 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
893 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
895 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
897 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
900 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
902 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
904 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
906 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
908 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
910 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
912 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
914 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
916 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
919 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
922 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
925 /* Some windows' sizes */
926 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
928 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
931 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
933 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
936 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
938 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
941 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
943 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
946 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
948 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
951 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
953 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
956 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
958 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
961 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
963 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
966 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
968 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
971 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
973 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
976 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
978 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
981 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
983 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
986 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
989 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
991 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
994 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
996 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
999 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1001 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1004 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1006 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1009 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1011 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1014 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1016 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1019 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1021 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1025 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1027 {"utf8_instead_of_locale_for_broken_mail", "0",
1028 &prefs_common.broken_are_utf8, P_INT,
1030 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1032 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1034 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1036 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1038 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1040 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1042 {"folderview_vscrollbar_policy", "0",
1043 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1045 {"textview_cursor_visible", "FALSE",
1046 &prefs_common.textview_cursor_visible, P_BOOL,
1048 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1050 #ifndef GENERIC_UMPC
1051 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1053 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1056 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1058 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1061 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1062 P_INT, NULL, NULL, NULL },
1063 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1064 P_STRING, NULL, NULL, NULL },
1065 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1066 P_BOOL, NULL, NULL, NULL },
1067 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1069 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1071 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1073 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1075 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1077 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1079 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1081 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1083 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1085 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1087 #ifndef GENERIC_UMPC
1088 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1091 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1095 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1097 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1099 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1101 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1103 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1105 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1107 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1109 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1111 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1113 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1115 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1118 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1119 P_BOOL, NULL, NULL, NULL },
1121 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1124 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1128 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1129 * Fallback to default_list if history file is not found
1131 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1132 GList *default_list)
1136 gchar buf[PREFSBUFSIZE];
1140 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1141 G_DIR_SEPARATOR_S, history,
1144 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1147 if ((fp = g_fopen(path, "rb")) == NULL) {
1148 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1150 /* returns default list if set, otherwise NULL */
1151 return default_list;
1154 while (fgets(buf, sizeof(buf), fp) != NULL) {
1156 if (buf[0] == '\0') continue;
1157 tmp = add_history(tmp, buf);
1161 tmp = g_list_reverse(tmp);
1167 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1169 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1171 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1175 * Read history list from the specified history file
1177 static GList *prefs_common_read_history(const gchar *history)
1179 return prefs_common_read_history_from_dir(NULL, history);
1182 void prefs_common_read_config(void)
1187 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1188 prefs_read_config(param, "Common", rcpath, NULL);
1190 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1195 tmp = g_strdup(gettext(prefs_common.date_format));
1196 g_free(prefs_common.date_format);
1197 prefs_common.date_format = tmp;
1199 prefs_common.mime_open_cmd_history =
1200 prefs_common_read_history(COMMAND_HISTORY);
1201 prefs_common.summary_quicksearch_history =
1202 prefs_common_read_history(QUICKSEARCH_HISTORY);
1203 prefs_common.summary_search_from_history =
1204 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1205 prefs_common.summary_search_to_history =
1206 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1207 prefs_common.summary_search_subject_history =
1208 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1209 prefs_common.summary_search_body_history =
1210 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1211 prefs_common.summary_search_adv_condition_history =
1212 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1213 prefs_common.message_search_history =
1214 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1215 prefs_common.compose_save_to_history =
1216 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1218 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1220 colorlabel_update_colortable_from_prefs();
1226 g_warning("failed to write\n"); \
1231 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1233 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1237 gchar *path, *tmp_path;
1240 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1241 G_DIR_SEPARATOR_S, history,
1244 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1247 tmp_path = g_strconcat(path, ".tmp", NULL);
1249 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1250 FILE_OP_ERROR(tmp_path, "fopen");
1254 for (cur = list; cur != NULL; cur = cur->next) {
1255 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1256 fputc('\n', fp) != EOF);
1259 if (fclose(fp) == EOF) {
1260 FILE_OP_ERROR(tmp_path, "fclose");
1268 if (g_rename(tmp_path, path) < 0) {
1269 FILE_OP_ERROR(path, "rename");
1281 * Save history list to the specified history file
1283 static void prefs_common_save_history(const gchar *history, GList *list)
1285 prefs_common_save_history_to_dir(NULL, history, list);
1290 void prefs_common_write_config(void)
1292 prefs_write_config(param, "Common", COMMON_RC);
1294 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1297 prefs_common_save_history(COMMAND_HISTORY,
1298 prefs_common.mime_open_cmd_history);
1299 prefs_common_save_history(QUICKSEARCH_HISTORY,
1300 prefs_common.summary_quicksearch_history);
1301 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1302 prefs_common.summary_search_from_history);
1303 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1304 prefs_common.summary_search_to_history);
1305 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1306 prefs_common.summary_search_subject_history);
1307 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1308 prefs_common.summary_search_body_history);
1309 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1310 prefs_common.summary_search_adv_condition_history);
1311 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1312 prefs_common.message_search_history);
1313 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1314 prefs_common.compose_save_to_history);
1316 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1317 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1318 prefs_common.addressbook_custom_attributes);
1321 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1322 both 'in' and 'out' must be non-NULL.
1323 'out' must be a pointer to a buffer whose size is at least equal
1324 to strlen(txt)+1, this buffer will get cleared. out's contents
1325 will always get set to a valid string, even if it's "".*/
1326 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1333 g_return_if_fail( in != NULL );
1334 g_return_if_fail( out != NULL );
1338 memset(out, 0, strlen(in)+1);
1339 while (*i != '\0') {
1340 if (*i == '\\' && *(i+1) == 'n') {
1343 } else if (*i == '\\' && *(i+1) == 't') {
1346 } else if (*i == '\\' && *(i+1) == '\\') {
1357 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1358 both 'in' and 'out' must be non-NULL.
1359 'out' must be a pointer to a buffer whose size is at least equal
1360 to 2*strlen(txt)+1. out's contents will always get set to a valid
1361 string, even if it's "". */
1362 void pref_get_escaped_pref(gchar *out, const gchar *in)
1369 g_return_if_fail( in != NULL );
1370 g_return_if_fail( out != NULL );
1374 while (*i != '\0') {
1378 } else if (*i == '\t') {
1381 } else if (*i == '\\') {
1392 /* set the contents of a textview widget from the internal \-escaped
1393 representation of a pref string. both txt and textview must be non-NULL. */
1394 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1396 GtkTextBuffer *buffer;
1399 g_return_if_fail( textview != NULL );
1401 buffer = gtk_text_view_get_buffer(textview);
1404 gtk_text_buffer_set_text(buffer, "", -1);
1406 out = malloc(strlen(txt)+1);
1408 pref_get_unescaped_pref(out, txt);
1410 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1415 /* set the contents of a gtkentry widget from the internal \-escaped
1416 representation of a pref string. both txt and entry must be non-NULL. */
1417 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1421 g_return_if_fail( entry != NULL );
1423 gtk_entry_set_text(entry, "");
1425 out = malloc(strlen(txt)+1);
1427 pref_get_unescaped_pref(out, txt);
1429 gtk_entry_set_text(entry, out?out:"");
1434 /* get the \-escaped internal representation of a pref from the contents of
1435 a textview widget. textview must be non-NULL. */
1436 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1438 GtkTextBuffer *buffer;
1439 GtkTextIter start, end;
1442 g_return_val_if_fail( textview != NULL, "" );
1444 buffer = gtk_text_view_get_buffer(textview);
1445 gtk_text_buffer_get_start_iter(buffer, &start);
1446 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1447 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1448 out = malloc(2*strlen(tmp)+1);
1450 pref_get_escaped_pref(out, tmp);
1456 /* get the \-escaped internal representation of a pref from the contents of
1457 a gtkentry widget. entry must be non-NULL. */
1458 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1462 g_return_val_if_fail( entry != NULL, "" );
1464 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1465 out = malloc(2*strlen(tmp)+1);
1467 pref_get_escaped_pref(out, tmp);
1473 /* ugly hack to be able to get this pref from ssl_certificate.c */
1474 gboolean prefs_common_unsafe_ssl_certs(void)
1476 return prefs_common.unsafe_ssl_certs;
1479 gboolean prefs_common_enable_log_standard(void)
1481 return prefs_common.enable_log_standard;
1484 gboolean prefs_common_enable_log_warning(void)
1486 return prefs_common.enable_log_warning;
1488 gboolean prefs_common_enable_log_error(void)
1490 return prefs_common.enable_log_error;
1492 gboolean prefs_common_enable_log_status(void)
1494 return prefs_common.enable_log_status;
1498 const gchar *prefs_common_get_data_root(void)
1500 if (prefs_common.data_root && *prefs_common.data_root)
1501 return prefs_common.data_root;
1507 return the translated name of a header, if the translate_header option is
1508 set, otherwise return the untranslated header name (header_name itself).
1509 this function is provided for convenience, it's an interface to
1510 prefs_common.trans_hdr.
1511 works with header names either with or without trailing colon, provided
1512 that gettext found such header name in the sources (they should all be
1513 found in src/gtk/headers.h anyway).
1515 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1517 if (header_name == NULL || *header_name == '\0')
1520 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1523 const gchar *prefs_common_get_uri_cmd(void)
1530 if (!prefs_common.cmds_use_system_default)
1531 return prefs_common.uri_cmd;
1533 tmp = g_find_program_in_path("xdg-open");
1535 return prefs_common.uri_cmd;
1538 return "xdg-open %s";
1542 const gchar *prefs_common_get_ext_editor_cmd(void)
1544 return prefs_common.ext_editor_cmd;
1545 #if 0 /* we should do that, but it detaches the editor and breaks
1546 compose.c's external composition. */
1549 if (!prefs_common.cmds_use_system_default)
1550 return prefs_common.ext_editor_cmd;
1552 tmp = g_find_program_in_path("xdg-open");
1554 return prefs_common.ext_editor_cmd;
1557 return "xdg-open %s";
1561 gboolean prefs_common_get_use_shred(void)
1563 return prefs_common.use_shred;
1566 PrefsCommon *prefs_common_get_prefs(void)
1568 return &prefs_common;