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 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1136 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1137 * Fallback to default_list if history file is not found
1139 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1140 GList *default_list)
1144 gchar buf[PREFSBUFSIZE];
1148 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1149 G_DIR_SEPARATOR_S, history,
1152 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1155 if ((fp = g_fopen(path, "rb")) == NULL) {
1156 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1158 /* returns default list if set, otherwise NULL */
1159 return default_list;
1162 while (fgets(buf, sizeof(buf), fp) != NULL) {
1164 if (buf[0] == '\0') continue;
1165 tmp = add_history(tmp, buf);
1169 tmp = g_list_reverse(tmp);
1175 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1177 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1179 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1183 * Read history list from the specified history file
1185 static GList *prefs_common_read_history(const gchar *history)
1187 return prefs_common_read_history_from_dir(NULL, history);
1190 void prefs_common_read_config(void)
1195 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1196 prefs_read_config(param, "Common", rcpath, NULL);
1198 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1203 tmp = g_strdup(gettext(prefs_common.date_format));
1204 g_free(prefs_common.date_format);
1205 prefs_common.date_format = tmp;
1207 prefs_common.mime_open_cmd_history =
1208 prefs_common_read_history(COMMAND_HISTORY);
1209 prefs_common.summary_quicksearch_history =
1210 prefs_common_read_history(QUICKSEARCH_HISTORY);
1211 prefs_common.summary_search_from_history =
1212 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1213 prefs_common.summary_search_to_history =
1214 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1215 prefs_common.summary_search_subject_history =
1216 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1217 prefs_common.summary_search_body_history =
1218 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1219 prefs_common.summary_search_adv_condition_history =
1220 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1221 prefs_common.message_search_history =
1222 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1223 prefs_common.compose_save_to_history =
1224 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1226 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1228 colorlabel_update_colortable_from_prefs();
1234 g_warning("failed to write\n"); \
1239 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1241 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1245 gchar *path, *tmp_path;
1248 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1249 G_DIR_SEPARATOR_S, history,
1252 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1255 tmp_path = g_strconcat(path, ".tmp", NULL);
1257 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1258 FILE_OP_ERROR(tmp_path, "fopen");
1262 for (cur = list; cur != NULL; cur = cur->next) {
1263 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1264 fputc('\n', fp) != EOF);
1267 if (fclose(fp) == EOF) {
1268 FILE_OP_ERROR(tmp_path, "fclose");
1276 if (g_rename(tmp_path, path) < 0) {
1277 FILE_OP_ERROR(path, "rename");
1289 * Save history list to the specified history file
1291 static void prefs_common_save_history(const gchar *history, GList *list)
1293 prefs_common_save_history_to_dir(NULL, history, list);
1298 void prefs_common_write_config(void)
1300 prefs_write_config(param, "Common", COMMON_RC);
1302 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1305 prefs_common_save_history(COMMAND_HISTORY,
1306 prefs_common.mime_open_cmd_history);
1307 prefs_common_save_history(QUICKSEARCH_HISTORY,
1308 prefs_common.summary_quicksearch_history);
1309 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1310 prefs_common.summary_search_from_history);
1311 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1312 prefs_common.summary_search_to_history);
1313 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1314 prefs_common.summary_search_subject_history);
1315 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1316 prefs_common.summary_search_body_history);
1317 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1318 prefs_common.summary_search_adv_condition_history);
1319 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1320 prefs_common.message_search_history);
1321 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1322 prefs_common.compose_save_to_history);
1324 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1325 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1326 prefs_common.addressbook_custom_attributes);
1329 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1330 both 'in' and 'out' must be non-NULL.
1331 'out' must be a pointer to a buffer whose size is at least equal
1332 to strlen(txt)+1, this buffer will get cleared. out's contents
1333 will always get set to a valid string, even if it's "".*/
1334 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1341 g_return_if_fail( in != NULL );
1342 g_return_if_fail( out != NULL );
1346 memset(out, 0, strlen(in)+1);
1347 while (*i != '\0') {
1348 if (*i == '\\' && *(i+1) == 'n') {
1351 } else if (*i == '\\' && *(i+1) == 't') {
1354 } else if (*i == '\\' && *(i+1) == '\\') {
1365 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1366 both 'in' and 'out' must be non-NULL.
1367 'out' must be a pointer to a buffer whose size is at least equal
1368 to 2*strlen(txt)+1. out's contents will always get set to a valid
1369 string, even if it's "". */
1370 void pref_get_escaped_pref(gchar *out, const gchar *in)
1377 g_return_if_fail( in != NULL );
1378 g_return_if_fail( out != NULL );
1382 while (*i != '\0') {
1386 } else if (*i == '\t') {
1389 } else if (*i == '\\') {
1400 /* set the contents of a textview widget from the internal \-escaped
1401 representation of a pref string. both txt and textview must be non-NULL. */
1402 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1404 GtkTextBuffer *buffer;
1407 g_return_if_fail( textview != NULL );
1409 buffer = gtk_text_view_get_buffer(textview);
1412 gtk_text_buffer_set_text(buffer, "", -1);
1414 out = malloc(strlen(txt)+1);
1416 pref_get_unescaped_pref(out, txt);
1418 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1423 /* set the contents of a gtkentry widget from the internal \-escaped
1424 representation of a pref string. both txt and entry must be non-NULL. */
1425 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1429 g_return_if_fail( entry != NULL );
1431 gtk_entry_set_text(entry, "");
1433 out = malloc(strlen(txt)+1);
1435 pref_get_unescaped_pref(out, txt);
1437 gtk_entry_set_text(entry, out?out:"");
1442 /* get the \-escaped internal representation of a pref from the contents of
1443 a textview widget. textview must be non-NULL. */
1444 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1446 GtkTextBuffer *buffer;
1447 GtkTextIter start, end;
1450 g_return_val_if_fail( textview != NULL, "" );
1452 buffer = gtk_text_view_get_buffer(textview);
1453 gtk_text_buffer_get_start_iter(buffer, &start);
1454 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1455 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1456 out = malloc(2*strlen(tmp)+1);
1458 pref_get_escaped_pref(out, tmp);
1464 /* get the \-escaped internal representation of a pref from the contents of
1465 a gtkentry widget. entry must be non-NULL. */
1466 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1470 g_return_val_if_fail( entry != NULL, "" );
1472 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1473 out = malloc(2*strlen(tmp)+1);
1476 pref_get_escaped_pref(out, tmp);
1482 /* ugly hack to be able to get this pref from ssl_certificate.c */
1483 gboolean prefs_common_unsafe_ssl_certs(void)
1485 return prefs_common.unsafe_ssl_certs;
1488 gboolean prefs_common_enable_log_standard(void)
1490 return prefs_common.enable_log_standard;
1493 gboolean prefs_common_enable_log_warning(void)
1495 return prefs_common.enable_log_warning;
1497 gboolean prefs_common_enable_log_error(void)
1499 return prefs_common.enable_log_error;
1501 gboolean prefs_common_enable_log_status(void)
1503 return prefs_common.enable_log_status;
1507 const gchar *prefs_common_get_data_root(void)
1509 if (prefs_common.data_root && *prefs_common.data_root)
1510 return prefs_common.data_root;
1516 return the translated name of a header, if the translate_header option is
1517 set, otherwise return the untranslated header name (header_name itself).
1518 this function is provided for convenience, it's an interface to
1519 prefs_common.trans_hdr.
1520 works with header names either with or without trailing colon, provided
1521 that gettext found such header name in the sources (they should all be
1522 found in src/gtk/headers.h anyway).
1524 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1526 if (header_name == NULL || *header_name == '\0')
1529 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1532 const gchar *prefs_common_get_uri_cmd(void)
1539 if (!prefs_common.cmds_use_system_default)
1540 return prefs_common.uri_cmd;
1542 tmp = g_find_program_in_path("xdg-open");
1544 return prefs_common.uri_cmd;
1547 return "xdg-open %s";
1551 const gchar *prefs_common_get_ext_editor_cmd(void)
1553 return prefs_common.ext_editor_cmd;
1554 #if 0 /* we should do that, but it detaches the editor and breaks
1555 compose.c's external composition. */
1558 if (!prefs_common.cmds_use_system_default)
1559 return prefs_common.ext_editor_cmd;
1561 tmp = g_find_program_in_path("xdg-open");
1563 return prefs_common.ext_editor_cmd;
1566 return "xdg-open %s";
1570 gboolean prefs_common_get_use_shred(void)
1572 return prefs_common.use_shred;
1575 PrefsCommon *prefs_common_get_prefs(void)
1577 return &prefs_common;