2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
27 #include <glib/gi18n.h>
29 #include <gdk/gdkkeysyms.h>
34 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "mainwindow.h"
45 #include "summaryview.h"
46 #include "folderview.h"
47 #include "messageview.h"
48 #include "manage_window.h"
54 #include "alertpanel.h"
58 #include "folderview.h"
59 #include "stock_pixmap.h"
60 #include "prefswindow.h"
61 #include "colorlabel.h"
62 #include "addrcustomattr.h"
70 PrefsCommon prefs_common;
76 * In the Windows version prefs_common contains
77 * - the non-OS-specific settings of the "Common" section and
78 * - the OS-specific settings of the "CommonWin32" section
79 * The OS-specific settings of the "Common" section are not used
80 * but saved in prefs_unix.
83 # define SPECIFIC_PREFS prefs_unix
85 static PrefsCommon prefs_unix;
87 static PrefParam param_os_specific[] = {
90 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
91 {"newmail_notify_cmd", "",
92 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
95 {"widget_font_gtk2", NULL,
96 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
97 {"message_font_gtk2", "Monospace 9",
98 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
99 {"print_font_gtk2", "Monospace 9",
100 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
101 {"small_font_gtk2", "Sans 9",
102 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
103 {"normal_font_gtk2", "Sans 9",
104 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
105 {"bold_font_gtk2", "Sans 9 Bold",
106 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
108 {"attach_save_directory", NULL,
109 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
110 {"attach_load_directory", NULL,
111 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
114 {"mime_textviewer", NULL,
115 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
116 {"mime_open_command", "notepad '%s'",
117 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
120 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
121 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
124 {"uri_open_command", NULL,
125 &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
126 {"print_command", "notepad /p %s",
127 &prefs_common.print_cmd, P_STRING, NULL, NULL, NULL},
128 {"ext_editor_command", "notepad %s",
129 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
131 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
134 # define SPECIFIC_PREFS prefs_common
138 parameter name, default value, pointer to the prefs variable, data type,
139 pointer to the widget pointer,
140 pointer to the function for data setting,
141 pointer to the function for widget setting
144 static PrefParam param[] = {
146 {"data_root", "", &prefs_common.data_root, P_STRING,
150 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
152 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
155 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
157 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
159 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
161 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
162 P_BOOL, NULL, NULL, NULL},
163 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
164 P_BOOL, NULL, NULL, NULL},
165 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
166 P_BOOL, NULL, NULL, NULL},
167 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
168 P_BOOL, NULL, NULL, NULL},
169 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
172 {"maemo_show_led", "TRUE", &prefs_common.maemo_show_led, P_BOOL,
174 {"maemo_play_sound", "FALSE", &prefs_common.maemo_play_sound, P_BOOL,
176 {"maemo_show_banner", "FALSE", &prefs_common.maemo_show_banner, P_BOOL,
179 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
181 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
183 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
185 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
186 P_BOOL, NULL, NULL, NULL},
187 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
188 P_BOOL, NULL, NULL, NULL},
191 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
193 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
194 P_BOOL, NULL, NULL, NULL},
196 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
199 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
202 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
204 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
207 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
209 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
211 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
214 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
215 P_BOOL, NULL, NULL, NULL},
218 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
220 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
221 P_BOOL, NULL, NULL, NULL},
222 {"redirect_keep_from", "FALSE",
223 &prefs_common.redirect_keep_from, P_BOOL,
225 {"undo_level", "50", &prefs_common.undolevels, P_INT,
227 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
229 {"compose_subject_format", "",
230 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
231 {"compose_body_format", N_("Hello,\\n"),
232 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
234 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
236 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
238 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
240 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
242 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
244 {"autosave", "TRUE", &prefs_common.autosave,
245 P_BOOL, NULL, NULL, NULL},
246 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
249 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
251 {"dictionary", "", &prefs_common.dictionary, P_STRING,
253 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
255 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
257 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
259 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
260 P_BOOL, NULL, NULL, NULL},
261 {"misspelled_color", "#ff0000", &prefs_common.misspelled_col, P_COLOR,
263 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
266 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
268 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
271 /* Account autoselection */
272 {"reply_account_autoselect", "TRUE",
273 &prefs_common.reply_account_autosel, P_BOOL,
275 {"forward_account_autoselect", "TRUE",
276 &prefs_common.forward_account_autosel, P_BOOL,
278 {"reedit_account_autoselect", "TRUE",
279 &prefs_common.reedit_account_autosel, P_BOOL,
282 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
286 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
289 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
294 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
296 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
297 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
299 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
301 {"forward_quote_format",
302 N_("\\n\\nBegin forwarded message:\\n\\n"
303 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
304 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
305 &prefs_common.fw_quotefmt, P_STRING,
307 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
311 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
312 {"widget_font", NULL,
313 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
314 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
315 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
317 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
318 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
319 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
320 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
321 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
325 {"widget_font_gtk2", NULL,
326 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
327 {"message_font_gtk2", "Monospace 9",
328 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
329 {"print_font_gtk2", "Monospace 9",
330 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
331 {"small_font_gtk2", "Sans 9",
332 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
333 {"normal_font_gtk2", "Sans 9",
334 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
335 {"bold_font_gtk2", "Sans Bold 9",
336 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
338 {"widget_font_gtk2", NULL,
339 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
340 {"message_font_gtk2", "Monospace 8",
341 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
342 {"print_font_gtk2", "Monospace 8",
343 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
344 {"small_font_gtk2", "Sans 8",
345 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
346 {"normal_font_gtk2", "Sans 8",
347 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
348 {"bold_font_gtk2", "Sans Bold 8",
349 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
352 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
354 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
358 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
360 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
362 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
364 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
366 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
368 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
370 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
372 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
374 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
376 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
378 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
380 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
382 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
384 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
386 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
388 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
390 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
392 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
394 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
396 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
398 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
400 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
402 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
404 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
406 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
408 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
410 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
412 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
414 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
416 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
420 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
422 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
424 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
427 {"display_folder_unread_num", "0",
428 &prefs_common.display_folder_unread, P_INT,
430 {"newsgroup_abbrev_len", "16",
431 &prefs_common.ng_abbrev_len, P_INT,
434 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
437 /* Display: Summary View */
438 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
440 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
442 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
443 P_STRING, NULL, NULL, NULL},
445 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
448 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
451 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
454 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
457 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
459 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
462 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
464 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
467 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
469 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
473 {"summary_col_show_mark", "TRUE",
474 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
475 {"summary_col_show_unread", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_subject", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_from", "TRUE",
480 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_to", "FALSE",
482 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_date", "TRUE",
484 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_mime", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_size", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_number", "FALSE",
490 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_score", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_locked", "FALSE",
494 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_tags", "FALSE",
496 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
498 {"summary_col_pos_mark", "0",
499 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
500 {"summary_col_pos_unread", "1",
501 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_mime", "2",
503 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_subject", "3",
505 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_from", "4",
507 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_date", "5",
509 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_size", "6",
511 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_number", "7",
513 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_score", "8",
515 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_locked", "9",
517 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_to", "10",
519 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_tags", "11",
521 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
523 {"summary_col_size_mark", "10",
524 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
525 {"summary_col_size_unread", "13",
526 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
527 {"summary_col_size_mime", "10",
528 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_subject", "200",
531 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_from", "120",
533 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_to", "120",
535 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_subject", "300",
538 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_from", "150",
540 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_to", "150",
542 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_date", "118",
546 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_size", "45",
548 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_number", "40",
550 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_score", "40",
552 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_locked", "13",
554 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_tags", "150",
556 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
559 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
561 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
563 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
565 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
567 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
570 {"folder_col_show_folder", "TRUE",
571 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
572 {"folder_col_show_new", "TRUE",
573 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
574 {"folder_col_show_unread", "TRUE",
575 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
576 {"folder_col_show_total", "TRUE",
577 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
579 {"folder_col_pos_folder", "0",
580 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
581 {"folder_col_pos_new", "1",
582 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
583 {"folder_col_pos_unread", "2",
584 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
585 {"folder_col_pos_total", "3",
586 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
589 {"folder_col_size_folder", "120",
590 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
591 {"folder_col_size_new", "32",
592 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
593 {"folder_col_size_unread", "32",
594 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
595 {"folder_col_size_total", "32",
596 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
598 {"folder_col_size_folder", "400",
599 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_new", "32",
601 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_unread", "32",
603 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
604 {"folder_col_size_total", "32",
605 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
607 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
609 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
612 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
614 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
616 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
618 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
620 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
623 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
625 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
627 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
629 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
631 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
633 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
635 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
638 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
640 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
642 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
644 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
646 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
648 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
650 {"compose_width", "600", &prefs_common.compose_width, P_INT,
652 {"compose_height", "560", &prefs_common.compose_height, P_INT,
655 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
657 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
659 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
661 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
663 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
665 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
667 {"compose_width", "700", &prefs_common.compose_width, P_INT,
669 {"compose_height", "470", &prefs_common.compose_height, P_INT,
672 {"compose_x", "0", &prefs_common.compose_x, P_INT,
674 {"compose_y", "0", &prefs_common.compose_y, P_INT,
677 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
680 {"quote_level1_color", "#0000b3", &prefs_common.quote_level1_col, P_COLOR,
682 {"quote_level2_color", "#0000b3", &prefs_common.quote_level2_col, P_COLOR,
684 {"quote_level3_color", "#0000b3", &prefs_common.quote_level3_col, P_COLOR,
686 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
688 {"quote_level1_bgcolor", "#cccccc", &prefs_common.quote_level1_bgcol, P_COLOR,
690 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.quote_level2_bgcol, P_COLOR,
692 {"quote_level3_bgcolor", "#dddddd", &prefs_common.quote_level3_bgcol, P_COLOR,
694 {"uri_color", "#007f00", &prefs_common.uri_col, P_COLOR,
696 {"emphasis_color", "#0000cf", &prefs_common.emphasis_col, P_COLOR,
698 {"target_folder_color", "#da1cca", &prefs_common.tgt_folder_col, P_COLOR,
700 {"signature_color", "#797979", &prefs_common.signature_col, P_COLOR,
702 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
703 P_BOOL, NULL, NULL, NULL},
705 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
706 P_BOOL, NULL, NULL, NULL},
707 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
709 {"display_xface", "TRUE", &prefs_common.display_xface,
710 P_BOOL, NULL, NULL, NULL},
711 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
713 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
715 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
717 {"line_space", "2", &prefs_common.line_space, P_INT,
719 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
722 {"enable_smooth_scroll", "FALSE",
723 &prefs_common.enable_smooth_scroll, P_BOOL,
725 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
727 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
729 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
732 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
735 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
737 {"attach_save_directory", NULL,
738 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
739 {"attach_load_directory", NULL,
740 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
743 {"mime_textviewer", NULL,
744 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
745 {"mime_open_command", "gedit '%s'",
746 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
750 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
753 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
756 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
757 NULL, NULL, NULL}, */
758 {"always_show_message_when_selected", "0",
759 &prefs_common.always_show_msg,
760 P_ENUM, NULL, NULL, NULL},
761 {"select_on_entry", "3", &prefs_common.select_on_entry,
762 P_ENUM, NULL, NULL, NULL},
763 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
764 P_BOOL, NULL, NULL, NULL},
766 /* do it SUMMARY_OPEN_ACTIONS-1 times */
767 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
769 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
771 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
773 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
775 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
777 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
779 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
782 {"mark_as_read_on_new_window", "FALSE",
783 &prefs_common.mark_as_read_on_new_window,
784 P_BOOL, NULL, NULL, NULL},
785 {"mark_as_read_delay", "0",
786 &prefs_common.mark_as_read_delay, P_INT,
788 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
790 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
793 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
794 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
797 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
800 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
802 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
806 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
807 P_BOOL, NULL, NULL, NULL},
808 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
809 P_INT, NULL, NULL, NULL},
810 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
811 P_INT, NULL, NULL, NULL},
814 {"uri_open_command", DEFAULT_BROWSER_CMD,
815 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
816 {"print_command", "lpr %s",
817 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
818 {"ext_editor_command", DEFAULT_EDITOR_CMD,
819 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
820 {"cmds_use_system_default", "FALSE",
821 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
822 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
823 P_BOOL, NULL, NULL, NULL},
824 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
826 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
828 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
830 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
831 P_BOOL, NULL, NULL, NULL},
832 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
834 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
837 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
840 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
844 #if defined(__OpenBSD__)
845 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
846 P_INT, NULL, NULL, NULL},
848 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
849 P_INT, NULL, NULL, NULL},
851 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
853 {"important_score", "1", &prefs_common.important_score, P_INT,
856 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
858 {"log_length", "500", &prefs_common.loglength, P_INT,
861 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
863 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
865 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
867 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
870 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
872 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
874 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
876 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
879 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
881 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
883 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
885 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
887 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
889 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
891 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
893 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
896 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
898 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
900 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
902 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
904 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
906 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
908 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
910 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
912 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
915 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
918 {"color_new", "#0000b3", &prefs_common.color_new, P_COLOR,
921 /* Some windows' sizes */
922 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
924 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
927 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
929 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
932 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
934 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
937 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
939 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
942 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
944 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
947 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
949 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
952 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
954 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
957 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
959 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
962 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
964 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
967 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
969 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
972 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
974 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
977 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
979 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
982 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
985 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
987 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
990 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
992 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
995 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
997 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1000 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1002 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1005 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1007 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1010 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1012 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1015 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1017 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1021 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1023 {"utf8_instead_of_locale_for_broken_mail", "0",
1024 &prefs_common.broken_are_utf8, P_INT,
1026 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1028 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1030 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1032 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1034 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1036 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1038 {"folderview_vscrollbar_policy", "0",
1039 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1041 {"textview_cursor_visible", "FALSE",
1042 &prefs_common.textview_cursor_visible, P_BOOL,
1044 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1046 #ifndef GENERIC_UMPC
1047 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1049 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1052 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1054 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1057 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1058 P_INT, NULL, NULL, NULL },
1059 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1060 P_STRING, NULL, NULL, NULL },
1061 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1062 P_BOOL, NULL, NULL, NULL },
1063 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1065 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1067 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1069 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1071 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1073 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1075 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1077 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1079 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1081 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1083 #ifndef GENERIC_UMPC
1084 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1087 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1091 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1093 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1095 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1097 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1099 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1101 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1103 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1105 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1107 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1109 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1111 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1114 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1115 P_BOOL, NULL, NULL, NULL },
1117 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1120 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1124 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1125 * Fallback to default_list if history file is not found
1127 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1128 GList *default_list)
1132 gchar buf[PREFSBUFSIZE];
1136 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1137 G_DIR_SEPARATOR_S, history,
1140 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1143 if ((fp = g_fopen(path, "rb")) == NULL) {
1144 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1146 /* returns default list if set, otherwise NULL */
1147 return default_list;
1150 while (fgets(buf, sizeof(buf), fp) != NULL) {
1152 if (buf[0] == '\0') continue;
1153 tmp = add_history(tmp, buf);
1157 tmp = g_list_reverse(tmp);
1163 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1165 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1167 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1171 * Read history list from the specified history file
1173 static GList *prefs_common_read_history(const gchar *history)
1175 return prefs_common_read_history_from_dir(NULL, history);
1178 void prefs_common_read_config(void)
1183 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1184 prefs_read_config(param, "Common", rcpath, NULL);
1186 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1191 tmp = g_strdup(gettext(prefs_common.date_format));
1192 g_free(prefs_common.date_format);
1193 prefs_common.date_format = tmp;
1195 prefs_common.mime_open_cmd_history =
1196 prefs_common_read_history(COMMAND_HISTORY);
1197 prefs_common.summary_quicksearch_history =
1198 prefs_common_read_history(QUICKSEARCH_HISTORY);
1199 prefs_common.summary_search_from_history =
1200 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1201 prefs_common.summary_search_to_history =
1202 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1203 prefs_common.summary_search_subject_history =
1204 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1205 prefs_common.summary_search_body_history =
1206 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1207 prefs_common.summary_search_adv_condition_history =
1208 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1209 prefs_common.message_search_history =
1210 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1212 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1214 colorlabel_update_colortable_from_prefs();
1220 g_warning("failed to write\n"); \
1225 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1227 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1231 gchar *path, *tmp_path;
1234 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1235 G_DIR_SEPARATOR_S, history,
1238 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1241 tmp_path = g_strconcat(path, ".tmp", NULL);
1243 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1244 FILE_OP_ERROR(tmp_path, "fopen");
1248 for (cur = list; cur != NULL; cur = cur->next) {
1249 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1250 fputc('\n', fp) != EOF);
1253 if (fclose(fp) == EOF) {
1254 FILE_OP_ERROR(tmp_path, "fclose");
1262 if (g_rename(tmp_path, path) < 0) {
1263 FILE_OP_ERROR(path, "rename");
1275 * Save history list to the specified history file
1277 static void prefs_common_save_history(const gchar *history, GList *list)
1279 prefs_common_save_history_to_dir(NULL, history, list);
1284 void prefs_common_write_config(void)
1286 prefs_write_config(param, "Common", COMMON_RC);
1288 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1291 prefs_common_save_history(COMMAND_HISTORY,
1292 prefs_common.mime_open_cmd_history);
1293 prefs_common_save_history(QUICKSEARCH_HISTORY,
1294 prefs_common.summary_quicksearch_history);
1295 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1296 prefs_common.summary_search_from_history);
1297 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1298 prefs_common.summary_search_to_history);
1299 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1300 prefs_common.summary_search_subject_history);
1301 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1302 prefs_common.summary_search_body_history);
1303 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1304 prefs_common.summary_search_adv_condition_history);
1305 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1306 prefs_common.message_search_history);
1308 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1309 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1310 prefs_common.addressbook_custom_attributes);
1313 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1314 both 'in' and 'out' must be non-NULL.
1315 'out' must be a pointer to a buffer whose size is at least equal
1316 to strlen(txt)+1, this buffer will get cleared. out's contents
1317 will always get set to a valid string, even if it's "".*/
1318 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1325 g_return_if_fail( in != NULL );
1326 g_return_if_fail( out != NULL );
1330 memset(out, 0, strlen(in)+1);
1331 while (*i != '\0') {
1332 if (*i == '\\' && *(i+1) == 'n') {
1335 } else if (*i == '\\' && *(i+1) == 't') {
1338 } else if (*i == '\\' && *(i+1) == '\\') {
1349 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1350 both 'in' and 'out' must be non-NULL.
1351 'out' must be a pointer to a buffer whose size is at least equal
1352 to 2*strlen(txt)+1. out's contents will always get set to a valid
1353 string, even if it's "". */
1354 void pref_get_escaped_pref(gchar *out, const gchar *in)
1361 g_return_if_fail( in != NULL );
1362 g_return_if_fail( out != NULL );
1366 while (*i != '\0') {
1370 } else if (*i == '\t') {
1373 } else if (*i == '\\') {
1384 /* set the contents of a textview widget from the internal \-escaped
1385 representation of a pref string. both txt and textview must be non-NULL. */
1386 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1388 GtkTextBuffer *buffer;
1391 g_return_if_fail( textview != NULL );
1393 buffer = gtk_text_view_get_buffer(textview);
1396 gtk_text_buffer_set_text(buffer, "", -1);
1398 out = malloc(strlen(txt)+1);
1400 pref_get_unescaped_pref(out, txt);
1402 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1407 /* set the contents of a gtkentry widget from the internal \-escaped
1408 representation of a pref string. both txt and entry must be non-NULL. */
1409 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1413 g_return_if_fail( entry != NULL );
1415 gtk_entry_set_text(entry, "");
1417 out = malloc(strlen(txt)+1);
1419 pref_get_unescaped_pref(out, txt);
1421 gtk_entry_set_text(entry, out?out:"");
1426 /* get the \-escaped internal representation of a pref from the contents of
1427 a textview widget. textview must be non-NULL. */
1428 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1430 GtkTextBuffer *buffer;
1431 GtkTextIter start, end;
1434 g_return_val_if_fail( textview != NULL, "" );
1436 buffer = gtk_text_view_get_buffer(textview);
1437 gtk_text_buffer_get_start_iter(buffer, &start);
1438 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1439 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1440 out = malloc(2*strlen(tmp)+1);
1442 pref_get_escaped_pref(out, tmp);
1448 /* get the \-escaped internal representation of a pref from the contents of
1449 a gtkentry widget. entry must be non-NULL. */
1450 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1454 g_return_val_if_fail( entry != NULL, "" );
1456 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1457 out = malloc(2*strlen(tmp)+1);
1459 pref_get_escaped_pref(out, tmp);
1465 /* ugly hack to be able to get this pref from ssl_certificate.c */
1466 gboolean prefs_common_unsafe_ssl_certs(void)
1468 return prefs_common.unsafe_ssl_certs;
1471 gboolean prefs_common_enable_log_standard(void)
1473 return prefs_common.enable_log_standard;
1476 gboolean prefs_common_enable_log_warning(void)
1478 return prefs_common.enable_log_warning;
1480 gboolean prefs_common_enable_log_error(void)
1482 return prefs_common.enable_log_error;
1484 gboolean prefs_common_enable_log_status(void)
1486 return prefs_common.enable_log_status;
1490 const gchar *prefs_common_get_data_root(void)
1492 if (prefs_common.data_root && *prefs_common.data_root)
1493 return prefs_common.data_root;
1499 return the translated name of a header, if the translate_header option is
1500 set, otherwise return the untranslated header name (header_name itself).
1501 this function is provided for convenience, it's an interface to
1502 prefs_common.trans_hdr.
1503 works with header names either with or without trailing colon, provided
1504 that gettext found such header name in the sources (they should all be
1505 found in src/gtk/headers.h anyway).
1507 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1509 if (header_name == NULL || *header_name == '\0')
1512 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1515 const gchar *prefs_common_get_uri_cmd(void)
1519 if (!prefs_common.cmds_use_system_default)
1520 return prefs_common.uri_cmd;
1522 tmp = g_find_program_in_path("xdg-open");
1524 return prefs_common.uri_cmd;
1527 return "xdg-open %s";
1530 const gchar *prefs_common_get_ext_editor_cmd(void)
1532 return prefs_common.ext_editor_cmd;
1533 #if 0 /* we should do that, but it detaches the editor and breaks
1534 compose.c's external composition. */
1537 if (!prefs_common.cmds_use_system_default)
1538 return prefs_common.ext_editor_cmd;
1540 tmp = g_find_program_in_path("xdg-open");
1542 return prefs_common.ext_editor_cmd;
1545 return "xdg-open %s";
1549 gboolean prefs_common_get_use_shred(void)
1551 return prefs_common.use_shred;