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,
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_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1101 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1103 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1105 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1107 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1109 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1111 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1113 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1115 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1117 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1119 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1121 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1123 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1126 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1127 P_BOOL, NULL, NULL, NULL },
1129 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1132 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1135 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1139 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1140 * Fallback to default_list if history file is not found
1142 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1143 GList *default_list)
1147 gchar buf[PREFSBUFSIZE];
1151 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1152 G_DIR_SEPARATOR_S, history,
1155 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1158 if ((fp = g_fopen(path, "rb")) == NULL) {
1159 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1161 /* returns default list if set, otherwise NULL */
1162 return default_list;
1165 while (fgets(buf, sizeof(buf), fp) != NULL) {
1167 if (buf[0] == '\0') continue;
1168 tmp = add_history(tmp, buf);
1172 tmp = g_list_reverse(tmp);
1178 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1180 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1182 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1186 * Read history list from the specified history file
1188 static GList *prefs_common_read_history(const gchar *history)
1190 return prefs_common_read_history_from_dir(NULL, history);
1193 void prefs_common_read_config(void)
1198 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1199 prefs_read_config(param, "Common", rcpath, NULL);
1201 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1206 tmp = g_strdup(gettext(prefs_common.date_format));
1207 g_free(prefs_common.date_format);
1208 prefs_common.date_format = tmp;
1210 prefs_common.mime_open_cmd_history =
1211 prefs_common_read_history(COMMAND_HISTORY);
1212 prefs_common.summary_quicksearch_history =
1213 prefs_common_read_history(QUICKSEARCH_HISTORY);
1214 prefs_common.summary_search_from_history =
1215 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1216 prefs_common.summary_search_to_history =
1217 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1218 prefs_common.summary_search_subject_history =
1219 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1220 prefs_common.summary_search_body_history =
1221 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1222 prefs_common.summary_search_adv_condition_history =
1223 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1224 prefs_common.message_search_history =
1225 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1226 prefs_common.compose_save_to_history =
1227 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1229 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1231 colorlabel_update_colortable_from_prefs();
1237 g_warning("failed to write\n"); \
1242 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1244 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1248 gchar *path, *tmp_path;
1251 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1252 G_DIR_SEPARATOR_S, history,
1255 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1258 tmp_path = g_strconcat(path, ".tmp", NULL);
1260 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1261 FILE_OP_ERROR(tmp_path, "fopen");
1265 for (cur = list; cur != NULL; cur = cur->next) {
1266 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1267 fputc('\n', fp) != EOF);
1270 if (fclose(fp) == EOF) {
1271 FILE_OP_ERROR(tmp_path, "fclose");
1279 if (g_rename(tmp_path, path) < 0) {
1280 FILE_OP_ERROR(path, "rename");
1292 * Save history list to the specified history file
1294 static void prefs_common_save_history(const gchar *history, GList *list)
1296 prefs_common_save_history_to_dir(NULL, history, list);
1301 void prefs_common_write_config(void)
1303 prefs_write_config(param, "Common", COMMON_RC);
1305 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1308 prefs_common_save_history(COMMAND_HISTORY,
1309 prefs_common.mime_open_cmd_history);
1310 prefs_common_save_history(QUICKSEARCH_HISTORY,
1311 prefs_common.summary_quicksearch_history);
1312 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1313 prefs_common.summary_search_from_history);
1314 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1315 prefs_common.summary_search_to_history);
1316 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1317 prefs_common.summary_search_subject_history);
1318 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1319 prefs_common.summary_search_body_history);
1320 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1321 prefs_common.summary_search_adv_condition_history);
1322 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1323 prefs_common.message_search_history);
1324 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1325 prefs_common.compose_save_to_history);
1327 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1328 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1329 prefs_common.addressbook_custom_attributes);
1332 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1333 both 'in' and 'out' must be non-NULL.
1334 'out' must be a pointer to a buffer whose size is at least equal
1335 to strlen(txt)+1, this buffer will get cleared. out's contents
1336 will always get set to a valid string, even if it's "".*/
1337 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1344 cm_return_if_fail( in != NULL );
1345 cm_return_if_fail( out != NULL );
1349 memset(out, 0, strlen(in)+1);
1350 while (*i != '\0') {
1351 if (*i == '\\' && *(i+1) == 'n') {
1354 } else if (*i == '\\' && *(i+1) == 't') {
1357 } else if (*i == '\\' && *(i+1) == '\\') {
1368 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1369 both 'in' and 'out' must be non-NULL.
1370 'out' must be a pointer to a buffer whose size is at least equal
1371 to 2*strlen(txt)+1. out's contents will always get set to a valid
1372 string, even if it's "". */
1373 void pref_get_escaped_pref(gchar *out, const gchar *in)
1380 cm_return_if_fail( in != NULL );
1381 cm_return_if_fail( out != NULL );
1385 while (*i != '\0') {
1389 } else if (*i == '\t') {
1392 } else if (*i == '\\') {
1403 /* set the contents of a textview widget from the internal \-escaped
1404 representation of a pref string. both txt and textview must be non-NULL. */
1405 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1407 GtkTextBuffer *buffer;
1410 cm_return_if_fail( textview != NULL );
1412 buffer = gtk_text_view_get_buffer(textview);
1415 gtk_text_buffer_set_text(buffer, "", -1);
1417 out = malloc(strlen(txt)+1);
1419 pref_get_unescaped_pref(out, txt);
1421 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1426 /* set the contents of a gtkentry widget from the internal \-escaped
1427 representation of a pref string. both txt and entry must be non-NULL. */
1428 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1432 cm_return_if_fail( entry != NULL );
1434 gtk_entry_set_text(entry, "");
1436 out = malloc(strlen(txt)+1);
1438 pref_get_unescaped_pref(out, txt);
1440 gtk_entry_set_text(entry, out?out:"");
1445 /* get the \-escaped internal representation of a pref from the contents of
1446 a textview widget. textview must be non-NULL. */
1447 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1449 GtkTextBuffer *buffer;
1450 GtkTextIter start, end;
1453 cm_return_val_if_fail( textview != NULL, "" );
1455 buffer = gtk_text_view_get_buffer(textview);
1456 gtk_text_buffer_get_start_iter(buffer, &start);
1457 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1458 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1459 out = malloc(2*strlen(tmp)+1);
1461 pref_get_escaped_pref(out, tmp);
1467 /* get the \-escaped internal representation of a pref from the contents of
1468 a gtkentry widget. entry must be non-NULL. */
1469 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1473 cm_return_val_if_fail( entry != NULL, "" );
1475 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1476 out = malloc(2*strlen(tmp)+1);
1479 pref_get_escaped_pref(out, tmp);
1485 /* ugly hack to be able to get this pref from ssl_certificate.c */
1486 gboolean prefs_common_unsafe_ssl_certs(void)
1488 return prefs_common.unsafe_ssl_certs;
1491 gboolean prefs_common_enable_log_standard(void)
1493 return prefs_common.enable_log_standard;
1496 gboolean prefs_common_enable_log_warning(void)
1498 return prefs_common.enable_log_warning;
1500 gboolean prefs_common_enable_log_error(void)
1502 return prefs_common.enable_log_error;
1504 gboolean prefs_common_enable_log_status(void)
1506 return prefs_common.enable_log_status;
1510 const gchar *prefs_common_get_data_root(void)
1512 if (prefs_common.data_root && *prefs_common.data_root)
1513 return prefs_common.data_root;
1519 return the translated name of a header, if the translate_header option is
1520 set, otherwise return the untranslated header name (header_name itself).
1521 this function is provided for convenience, it's an interface to
1522 prefs_common.trans_hdr.
1523 works with header names either with or without trailing colon, provided
1524 that gettext found such header name in the sources (they should all be
1525 found in src/gtk/headers.h anyway).
1527 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1529 if (header_name == NULL || *header_name == '\0')
1532 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1535 const gchar *prefs_common_get_uri_cmd(void)
1542 if (!prefs_common.cmds_use_system_default)
1543 return prefs_common.uri_cmd;
1545 tmp = g_find_program_in_path("xdg-open");
1547 return prefs_common.uri_cmd;
1550 return "xdg-open %s";
1554 const gchar *prefs_common_get_ext_editor_cmd(void)
1556 return prefs_common.ext_editor_cmd;
1557 #if 0 /* we should do that, but it detaches the editor and breaks
1558 compose.c's external composition. */
1561 if (!prefs_common.cmds_use_system_default)
1562 return prefs_common.ext_editor_cmd;
1564 tmp = g_find_program_in_path("xdg-open");
1566 return prefs_common.ext_editor_cmd;
1569 return "xdg-open %s";
1573 gboolean prefs_common_get_use_shred(void)
1575 return prefs_common.use_shred;
1578 gboolean prefs_common_get_flush_metadata (void)
1580 return prefs_common.flush_metadata;
1583 PrefsCommon *prefs_common_get_prefs(void)
1585 return &prefs_common;