2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2016 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/>.
21 #include "claws-features.h"
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 #ifndef USE_ALT_ADDRBOOK
63 #include "addrcustomattr.h"
72 PrefsCommon prefs_common
;
78 * In the Windows version prefs_common contains
79 * - the non-OS-specific settings of the "Common" section and
80 * - the OS-specific settings of the "CommonWin32" section
81 * The OS-specific settings of the "Common" section are not used
82 * but saved in prefs_unix.
85 # define SPECIFIC_PREFS prefs_unix
87 static PrefsCommon prefs_unix
;
89 static PrefParam param_os_specific
[] = {
92 &prefs_common
.extinc_cmd
, P_STRING
, NULL
, NULL
, NULL
},
93 {"newmail_notify_cmd", "",
94 &prefs_common
.newmail_notify_cmd
, P_STRING
, NULL
, NULL
, NULL
},
97 {"widget_font_gtk2", NULL
,
98 &prefs_common
.widgetfont
, P_STRING
, NULL
, NULL
, NULL
},
99 {"message_font_gtk2", "Monospace 9",
100 &prefs_common
.textfont
, P_STRING
, NULL
, NULL
, NULL
},
101 {"print_font_gtk2", "Monospace 9",
102 &prefs_common
.printfont
, P_STRING
, NULL
, NULL
, NULL
},
103 {"small_font_gtk2", "Sans 9",
104 &prefs_common
.smallfont
, P_STRING
, NULL
, NULL
, NULL
},
105 {"normal_font_gtk2", "Sans 9",
106 &prefs_common
.normalfont
, P_STRING
, NULL
, NULL
, NULL
},
107 {"bold_font_gtk2", "Sans 9 Bold",
108 &prefs_common
.boldfont
, P_STRING
, NULL
, NULL
, NULL
},
110 {"attach_save_directory", NULL
,
111 &prefs_common
.attach_save_dir
, P_STRING
, NULL
, NULL
, NULL
},
112 {"attach_load_directory", NULL
,
113 &prefs_common
.attach_load_dir
, P_STRING
, NULL
, NULL
, NULL
},
116 {"mime_textviewer", NULL
,
117 &prefs_common
.mime_textviewer
, P_STRING
, NULL
, NULL
, NULL
},
118 {"mime_open_command", "notepad '%s'",
119 &prefs_common
.mime_open_cmd
, P_STRING
, NULL
, NULL
, NULL
},
122 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME
,
123 &prefs_common
.pixmap_theme_path
, P_STRING
, NULL
, NULL
, NULL
},
126 {"ext_editor_command", "notepad %s",
127 &prefs_common
.ext_editor_cmd
, P_STRING
, NULL
, NULL
, NULL
},
129 {NULL
, NULL
, NULL
, P_OTHER
, NULL
, NULL
, NULL
}
132 # define SPECIFIC_PREFS prefs_common
136 parameter name, default value, pointer to the prefs variable, data type,
137 pointer to the widget pointer,
138 pointer to the function for data setting,
139 pointer to the function for widget setting
142 static PrefParam param
[] = {
143 {"config_version", "0",
144 &prefs_common
.config_version
, P_INT
, NULL
, NULL
, NULL
},
147 {"use_ext_inc", "FALSE", &prefs_common
.use_extinc
, P_BOOL
,
149 {"ext_inc_path", DEFAULT_INC_PATH
, &SPECIFIC_PREFS
.extinc_cmd
, P_STRING
,
152 {"autochk_newmail", "FALSE", &prefs_common
.autochk_newmail
, P_BOOL
,
154 {"autochk_interval", "600", &prefs_common
.autochk_itv
, P_INT
,
156 {"check_on_startup", "FALSE", &prefs_common
.chk_on_startup
, P_BOOL
,
158 {"open_inbox_on_inc", "FALSE", &prefs_common
.open_inbox_on_inc
,
159 P_BOOL
, NULL
, NULL
, NULL
},
160 {"scan_all_after_inc", "FALSE", &prefs_common
.scan_all_after_inc
,
161 P_BOOL
, NULL
, NULL
, NULL
},
162 {"newmail_notify_manu", "FALSE", &prefs_common
.newmail_notify_manu
,
163 P_BOOL
, NULL
, NULL
, NULL
},
164 {"newmail_notify_auto", "FALSE", &prefs_common
.newmail_notify_auto
,
165 P_BOOL
, NULL
, NULL
, NULL
},
166 {"newmail_notify_cmd", "", &SPECIFIC_PREFS
.newmail_notify_cmd
, P_STRING
,
168 {"receive_dialog_mode", "2", &prefs_common
.recv_dialog_mode
, P_ENUM
,
170 {"receivewin_width", "460", &prefs_common
.receivewin_width
, P_INT
,
172 {"receivewin_height", "-1", &prefs_common
.receivewin_height
, P_INT
,
174 {"no_receive_error_panel", "FALSE", &prefs_common
.no_recv_err_panel
,
175 P_BOOL
, NULL
, NULL
, NULL
},
176 {"close_receive_dialog", "TRUE", &prefs_common
.close_recv_dialog
,
177 P_BOOL
, NULL
, NULL
, NULL
},
180 {"save_message", "TRUE", &prefs_common
.savemsg
, P_BOOL
,
182 {"confirm_send_queued_messages", "FALSE", &prefs_common
.confirm_send_queued_messages
,
183 P_BOOL
, NULL
, NULL
, NULL
},
185 {"send_dialog_mode", "0", &prefs_common
.send_dialog_invisible
, P_BOOL
,
188 {"send_dialog_mode", "1", &prefs_common
.send_dialog_invisible
, P_BOOL
,
191 {"sendwin_width", "460", &prefs_common
.sendwin_width
, P_INT
,
193 {"sendwin_height", "-1", &prefs_common
.sendwin_height
, P_INT
,
196 {"outgoing_charset", CS_AUTO
, &prefs_common
.outgoing_charset
, P_STRING
,
198 {"encoding_method", "0", &prefs_common
.encoding_method
, P_ENUM
,
200 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common
.outgoing_fallback_to_ascii
, P_BOOL
,
202 {"rewrite_first_from", "TRUE", &prefs_common
.rewrite_first_from
,
203 P_BOOL
, NULL
, NULL
, NULL
},
204 {"warn_empty_subj", "TRUE", &prefs_common
.warn_empty_subj
,
205 P_BOOL
, NULL
, NULL
, NULL
},
206 {"hide_timezone", "FALSE", &prefs_common
.hide_timezone
,
207 P_BOOL
, NULL
, NULL
, NULL
},
208 {"allow_jisx0201_kana", "FALSE", &prefs_common
.allow_jisx0201_kana
,
209 P_BOOL
, NULL
, NULL
, NULL
},
212 {"auto_ext_editor", "FALSE", &prefs_common
.auto_exteditor
, P_BOOL
,
214 {"forward_as_attachment", "FALSE", &prefs_common
.forward_as_attachment
,
215 P_BOOL
, NULL
, NULL
, NULL
},
216 {"redirect_keep_from", "FALSE",
217 &prefs_common
.redirect_keep_from
, P_BOOL
,
219 {"undo_level", "50", &prefs_common
.undolevels
, P_INT
,
221 {"compose_with_format", "FALSE", &prefs_common
.compose_with_format
, P_BOOL
,
223 {"compose_subject_format", "",
224 &prefs_common
.compose_subject_format
, P_STRING
, NULL
, NULL
, NULL
},
225 {"compose_body_format", N_("Hello,\\n"),
226 &prefs_common
.compose_body_format
, P_STRING
, NULL
, NULL
, NULL
},
227 {"show_compose_margin", "FALSE", &prefs_common
.show_compose_margin
, P_BOOL
,
229 {"type_any_header", "FALSE", &prefs_common
.type_any_header
, 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 {"autosave_encrypted", "FALSE", &prefs_common
.autosave_encrypted
,
250 P_BOOL
, NULL
, NULL
, NULL
},
251 {"warn_large_insert", "TRUE", &prefs_common
.warn_large_insert
,
252 P_BOOL
, NULL
, NULL
, NULL
},
253 {"warn_large_insert_size", "500", &prefs_common
.warn_large_insert_size
,
254 P_INT
, NULL
, NULL
, NULL
},
256 {"enable_aspell", "TRUE", &prefs_common
.enable_aspell
, P_BOOL
,
258 {"dictionary", "", &prefs_common
.dictionary
, P_STRING
,
260 {"alt_dictionary", "", &prefs_common
.alt_dictionary
, P_STRING
,
262 {"use_alternate_dict", "FALSE", &prefs_common
.use_alternate
, P_BOOL
,
264 {"check_while_typing", "TRUE", &prefs_common
.check_while_typing
, P_BOOL
,
266 {"recheck_when_changing_dict", "TRUE", &prefs_common
.recheck_when_changing_dict
,
267 P_BOOL
, NULL
, NULL
, NULL
},
268 {"misspelled_color", "#ff0000", &prefs_common
.misspelled_col
, P_COLOR
,
270 {"use_both_dicts", "FALSE", &prefs_common
.use_both_dicts
, P_BOOL
,
273 {"reply_with_quote", "TRUE", &prefs_common
.reply_with_quote
, P_BOOL
,
275 {"compose_dnd_insert_or_attach", "0", &prefs_common
.compose_dnd_mode
, P_ENUM
,
278 /* Account autoselection */
279 {"reply_account_autoselect", "TRUE",
280 &prefs_common
.reply_account_autosel
, P_BOOL
,
282 {"forward_account_autoselect", "TRUE",
283 &prefs_common
.forward_account_autosel
, P_BOOL
,
285 {"reedit_account_autoselect", "TRUE",
286 &prefs_common
.reedit_account_autosel
, P_BOOL
,
289 {"default_reply_list", "TRUE", &prefs_common
.default_reply_list
, P_BOOL
,
293 {"show_ruler", "TRUE", &prefs_common
.show_ruler
, P_BOOL
,
296 {"show_ruler", "FALSE", &prefs_common
.show_ruler
, P_BOOL
,
301 {"reply_quote_mark", "> ", &prefs_common
.quotemark
, P_STRING
,
303 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
304 &prefs_common
.quotefmt
, P_STRING
, NULL
, NULL
, NULL
},
306 {"forward_quote_mark", "> ", &prefs_common
.fw_quotemark
, P_STRING
,
308 {"forward_quote_format",
309 N_("\\n\\nBegin forwarded message:\\n\\n"
310 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
311 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
312 &prefs_common
.fw_quotefmt
, P_STRING
,
314 {"quote_chars", ">", &prefs_common
.quote_chars
, P_STRING
,
318 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
319 {"widget_font", NULL
,
320 &prefs_common
.widgetfont_gtk1
, P_STRING
, NULL
, NULL
, NULL
},
321 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
322 &prefs_common
.textfont_gtk1
, P_STRING
, NULL
, NULL
, NULL
},
323 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
324 &prefs_common
.smallfont_gtk1
, P_STRING
, NULL
, NULL
, NULL
},
325 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
326 &prefs_common
.boldfont_gtk1
, P_STRING
, NULL
, NULL
, NULL
},
327 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
328 &prefs_common
.normalfont_gtk1
, P_STRING
, NULL
, NULL
, NULL
},
332 {"widget_font_gtk2", NULL
,
333 &SPECIFIC_PREFS
.widgetfont
, P_STRING
, NULL
, NULL
, NULL
},
334 {"message_font_gtk2", "Monospace 9",
335 &SPECIFIC_PREFS
.textfont
, P_STRING
, NULL
, NULL
, NULL
},
336 {"print_font_gtk2", "Monospace 9",
337 &SPECIFIC_PREFS
.printfont
, P_STRING
, NULL
, NULL
, NULL
},
338 {"small_font_gtk2", "Sans 9",
339 &SPECIFIC_PREFS
.smallfont
, P_STRING
, NULL
, NULL
, NULL
},
340 {"normal_font_gtk2", "Sans 9",
341 &SPECIFIC_PREFS
.normalfont
, P_STRING
, NULL
, NULL
, NULL
},
342 {"bold_font_gtk2", "Sans Bold 9",
343 &SPECIFIC_PREFS
.boldfont
, P_STRING
, NULL
, NULL
, NULL
},
345 {"widget_font_gtk2", NULL
,
346 &SPECIFIC_PREFS
.widgetfont
, P_STRING
, NULL
, NULL
, NULL
},
347 {"message_font_gtk2", "Monospace 8",
348 &SPECIFIC_PREFS
.textfont
, P_STRING
, NULL
, NULL
, NULL
},
349 {"print_font_gtk2", "Monospace 8",
350 &SPECIFIC_PREFS
.printfont
, P_STRING
, NULL
, NULL
, NULL
},
351 {"small_font_gtk2", "Sans 8",
352 &SPECIFIC_PREFS
.smallfont
, P_STRING
, NULL
, NULL
, NULL
},
353 {"normal_font_gtk2", "Sans 8",
354 &SPECIFIC_PREFS
.normalfont
, P_STRING
, NULL
, NULL
, NULL
},
355 {"bold_font_gtk2", "Sans Bold 8",
356 &SPECIFIC_PREFS
.boldfont
, P_STRING
, NULL
, NULL
, NULL
},
359 {"use_different_print_font", "FALSE", &prefs_common
.use_different_print_font
, P_BOOL
,
361 {"derive_from_normal_font", "TRUE", &prefs_common
.derive_from_normal_font
, P_BOOL
,
365 {"custom_color1", "#ff9900", &prefs_common
.custom_colorlabel
[0].color
, P_COLOR
,
367 {"custom_colorlabel1", N_("Orange"), &prefs_common
.custom_colorlabel
[0].label
, P_STRING
,
369 {"custom_color2", "#ff0000", &prefs_common
.custom_colorlabel
[1].color
, P_COLOR
,
371 {"custom_colorlabel2", N_("Red"), &prefs_common
.custom_colorlabel
[1].label
, P_STRING
,
373 {"custom_color3", "#ff66ff", &prefs_common
.custom_colorlabel
[2].color
, P_COLOR
,
375 {"custom_colorlabel3", N_("Pink"), &prefs_common
.custom_colorlabel
[2].label
, P_STRING
,
377 {"custom_color4", "#00ccff", &prefs_common
.custom_colorlabel
[3].color
, P_COLOR
,
379 {"custom_colorlabel4", N_("Sky blue"), &prefs_common
.custom_colorlabel
[3].label
, P_STRING
,
381 {"custom_color5", "#0000ff", &prefs_common
.custom_colorlabel
[4].color
, P_COLOR
,
383 {"custom_colorlabel5", N_("Blue"), &prefs_common
.custom_colorlabel
[4].label
, P_STRING
,
385 {"custom_color6", "#009900", &prefs_common
.custom_colorlabel
[5].color
, P_COLOR
,
387 {"custom_colorlabel6", N_("Green"), &prefs_common
.custom_colorlabel
[5].label
, P_STRING
,
389 {"custom_color7", "#663333", &prefs_common
.custom_colorlabel
[6].color
, P_COLOR
,
391 {"custom_colorlabel7", N_("Brown"), &prefs_common
.custom_colorlabel
[6].label
, P_STRING
,
393 {"custom_color8", "#aaaaaa", &prefs_common
.custom_colorlabel
[7].color
, P_COLOR
,
395 {"custom_colorlabel8", N_("Grey"), &prefs_common
.custom_colorlabel
[7].label
, P_STRING
,
397 {"custom_color9", "#c07254", &prefs_common
.custom_colorlabel
[8].color
, P_COLOR
,
399 {"custom_colorlabel9", N_("Light brown"), &prefs_common
.custom_colorlabel
[8].label
, P_STRING
,
401 {"custom_color10", "#c00000", &prefs_common
.custom_colorlabel
[9].color
, P_COLOR
,
403 {"custom_colorlabel10", N_("Dark red"), &prefs_common
.custom_colorlabel
[9].label
, P_STRING
,
405 {"custom_color11", "#cc1074", &prefs_common
.custom_colorlabel
[10].color
, P_COLOR
,
407 {"custom_colorlabel11", N_("Dark pink"), &prefs_common
.custom_colorlabel
[10].label
, P_STRING
,
409 {"custom_color12", "#5094cd", &prefs_common
.custom_colorlabel
[11].color
, P_COLOR
,
411 {"custom_colorlabel12", N_("Steel blue"), &prefs_common
.custom_colorlabel
[11].label
, P_STRING
,
413 {"custom_color13", "#ffd500", &prefs_common
.custom_colorlabel
[12].color
, P_COLOR
,
415 {"custom_colorlabel13", N_("Gold"), &prefs_common
.custom_colorlabel
[12].label
, P_STRING
,
417 {"custom_color14", "#00d800", &prefs_common
.custom_colorlabel
[13].color
, P_COLOR
,
419 {"custom_colorlabel14", N_("Bright green"), &prefs_common
.custom_colorlabel
[13].label
, P_STRING
,
421 {"custom_color15", "#c060c0", &prefs_common
.custom_colorlabel
[14].color
, P_COLOR
,
423 {"custom_colorlabel15", N_("Magenta"), &prefs_common
.custom_colorlabel
[14].label
, P_STRING
,
427 {"display_image", "TRUE", &prefs_common
.display_img
, P_BOOL
,
429 {"resize_image", "TRUE", &prefs_common
.resize_img
, P_BOOL
,
431 {"inline_image", "TRUE", &prefs_common
.inline_img
, P_BOOL
,
434 {"display_folder_unread_num", "0",
435 &prefs_common
.display_folder_unread
, P_INT
,
437 {"newsgroup_abbrev_len", "16",
438 &prefs_common
.ng_abbrev_len
, P_INT
,
441 {"translate_header", "FALSE", &prefs_common
.trans_hdr
, P_BOOL
,
444 /* Display: Summary View */
445 {"default_sort_key", "3", &prefs_common
.default_sort_key
, P_ENUM
,
447 {"default_sort_type", "1", &prefs_common
.default_sort_type
, P_ENUM
,
449 {"use_address_book", "FALSE", &prefs_common
.use_addr_book
, P_BOOL
,
451 {"thread_by_subject", "TRUE", &prefs_common
.thread_by_subject
, P_BOOL
,
453 {"date_format", N_("%x(%a) %H:%M"), &prefs_common
.date_format
,
454 P_STRING
, NULL
, NULL
, NULL
},
455 {"msgview_date_format", "FALSE", &prefs_common
.msgview_date_format
, P_BOOL
,
458 {"next_on_delete", "FALSE", &prefs_common
.next_on_delete
, P_BOOL
,
461 {"bold_unread", "TRUE", &prefs_common
.bold_unread
, P_BOOL
,
464 {"enable_thread", "TRUE", &prefs_common
.enable_thread
, P_BOOL
,
467 {"toolbar_style", "3", &prefs_common
.toolbar_style
, P_ENUM
,
470 {"toolbar_style", "1", &prefs_common
.toolbar_style
, P_ENUM
,
473 {"toolbar_detachable", "FALSE", &prefs_common
.toolbar_detachable
, P_BOOL
,
475 {"show_col_headers", "TRUE", &prefs_common
.show_col_headers
, P_BOOL
,
478 {"show_statusbar", "TRUE", &prefs_common
.show_statusbar
, P_BOOL
,
480 {"show_searchbar", "TRUE", &prefs_common
.show_searchbar
, P_BOOL
,
483 {"show_statusbar", "FALSE", &prefs_common
.show_statusbar
, P_BOOL
,
485 {"show_searchbar", "FALSE", &prefs_common
.show_searchbar
, P_BOOL
,
489 {"summary_col_show_mark", "TRUE",
490 &prefs_common
.summary_col_visible
[S_COL_MARK
], P_BOOL
, NULL
, NULL
, NULL
},
491 {"summary_col_show_unread", "TRUE",
492 &prefs_common
.summary_col_visible
[S_COL_STATUS
], P_BOOL
, NULL
, NULL
, NULL
},
493 {"summary_col_show_subject", "TRUE",
494 &prefs_common
.summary_col_visible
[S_COL_SUBJECT
], P_BOOL
, NULL
, NULL
, NULL
},
495 {"summary_col_show_from", "TRUE",
496 &prefs_common
.summary_col_visible
[S_COL_FROM
], P_BOOL
, NULL
, NULL
, NULL
},
497 {"summary_col_show_to", "FALSE",
498 &prefs_common
.summary_col_visible
[S_COL_TO
], P_BOOL
, NULL
, NULL
, NULL
},
499 {"summary_col_show_date", "TRUE",
500 &prefs_common
.summary_col_visible
[S_COL_DATE
], P_BOOL
, NULL
, NULL
, NULL
},
501 {"summary_col_show_mime", "TRUE",
502 &prefs_common
.summary_col_visible
[S_COL_MIME
], P_BOOL
, NULL
, NULL
, NULL
},
503 {"summary_col_show_size", "TRUE",
504 &prefs_common
.summary_col_visible
[S_COL_SIZE
], P_BOOL
, NULL
, NULL
, NULL
},
505 {"summary_col_show_number", "FALSE",
506 &prefs_common
.summary_col_visible
[S_COL_NUMBER
], P_BOOL
, NULL
, NULL
, NULL
},
507 {"summary_col_show_score", "FALSE",
508 &prefs_common
.summary_col_visible
[S_COL_SCORE
], P_BOOL
, NULL
, NULL
, NULL
},
509 {"summary_col_show_locked", "FALSE",
510 &prefs_common
.summary_col_visible
[S_COL_LOCKED
], P_BOOL
, NULL
, NULL
, NULL
},
511 {"summary_col_show_tags", "FALSE",
512 &prefs_common
.summary_col_visible
[S_COL_TAGS
], P_BOOL
, NULL
, NULL
, NULL
},
514 {"summary_col_pos_mark", "0",
515 &prefs_common
.summary_col_pos
[S_COL_MARK
], P_INT
, NULL
, NULL
, NULL
},
516 {"summary_col_pos_unread", "1",
517 &prefs_common
.summary_col_pos
[S_COL_STATUS
], P_INT
, NULL
, NULL
, NULL
},
518 {"summary_col_pos_mime", "2",
519 &prefs_common
.summary_col_pos
[S_COL_MIME
], P_INT
, NULL
, NULL
, NULL
},
520 {"summary_col_pos_subject", "3",
521 &prefs_common
.summary_col_pos
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
522 {"summary_col_pos_from", "4",
523 &prefs_common
.summary_col_pos
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
524 {"summary_col_pos_date", "5",
525 &prefs_common
.summary_col_pos
[S_COL_DATE
], P_INT
, NULL
, NULL
, NULL
},
526 {"summary_col_pos_size", "6",
527 &prefs_common
.summary_col_pos
[S_COL_SIZE
], P_INT
, NULL
, NULL
, NULL
},
528 {"summary_col_pos_number", "7",
529 &prefs_common
.summary_col_pos
[S_COL_NUMBER
], P_INT
, NULL
, NULL
, NULL
},
530 {"summary_col_pos_score", "8",
531 &prefs_common
.summary_col_pos
[S_COL_SCORE
], P_INT
, NULL
, NULL
, NULL
},
532 {"summary_col_pos_locked", "9",
533 &prefs_common
.summary_col_pos
[S_COL_LOCKED
], P_INT
, NULL
, NULL
, NULL
},
534 {"summary_col_pos_to", "10",
535 &prefs_common
.summary_col_pos
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
536 {"summary_col_pos_tags", "11",
537 &prefs_common
.summary_col_pos
[S_COL_TAGS
], P_INT
, NULL
, NULL
, NULL
},
539 {"summary_col_size_mark", "10",
540 &prefs_common
.summary_col_size
[S_COL_MARK
], P_INT
, NULL
, NULL
, NULL
},
541 {"summary_col_size_unread", "13",
542 &prefs_common
.summary_col_size
[S_COL_STATUS
], P_INT
, NULL
, NULL
, NULL
},
543 {"summary_col_size_mime", "10",
544 &prefs_common
.summary_col_size
[S_COL_MIME
], P_INT
, NULL
, NULL
, NULL
},
546 {"summary_col_size_subject", "200",
547 &prefs_common
.summary_col_size
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
548 {"summary_col_size_from", "120",
549 &prefs_common
.summary_col_size
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
550 {"summary_col_size_to", "120",
551 &prefs_common
.summary_col_size
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
553 {"summary_col_size_subject", "300",
554 &prefs_common
.summary_col_size
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
555 {"summary_col_size_from", "150",
556 &prefs_common
.summary_col_size
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
557 {"summary_col_size_to", "150",
558 &prefs_common
.summary_col_size
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
561 {"summary_col_size_date", "118",
562 &prefs_common
.summary_col_size
[S_COL_DATE
], P_INT
, NULL
, NULL
, NULL
},
563 {"summary_col_size_size", "45",
564 &prefs_common
.summary_col_size
[S_COL_SIZE
], P_INT
, NULL
, NULL
, NULL
},
565 {"summary_col_size_number", "40",
566 &prefs_common
.summary_col_size
[S_COL_NUMBER
], P_INT
, NULL
, NULL
, NULL
},
567 {"summary_col_size_score", "40",
568 &prefs_common
.summary_col_size
[S_COL_SCORE
], P_INT
, NULL
, NULL
, NULL
},
569 {"summary_col_size_locked", "13",
570 &prefs_common
.summary_col_size
[S_COL_LOCKED
], P_INT
, NULL
, NULL
, NULL
},
571 {"summary_col_size_tags", "150",
572 &prefs_common
.summary_col_size
[S_COL_TAGS
], P_INT
, NULL
, NULL
, NULL
},
575 {"folderwin_x", "16", &prefs_common
.folderwin_x
, P_INT
,
577 {"folderwin_y", "16", &prefs_common
.folderwin_y
, P_INT
,
579 {"folderview_width", "270", &prefs_common
.folderview_width
, P_INT
,
581 {"folderview_height", "450", &prefs_common
.folderview_height
, P_INT
,
583 {"folderview_visible", "TRUE", &prefs_common
.folderview_visible
, P_BOOL
,
586 {"folder_col_show_folder", "TRUE",
587 &prefs_common
.folder_col_visible
[F_COL_FOLDER
], P_BOOL
, NULL
, NULL
, NULL
},
588 {"folder_col_show_new", "TRUE",
589 &prefs_common
.folder_col_visible
[F_COL_NEW
], P_BOOL
, NULL
, NULL
, NULL
},
590 {"folder_col_show_unread", "TRUE",
591 &prefs_common
.folder_col_visible
[F_COL_UNREAD
], P_BOOL
, NULL
, NULL
, NULL
},
592 {"folder_col_show_total", "TRUE",
593 &prefs_common
.folder_col_visible
[F_COL_TOTAL
], P_BOOL
, NULL
, NULL
, NULL
},
595 {"folder_col_pos_folder", "0",
596 &prefs_common
.folder_col_pos
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
597 {"folder_col_pos_new", "1",
598 &prefs_common
.folder_col_pos
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
599 {"folder_col_pos_unread", "2",
600 &prefs_common
.folder_col_pos
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
601 {"folder_col_pos_total", "3",
602 &prefs_common
.folder_col_pos
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
605 {"folder_col_size_folder", "120",
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 {"folder_col_size_folder", "400",
615 &prefs_common
.folder_col_size
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
616 {"folder_col_size_new", "32",
617 &prefs_common
.folder_col_size
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
618 {"folder_col_size_unread", "32",
619 &prefs_common
.folder_col_size
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
620 {"folder_col_size_total", "32",
621 &prefs_common
.folder_col_size
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
623 {"summaryview_width", "500", &prefs_common
.summaryview_width
, P_INT
,
625 {"summaryview_height", "244", &prefs_common
.summaryview_height
, P_INT
,
628 {"main_messagewin_x", "256", &prefs_common
.main_msgwin_x
, P_INT
,
630 {"main_messagewin_y", "210", &prefs_common
.main_msgwin_y
, P_INT
,
632 {"messageview_width", "500", &prefs_common
.msgview_width
, P_INT
,
634 {"messageview_height", "213", &prefs_common
.msgview_height
, P_INT
,
636 {"messageview_visible", "TRUE", &prefs_common
.msgview_visible
, P_BOOL
,
639 {"mainview_x", "64", &prefs_common
.mainview_x
, P_INT
,
641 {"mainview_y", "64", &prefs_common
.mainview_y
, P_INT
,
643 {"mainview_width", "500", &prefs_common
.mainview_width
, P_INT
,
645 {"mainview_height", "400", &prefs_common
.mainview_height
, P_INT
,
647 {"mainwin_x", "64", &prefs_common
.mainwin_x
, P_INT
,
649 {"mainwin_y", "64", &prefs_common
.mainwin_y
, P_INT
,
651 {"mainwin_maximised", "FALSE", &prefs_common
.mainwin_maximised
, P_BOOL
,
653 {"mainwin_fullscreen", "FALSE", &prefs_common
.mainwin_fullscreen
, P_BOOL
,
655 {"mainwin_menubar", "TRUE", &prefs_common
.mainwin_menubar
, P_BOOL
,
658 {"mainwin_width", "800", &prefs_common
.mainwin_width
, P_INT
,
660 {"mainwin_height", "600", &prefs_common
.mainwin_height
, P_INT
,
662 {"messagewin_width", "600", &prefs_common
.msgwin_width
, P_INT
,
664 {"messagewin_height", "540", &prefs_common
.msgwin_height
, P_INT
,
666 {"mimeview_tree_height", "60", &prefs_common
.mimeview_tree_height
, P_INT
,
668 {"sourcewin_width", "600", &prefs_common
.sourcewin_width
, P_INT
,
670 {"sourcewin_height", "500", &prefs_common
.sourcewin_height
, P_INT
,
672 {"compose_width", "600", &prefs_common
.compose_width
, P_INT
,
674 {"compose_height", "560", &prefs_common
.compose_height
, P_INT
,
677 {"mainwin_width", "700", &prefs_common
.mainwin_width
, P_INT
,
679 {"mainwin_height", "470", &prefs_common
.mainwin_height
, P_INT
,
681 {"messagewin_width", "700", &prefs_common
.msgwin_width
, P_INT
,
683 {"messagewin_height", "470", &prefs_common
.msgwin_height
, P_INT
,
685 {"sourcewin_width", "700", &prefs_common
.sourcewin_width
, P_INT
,
687 {"sourcewin_height", "470", &prefs_common
.sourcewin_height
, P_INT
,
689 {"compose_width", "700", &prefs_common
.compose_width
, P_INT
,
691 {"compose_height", "470", &prefs_common
.compose_height
, P_INT
,
694 {"compose_notebook_height", "130", &prefs_common
.compose_notebook_height
, P_INT
,
696 {"compose_x", "0", &prefs_common
.compose_x
, P_INT
,
698 {"compose_y", "0", &prefs_common
.compose_y
, P_INT
,
701 {"enable_color", "TRUE", &prefs_common
.enable_color
, P_BOOL
,
704 {"quote_level1_color", "#0000b3", &prefs_common
.quote_level1_col
, P_COLOR
,
706 {"quote_level2_color", "#0000b3", &prefs_common
.quote_level2_col
, P_COLOR
,
708 {"quote_level3_color", "#0000b3", &prefs_common
.quote_level3_col
, P_COLOR
,
710 {"enable_bgcolor", "FALSE", &prefs_common
.enable_bgcolor
, P_BOOL
,
712 {"quote_level1_bgcolor", "#cccccc", &prefs_common
.quote_level1_bgcol
, P_COLOR
,
714 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common
.quote_level2_bgcol
, P_COLOR
,
716 {"quote_level3_bgcolor", "#dddddd", &prefs_common
.quote_level3_bgcol
, P_COLOR
,
718 {"uri_color", "#007f00", &prefs_common
.uri_col
, P_COLOR
,
720 {"emphasis_color", "#0000cf", &prefs_common
.emphasis_col
, P_COLOR
,
722 {"target_folder_color", "#da1cca", &prefs_common
.tgt_folder_col
, P_COLOR
,
724 {"signature_color", "#797979", &prefs_common
.signature_col
, P_COLOR
,
726 {"recycle_quote_colors", "FALSE", &prefs_common
.recycle_quote_colors
,
727 P_BOOL
, NULL
, NULL
, NULL
},
729 {"default_to_color", "#000000", &prefs_common
.default_to_color
, P_COLOR
,
731 {"default_to_bgcolor", "#f5f6be", &prefs_common
.default_to_bgcolor
, P_COLOR
,
733 {"tags_color", "#000000", &prefs_common
.tags_color
, P_COLOR
,
735 {"tags_bgcolor", "#f5f6be", &prefs_common
.tags_bgcolor
, P_COLOR
,
737 {"qs_active_color", "#000000", &prefs_common
.qs_active_color
, P_COLOR
,
739 {"qs_active_bgcolor", "#f5f6be", &prefs_common
.qs_active_bgcolor
, P_COLOR
,
741 {"qs_error_color", "#000000", &prefs_common
.qs_error_color
, P_COLOR
,
743 {"qs_error_bgcolor", "#ff7070", &prefs_common
.qs_error_bgcolor
, P_COLOR
,
746 {"display_header_pane", "FALSE", &prefs_common
.display_header_pane
,
747 P_BOOL
, NULL
, NULL
, NULL
},
748 {"display_header", "TRUE", &prefs_common
.display_header
, P_BOOL
,
750 {"display_xface", "TRUE", &prefs_common
.display_xface
,
751 P_BOOL
, NULL
, NULL
, NULL
},
752 {"render_html", "TRUE", &prefs_common
.render_html
, P_BOOL
,
754 {"invoke_plugin_on_html", "FALSE", &prefs_common
.invoke_plugin_on_html
, P_BOOL
,
756 {"promote_html_part", "FALSE", &prefs_common
.promote_html_part
, P_BOOL
,
758 {"line_space", "2", &prefs_common
.line_space
, P_INT
,
760 {"never_send_retrcpt", "FALSE", &prefs_common
.never_send_retrcpt
, P_BOOL
,
763 {"enable_smooth_scroll", "FALSE",
764 &prefs_common
.enable_smooth_scroll
, P_BOOL
,
766 {"scroll_step", "1", &prefs_common
.scroll_step
, P_INT
,
768 {"scroll_half_page", "FALSE", &prefs_common
.scroll_halfpage
, P_BOOL
,
770 {"hide_quoted", "TRUE",
771 &prefs_common
.hide_quoted
, P_BOOL
,
773 {"respect_flowed_format", "FALSE", &prefs_common
.respect_flowed_format
, P_BOOL
,
775 {"show_all_headers", "FALSE", &prefs_common
.show_all_headers
, P_BOOL
,
778 {"show_other_header", "FALSE", &prefs_common
.show_other_header
, P_BOOL
,
781 {"attach_desc", "TRUE", &prefs_common
.attach_desc
, P_BOOL
,
783 {"attach_save_directory", NULL
,
784 &SPECIFIC_PREFS
.attach_save_dir
, P_STRING
, NULL
, NULL
, NULL
},
785 {"attach_load_directory", NULL
,
786 &SPECIFIC_PREFS
.attach_load_dir
, P_STRING
, NULL
, NULL
, NULL
},
789 {"mime_textviewer", NULL
,
790 &SPECIFIC_PREFS
.mime_textviewer
, P_STRING
, NULL
, NULL
, NULL
},
791 {"mime_open_command", "gedit '%s'",
792 &SPECIFIC_PREFS
.mime_open_cmd
, P_STRING
, NULL
, NULL
, NULL
},
793 {"show_inline_attachments", "TRUE",
794 &prefs_common
.show_inline_attachments
, P_BOOL
, NULL
, NULL
, NULL
},
798 {"layout_mode", "0", &prefs_common
.layout_mode
, P_INT
,
801 {"layout_mode", "5", &prefs_common
.layout_mode
, P_INT
,
804 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
805 NULL, NULL, NULL}, */
806 {"open_selected_message_on_folder_open", "FALSE",
807 &prefs_common
.open_selected_on_folder_open
,
808 P_BOOL
, NULL
, NULL
, NULL
},
809 {"always_show_message_when_selected", "0",
810 &prefs_common
.always_show_msg
,
811 P_ENUM
, NULL
, NULL
, NULL
},
812 {"select_on_entry", "3", &prefs_common
.select_on_entry
,
813 P_ENUM
, NULL
, NULL
, NULL
},
814 {"show_tooltips", "TRUE", &prefs_common
.show_tooltips
,
815 P_BOOL
, NULL
, NULL
, NULL
},
817 /* do it SUMMARY_OPEN_ACTIONS-1 times */
818 {"summary_select_prio1", "0", &prefs_common
.summary_select_prio
[0], P_ENUM
,
820 {"summary_select_prio2", "0", &prefs_common
.summary_select_prio
[1], P_ENUM
,
822 {"summary_select_prio3", "0", &prefs_common
.summary_select_prio
[2], P_ENUM
,
824 {"summary_select_prio4", "0", &prefs_common
.summary_select_prio
[3], P_ENUM
,
826 {"summary_select_prio5", "0", &prefs_common
.summary_select_prio
[4], P_ENUM
,
828 {"summary_select_prio6", "0", &prefs_common
.summary_select_prio
[5], P_ENUM
,
830 {"summary_select_prio7", "0", &prefs_common
.summary_select_prio
[6], P_ENUM
,
833 {"mark_as_read_on_new_window", "FALSE",
834 &prefs_common
.mark_as_read_on_new_window
,
835 P_BOOL
, NULL
, NULL
, NULL
},
836 {"mark_as_read_delay", "0",
837 &prefs_common
.mark_as_read_delay
, P_INT
,
839 {"immediate_execution", "TRUE", &prefs_common
.immediate_exec
, P_BOOL
,
841 {"nextunreadmsg_dialog", "1", &prefs_common
.next_unread_msg_dialog
, P_ENUM
,
843 {"summary_from_show", "0", &prefs_common
.summary_from_show
, P_ENUM
,
846 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME
,
847 &SPECIFIC_PREFS
.pixmap_theme_path
, P_STRING
,
850 {"ask_mark_all_read", "TRUE", &prefs_common
.ask_mark_all_read
, P_BOOL
,
853 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common
.ask_apply_per_account_filtering_rules
, P_BOOL
,
855 {"apply_per_account_filtering_rules", "0", &prefs_common
.apply_per_account_filtering_rules
, P_ENUM
,
859 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common
.addressbook_use_editaddress_dialog
,
860 P_BOOL
, NULL
, NULL
, NULL
},
861 {"addressbook_hpaned_pos", "-1", &prefs_common
.addressbook_hpaned_pos
,
862 P_INT
, NULL
, NULL
, NULL
},
863 {"addressbook_vpaned_pos", "-1", &prefs_common
.addressbook_vpaned_pos
,
864 P_INT
, NULL
, NULL
, NULL
},
868 {"uri_open_command", DEFAULT_BROWSER_CMD
,
869 &SPECIFIC_PREFS
.uri_cmd
, P_STRING
, NULL
, NULL
, NULL
},
871 {"gtk_theme", DEFAULT_W32_GTK_THEME
,
872 &SPECIFIC_PREFS
.gtk_theme
, P_STRING
, NULL
, NULL
, NULL
},
874 {"ext_editor_command", DEFAULT_EDITOR_CMD
,
875 &SPECIFIC_PREFS
.ext_editor_cmd
, P_STRING
, NULL
, NULL
, NULL
},
876 {"cmds_use_system_default", "TRUE",
877 &prefs_common
.cmds_use_system_default
, P_BOOL
, NULL
, NULL
, NULL
},
878 {"add_address_by_click", "FALSE", &prefs_common
.add_address_by_click
,
879 P_BOOL
, NULL
, NULL
, NULL
},
880 {"session_passwords", "FALSE", &prefs_common
.session_passwords
,
881 P_BOOL
, NULL
, NULL
, NULL
},
882 {"confirm_on_exit", "FALSE", &prefs_common
.confirm_on_exit
, P_BOOL
,
884 {"clean_trash_on_exit", "FALSE", &prefs_common
.clean_on_exit
, P_BOOL
,
886 {"ask_on_cleaning", "TRUE", &prefs_common
.ask_on_clean
, P_BOOL
,
888 {"warn_queued_on_exit", "TRUE", &prefs_common
.warn_queued_on_exit
,
889 P_BOOL
, NULL
, NULL
, NULL
},
890 {"work_offline", "FALSE", &prefs_common
.work_offline
, P_BOOL
,
892 {"summary_quicksearch_type", "0", &prefs_common
.summary_quicksearch_type
, P_INT
,
895 {"summary_quicksearch_recurse", "1", &prefs_common
.summary_quicksearch_recurse
, P_INT
,
898 {"summary_quicksearch_recurse", "0", &prefs_common
.summary_quicksearch_recurse
, P_INT
,
902 #if defined(__OpenBSD__)
903 {"io_timeout_secs", "80", &prefs_common
.io_timeout_secs
,
904 P_INT
, NULL
, NULL
, NULL
},
906 {"io_timeout_secs", "60", &prefs_common
.io_timeout_secs
,
907 P_INT
, NULL
, NULL
, NULL
},
909 {"hide_score", "-9999", &prefs_common
.kill_score
, P_INT
,
911 {"important_score", "1", &prefs_common
.important_score
, P_INT
,
914 {"clip_log", "TRUE", &prefs_common
.cliplog
, P_BOOL
,
916 {"log_length", "500", &prefs_common
.loglength
, P_INT
,
919 {"enable_log_standard", "TRUE", &prefs_common
.enable_log_standard
, P_BOOL
,
921 {"enable_log_warning", "TRUE", &prefs_common
.enable_log_warning
, P_BOOL
,
923 {"enable_log_error", "TRUE", &prefs_common
.enable_log_error
, P_BOOL
,
925 {"enable_log_status", "TRUE", &prefs_common
.enable_log_status
, P_BOOL
,
928 {"enable_log_standard", "FALSE", &prefs_common
.enable_log_standard
, P_BOOL
,
930 {"enable_log_warning", "FALSE", &prefs_common
.enable_log_warning
, P_BOOL
,
932 {"enable_log_error", "FALSE", &prefs_common
.enable_log_error
, P_BOOL
,
934 {"enable_log_status", "FALSE", &prefs_common
.enable_log_status
, P_BOOL
,
937 {"log_msg_color", "#00af00", &prefs_common
.log_msg_color
, P_COLOR
,
939 {"log_warn_color", "#af0000", &prefs_common
.log_warn_color
, P_COLOR
,
941 {"log_error_color", "#af0000", &prefs_common
.log_error_color
, P_COLOR
,
943 {"log_in_color", "#000000", &prefs_common
.log_in_color
, P_COLOR
,
945 {"log_out_color", "#0000ef", &prefs_common
.log_out_color
, P_COLOR
,
947 {"log_status_ok_color", "#00af00", &prefs_common
.log_status_ok_color
, P_COLOR
,
949 {"log_status_nok_color", "#0000af", &prefs_common
.log_status_nok_color
, P_COLOR
,
951 {"log_status_skip_color", "#aa00aa", &prefs_common
.log_status_skip_color
, P_COLOR
,
954 {"enable_filtering_debug", "FALSE", &prefs_common
.enable_filtering_debug
, P_BOOL
,
956 {"filtering_debug_level", "1", &prefs_common
.filtering_debug_level
, P_INT
,
958 {"enable_filtering_debug_inc", "TRUE", &prefs_common
.enable_filtering_debug_inc
, P_BOOL
,
960 {"enable_filtering_debug_manual", "TRUE", &prefs_common
.enable_filtering_debug_manual
, P_BOOL
,
962 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common
.enable_filtering_debug_folder_proc
, P_BOOL
,
964 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common
.enable_filtering_debug_pre_proc
, P_BOOL
,
966 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common
.enable_filtering_debug_post_proc
, P_BOOL
,
968 {"filtering_debug_clip_log", "TRUE", &prefs_common
.filtering_debug_cliplog
, P_BOOL
,
970 {"filtering_debug_log_length", "500", &prefs_common
.filtering_debug_loglength
, P_INT
,
973 {"gtk_can_change_accels", "FALSE", &prefs_common
.gtk_can_change_accels
, P_BOOL
,
976 {"color_new", "#0000b3", &prefs_common
.color_new
, P_COLOR
,
979 /* Some windows' sizes */
980 {"filteringwin_width", "500", &prefs_common
.filteringwin_width
, P_INT
,
982 {"filteringwin_height", "-1", &prefs_common
.filteringwin_height
, P_INT
,
985 {"filteringactionwin_width", "490", &prefs_common
.filteringactionwin_width
, P_INT
,
987 {"filteringactionwin_height", "-1", &prefs_common
.filteringactionwin_height
, P_INT
,
990 {"matcherwin_width", "520", &prefs_common
.matcherwin_width
, P_INT
,
992 {"matcherwin_height", "-1", &prefs_common
.matcherwin_height
, P_INT
,
995 {"templateswin_width", "480", &prefs_common
.templateswin_width
, P_INT
,
997 {"templateswin_height", "-1", &prefs_common
.templateswin_height
, P_INT
,
1000 {"actionswin_width", "486", &prefs_common
.actionswin_width
, P_INT
,
1002 {"actionswin_height", "-1", &prefs_common
.actionswin_height
, P_INT
,
1005 {"tagswin_width", "486", &prefs_common
.tagswin_width
, P_INT
,
1007 {"tagswin_height", "-1", &prefs_common
.tagswin_height
, P_INT
,
1010 {"addressbookwin_width", "520", &prefs_common
.addressbookwin_width
, P_INT
,
1012 {"addressbookwin_height", "-1", &prefs_common
.addressbookwin_height
, P_INT
,
1015 {"addressbookeditpersonwin_width", "640", &prefs_common
.addressbookeditpersonwin_width
, P_INT
,
1017 {"addressbookeditpersonwin_height", "320", &prefs_common
.addressbookeditpersonwin_height
, P_INT
,
1020 {"addressbookeditgroupwin_width", "580", &prefs_common
.addressbookeditgroupwin_width
, P_INT
,
1022 {"addressbookeditgroupwin_height", "340", &prefs_common
.addressbookeditgroupwin_height
, P_INT
,
1025 {"pluginswin_width", "-1", &prefs_common
.pluginswin_width
, P_INT
,
1027 {"pluginswin_height", "-1", &prefs_common
.pluginswin_height
, P_INT
,
1030 {"prefswin_width", "600", &prefs_common
.prefswin_width
, P_INT
,
1032 {"prefswin_height", "-1", &prefs_common
.prefswin_height
, P_INT
,
1035 {"folderitemwin_width", "500", &prefs_common
.folderitemwin_width
, P_INT
,
1037 {"folderitemwin_height", "-1", &prefs_common
.folderitemwin_height
, P_INT
,
1040 {"zero_replacement_char", "0", &prefs_common
.zero_replacement
, P_STRING
,
1043 {"editaccountwin_width", "500", &prefs_common
.editaccountwin_width
, P_INT
,
1045 {"editaccountwin_height", "-1", &prefs_common
.editaccountwin_height
, P_INT
,
1048 {"accountswin_width", "500", &prefs_common
.accountswin_width
, P_INT
,
1050 {"accountswin_height", "-1", &prefs_common
.accountswin_height
, P_INT
,
1053 {"logwin_width", "520", &prefs_common
.logwin_width
, P_INT
,
1055 {"logwin_height", "-1", &prefs_common
.logwin_height
, P_INT
,
1058 {"filtering_debugwin_width", "600", &prefs_common
.filtering_debugwin_width
, P_INT
,
1060 {"filtering_debugwin_height", "-1", &prefs_common
.filtering_debugwin_height
, P_INT
,
1063 {"folderselwin_width", "300", &prefs_common
.folderselwin_width
, P_INT
,
1065 {"folderselwin_height", "-1", &prefs_common
.folderselwin_height
, P_INT
,
1068 {"addressaddwin_width", "300", &prefs_common
.addressaddwin_width
, P_INT
,
1070 {"addressaddwin_height", "-1", &prefs_common
.addressaddwin_height
, P_INT
,
1073 {"addressbook_folderselwin_width", "300", &prefs_common
.addressbook_folderselwin_width
, P_INT
,
1075 {"addressbook_folderselwin_height", "-1", &prefs_common
.addressbook_folderselwin_height
, P_INT
,
1078 {"aboutwin_width", "450", &prefs_common
.aboutwin_width
, P_INT
,
1080 {"aboutwin_height", "500", &prefs_common
.aboutwin_height
, P_INT
,
1083 {"addrgather_width", "450", &prefs_common
.addrgather_width
, P_INT
,
1085 {"addrgather_height", "-1", &prefs_common
.addrgather_height
, P_INT
,
1088 {"news_subscribe_width", "450", &prefs_common
.news_subscribe_width
, P_INT
,
1090 {"news_subscribe_height", "400", &prefs_common
.news_subscribe_height
, P_INT
,
1094 {"warn_dnd", "1", &prefs_common
.warn_dnd
, P_INT
,
1096 {"utf8_instead_of_locale_for_broken_mail", "0",
1097 &prefs_common
.broken_are_utf8
, P_INT
,
1099 {"enable_swap_from", "FALSE", &prefs_common
.swap_from
, P_BOOL
,
1101 {"use_stripes_everywhere", "TRUE", &prefs_common
.use_stripes_everywhere
, P_BOOL
,
1103 {"use_stripes_in_summaries", "TRUE", &prefs_common
.use_stripes_in_summaries
, P_BOOL
,
1105 {"stripes_color_offset", "4000", &prefs_common
.stripes_color_offset
, P_INT
,
1107 {"enable_hscrollbar", "TRUE", &prefs_common
.enable_hscrollbar
, P_BOOL
,
1109 {"folderview_vscrollbar_policy", "0",
1110 &prefs_common
.folderview_vscrollbar_policy
, P_ENUM
,
1112 {"textview_cursor_visible", "FALSE",
1113 &prefs_common
.textview_cursor_visible
, P_BOOL
,
1115 {"hover_timeout", "500", &prefs_common
.hover_timeout
, P_INT
,
1117 #ifndef GENERIC_UMPC
1118 {"cache_max_mem_usage", "4096", &prefs_common
.cache_max_mem_usage
, P_INT
,
1120 {"cache_min_keep_time", "15", &prefs_common
.cache_min_keep_time
, P_INT
,
1123 {"cache_max_mem_usage", "4096", &prefs_common
.cache_max_mem_usage
, P_INT
,
1125 {"cache_min_keep_time", "0", &prefs_common
.cache_min_keep_time
, P_INT
,
1128 {"thread_by_subject_max_age", "10", &prefs_common
.thread_by_subject_max_age
,
1129 P_INT
, NULL
, NULL
, NULL
},
1130 {"last_opened_folder", "", &prefs_common
.last_opened_folder
,
1131 P_STRING
, NULL
, NULL
, NULL
},
1132 {"goto_last_folder_on_startup", "FALSE", &prefs_common
.goto_last_folder_on_startup
,
1133 P_BOOL
, NULL
, NULL
, NULL
},
1134 {"summary_quicksearch_sticky", "1", &prefs_common
.summary_quicksearch_sticky
, P_INT
,
1136 {"summary_quicksearch_dynamic", "0", &prefs_common
.summary_quicksearch_dynamic
, P_INT
,
1138 {"summary_quicksearch_autorun", "0", &prefs_common
.summary_quicksearch_autorun
, P_INT
,
1140 {"statusbar_update_step", "10", &prefs_common
.statusbar_update_step
, P_INT
,
1142 {"compose_no_markup", "FALSE", &prefs_common
.compose_no_markup
, P_BOOL
,
1144 {"skip_ssl_cert_check", "FALSE", &prefs_common
.skip_ssl_cert_check
, P_BOOL
,
1146 {"live_dangerously", "FALSE", &prefs_common
.live_dangerously
, P_BOOL
,
1148 {"save_parts_readwrite", "FALSE", &prefs_common
.save_parts_readwrite
, P_BOOL
,
1150 {"hide_quotes", "0", &prefs_common
.hide_quotes
, P_INT
,
1152 {"unsafe_ssl_certs", "FALSE", &prefs_common
.unsafe_ssl_certs
, P_BOOL
,
1154 #ifndef GENERIC_UMPC
1155 {"real_time_sync", "FALSE", &prefs_common
.real_time_sync
, P_BOOL
,
1158 {"real_time_sync", "TRUE", &prefs_common
.real_time_sync
, P_BOOL
,
1162 {"print_paper_type", NULL
, &prefs_common
.print_paper_type
, P_STRING
,
1164 {"print_paper_orientation", "0", &prefs_common
.print_paper_orientation
, P_INT
,
1166 {"print_margin_top", "-1", &prefs_common
.print_margin_top
, P_INT
,
1168 {"print_margin_bottom", "-1", &prefs_common
.print_margin_bottom
, P_INT
,
1170 {"print_margin_left", "-1", &prefs_common
.print_margin_left
, P_INT
,
1172 {"print_margin_right", "-1", &prefs_common
.print_margin_right
, P_INT
,
1174 {"print_use_color", "0", &prefs_common
.print_use_color
, P_INT
,
1176 {"print_use_collate", "0", &prefs_common
.print_use_collate
, P_INT
,
1178 {"print_use_reverse", "0", &prefs_common
.print_use_reverse
, P_INT
,
1180 {"print_use_duplex", "0", &prefs_common
.print_use_duplex
, P_INT
,
1182 {"print_imgs", "1", &prefs_common
.print_imgs
, P_INT
,
1184 {"print_previewwin_width", "600", &prefs_common
.print_previewwin_width
, P_INT
,
1186 {"print_previewwin_height", "-1", &prefs_common
.print_previewwin_height
, P_INT
,
1188 {"use_networkmanager", "TRUE", &prefs_common
.use_networkmanager
, P_BOOL
,
1190 {"use_shred", "FALSE", &prefs_common
.use_shred
, P_BOOL
,
1193 {"two_line_vertical", "TRUE", &prefs_common
.two_line_vert
,
1194 P_BOOL
, NULL
, NULL
, NULL
},
1196 {"inherit_folder_properties", "FALSE", &prefs_common
.inherit_folder_props
, P_BOOL
,
1199 {"flush_metadata", "TRUE", &prefs_common
.flush_metadata
, P_BOOL
,
1202 {"nav_history_length", "50", &prefs_common
.nav_history_length
, P_INT
,
1205 {"diff_added_color", "#008b8b", &prefs_common
.diff_added_color
, P_COLOR
,
1207 {"diff_deleted_color", "#6a5acd", &prefs_common
.diff_deleted_color
, P_COLOR
,
1209 {"diff_hunk_color", "#a52a2a", &prefs_common
.diff_hunk_color
, P_COLOR
,
1212 {"folder_search_wildcard", "TRUE", &prefs_common
.folder_search_wildcard
, P_BOOL
,
1214 {"address_search_wildcard", "TRUE", &prefs_common
.address_search_wildcard
, P_BOOL
,
1216 {"enable_avatars", "3", &prefs_common
.enable_avatars
, P_INT
, NULL
, NULL
, NULL
},
1217 #ifndef PASSWORD_CRYPTO_OLD
1218 {"use_master_passphrase", FALSE
, &prefs_common
.use_master_passphrase
, P_BOOL
, NULL
, NULL
, NULL
},
1219 {"master_passphrase", "", &prefs_common
.master_passphrase
, P_STRING
, NULL
, NULL
, NULL
},
1220 {"master_passphrase_salt", "", &prefs_common
.master_passphrase_salt
, P_STRING
, NULL
, NULL
, NULL
},
1221 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common
.master_passphrase_pbkdf2_rounds
, P_INT
, NULL
, NULL
, NULL
},
1224 {NULL
, NULL
, NULL
, P_OTHER
, NULL
, NULL
, NULL
}
1228 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1229 * Fallback to default_list if history file is not found
1231 GList
*prefs_common_read_history_from_dir_with_defaults(const gchar
*dirname
, const gchar
*history
,
1232 GList
*default_list
)
1236 gchar buf
[PREFSBUFSIZE
];
1240 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, dirname
,
1241 G_DIR_SEPARATOR_S
, history
,
1244 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, history
,
1247 if ((fp
= g_fopen(path
, "rb")) == NULL
) {
1248 if (ENOENT
!= errno
) FILE_OP_ERROR(path
, "fopen");
1250 /* returns default list if set, otherwise NULL */
1251 return default_list
;
1254 while (fgets(buf
, sizeof(buf
), fp
) != NULL
) {
1256 if (buf
[0] == '\0') continue;
1257 tmp
= add_history(tmp
, buf
);
1261 tmp
= g_list_reverse(tmp
);
1267 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1269 static GList
*prefs_common_read_history_from_dir(const gchar
*dirname
, const gchar
*history
)
1271 return prefs_common_read_history_from_dir_with_defaults(dirname
, history
, NULL
);
1275 * Read history list from the specified history file
1277 static GList
*prefs_common_read_history(const gchar
*history
)
1279 return prefs_common_read_history_from_dir(NULL
, history
);
1282 void prefs_common_read_config(void)
1287 rcpath
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, COMMON_RC
, NULL
);
1288 prefs_read_config(param
, "Common", rcpath
, NULL
);
1290 prefs_read_config(param_os_specific
, "CommonWin32", rcpath
, NULL
);
1295 tmp
= g_strdup(gettext(prefs_common
.date_format
));
1296 g_free(prefs_common
.date_format
);
1297 prefs_common
.date_format
= tmp
;
1299 prefs_common
.mime_open_cmd_history
=
1300 prefs_common_read_history(COMMAND_HISTORY
);
1301 prefs_common
.summary_quicksearch_history
=
1302 prefs_common_read_history(QUICKSEARCH_HISTORY
);
1303 prefs_common
.summary_search_from_history
=
1304 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY
);
1305 prefs_common
.summary_search_to_history
=
1306 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY
);
1307 prefs_common
.summary_search_subject_history
=
1308 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY
);
1309 prefs_common
.summary_search_body_history
=
1310 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY
);
1311 prefs_common
.summary_search_adv_condition_history
=
1312 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY
);
1313 prefs_common
.message_search_history
=
1314 prefs_common_read_history(MESSAGE_SEARCH_HISTORY
);
1315 prefs_common
.compose_save_to_history
=
1316 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY
);
1317 #ifndef USE_ALT_ADDRBOOK
1318 prefs_common
.addressbook_custom_attributes
= addressbook_update_custom_attr_from_prefs();
1320 colorlabel_update_colortable_from_prefs();
1326 g_warning("failed to write"); \
1331 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1333 static void prefs_common_save_history_to_dir(const gchar
*dirname
, const gchar
*history
, GList
*list
)
1337 gchar
*path
, *tmp_path
;
1340 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, dirname
,
1341 G_DIR_SEPARATOR_S
, history
,
1344 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, history
,
1347 tmp_path
= g_strconcat(path
, ".tmp", NULL
);
1349 if ((fp
= g_fopen(tmp_path
, "wb")) == NULL
) {
1350 FILE_OP_ERROR(tmp_path
, "fopen");
1354 for (cur
= list
; cur
!= NULL
; cur
= cur
->next
) {
1355 TRY(fputs((gchar
*)cur
->data
, fp
) != EOF
&&
1356 fputc('\n', fp
) != EOF
);
1359 if (fclose(fp
) == EOF
) {
1360 FILE_OP_ERROR(tmp_path
, "fclose");
1368 if (g_rename(tmp_path
, path
) < 0) {
1369 FILE_OP_ERROR(path
, "rename");
1381 * Save history list to the specified history file
1383 static void prefs_common_save_history(const gchar
*history
, GList
*list
)
1385 prefs_common_save_history_to_dir(NULL
, history
, list
);
1390 void prefs_common_write_config(void)
1392 prefs_write_config(param
, "Common", COMMON_RC
);
1394 prefs_write_config(param_os_specific
, "CommonWin32", COMMON_RC
);
1397 prefs_common_save_history(COMMAND_HISTORY
,
1398 prefs_common
.mime_open_cmd_history
);
1399 prefs_common_save_history(QUICKSEARCH_HISTORY
,
1400 prefs_common
.summary_quicksearch_history
);
1401 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY
,
1402 prefs_common
.summary_search_from_history
);
1403 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY
,
1404 prefs_common
.summary_search_to_history
);
1405 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY
,
1406 prefs_common
.summary_search_subject_history
);
1407 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY
,
1408 prefs_common
.summary_search_body_history
);
1409 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY
,
1410 prefs_common
.summary_search_adv_condition_history
);
1411 prefs_common_save_history(MESSAGE_SEARCH_HISTORY
,
1412 prefs_common
.message_search_history
);
1413 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY
,
1414 prefs_common
.compose_save_to_history
);
1416 #ifndef USE_ALT_ADDRBOOK
1417 prefs_common_save_history_to_dir(ADDRBOOK_DIR
,
1418 ADDRESSBOOK_CUSTOM_ATTRIBUTES
,
1419 prefs_common
.addressbook_custom_attributes
);
1423 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1424 both 'in' and 'out' must be non-NULL.
1425 'out' must be a pointer to a buffer whose size is at least equal
1426 to strlen(txt)+1, this buffer will get cleared. out's contents
1427 will always get set to a valid string, even if it's "".*/
1428 void pref_get_unescaped_pref(gchar
*out
, const gchar
*in
)
1435 cm_return_if_fail( in
!= NULL
);
1436 cm_return_if_fail( out
!= NULL
);
1440 memset(out
, 0, strlen(in
)+1);
1441 while (*i
!= '\0') {
1442 if (*i
== '\\' && *(i
+1) == 'n') {
1445 } else if (*i
== '\\' && *(i
+1) == 't') {
1448 } else if (*i
== '\\' && *(i
+1) == '\\') {
1459 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1460 both 'in' and 'out' must be non-NULL.
1461 'out' must be a pointer to a buffer whose size is at least equal
1462 to 2*strlen(txt)+1. out's contents will always get set to a valid
1463 string, even if it's "". */
1464 void pref_get_escaped_pref(gchar
*out
, const gchar
*in
)
1471 cm_return_if_fail( in
!= NULL
);
1472 cm_return_if_fail( out
!= NULL
);
1476 while (*i
!= '\0') {
1480 } else if (*i
== '\t') {
1483 } else if (*i
== '\\') {
1494 /* set the contents of a textview widget from the internal \-escaped
1495 representation of a pref string. both txt and textview must be non-NULL. */
1496 void pref_set_textview_from_pref(GtkTextView
*textview
, const gchar
*txt
)
1498 GtkTextBuffer
*buffer
;
1501 cm_return_if_fail( textview
!= NULL
);
1503 buffer
= gtk_text_view_get_buffer(textview
);
1506 gtk_text_buffer_set_text(buffer
, "", -1);
1508 out
= g_malloc(strlen(txt
)+1);
1510 pref_get_unescaped_pref(out
, txt
);
1512 gtk_text_buffer_set_text(buffer
, out
, -1);
1517 /* set the contents of a gtkentry widget from the internal \-escaped
1518 representation of a pref string. both txt and entry must be non-NULL. */
1519 void pref_set_entry_from_pref(GtkEntry
*entry
, const gchar
*txt
)
1523 cm_return_if_fail( entry
!= NULL
);
1525 gtk_entry_set_text(entry
, "");
1527 out
= g_malloc(strlen(txt
)+1);
1529 pref_get_unescaped_pref(out
, txt
);
1531 gtk_entry_set_text(entry
, out
);
1536 /* get the \-escaped internal representation of a pref from the contents of
1537 a textview widget. textview must be non-NULL. */
1538 gchar
*pref_get_pref_from_textview(GtkTextView
*textview
)
1540 GtkTextBuffer
*buffer
;
1541 GtkTextIter start
, end
;
1544 cm_return_val_if_fail( textview
!= NULL
, "" );
1546 buffer
= gtk_text_view_get_buffer(textview
);
1547 gtk_text_buffer_get_start_iter(buffer
, &start
);
1548 gtk_text_buffer_get_iter_at_offset(buffer
, &end
, -1);
1549 tmp
= gtk_text_buffer_get_text(buffer
, &start
, &end
, FALSE
);
1550 out
= malloc(2*strlen(tmp
)+1);
1552 pref_get_escaped_pref(out
, tmp
);
1558 /* get the \-escaped internal representation of a pref from the contents of
1559 a gtkentry widget. entry must be non-NULL. */
1560 gchar
*pref_get_pref_from_entry(GtkEntry
*entry
)
1564 cm_return_val_if_fail( entry
!= NULL
, "" );
1566 tmp
= gtk_editable_get_chars(GTK_EDITABLE(entry
), 0, -1);
1567 out
= malloc(2*strlen(tmp
)+1);
1570 pref_get_escaped_pref(out
, tmp
);
1576 /* ugly hack to be able to get this pref from ssl_certificate.c */
1577 gboolean
prefs_common_unsafe_ssl_certs(void)
1579 return prefs_common
.unsafe_ssl_certs
;
1582 gboolean
prefs_common_enable_log_standard(void)
1584 return prefs_common
.enable_log_standard
;
1587 gboolean
prefs_common_enable_log_warning(void)
1589 return prefs_common
.enable_log_warning
;
1591 gboolean
prefs_common_enable_log_error(void)
1593 return prefs_common
.enable_log_error
;
1595 gboolean
prefs_common_enable_log_status(void)
1597 return prefs_common
.enable_log_status
;
1601 return the translated name of a header, if the translate_header option is
1602 set, otherwise return the untranslated header name (header_name itself).
1603 this function is provided for convenience, it's an interface to
1604 prefs_common.trans_hdr.
1605 works with header names either with or without trailing colon, provided
1606 that gettext found such header name in the sources (they should all be
1607 found in src/gtk/headers.h anyway).
1609 const gchar
*prefs_common_translated_header_name(const gchar
*header_name
)
1611 if (header_name
== NULL
|| *header_name
== '\0')
1614 return prefs_common
.trans_hdr
? gettext(header_name
) : header_name
;
1617 const gchar
*prefs_common_get_uri_cmd(void)
1624 if (!prefs_common
.cmds_use_system_default
)
1625 return prefs_common
.uri_cmd
;
1627 tmp
= g_find_program_in_path("xdg-open");
1629 return prefs_common
.uri_cmd
;
1632 return "xdg-open %s";
1636 const gchar
*prefs_common_get_ext_editor_cmd(void)
1638 return prefs_common
.ext_editor_cmd
;
1639 #if 0 /* we should do that, but it detaches the editor and breaks
1640 compose.c's external composition. */
1643 if (!prefs_common
.cmds_use_system_default
)
1644 return prefs_common
.ext_editor_cmd
;
1646 tmp
= g_find_program_in_path("xdg-open");
1648 return prefs_common
.ext_editor_cmd
;
1651 return "xdg-open %s";
1655 gboolean
prefs_common_get_use_shred(void)
1657 return prefs_common
.use_shred
;
1660 gboolean
prefs_common_get_flush_metadata (void)
1662 return prefs_common
.flush_metadata
;
1665 PrefsCommon
*prefs_common_get_prefs(void)
1667 return &prefs_common
;