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 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
657 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
659 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
661 {"compose_width", "600", &prefs_common.compose_width, P_INT,
663 {"compose_height", "560", &prefs_common.compose_height, P_INT,
666 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
668 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
670 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
672 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
674 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
676 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
678 {"compose_width", "700", &prefs_common.compose_width, P_INT,
680 {"compose_height", "470", &prefs_common.compose_height, P_INT,
683 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
685 {"compose_x", "0", &prefs_common.compose_x, P_INT,
687 {"compose_y", "0", &prefs_common.compose_y, P_INT,
690 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
693 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
695 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
697 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
699 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
701 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
703 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
705 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
707 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
709 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
711 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
713 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
715 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
716 P_BOOL, NULL, NULL, NULL},
718 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
719 P_BOOL, NULL, NULL, NULL},
720 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
722 {"display_xface", "TRUE", &prefs_common.display_xface,
723 P_BOOL, NULL, NULL, NULL},
724 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
726 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
728 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
730 {"line_space", "2", &prefs_common.line_space, P_INT,
732 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
735 {"enable_smooth_scroll", "FALSE",
736 &prefs_common.enable_smooth_scroll, P_BOOL,
738 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
740 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
742 {"hide_quoted", "TRUE",
743 &prefs_common.hide_quoted, P_BOOL,
745 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
747 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
750 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
753 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
755 {"attach_save_directory", NULL,
756 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
757 {"attach_load_directory", NULL,
758 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
761 {"mime_textviewer", NULL,
762 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
763 {"mime_open_command", "gedit '%s'",
764 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
765 {"show_inline_attachments", "TRUE",
766 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
770 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
773 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
776 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
777 NULL, NULL, NULL}, */
778 {"always_show_message_when_selected", "0",
779 &prefs_common.always_show_msg,
780 P_ENUM, NULL, NULL, NULL},
781 {"select_on_entry", "3", &prefs_common.select_on_entry,
782 P_ENUM, NULL, NULL, NULL},
783 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
784 P_BOOL, NULL, NULL, NULL},
786 /* do it SUMMARY_OPEN_ACTIONS-1 times */
787 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
789 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
791 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
793 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
795 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
797 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
799 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
802 {"mark_as_read_on_new_window", "FALSE",
803 &prefs_common.mark_as_read_on_new_window,
804 P_BOOL, NULL, NULL, NULL},
805 {"mark_as_read_delay", "0",
806 &prefs_common.mark_as_read_delay, P_INT,
808 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
810 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
812 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
815 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
816 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
819 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
822 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
824 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
828 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
829 P_BOOL, NULL, NULL, NULL},
830 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
831 P_INT, NULL, NULL, NULL},
832 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
833 P_INT, NULL, NULL, NULL},
837 {"uri_open_command", DEFAULT_BROWSER_CMD,
838 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
840 {"ext_editor_command", DEFAULT_EDITOR_CMD,
841 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
842 {"cmds_use_system_default", "TRUE",
843 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
844 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
845 P_BOOL, NULL, NULL, NULL},
846 {"session_passwords", "FALSE", &prefs_common.session_passwords,
847 P_BOOL, NULL, NULL, NULL},
848 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
850 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
852 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
854 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
855 P_BOOL, NULL, NULL, NULL},
856 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
858 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
861 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
864 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
868 #if defined(__OpenBSD__)
869 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
870 P_INT, NULL, NULL, NULL},
872 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
873 P_INT, NULL, NULL, NULL},
875 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
877 {"important_score", "1", &prefs_common.important_score, P_INT,
880 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
882 {"log_length", "500", &prefs_common.loglength, P_INT,
885 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
887 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
889 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
891 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
894 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
896 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
898 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
900 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
903 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
905 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
907 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
909 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
911 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
913 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
915 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
917 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
920 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
922 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
924 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
926 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
928 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
930 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
932 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
934 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
936 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
939 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
942 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
945 /* Some windows' sizes */
946 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
948 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
951 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
953 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
956 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
958 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
961 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
963 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
966 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
968 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
971 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
973 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
976 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
978 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
981 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
983 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
986 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
988 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
991 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
993 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
996 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
998 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1001 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1003 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1006 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1009 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1011 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1014 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1016 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1019 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1021 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1024 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1026 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1029 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1031 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1034 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1036 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1039 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1041 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1044 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1046 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1049 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1051 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1054 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1056 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1060 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1062 {"utf8_instead_of_locale_for_broken_mail", "0",
1063 &prefs_common.broken_are_utf8, P_INT,
1065 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1067 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1069 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1071 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1073 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1075 {"folderview_vscrollbar_policy", "0",
1076 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1078 {"textview_cursor_visible", "FALSE",
1079 &prefs_common.textview_cursor_visible, P_BOOL,
1081 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1083 #ifndef GENERIC_UMPC
1084 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1086 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1089 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1091 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1094 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1095 P_INT, NULL, NULL, NULL },
1096 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1097 P_STRING, NULL, NULL, NULL },
1098 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1099 P_BOOL, NULL, NULL, NULL },
1100 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1102 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1104 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1106 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1108 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1110 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1112 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1114 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1116 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1118 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1120 #ifndef GENERIC_UMPC
1121 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1124 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1128 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1130 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1132 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1134 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1136 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1138 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1140 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1142 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1144 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1146 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1148 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1150 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1152 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1154 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1156 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1159 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1160 P_BOOL, NULL, NULL, NULL },
1162 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1165 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1168 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1172 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1173 * Fallback to default_list if history file is not found
1175 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1176 GList *default_list)
1180 gchar buf[PREFSBUFSIZE];
1184 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1185 G_DIR_SEPARATOR_S, history,
1188 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1191 if ((fp = g_fopen(path, "rb")) == NULL) {
1192 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1194 /* returns default list if set, otherwise NULL */
1195 return default_list;
1198 while (fgets(buf, sizeof(buf), fp) != NULL) {
1200 if (buf[0] == '\0') continue;
1201 tmp = add_history(tmp, buf);
1205 tmp = g_list_reverse(tmp);
1211 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1213 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1215 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1219 * Read history list from the specified history file
1221 static GList *prefs_common_read_history(const gchar *history)
1223 return prefs_common_read_history_from_dir(NULL, history);
1226 void prefs_common_read_config(void)
1231 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1232 prefs_read_config(param, "Common", rcpath, NULL);
1234 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1239 tmp = g_strdup(gettext(prefs_common.date_format));
1240 g_free(prefs_common.date_format);
1241 prefs_common.date_format = tmp;
1243 prefs_common.mime_open_cmd_history =
1244 prefs_common_read_history(COMMAND_HISTORY);
1245 prefs_common.summary_quicksearch_history =
1246 prefs_common_read_history(QUICKSEARCH_HISTORY);
1247 prefs_common.summary_search_from_history =
1248 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1249 prefs_common.summary_search_to_history =
1250 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1251 prefs_common.summary_search_subject_history =
1252 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1253 prefs_common.summary_search_body_history =
1254 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1255 prefs_common.summary_search_adv_condition_history =
1256 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1257 prefs_common.message_search_history =
1258 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1259 prefs_common.compose_save_to_history =
1260 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1262 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1264 colorlabel_update_colortable_from_prefs();
1270 g_warning("failed to write\n"); \
1275 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1277 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1281 gchar *path, *tmp_path;
1284 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1285 G_DIR_SEPARATOR_S, history,
1288 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1291 tmp_path = g_strconcat(path, ".tmp", NULL);
1293 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1294 FILE_OP_ERROR(tmp_path, "fopen");
1298 for (cur = list; cur != NULL; cur = cur->next) {
1299 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1300 fputc('\n', fp) != EOF);
1303 if (fclose(fp) == EOF) {
1304 FILE_OP_ERROR(tmp_path, "fclose");
1312 if (g_rename(tmp_path, path) < 0) {
1313 FILE_OP_ERROR(path, "rename");
1325 * Save history list to the specified history file
1327 static void prefs_common_save_history(const gchar *history, GList *list)
1329 prefs_common_save_history_to_dir(NULL, history, list);
1334 void prefs_common_write_config(void)
1336 prefs_write_config(param, "Common", COMMON_RC);
1338 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1341 prefs_common_save_history(COMMAND_HISTORY,
1342 prefs_common.mime_open_cmd_history);
1343 prefs_common_save_history(QUICKSEARCH_HISTORY,
1344 prefs_common.summary_quicksearch_history);
1345 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1346 prefs_common.summary_search_from_history);
1347 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1348 prefs_common.summary_search_to_history);
1349 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1350 prefs_common.summary_search_subject_history);
1351 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1352 prefs_common.summary_search_body_history);
1353 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1354 prefs_common.summary_search_adv_condition_history);
1355 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1356 prefs_common.message_search_history);
1357 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1358 prefs_common.compose_save_to_history);
1360 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1361 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1362 prefs_common.addressbook_custom_attributes);
1365 /* make a copy of string 'in' into buffer 'out'. un-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 strlen(txt)+1, this buffer will get cleared. out's contents
1369 will always get set to a valid string, even if it's "".*/
1370 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1377 cm_return_if_fail( in != NULL );
1378 cm_return_if_fail( out != NULL );
1382 memset(out, 0, strlen(in)+1);
1383 while (*i != '\0') {
1384 if (*i == '\\' && *(i+1) == 'n') {
1387 } else if (*i == '\\' && *(i+1) == 't') {
1390 } else if (*i == '\\' && *(i+1) == '\\') {
1401 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1402 both 'in' and 'out' must be non-NULL.
1403 'out' must be a pointer to a buffer whose size is at least equal
1404 to 2*strlen(txt)+1. out's contents will always get set to a valid
1405 string, even if it's "". */
1406 void pref_get_escaped_pref(gchar *out, const gchar *in)
1413 cm_return_if_fail( in != NULL );
1414 cm_return_if_fail( out != NULL );
1418 while (*i != '\0') {
1422 } else if (*i == '\t') {
1425 } else if (*i == '\\') {
1436 /* set the contents of a textview widget from the internal \-escaped
1437 representation of a pref string. both txt and textview must be non-NULL. */
1438 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1440 GtkTextBuffer *buffer;
1443 cm_return_if_fail( textview != NULL );
1445 buffer = gtk_text_view_get_buffer(textview);
1448 gtk_text_buffer_set_text(buffer, "", -1);
1450 out = g_malloc(strlen(txt)+1);
1452 pref_get_unescaped_pref(out, txt);
1454 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1459 /* set the contents of a gtkentry widget from the internal \-escaped
1460 representation of a pref string. both txt and entry must be non-NULL. */
1461 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1465 cm_return_if_fail( entry != NULL );
1467 gtk_entry_set_text(entry, "");
1469 out = g_malloc(strlen(txt)+1);
1471 pref_get_unescaped_pref(out, txt);
1473 gtk_entry_set_text(entry, out?out:"");
1478 /* get the \-escaped internal representation of a pref from the contents of
1479 a textview widget. textview must be non-NULL. */
1480 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1482 GtkTextBuffer *buffer;
1483 GtkTextIter start, end;
1486 cm_return_val_if_fail( textview != NULL, "" );
1488 buffer = gtk_text_view_get_buffer(textview);
1489 gtk_text_buffer_get_start_iter(buffer, &start);
1490 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1491 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1492 out = malloc(2*strlen(tmp)+1);
1494 pref_get_escaped_pref(out, tmp);
1500 /* get the \-escaped internal representation of a pref from the contents of
1501 a gtkentry widget. entry must be non-NULL. */
1502 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1506 cm_return_val_if_fail( entry != NULL, "" );
1508 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1509 out = malloc(2*strlen(tmp)+1);
1512 pref_get_escaped_pref(out, tmp);
1518 /* ugly hack to be able to get this pref from ssl_certificate.c */
1519 gboolean prefs_common_unsafe_ssl_certs(void)
1521 return prefs_common.unsafe_ssl_certs;
1524 gboolean prefs_common_enable_log_standard(void)
1526 return prefs_common.enable_log_standard;
1529 gboolean prefs_common_enable_log_warning(void)
1531 return prefs_common.enable_log_warning;
1533 gboolean prefs_common_enable_log_error(void)
1535 return prefs_common.enable_log_error;
1537 gboolean prefs_common_enable_log_status(void)
1539 return prefs_common.enable_log_status;
1543 const gchar *prefs_common_get_data_root(void)
1545 if (prefs_common.data_root && *prefs_common.data_root)
1546 return prefs_common.data_root;
1552 return the translated name of a header, if the translate_header option is
1553 set, otherwise return the untranslated header name (header_name itself).
1554 this function is provided for convenience, it's an interface to
1555 prefs_common.trans_hdr.
1556 works with header names either with or without trailing colon, provided
1557 that gettext found such header name in the sources (they should all be
1558 found in src/gtk/headers.h anyway).
1560 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1562 if (header_name == NULL || *header_name == '\0')
1565 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1568 const gchar *prefs_common_get_uri_cmd(void)
1575 if (!prefs_common.cmds_use_system_default)
1576 return prefs_common.uri_cmd;
1578 tmp = g_find_program_in_path("xdg-open");
1580 return prefs_common.uri_cmd;
1583 return "xdg-open %s";
1587 const gchar *prefs_common_get_ext_editor_cmd(void)
1589 return prefs_common.ext_editor_cmd;
1590 #if 0 /* we should do that, but it detaches the editor and breaks
1591 compose.c's external composition. */
1594 if (!prefs_common.cmds_use_system_default)
1595 return prefs_common.ext_editor_cmd;
1597 tmp = g_find_program_in_path("xdg-open");
1599 return prefs_common.ext_editor_cmd;
1602 return "xdg-open %s";
1606 gboolean prefs_common_get_use_shred(void)
1608 return prefs_common.use_shred;
1611 gboolean prefs_common_get_flush_metadata (void)
1613 return prefs_common.flush_metadata;
1616 PrefsCommon *prefs_common_get_prefs(void)
1618 return &prefs_common;