2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2011 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},
229 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
233 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
235 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
237 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
239 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
241 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
243 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
245 {"autosave", "TRUE", &prefs_common.autosave,
246 P_BOOL, NULL, NULL, NULL},
247 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
249 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
250 P_BOOL, NULL, NULL, NULL},
251 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
252 P_INT, NULL, NULL, NULL},
254 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
256 {"dictionary", "", &prefs_common.dictionary, P_STRING,
258 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
260 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
262 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
264 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
265 P_BOOL, NULL, NULL, NULL},
266 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
268 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
271 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
273 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
276 /* Account autoselection */
277 {"reply_account_autoselect", "TRUE",
278 &prefs_common.reply_account_autosel, P_BOOL,
280 {"forward_account_autoselect", "TRUE",
281 &prefs_common.forward_account_autosel, P_BOOL,
283 {"reedit_account_autoselect", "TRUE",
284 &prefs_common.reedit_account_autosel, P_BOOL,
287 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
291 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
294 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
299 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
301 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
302 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
304 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
306 {"forward_quote_format",
307 N_("\\n\\nBegin forwarded message:\\n\\n"
308 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
309 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
310 &prefs_common.fw_quotefmt, P_STRING,
312 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
316 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
317 {"widget_font", NULL,
318 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
319 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
320 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
321 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
322 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
323 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
324 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
325 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
326 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
330 {"widget_font_gtk2", NULL,
331 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
332 {"message_font_gtk2", "Monospace 9",
333 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
334 {"print_font_gtk2", "Monospace 9",
335 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
336 {"small_font_gtk2", "Sans 9",
337 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
338 {"normal_font_gtk2", "Sans 9",
339 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
340 {"bold_font_gtk2", "Sans Bold 9",
341 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
343 {"widget_font_gtk2", NULL,
344 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
345 {"message_font_gtk2", "Monospace 8",
346 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
347 {"print_font_gtk2", "Monospace 8",
348 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
349 {"small_font_gtk2", "Sans 8",
350 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
351 {"normal_font_gtk2", "Sans 8",
352 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
353 {"bold_font_gtk2", "Sans Bold 8",
354 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
357 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
359 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
363 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
365 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
367 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
369 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
371 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
373 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
375 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
377 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
379 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
381 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
383 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
385 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
387 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
389 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
391 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
393 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
395 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
397 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
399 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
401 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
403 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
405 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
407 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
409 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
411 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
413 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
415 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
417 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
419 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
421 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
425 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
427 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
429 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
432 {"display_folder_unread_num", "0",
433 &prefs_common.display_folder_unread, P_INT,
435 {"newsgroup_abbrev_len", "16",
436 &prefs_common.ng_abbrev_len, P_INT,
439 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
442 /* Display: Summary View */
443 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
445 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
447 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
448 P_STRING, NULL, NULL, NULL},
449 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
452 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
455 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
458 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
461 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
464 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
466 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
469 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
471 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
474 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
476 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
480 {"summary_col_show_mark", "TRUE",
481 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
482 {"summary_col_show_unread", "TRUE",
483 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
484 {"summary_col_show_subject", "TRUE",
485 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
486 {"summary_col_show_from", "TRUE",
487 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
488 {"summary_col_show_to", "FALSE",
489 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
490 {"summary_col_show_date", "TRUE",
491 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
492 {"summary_col_show_mime", "TRUE",
493 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
494 {"summary_col_show_size", "TRUE",
495 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
496 {"summary_col_show_number", "FALSE",
497 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
498 {"summary_col_show_score", "FALSE",
499 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
500 {"summary_col_show_locked", "FALSE",
501 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
502 {"summary_col_show_tags", "FALSE",
503 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
505 {"summary_col_pos_mark", "0",
506 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
507 {"summary_col_pos_unread", "1",
508 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
509 {"summary_col_pos_mime", "2",
510 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
511 {"summary_col_pos_subject", "3",
512 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
513 {"summary_col_pos_from", "4",
514 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
515 {"summary_col_pos_date", "5",
516 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
517 {"summary_col_pos_size", "6",
518 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
519 {"summary_col_pos_number", "7",
520 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
521 {"summary_col_pos_score", "8",
522 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
523 {"summary_col_pos_locked", "9",
524 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
525 {"summary_col_pos_to", "10",
526 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
527 {"summary_col_pos_tags", "11",
528 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_mark", "10",
531 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_unread", "13",
533 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_mime", "10",
535 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_subject", "200",
538 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_from", "120",
540 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_to", "120",
542 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
544 {"summary_col_size_subject", "300",
545 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_from", "150",
547 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
548 {"summary_col_size_to", "150",
549 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
552 {"summary_col_size_date", "118",
553 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
554 {"summary_col_size_size", "45",
555 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
556 {"summary_col_size_number", "40",
557 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
558 {"summary_col_size_score", "40",
559 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
560 {"summary_col_size_locked", "13",
561 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
562 {"summary_col_size_tags", "150",
563 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
566 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
568 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
570 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
572 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
574 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
577 {"folder_col_show_folder", "TRUE",
578 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
579 {"folder_col_show_new", "TRUE",
580 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
581 {"folder_col_show_unread", "TRUE",
582 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
583 {"folder_col_show_total", "TRUE",
584 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
586 {"folder_col_pos_folder", "0",
587 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
588 {"folder_col_pos_new", "1",
589 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
590 {"folder_col_pos_unread", "2",
591 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
592 {"folder_col_pos_total", "3",
593 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
596 {"folder_col_size_folder", "120",
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 {"folder_col_size_folder", "400",
606 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
607 {"folder_col_size_new", "32",
608 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
609 {"folder_col_size_unread", "32",
610 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
611 {"folder_col_size_total", "32",
612 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
614 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
616 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
619 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
621 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
623 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
625 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
627 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
630 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
632 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
634 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
636 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
638 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
640 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
642 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
644 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
647 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
649 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
651 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
653 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
655 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
657 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
659 {"compose_width", "600", &prefs_common.compose_width, P_INT,
661 {"compose_height", "560", &prefs_common.compose_height, P_INT,
664 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
666 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
668 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
670 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
672 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
674 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
676 {"compose_width", "700", &prefs_common.compose_width, P_INT,
678 {"compose_height", "470", &prefs_common.compose_height, P_INT,
681 {"compose_x", "0", &prefs_common.compose_x, P_INT,
683 {"compose_y", "0", &prefs_common.compose_y, P_INT,
686 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
689 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
691 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
693 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
695 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
697 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
699 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
701 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
703 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
705 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
707 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
709 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
711 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
712 P_BOOL, NULL, NULL, NULL},
714 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
715 P_BOOL, NULL, NULL, NULL},
716 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
718 {"display_xface", "TRUE", &prefs_common.display_xface,
719 P_BOOL, NULL, NULL, NULL},
720 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
722 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
724 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
726 {"line_space", "2", &prefs_common.line_space, P_INT,
728 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
731 {"enable_smooth_scroll", "FALSE",
732 &prefs_common.enable_smooth_scroll, P_BOOL,
734 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
736 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
738 {"hide_quoted", "TRUE",
739 &prefs_common.hide_quoted, P_BOOL,
741 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
744 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
747 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
749 {"attach_save_directory", NULL,
750 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
751 {"attach_load_directory", NULL,
752 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
755 {"mime_textviewer", NULL,
756 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
757 {"mime_open_command", "gedit '%s'",
758 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
759 {"show_inline_attachments", "TRUE",
760 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
764 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
767 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
770 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
771 NULL, NULL, NULL}, */
772 {"always_show_message_when_selected", "0",
773 &prefs_common.always_show_msg,
774 P_ENUM, NULL, NULL, NULL},
775 {"select_on_entry", "3", &prefs_common.select_on_entry,
776 P_ENUM, NULL, NULL, NULL},
777 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
778 P_BOOL, NULL, NULL, NULL},
780 /* do it SUMMARY_OPEN_ACTIONS-1 times */
781 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
783 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
785 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
787 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
789 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
791 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
793 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
796 {"mark_as_read_on_new_window", "FALSE",
797 &prefs_common.mark_as_read_on_new_window,
798 P_BOOL, NULL, NULL, NULL},
799 {"mark_as_read_delay", "0",
800 &prefs_common.mark_as_read_delay, P_INT,
802 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
804 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
806 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
809 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
810 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
813 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
816 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
818 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
822 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
823 P_BOOL, NULL, NULL, NULL},
824 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
825 P_INT, NULL, NULL, NULL},
826 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
827 P_INT, NULL, NULL, NULL},
831 {"uri_open_command", DEFAULT_BROWSER_CMD,
832 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
834 {"ext_editor_command", DEFAULT_EDITOR_CMD,
835 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
836 {"cmds_use_system_default", "TRUE",
837 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
838 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
839 P_BOOL, NULL, NULL, NULL},
840 {"session_passwords", "FALSE", &prefs_common.session_passwords,
841 P_BOOL, NULL, NULL, NULL},
842 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
844 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
846 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
848 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
849 P_BOOL, NULL, NULL, NULL},
850 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
852 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
855 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
858 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
862 #if defined(__OpenBSD__)
863 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
864 P_INT, NULL, NULL, NULL},
866 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
867 P_INT, NULL, NULL, NULL},
869 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
871 {"important_score", "1", &prefs_common.important_score, P_INT,
874 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
876 {"log_length", "500", &prefs_common.loglength, P_INT,
879 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
881 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
883 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
885 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
888 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
890 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
892 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
894 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
897 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
899 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
901 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
903 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
905 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
907 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
909 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
911 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
914 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
916 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
918 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
920 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
922 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
924 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
926 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
928 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
930 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
933 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
936 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
939 /* Some windows' sizes */
940 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
942 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
945 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
947 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
950 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
952 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
955 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
957 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
960 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
962 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
965 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
967 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
970 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
972 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
975 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
977 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
980 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
982 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
985 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
987 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
990 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
992 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
995 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
997 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1000 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1003 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1005 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1008 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1010 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1013 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1015 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1018 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1020 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1023 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1025 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1028 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1030 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1033 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1035 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1038 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1040 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1043 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1045 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1048 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1050 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1054 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1056 {"utf8_instead_of_locale_for_broken_mail", "0",
1057 &prefs_common.broken_are_utf8, P_INT,
1059 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1061 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1063 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1065 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1067 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1069 {"folderview_vscrollbar_policy", "0",
1070 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1072 {"textview_cursor_visible", "FALSE",
1073 &prefs_common.textview_cursor_visible, P_BOOL,
1075 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1077 #ifndef GENERIC_UMPC
1078 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1080 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1083 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1085 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1088 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1089 P_INT, NULL, NULL, NULL },
1090 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1091 P_STRING, NULL, NULL, NULL },
1092 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1093 P_BOOL, NULL, NULL, NULL },
1094 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1096 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1098 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1100 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1102 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1104 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1106 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1108 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1110 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1112 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1114 #ifndef GENERIC_UMPC
1115 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1118 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1122 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1124 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1126 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1128 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1130 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1132 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1134 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1136 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1138 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1140 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1142 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1144 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1146 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1148 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1150 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1153 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1154 P_BOOL, NULL, NULL, NULL },
1156 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1159 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1162 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1166 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1167 * Fallback to default_list if history file is not found
1169 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1170 GList *default_list)
1174 gchar buf[PREFSBUFSIZE];
1178 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1179 G_DIR_SEPARATOR_S, history,
1182 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1185 if ((fp = g_fopen(path, "rb")) == NULL) {
1186 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1188 /* returns default list if set, otherwise NULL */
1189 return default_list;
1192 while (fgets(buf, sizeof(buf), fp) != NULL) {
1194 if (buf[0] == '\0') continue;
1195 tmp = add_history(tmp, buf);
1199 tmp = g_list_reverse(tmp);
1205 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1207 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1209 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1213 * Read history list from the specified history file
1215 static GList *prefs_common_read_history(const gchar *history)
1217 return prefs_common_read_history_from_dir(NULL, history);
1220 void prefs_common_read_config(void)
1225 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1226 prefs_read_config(param, "Common", rcpath, NULL);
1228 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1233 tmp = g_strdup(gettext(prefs_common.date_format));
1234 g_free(prefs_common.date_format);
1235 prefs_common.date_format = tmp;
1237 prefs_common.mime_open_cmd_history =
1238 prefs_common_read_history(COMMAND_HISTORY);
1239 prefs_common.summary_quicksearch_history =
1240 prefs_common_read_history(QUICKSEARCH_HISTORY);
1241 prefs_common.summary_search_from_history =
1242 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1243 prefs_common.summary_search_to_history =
1244 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1245 prefs_common.summary_search_subject_history =
1246 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1247 prefs_common.summary_search_body_history =
1248 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1249 prefs_common.summary_search_adv_condition_history =
1250 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1251 prefs_common.message_search_history =
1252 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1253 prefs_common.compose_save_to_history =
1254 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1256 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1258 colorlabel_update_colortable_from_prefs();
1264 g_warning("failed to write\n"); \
1269 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1271 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1275 gchar *path, *tmp_path;
1278 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1279 G_DIR_SEPARATOR_S, history,
1282 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1285 tmp_path = g_strconcat(path, ".tmp", NULL);
1287 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1288 FILE_OP_ERROR(tmp_path, "fopen");
1292 for (cur = list; cur != NULL; cur = cur->next) {
1293 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1294 fputc('\n', fp) != EOF);
1297 if (fclose(fp) == EOF) {
1298 FILE_OP_ERROR(tmp_path, "fclose");
1306 if (g_rename(tmp_path, path) < 0) {
1307 FILE_OP_ERROR(path, "rename");
1319 * Save history list to the specified history file
1321 static void prefs_common_save_history(const gchar *history, GList *list)
1323 prefs_common_save_history_to_dir(NULL, history, list);
1328 void prefs_common_write_config(void)
1330 prefs_write_config(param, "Common", COMMON_RC);
1332 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1335 prefs_common_save_history(COMMAND_HISTORY,
1336 prefs_common.mime_open_cmd_history);
1337 prefs_common_save_history(QUICKSEARCH_HISTORY,
1338 prefs_common.summary_quicksearch_history);
1339 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1340 prefs_common.summary_search_from_history);
1341 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1342 prefs_common.summary_search_to_history);
1343 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1344 prefs_common.summary_search_subject_history);
1345 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1346 prefs_common.summary_search_body_history);
1347 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1348 prefs_common.summary_search_adv_condition_history);
1349 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1350 prefs_common.message_search_history);
1351 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1352 prefs_common.compose_save_to_history);
1354 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1355 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1356 prefs_common.addressbook_custom_attributes);
1359 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1360 both 'in' and 'out' must be non-NULL.
1361 'out' must be a pointer to a buffer whose size is at least equal
1362 to strlen(txt)+1, this buffer will get cleared. out's contents
1363 will always get set to a valid string, even if it's "".*/
1364 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1371 cm_return_if_fail( in != NULL );
1372 cm_return_if_fail( out != NULL );
1376 memset(out, 0, strlen(in)+1);
1377 while (*i != '\0') {
1378 if (*i == '\\' && *(i+1) == 'n') {
1381 } else if (*i == '\\' && *(i+1) == 't') {
1384 } else if (*i == '\\' && *(i+1) == '\\') {
1395 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1396 both 'in' and 'out' must be non-NULL.
1397 'out' must be a pointer to a buffer whose size is at least equal
1398 to 2*strlen(txt)+1. out's contents will always get set to a valid
1399 string, even if it's "". */
1400 void pref_get_escaped_pref(gchar *out, const gchar *in)
1407 cm_return_if_fail( in != NULL );
1408 cm_return_if_fail( out != NULL );
1412 while (*i != '\0') {
1416 } else if (*i == '\t') {
1419 } else if (*i == '\\') {
1430 /* set the contents of a textview widget from the internal \-escaped
1431 representation of a pref string. both txt and textview must be non-NULL. */
1432 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1434 GtkTextBuffer *buffer;
1437 cm_return_if_fail( textview != NULL );
1439 buffer = gtk_text_view_get_buffer(textview);
1442 gtk_text_buffer_set_text(buffer, "", -1);
1444 out = g_malloc(strlen(txt)+1);
1446 pref_get_unescaped_pref(out, txt);
1448 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1453 /* set the contents of a gtkentry widget from the internal \-escaped
1454 representation of a pref string. both txt and entry must be non-NULL. */
1455 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1459 cm_return_if_fail( entry != NULL );
1461 gtk_entry_set_text(entry, "");
1463 out = g_malloc(strlen(txt)+1);
1465 pref_get_unescaped_pref(out, txt);
1467 gtk_entry_set_text(entry, out?out:"");
1472 /* get the \-escaped internal representation of a pref from the contents of
1473 a textview widget. textview must be non-NULL. */
1474 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1476 GtkTextBuffer *buffer;
1477 GtkTextIter start, end;
1480 cm_return_val_if_fail( textview != NULL, "" );
1482 buffer = gtk_text_view_get_buffer(textview);
1483 gtk_text_buffer_get_start_iter(buffer, &start);
1484 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1485 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1486 out = malloc(2*strlen(tmp)+1);
1488 pref_get_escaped_pref(out, tmp);
1494 /* get the \-escaped internal representation of a pref from the contents of
1495 a gtkentry widget. entry must be non-NULL. */
1496 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1500 cm_return_val_if_fail( entry != NULL, "" );
1502 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1503 out = malloc(2*strlen(tmp)+1);
1506 pref_get_escaped_pref(out, tmp);
1512 /* ugly hack to be able to get this pref from ssl_certificate.c */
1513 gboolean prefs_common_unsafe_ssl_certs(void)
1515 return prefs_common.unsafe_ssl_certs;
1518 gboolean prefs_common_enable_log_standard(void)
1520 return prefs_common.enable_log_standard;
1523 gboolean prefs_common_enable_log_warning(void)
1525 return prefs_common.enable_log_warning;
1527 gboolean prefs_common_enable_log_error(void)
1529 return prefs_common.enable_log_error;
1531 gboolean prefs_common_enable_log_status(void)
1533 return prefs_common.enable_log_status;
1537 const gchar *prefs_common_get_data_root(void)
1539 if (prefs_common.data_root && *prefs_common.data_root)
1540 return prefs_common.data_root;
1546 return the translated name of a header, if the translate_header option is
1547 set, otherwise return the untranslated header name (header_name itself).
1548 this function is provided for convenience, it's an interface to
1549 prefs_common.trans_hdr.
1550 works with header names either with or without trailing colon, provided
1551 that gettext found such header name in the sources (they should all be
1552 found in src/gtk/headers.h anyway).
1554 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1556 if (header_name == NULL || *header_name == '\0')
1559 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1562 const gchar *prefs_common_get_uri_cmd(void)
1569 if (!prefs_common.cmds_use_system_default)
1570 return prefs_common.uri_cmd;
1572 tmp = g_find_program_in_path("xdg-open");
1574 return prefs_common.uri_cmd;
1577 return "xdg-open %s";
1581 const gchar *prefs_common_get_ext_editor_cmd(void)
1583 return prefs_common.ext_editor_cmd;
1584 #if 0 /* we should do that, but it detaches the editor and breaks
1585 compose.c's external composition. */
1588 if (!prefs_common.cmds_use_system_default)
1589 return prefs_common.ext_editor_cmd;
1591 tmp = g_find_program_in_path("xdg-open");
1593 return prefs_common.ext_editor_cmd;
1596 return "xdg-open %s";
1600 gboolean prefs_common_get_use_shred(void)
1602 return prefs_common.use_shred;
1605 gboolean prefs_common_get_flush_metadata (void)
1607 return prefs_common.flush_metadata;
1610 PrefsCommon *prefs_common_get_prefs(void)
1612 return &prefs_common;