2 * Claws Mail -- a GTK based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2024 the Claws Mail team and Hiroyuki Yamamoto
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 "prefs_migration.h"
45 #include "mainwindow.h"
46 #include "summaryview.h"
47 #include "folderview.h"
48 #include "messageview.h"
49 #include "manage_window.h"
55 #include "alertpanel.h"
59 #include "stock_pixmap.h"
60 #include "prefswindow.h"
61 #include "colorlabel.h"
62 #include "passwordstore.h"
63 #include "file-utils.h"
65 #ifndef USE_ALT_ADDRBOOK
66 #include "addrcustomattr.h"
75 PrefsCommon prefs_common
;
81 * In the Windows version prefs_common contains
82 * - the non-OS-specific settings of the "Common" section and
83 * - the OS-specific settings of the "CommonWin32" section
84 * The OS-specific settings of the "Common" section are not used
85 * but saved in prefs_unix.
88 # define SPECIFIC_PREFS prefs_unix
90 static PrefsCommon prefs_unix
;
92 static PrefParam param_os_specific
[] = {
95 &prefs_common
.extinc_cmd
, P_STRING
, NULL
, NULL
, NULL
},
96 {"newmail_notify_cmd", "",
97 &prefs_common
.newmail_notify_cmd
, P_STRING
, NULL
, NULL
, NULL
},
100 {"message_font_gtk2", "Monospace 9",
101 &prefs_common
.textfont
, P_STRING
, NULL
, NULL
, NULL
},
102 {"print_font_gtk2", "Monospace 9",
103 &prefs_common
.printfont
, P_STRING
, NULL
, NULL
, NULL
},
104 {"small_font_gtk2", "Sans 9",
105 &prefs_common
.smallfont
, P_STRING
, NULL
, NULL
, NULL
},
106 {"normal_font_gtk2", "Sans 9",
107 &prefs_common
.normalfont
, P_STRING
, NULL
, NULL
, NULL
},
108 {"bold_font_gtk2", "Sans 9 Bold",
109 &prefs_common
.boldfont
, P_STRING
, NULL
, NULL
, NULL
},
111 {"attach_save_directory", NULL
,
112 &prefs_common
.attach_save_dir
, P_STRING
, NULL
, NULL
, NULL
},
113 {"attach_save_chmod", "",
114 &prefs_common
.attach_save_chmod
, P_INT
, NULL
, NULL
, NULL
},
115 {"attach_load_directory", NULL
,
116 &prefs_common
.attach_load_dir
, P_STRING
, NULL
, NULL
, NULL
},
119 {"mime_textviewer", NULL
,
120 &prefs_common
.mime_textviewer
, P_STRING
, NULL
, NULL
, NULL
},
121 {"mime_open_command", "notepad '%s'",
122 &prefs_common
.mime_open_cmd
, P_STRING
, NULL
, NULL
, NULL
},
125 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME
,
126 &prefs_common
.pixmap_theme_path
, P_STRING
, NULL
, NULL
, NULL
},
128 {"enable_alpha_svg", "TRUE",
129 &prefs_common
.enable_alpha_svg
, P_BOOL
, NULL
, NULL
, NULL
},
130 {"enable_pixmap_scaling", "TRUE",
131 &prefs_common
.enable_pixmap_scaling
, P_BOOL
, NULL
, NULL
, NULL
},
132 {"pixmap_scaling_auto", "TRUE",
133 &prefs_common
.pixmap_scaling_auto
, P_BOOL
, NULL
, NULL
, NULL
},
134 {"pixmap_scaling_ppi", "96",
135 &prefs_common
.pixmap_scaling_ppi
, P_INT
, NULL
, NULL
, NULL
},
139 {"ext_editor_command", "notepad %s",
140 &prefs_common
.ext_editor_cmd
, P_STRING
, NULL
, NULL
, NULL
},
142 {NULL
, NULL
, NULL
, P_OTHER
, NULL
, NULL
, NULL
}
145 # define SPECIFIC_PREFS prefs_common
149 parameter name, default value, pointer to the prefs variable, data type,
150 pointer to the widget pointer,
151 pointer to the function for data setting,
152 pointer to the function for widget setting
155 static PrefParam param
[] = {
156 {"config_version", "0",
157 &prefs_common
.config_version
, P_INT
, NULL
, NULL
, NULL
},
160 {"use_ext_inc", "FALSE", &prefs_common
.use_extinc
, P_BOOL
,
162 {"ext_inc_path", DEFAULT_INC_PATH
, &SPECIFIC_PREFS
.extinc_cmd
, P_STRING
,
165 {"autochk_newmail", "FALSE", &prefs_common
.autochk_newmail
, P_BOOL
,
167 {"autochk_interval", "600", &prefs_common
.autochk_itv
, P_INT
,
169 {"check_on_startup", "FALSE", &prefs_common
.chk_on_startup
, P_BOOL
,
171 {"open_inbox_on_inc", "FALSE", &prefs_common
.open_inbox_on_inc
,
172 P_BOOL
, NULL
, NULL
, NULL
},
173 {"scan_all_after_inc", "FALSE", &prefs_common
.scan_all_after_inc
,
174 P_BOOL
, NULL
, NULL
, NULL
},
175 {"newmail_notify_manu", "FALSE", &prefs_common
.newmail_notify_manu
,
176 P_BOOL
, NULL
, NULL
, NULL
},
177 {"newmail_notify_auto", "FALSE", &prefs_common
.newmail_notify_auto
,
178 P_BOOL
, NULL
, NULL
, NULL
},
179 {"newmail_notify_cmd", "", &SPECIFIC_PREFS
.newmail_notify_cmd
, P_STRING
,
181 {"receive_dialog_mode", "2", &prefs_common
.recv_dialog_mode
, P_ENUM
,
183 {"receivewin_width", "460", &prefs_common
.receivewin_width
, P_INT
,
185 {"receivewin_height", "-1", &prefs_common
.receivewin_height
, P_INT
,
187 {"no_receive_error_panel", "FALSE", &prefs_common
.no_recv_err_panel
,
188 P_BOOL
, NULL
, NULL
, NULL
}, /* deprecated */
189 {"show_receive_error_dialog", "TRUE", &prefs_common
.show_recv_err_dialog
,
190 P_BOOL
, NULL
, NULL
, NULL
},
191 {"close_receive_dialog", "TRUE", &prefs_common
.close_recv_dialog
,
192 P_BOOL
, NULL
, NULL
, NULL
},
195 {"save_message", "TRUE", &prefs_common
.savemsg
, P_BOOL
,
197 {"confirm_send_queued_messages", "FALSE", &prefs_common
.confirm_send_queued_messages
,
198 P_BOOL
, NULL
, NULL
, NULL
},
200 {"send_dialog_mode", "0", &prefs_common
.send_dialog_invisible
, P_BOOL
,
203 {"send_dialog_mode", "1", &prefs_common
.send_dialog_invisible
, P_BOOL
,
206 {"sendwin_width", "460", &prefs_common
.sendwin_width
, P_INT
,
208 {"sendwin_height", "-1", &prefs_common
.sendwin_height
, P_INT
,
211 {"outgoing_charset", CS_AUTO
, &prefs_common
.outgoing_charset
, P_STRING
,
213 {"encoding_method", "0", &prefs_common
.encoding_method
, P_ENUM
,
215 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common
.outgoing_fallback_to_ascii
, P_BOOL
,
217 {"rewrite_first_from", "TRUE", &prefs_common
.rewrite_first_from
,
218 P_BOOL
, NULL
, NULL
, NULL
},
219 {"warn_empty_subj", "TRUE", &prefs_common
.warn_empty_subj
,
220 P_BOOL
, NULL
, NULL
, NULL
},
221 {"warn_sending_many_recipients_num", "0", &prefs_common
.warn_sending_many_recipients_num
, P_INT
,
223 {"hide_timezone", "FALSE", &prefs_common
.hide_timezone
,
224 P_BOOL
, NULL
, NULL
, NULL
},
225 {"allow_jisx0201_kana", "FALSE", &prefs_common
.allow_jisx0201_kana
,
226 P_BOOL
, NULL
, NULL
, NULL
},
229 {"auto_ext_editor", "FALSE", &prefs_common
.auto_exteditor
, P_BOOL
,
231 {"forward_as_attachment", "FALSE", &prefs_common
.forward_as_attachment
,
232 P_BOOL
, NULL
, NULL
, NULL
},
233 {"redirect_keep_from", "FALSE",
234 &prefs_common
.redirect_keep_from
, P_BOOL
,
236 {"undo_level", "50", &prefs_common
.undolevels
, P_INT
,
238 {"compose_with_format", "FALSE", &prefs_common
.compose_with_format
, P_BOOL
,
240 {"compose_subject_format", "",
241 &prefs_common
.compose_subject_format
, P_STRING
, NULL
, NULL
, NULL
},
242 {"compose_body_format", N_("Hello,\\n"),
243 &prefs_common
.compose_body_format
, P_STRING
, NULL
, NULL
, NULL
},
244 {"show_compose_margin", "FALSE", &prefs_common
.show_compose_margin
, P_BOOL
,
246 {"type_any_header", "FALSE", &prefs_common
.type_any_header
, P_BOOL
,
248 {"notify_pasted_attachments", "TRUE", &prefs_common
.notify_pasted_attachments
, P_BOOL
,
251 {"linewrap_length", "72", &prefs_common
.linewrap_len
, P_INT
,
253 {"linewrap_quotation", "TRUE", &prefs_common
.linewrap_quote
, P_BOOL
,
255 {"linewrap_pastes", "TRUE", &prefs_common
.linewrap_pastes
, P_BOOL
,
257 {"primary_paste_unselects", "FALSE", &prefs_common
.primary_paste_unselects
, P_BOOL
,
259 {"linewrap_auto", "TRUE", &prefs_common
.autowrap
, P_BOOL
,
261 {"auto_indent", "TRUE", &prefs_common
.auto_indent
, P_BOOL
,
263 {"autosave", "TRUE", &prefs_common
.autosave
,
264 P_BOOL
, NULL
, NULL
, NULL
},
265 {"autosave_length", "50", &prefs_common
.autosave_length
, P_INT
,
267 {"autosave_encrypted", "FALSE", &prefs_common
.autosave_encrypted
,
268 P_BOOL
, NULL
, NULL
, NULL
},
269 {"warn_large_insert", "TRUE", &prefs_common
.warn_large_insert
,
270 P_BOOL
, NULL
, NULL
, NULL
},
271 {"warn_large_insert_size", "500", &prefs_common
.warn_large_insert_size
,
272 P_INT
, NULL
, NULL
, NULL
},
274 {"enable_aspell", "TRUE", &prefs_common
.enable_aspell
, P_BOOL
,
276 {"dictionary", "", &prefs_common
.dictionary
, P_STRING
,
278 {"alt_dictionary", "", &prefs_common
.alt_dictionary
, P_STRING
,
280 {"use_alternate_dict", "FALSE", &prefs_common
.use_alternate
, P_BOOL
,
282 {"check_while_typing", "TRUE", &prefs_common
.check_while_typing
, P_BOOL
,
284 {"recheck_when_changing_dict", "TRUE", &prefs_common
.recheck_when_changing_dict
,
285 P_BOOL
, NULL
, NULL
, NULL
},
286 {"misspelled_color", "#ff0000", &prefs_common
.color
[COL_MISSPELLED
],
287 P_COLOR
, NULL
, NULL
, NULL
},
288 {"use_both_dicts", "FALSE", &prefs_common
.use_both_dicts
, P_BOOL
,
291 {"reply_with_quote", "TRUE", &prefs_common
.reply_with_quote
, P_BOOL
,
293 {"compose_dnd_insert_or_attach", "0", &prefs_common
.compose_dnd_mode
, P_ENUM
,
296 /* Account autoselection */
297 {"reply_account_autoselect", "TRUE",
298 &prefs_common
.reply_account_autosel
, P_BOOL
,
300 {"forward_account_autoselect", "TRUE",
301 &prefs_common
.forward_account_autosel
, P_BOOL
,
303 {"reedit_account_autoselect", "TRUE",
304 &prefs_common
.reedit_account_autosel
, P_BOOL
,
307 {"default_reply_list", "TRUE", &prefs_common
.default_reply_list
, P_BOOL
,
311 {"show_ruler", "TRUE", &prefs_common
.show_ruler
, P_BOOL
,
314 {"show_ruler", "FALSE", &prefs_common
.show_ruler
, P_BOOL
,
319 {"reply_quote_mark", "> ", &prefs_common
.quotemark
, P_STRING
,
321 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
322 &prefs_common
.quotefmt
, P_STRING
, NULL
, NULL
, NULL
},
324 {"forward_quote_mark", "> ", &prefs_common
.fw_quotemark
, P_STRING
,
326 {"forward_quote_format",
327 N_("\\n\\nBegin forwarded message:\\n\\n"
328 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
329 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
330 &prefs_common
.fw_quotefmt
, P_STRING
,
332 {"quote_chars", ">", &prefs_common
.quote_chars
, P_STRING
,
338 {"message_font_gtk2", "Monospace 9",
339 &SPECIFIC_PREFS
.textfont
, P_STRING
, NULL
, NULL
, NULL
},
340 {"print_font_gtk2", "Monospace 9",
341 &SPECIFIC_PREFS
.printfont
, P_STRING
, NULL
, NULL
, NULL
},
342 {"small_font_gtk2", "Sans 9",
343 &SPECIFIC_PREFS
.smallfont
, P_STRING
, NULL
, NULL
, NULL
},
344 {"normal_font_gtk2", "Sans 9",
345 &SPECIFIC_PREFS
.normalfont
, P_STRING
, NULL
, NULL
, NULL
},
346 {"bold_font_gtk2", "Sans Bold 9",
347 &SPECIFIC_PREFS
.boldfont
, P_STRING
, NULL
, NULL
, NULL
},
349 {"message_font_gtk2", "Monospace 8",
350 &SPECIFIC_PREFS
.textfont
, P_STRING
, NULL
, NULL
, NULL
},
351 {"print_font_gtk2", "Monospace 8",
352 &SPECIFIC_PREFS
.printfont
, P_STRING
, NULL
, NULL
, NULL
},
353 {"small_font_gtk2", "Sans 8",
354 &SPECIFIC_PREFS
.smallfont
, P_STRING
, NULL
, NULL
, NULL
},
355 {"normal_font_gtk2", "Sans 8",
356 &SPECIFIC_PREFS
.normalfont
, P_STRING
, NULL
, NULL
, NULL
},
357 {"bold_font_gtk2", "Sans Bold 8",
358 &SPECIFIC_PREFS
.boldfont
, P_STRING
, NULL
, NULL
, NULL
},
361 {"use_different_print_font", "FALSE", &prefs_common
.use_different_print_font
, P_BOOL
,
363 {"derive_from_normal_font", "TRUE", &prefs_common
.derive_from_normal_font
, P_BOOL
,
367 {"custom_color1", "#ff9900", &prefs_common
.custom_colorlabel
[0].color
, P_COLOR
,
369 {"custom_colorlabel1", N_("Orange"), &prefs_common
.custom_colorlabel
[0].label
, P_STRING
,
371 {"custom_color2", "#ff0000", &prefs_common
.custom_colorlabel
[1].color
, P_COLOR
,
373 {"custom_colorlabel2", N_("Red"), &prefs_common
.custom_colorlabel
[1].label
, P_STRING
,
375 {"custom_color3", "#ff66ff", &prefs_common
.custom_colorlabel
[2].color
, P_COLOR
,
377 {"custom_colorlabel3", N_("Pink"), &prefs_common
.custom_colorlabel
[2].label
, P_STRING
,
379 {"custom_color4", "#00ccff", &prefs_common
.custom_colorlabel
[3].color
, P_COLOR
,
381 {"custom_colorlabel4", N_("Sky blue"), &prefs_common
.custom_colorlabel
[3].label
, P_STRING
,
383 {"custom_color5", "#0000ff", &prefs_common
.custom_colorlabel
[4].color
, P_COLOR
,
385 {"custom_colorlabel5", N_("Blue"), &prefs_common
.custom_colorlabel
[4].label
, P_STRING
,
387 {"custom_color6", "#009900", &prefs_common
.custom_colorlabel
[5].color
, P_COLOR
,
389 {"custom_colorlabel6", N_("Green"), &prefs_common
.custom_colorlabel
[5].label
, P_STRING
,
391 {"custom_color7", "#663333", &prefs_common
.custom_colorlabel
[6].color
, P_COLOR
,
393 {"custom_colorlabel7", N_("Brown"), &prefs_common
.custom_colorlabel
[6].label
, P_STRING
,
395 {"custom_color8", "#aaaaaa", &prefs_common
.custom_colorlabel
[7].color
, P_COLOR
,
397 {"custom_colorlabel8", N_("Grey"), &prefs_common
.custom_colorlabel
[7].label
, P_STRING
,
399 {"custom_color9", "#c07254", &prefs_common
.custom_colorlabel
[8].color
, P_COLOR
,
401 {"custom_colorlabel9", N_("Light brown"), &prefs_common
.custom_colorlabel
[8].label
, P_STRING
,
403 {"custom_color10", "#c00000", &prefs_common
.custom_colorlabel
[9].color
, P_COLOR
,
405 {"custom_colorlabel10", N_("Dark red"), &prefs_common
.custom_colorlabel
[9].label
, P_STRING
,
407 {"custom_color11", "#cc1074", &prefs_common
.custom_colorlabel
[10].color
, P_COLOR
,
409 {"custom_colorlabel11", N_("Dark pink"), &prefs_common
.custom_colorlabel
[10].label
, P_STRING
,
411 {"custom_color12", "#5094cd", &prefs_common
.custom_colorlabel
[11].color
, P_COLOR
,
413 {"custom_colorlabel12", N_("Steel blue"), &prefs_common
.custom_colorlabel
[11].label
, P_STRING
,
415 {"custom_color13", "#ffd500", &prefs_common
.custom_colorlabel
[12].color
, P_COLOR
,
417 {"custom_colorlabel13", N_("Gold"), &prefs_common
.custom_colorlabel
[12].label
, P_STRING
,
419 {"custom_color14", "#00d800", &prefs_common
.custom_colorlabel
[13].color
, P_COLOR
,
421 {"custom_colorlabel14", N_("Bright green"), &prefs_common
.custom_colorlabel
[13].label
, P_STRING
,
423 {"custom_color15", "#c060c0", &prefs_common
.custom_colorlabel
[14].color
, P_COLOR
,
425 {"custom_colorlabel15", N_("Magenta"), &prefs_common
.custom_colorlabel
[14].label
, P_STRING
,
429 {"display_image", "TRUE", &prefs_common
.display_img
, P_BOOL
,
431 {"resize_image", "TRUE", &prefs_common
.resize_img
, P_BOOL
,
433 {"inline_image", "TRUE", &prefs_common
.inline_img
, P_BOOL
,
435 {"fit_image_height", "TRUE", &prefs_common
.fit_img_height
, P_BOOL
,
438 {"display_folder_unread_num", "0",
439 &prefs_common
.display_folder_unread
, P_INT
,
441 {"newsgroup_abbrev_len", "16",
442 &prefs_common
.ng_abbrev_len
, P_INT
,
446 {"translate_header", "TRUE", &prefs_common
.trans_hdr
, P_BOOL
,
449 {"translate_header", "FALSE", &prefs_common
.trans_hdr
, P_BOOL
,
453 /* Display: Summary View */
454 {"default_sort_key", "3", &prefs_common
.default_sort_key
, P_ENUM
,
456 {"default_sort_type", "1", &prefs_common
.default_sort_type
, P_ENUM
,
458 {"use_address_book", "FALSE", &prefs_common
.use_addr_book
, P_BOOL
,
460 {"thread_by_subject", "TRUE", &prefs_common
.thread_by_subject
, P_BOOL
,
462 {"date_format", N_("%x(%a) %H:%M"), &prefs_common
.date_format
,
463 P_STRING
, NULL
, NULL
, NULL
},
464 {"msgview_date_format", "FALSE", &prefs_common
.msgview_date_format
, P_BOOL
,
467 {"next_on_delete", "FALSE", &prefs_common
.next_on_delete
, P_BOOL
,
470 {"bold_unread", "TRUE", &prefs_common
.bold_unread
, P_BOOL
,
472 {"bold_marked", "FALSE", &prefs_common
.bold_marked
, P_BOOL
,
476 {"toolbar_style", "3", &prefs_common
.toolbar_style
, P_ENUM
,
479 {"toolbar_style", "1", &prefs_common
.toolbar_style
, P_ENUM
,
482 {"show_col_headers", "TRUE", &prefs_common
.show_col_headers
, P_BOOL
,
485 {"show_statusbar", "TRUE", &prefs_common
.show_statusbar
, P_BOOL
,
487 {"show_searchbar", "TRUE", &prefs_common
.show_searchbar
, P_BOOL
,
490 {"show_statusbar", "FALSE", &prefs_common
.show_statusbar
, P_BOOL
,
492 {"show_searchbar", "FALSE", &prefs_common
.show_searchbar
, P_BOOL
,
496 {"summary_col_show_mark", "TRUE",
497 &prefs_common
.summary_col_visible
[S_COL_MARK
], P_BOOL
, NULL
, NULL
, NULL
},
498 {"summary_col_show_unread", "TRUE",
499 &prefs_common
.summary_col_visible
[S_COL_STATUS
], P_BOOL
, NULL
, NULL
, NULL
},
500 {"summary_col_show_subject", "TRUE",
501 &prefs_common
.summary_col_visible
[S_COL_SUBJECT
], P_BOOL
, NULL
, NULL
, NULL
},
502 {"summary_col_show_from", "TRUE",
503 &prefs_common
.summary_col_visible
[S_COL_FROM
], P_BOOL
, NULL
, NULL
, NULL
},
504 {"summary_col_show_to", "FALSE",
505 &prefs_common
.summary_col_visible
[S_COL_TO
], P_BOOL
, NULL
, NULL
, NULL
},
506 {"summary_col_show_date", "TRUE",
507 &prefs_common
.summary_col_visible
[S_COL_DATE
], P_BOOL
, NULL
, NULL
, NULL
},
508 {"summary_col_show_mime", "TRUE",
509 &prefs_common
.summary_col_visible
[S_COL_MIME
], P_BOOL
, NULL
, NULL
, NULL
},
510 {"summary_col_show_size", "TRUE",
511 &prefs_common
.summary_col_visible
[S_COL_SIZE
], P_BOOL
, NULL
, NULL
, NULL
},
512 {"summary_col_show_number", "FALSE",
513 &prefs_common
.summary_col_visible
[S_COL_NUMBER
], P_BOOL
, NULL
, NULL
, NULL
},
514 {"summary_col_show_score", "FALSE",
515 &prefs_common
.summary_col_visible
[S_COL_SCORE
], P_BOOL
, NULL
, NULL
, NULL
},
516 {"summary_col_show_locked", "FALSE",
517 &prefs_common
.summary_col_visible
[S_COL_LOCKED
], P_BOOL
, NULL
, NULL
, NULL
},
518 {"summary_col_show_tags", "FALSE",
519 &prefs_common
.summary_col_visible
[S_COL_TAGS
], P_BOOL
, NULL
, NULL
, NULL
},
521 {"summary_col_lock", "FALSE", &prefs_common
.summary_col_lock
, P_BOOL
,
524 {"summary_col_pos_mark", "0",
525 &prefs_common
.summary_col_pos
[S_COL_MARK
], P_INT
, NULL
, NULL
, NULL
},
526 {"summary_col_pos_unread", "1",
527 &prefs_common
.summary_col_pos
[S_COL_STATUS
], P_INT
, NULL
, NULL
, NULL
},
528 {"summary_col_pos_mime", "2",
529 &prefs_common
.summary_col_pos
[S_COL_MIME
], P_INT
, NULL
, NULL
, NULL
},
530 {"summary_col_pos_subject", "3",
531 &prefs_common
.summary_col_pos
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
532 {"summary_col_pos_from", "4",
533 &prefs_common
.summary_col_pos
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
534 {"summary_col_pos_date", "5",
535 &prefs_common
.summary_col_pos
[S_COL_DATE
], P_INT
, NULL
, NULL
, NULL
},
536 {"summary_col_pos_size", "6",
537 &prefs_common
.summary_col_pos
[S_COL_SIZE
], P_INT
, NULL
, NULL
, NULL
},
538 {"summary_col_pos_number", "7",
539 &prefs_common
.summary_col_pos
[S_COL_NUMBER
], P_INT
, NULL
, NULL
, NULL
},
540 {"summary_col_pos_score", "8",
541 &prefs_common
.summary_col_pos
[S_COL_SCORE
], P_INT
, NULL
, NULL
, NULL
},
542 {"summary_col_pos_locked", "9",
543 &prefs_common
.summary_col_pos
[S_COL_LOCKED
], P_INT
, NULL
, NULL
, NULL
},
544 {"summary_col_pos_to", "10",
545 &prefs_common
.summary_col_pos
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
546 {"summary_col_pos_tags", "11",
547 &prefs_common
.summary_col_pos
[S_COL_TAGS
], P_INT
, NULL
, NULL
, NULL
},
549 {"summary_col_size_mark", "10",
550 &prefs_common
.summary_col_size
[S_COL_MARK
], P_INT
, NULL
, NULL
, NULL
},
551 {"summary_col_size_unread", "13",
552 &prefs_common
.summary_col_size
[S_COL_STATUS
], P_INT
, NULL
, NULL
, NULL
},
553 {"summary_col_size_mime", "10",
554 &prefs_common
.summary_col_size
[S_COL_MIME
], P_INT
, NULL
, NULL
, NULL
},
556 {"summary_col_size_subject", "200",
557 &prefs_common
.summary_col_size
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
558 {"summary_col_size_from", "120",
559 &prefs_common
.summary_col_size
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
560 {"summary_col_size_to", "120",
561 &prefs_common
.summary_col_size
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
563 {"summary_col_size_subject", "300",
564 &prefs_common
.summary_col_size
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
565 {"summary_col_size_from", "150",
566 &prefs_common
.summary_col_size
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
567 {"summary_col_size_to", "150",
568 &prefs_common
.summary_col_size
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
571 {"summary_col_size_date", "118",
572 &prefs_common
.summary_col_size
[S_COL_DATE
], P_INT
, NULL
, NULL
, NULL
},
573 {"summary_col_size_size", "45",
574 &prefs_common
.summary_col_size
[S_COL_SIZE
], P_INT
, NULL
, NULL
, NULL
},
575 {"summary_col_size_number", "40",
576 &prefs_common
.summary_col_size
[S_COL_NUMBER
], P_INT
, NULL
, NULL
, NULL
},
577 {"summary_col_size_score", "40",
578 &prefs_common
.summary_col_size
[S_COL_SCORE
], P_INT
, NULL
, NULL
, NULL
},
579 {"summary_col_size_locked", "13",
580 &prefs_common
.summary_col_size
[S_COL_LOCKED
], P_INT
, NULL
, NULL
, NULL
},
581 {"summary_col_size_tags", "150",
582 &prefs_common
.summary_col_size
[S_COL_TAGS
], P_INT
, NULL
, NULL
, NULL
},
585 {"folderwin_x", "16", &prefs_common
.folderwin_x
, P_INT
,
587 {"folderwin_y", "16", &prefs_common
.folderwin_y
, P_INT
,
589 {"folderview_width", "270", &prefs_common
.folderview_width
, P_INT
,
591 {"folderview_height", "450", &prefs_common
.folderview_height
, P_INT
,
593 {"folderview_visible", "TRUE", &prefs_common
.folderview_visible
, P_BOOL
,
596 {"folder_col_show_folder", "TRUE",
597 &prefs_common
.folder_col_visible
[F_COL_FOLDER
], P_BOOL
, NULL
, NULL
, NULL
},
598 {"folder_col_show_new", "TRUE",
599 &prefs_common
.folder_col_visible
[F_COL_NEW
], P_BOOL
, NULL
, NULL
, NULL
},
600 {"folder_col_show_unread", "TRUE",
601 &prefs_common
.folder_col_visible
[F_COL_UNREAD
], P_BOOL
, NULL
, NULL
, NULL
},
602 {"folder_col_show_total", "TRUE",
603 &prefs_common
.folder_col_visible
[F_COL_TOTAL
], P_BOOL
, NULL
, NULL
, NULL
},
605 {"folder_col_pos_folder", "0",
606 &prefs_common
.folder_col_pos
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
607 {"folder_col_pos_new", "1",
608 &prefs_common
.folder_col_pos
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
609 {"folder_col_pos_unread", "2",
610 &prefs_common
.folder_col_pos
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
611 {"folder_col_pos_total", "3",
612 &prefs_common
.folder_col_pos
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
615 {"folder_col_size_folder", "120",
616 &prefs_common
.folder_col_size
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
617 {"folder_col_size_new", "32",
618 &prefs_common
.folder_col_size
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
619 {"folder_col_size_unread", "32",
620 &prefs_common
.folder_col_size
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
621 {"folder_col_size_total", "32",
622 &prefs_common
.folder_col_size
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
624 {"folder_col_size_folder", "400",
625 &prefs_common
.folder_col_size
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
626 {"folder_col_size_new", "32",
627 &prefs_common
.folder_col_size
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
628 {"folder_col_size_unread", "32",
629 &prefs_common
.folder_col_size
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
630 {"folder_col_size_total", "32",
631 &prefs_common
.folder_col_size
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
634 {"folder_default_thread", "TRUE", &prefs_common
.folder_default_thread
, P_BOOL
,
636 {"folder_default_thread_collapsed", "FALSE", &prefs_common
.folder_default_thread_collapsed
, P_BOOL
,
638 {"folder_default_hide_read_threads", "FALSE", &prefs_common
.folder_default_hide_read_threads
, P_BOOL
,
640 {"folder_default_hide_read_msgs", "FALSE", &prefs_common
.folder_default_hide_read_msgs
, P_BOOL
,
642 {"folder_default_hide_del_msgs", "FALSE", &prefs_common
.folder_default_hide_del_msgs
, P_BOOL
,
645 {"summaryview_width", "500", &prefs_common
.summaryview_width
, P_INT
,
647 {"summaryview_height", "244", &prefs_common
.summaryview_height
, P_INT
,
650 {"main_messagewin_x", "256", &prefs_common
.main_msgwin_x
, P_INT
,
652 {"main_messagewin_y", "210", &prefs_common
.main_msgwin_y
, P_INT
,
654 {"messageview_width", "500", &prefs_common
.msgview_width
, P_INT
,
656 {"messageview_height", "213", &prefs_common
.msgview_height
, P_INT
,
658 {"messageview_visible", "TRUE", &prefs_common
.msgview_visible
, P_BOOL
,
661 {"mainview_x", "64", &prefs_common
.mainview_x
, P_INT
,
663 {"mainview_y", "64", &prefs_common
.mainview_y
, P_INT
,
665 {"mainview_width", "500", &prefs_common
.mainview_width
, P_INT
,
667 {"mainview_height", "400", &prefs_common
.mainview_height
, P_INT
,
669 {"mainwin_x", "64", &prefs_common
.mainwin_x
, P_INT
,
671 {"mainwin_y", "64", &prefs_common
.mainwin_y
, P_INT
,
673 {"mainwin_maximised", "FALSE", &prefs_common
.mainwin_maximised
, P_BOOL
,
675 {"mainwin_fullscreen", "FALSE", &prefs_common
.mainwin_fullscreen
, P_BOOL
,
677 {"mainwin_menubar", "TRUE", &prefs_common
.mainwin_menubar
, P_BOOL
,
680 {"mainwin_width", "800", &prefs_common
.mainwin_width
, P_INT
,
682 {"mainwin_height", "600", &prefs_common
.mainwin_height
, P_INT
,
684 {"messagewin_width", "600", &prefs_common
.msgwin_width
, P_INT
,
686 {"messagewin_height", "540", &prefs_common
.msgwin_height
, P_INT
,
688 {"mimeview_tree_height", "60", &prefs_common
.mimeview_tree_height
, P_INT
,
690 {"sourcewin_width", "600", &prefs_common
.sourcewin_width
, P_INT
,
692 {"sourcewin_height", "500", &prefs_common
.sourcewin_height
, P_INT
,
694 {"compose_width", "600", &prefs_common
.compose_width
, P_INT
,
696 {"compose_height", "560", &prefs_common
.compose_height
, P_INT
,
699 {"mainwin_width", "700", &prefs_common
.mainwin_width
, P_INT
,
701 {"mainwin_height", "470", &prefs_common
.mainwin_height
, P_INT
,
703 {"messagewin_width", "700", &prefs_common
.msgwin_width
, P_INT
,
705 {"messagewin_height", "470", &prefs_common
.msgwin_height
, P_INT
,
707 {"sourcewin_width", "700", &prefs_common
.sourcewin_width
, P_INT
,
709 {"sourcewin_height", "470", &prefs_common
.sourcewin_height
, P_INT
,
711 {"compose_width", "700", &prefs_common
.compose_width
, P_INT
,
713 {"compose_height", "470", &prefs_common
.compose_height
, P_INT
,
716 {"compose_notebook_height", "180", &prefs_common
.compose_notebook_height
, P_INT
,
718 {"compose_x", "0", &prefs_common
.compose_x
, P_INT
,
720 {"compose_y", "0", &prefs_common
.compose_y
, P_INT
,
723 {"enable_color", "TRUE", &prefs_common
.enable_color
, P_BOOL
,
726 {"quote_level1_color", "#0000b3", &prefs_common
.color
[COL_QUOTE_LEVEL1
],
727 P_COLOR
, NULL
, NULL
, NULL
},
728 {"quote_level2_color", "#0000b3", &prefs_common
.color
[COL_QUOTE_LEVEL2
],
729 P_COLOR
, NULL
, NULL
, NULL
},
730 {"quote_level3_color", "#0000b3", &prefs_common
.color
[COL_QUOTE_LEVEL3
],
731 P_COLOR
, NULL
, NULL
, NULL
},
732 {"enable_bgcolor", "FALSE", &prefs_common
.enable_bgcolor
, P_BOOL
,
734 {"quote_level1_bgcolor", "#cccccc", &prefs_common
.color
[COL_QUOTE_LEVEL1_BG
],
735 P_COLOR
, NULL
, NULL
, NULL
},
736 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common
.color
[COL_QUOTE_LEVEL2_BG
],
737 P_COLOR
, NULL
, NULL
, NULL
},
738 {"quote_level3_bgcolor", "#dddddd", &prefs_common
.color
[COL_QUOTE_LEVEL3_BG
],
739 P_COLOR
, NULL
, NULL
, NULL
},
740 {"uri_color", "#007f00", &prefs_common
.color
[COL_URI
],
741 P_COLOR
, NULL
, NULL
, NULL
},
742 {"emphasis_color", "#0000cf", &prefs_common
.color
[COL_EMPHASIS
],
743 P_COLOR
, NULL
, NULL
, NULL
},
744 {"target_folder_color", "#da1cca", &prefs_common
.color
[COL_TGT_FOLDER
],
745 P_COLOR
, NULL
, NULL
, NULL
},
746 {"signature_color", "#797979", &prefs_common
.color
[COL_SIGNATURE
],
747 P_COLOR
, NULL
, NULL
, NULL
},
748 {"recycle_quote_colors", "FALSE", &prefs_common
.recycle_quote_colors
,
749 P_BOOL
, NULL
, NULL
, NULL
},
751 {"default_header_color", "#000000", &prefs_common
.color
[COL_DEFAULT_HEADER
],
752 P_COLOR
, NULL
, NULL
, NULL
},
753 {"default_header_bgcolor", "#f5f6be", &prefs_common
.color
[COL_DEFAULT_HEADER_BG
],
754 P_COLOR
, NULL
, NULL
, NULL
},
755 {"tags_color", "#000000", &prefs_common
.color
[COL_TAGS
],
756 P_COLOR
, NULL
, NULL
, NULL
},
757 {"tags_bgcolor", "#f5f6be", &prefs_common
.color
[COL_TAGS_BG
],
758 P_COLOR
, NULL
, NULL
, NULL
},
759 {"qs_active_color", "#000000", &prefs_common
.color
[COL_QS_ACTIVE
],
760 P_COLOR
, NULL
, NULL
, NULL
},
761 {"qs_active_bgcolor", "#f5f6be", &prefs_common
.color
[COL_QS_ACTIVE_BG
],
762 P_COLOR
, NULL
, NULL
, NULL
},
763 {"qs_error_color", "#000000", &prefs_common
.color
[COL_QS_ERROR
],
764 P_COLOR
, NULL
, NULL
, NULL
},
765 {"qs_error_bgcolor", "#ff7070", &prefs_common
.color
[COL_QS_ERROR_BG
],
766 P_COLOR
, NULL
, NULL
, NULL
},
768 {"display_header_pane", "FALSE", &prefs_common
.display_header_pane
,
769 P_BOOL
, NULL
, NULL
, NULL
},
770 {"display_header", "TRUE", &prefs_common
.display_header
, P_BOOL
,
772 {"display_xface", "TRUE", &prefs_common
.display_xface
,
773 P_BOOL
, NULL
, NULL
, NULL
},
774 {"save_xface", "TRUE", &prefs_common
.save_xface
,
775 P_BOOL
, NULL
, NULL
, NULL
},
776 {"render_html", "TRUE", &prefs_common
.render_html
, P_BOOL
,
778 {"invoke_plugin_on_html", "FALSE", &prefs_common
.invoke_plugin_on_html
, P_BOOL
,
780 {"promote_html_part", "FALSE", &prefs_common
.promote_html_part
, P_BOOL
,
782 {"line_space", "2", &prefs_common
.line_space
, P_INT
,
784 {"never_send_retrcpt", "FALSE", &prefs_common
.never_send_retrcpt
, P_BOOL
,
787 {"enable_smooth_scroll", "FALSE",
788 &prefs_common
.enable_smooth_scroll
, P_BOOL
,
790 {"scroll_step", "1", &prefs_common
.scroll_step
, P_INT
,
792 {"scroll_half_page", "FALSE", &prefs_common
.scroll_halfpage
, P_BOOL
,
794 {"hide_quoted", "TRUE",
795 &prefs_common
.hide_quoted
, P_BOOL
,
797 {"respect_flowed_format", "FALSE", &prefs_common
.respect_flowed_format
, P_BOOL
,
799 {"show_all_headers", "FALSE", &prefs_common
.show_all_headers
, P_BOOL
,
802 {"show_other_header", "FALSE", &prefs_common
.show_other_header
, P_BOOL
,
805 {"attach_desc", "TRUE", &prefs_common
.attach_desc
, P_BOOL
,
807 {"attach_save_directory", NULL
,
808 &SPECIFIC_PREFS
.attach_save_dir
, P_STRING
, NULL
, NULL
, NULL
},
809 {"attach_save_chmod", "",
810 &SPECIFIC_PREFS
.attach_save_chmod
, P_INT
, NULL
, NULL
, NULL
},
811 {"attach_load_directory", NULL
,
812 &SPECIFIC_PREFS
.attach_load_dir
, P_STRING
, NULL
, NULL
, NULL
},
815 {"mime_textviewer", NULL
,
816 &SPECIFIC_PREFS
.mime_textviewer
, P_STRING
, NULL
, NULL
, NULL
},
817 {"mime_open_command", "xdg-open '%s'",
818 &SPECIFIC_PREFS
.mime_open_cmd
, P_STRING
, NULL
, NULL
, NULL
},
819 {"show_inline_attachments", "TRUE",
820 &prefs_common
.show_inline_attachments
, P_BOOL
, NULL
, NULL
, NULL
},
824 {"layout_mode", "0", &prefs_common
.layout_mode
, P_INT
,
827 {"layout_mode", "5", &prefs_common
.layout_mode
, P_INT
,
830 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
831 NULL, NULL, NULL}, */
832 {"open_selected_message_on_folder_open", "FALSE",
833 &prefs_common
.open_selected_on_folder_open
,
834 P_BOOL
, NULL
, NULL
, NULL
},
835 {"open_selected_message_on_search_results", "FALSE",
836 &prefs_common
.open_selected_on_search_results
,
837 P_BOOL
, NULL
, NULL
, NULL
},
838 {"open_selected_message_on_prevnext", "FALSE",
839 &prefs_common
.open_selected_on_prevnext
,
840 P_BOOL
, NULL
, NULL
, NULL
},
841 {"open_selected_message_on_deletemove", "FALSE",
842 &prefs_common
.open_selected_on_deletemove
,
843 P_BOOL
, NULL
, NULL
, NULL
},
844 {"open_selected_message_on_directional", "FALSE",
845 &prefs_common
.open_selected_on_directional
,
846 P_BOOL
, NULL
, NULL
, NULL
},
847 {"always_show_message_when_selected", "FALSE",
848 &prefs_common
.always_show_msg
,
849 P_BOOL
, NULL
, NULL
, NULL
},
850 {"select_on_entry", "3", &prefs_common
.select_on_entry
,
851 P_ENUM
, NULL
, NULL
, NULL
},
852 {"show_tooltips", "TRUE", &prefs_common
.show_tooltips
,
853 P_BOOL
, NULL
, NULL
, NULL
},
855 /* do it SUMMARY_OPEN_ACTIONS-1 times */
856 {"summary_select_prio1", "0", &prefs_common
.summary_select_prio
[0], P_ENUM
,
858 {"summary_select_prio2", "0", &prefs_common
.summary_select_prio
[1], P_ENUM
,
860 {"summary_select_prio3", "0", &prefs_common
.summary_select_prio
[2], P_ENUM
,
862 {"summary_select_prio4", "0", &prefs_common
.summary_select_prio
[3], P_ENUM
,
864 {"summary_select_prio5", "0", &prefs_common
.summary_select_prio
[4], P_ENUM
,
866 {"summary_select_prio6", "0", &prefs_common
.summary_select_prio
[5], P_ENUM
,
868 {"summary_select_prio7", "0", &prefs_common
.summary_select_prio
[6], P_ENUM
,
870 {"summary_select_prio8", "0", &prefs_common
.summary_select_prio
[7], P_ENUM
,
872 {"summary_select_prio9", "0", &prefs_common
.summary_select_prio
[8], P_ENUM
,
874 {"summary_select_prio10", "0", &prefs_common
.summary_select_prio
[9], P_ENUM
,
877 {"mark_as_read_on_new_window", "FALSE",
878 &prefs_common
.mark_as_read_on_new_window
,
879 P_BOOL
, NULL
, NULL
, NULL
},
880 {"mark_as_read_delay", "0",
881 &prefs_common
.mark_as_read_delay
, P_INT
,
883 {"immediate_execution", "TRUE", &prefs_common
.immediate_exec
, P_BOOL
,
885 {"nextunreadmsg_dialog", "1", &prefs_common
.next_unread_msg_dialog
, P_ENUM
,
887 {"summary_from_show", "0", &prefs_common
.summary_from_show
, P_ENUM
,
890 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME
,
891 &SPECIFIC_PREFS
.pixmap_theme_path
, P_STRING
,
894 {"enable_alpha_svg", "TRUE",
895 &SPECIFIC_PREFS
.enable_alpha_svg
, P_BOOL
,
897 {"enable_pixmap_scaling", "TRUE",
898 &SPECIFIC_PREFS
.enable_pixmap_scaling
, P_BOOL
,
900 {"pixmap_scaling_auto", "TRUE",
901 &SPECIFIC_PREFS
.pixmap_scaling_auto
, P_BOOL
,
903 {"pixmap_scaling_ppi", "96",
904 &SPECIFIC_PREFS
.pixmap_scaling_ppi
, P_INT
,
908 {"run_processingrules_before_mark_all", "FALSE", &prefs_common
.run_processingrules_before_mark_all
, P_BOOL
,
910 {"ask_mark_all_read", "TRUE", &prefs_common
.ask_mark_all_read
, P_BOOL
,
912 {"ask_override_colorlabel", "TRUE", &prefs_common
.ask_override_colorlabel
, P_BOOL
,
915 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common
.ask_apply_per_account_filtering_rules
, P_BOOL
,
917 {"apply_per_account_filtering_rules", "0", &prefs_common
.apply_per_account_filtering_rules
, P_ENUM
,
921 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common
.addressbook_use_editaddress_dialog
,
922 P_BOOL
, NULL
, NULL
, NULL
},
923 {"addressbook_hpaned_pos", "-1", &prefs_common
.addressbook_hpaned_pos
,
924 P_INT
, NULL
, NULL
, NULL
},
925 {"addressbook_vpaned_pos", "-1", &prefs_common
.addressbook_vpaned_pos
,
926 P_INT
, NULL
, NULL
, NULL
},
930 {"uri_open_command", DEFAULT_BROWSER_CMD
,
931 &SPECIFIC_PREFS
.uri_cmd
, P_STRING
, NULL
, NULL
, NULL
},
933 {"gtk_theme", DEFAULT_W32_GTK_THEME
,
934 &SPECIFIC_PREFS
.gtk_theme
, P_STRING
, NULL
, NULL
, NULL
},
936 {"ext_editor_command", DEFAULT_EDITOR_CMD
,
937 &SPECIFIC_PREFS
.ext_editor_cmd
, P_STRING
, NULL
, NULL
, NULL
},
938 {"cmds_use_system_default", "TRUE",
939 &prefs_common
.cmds_use_system_default
, P_BOOL
, NULL
, NULL
, NULL
},
940 {"add_address_by_click", "FALSE", &prefs_common
.add_address_by_click
,
941 P_BOOL
, NULL
, NULL
, NULL
},
942 {"session_passwords", "FALSE", &prefs_common
.session_passwords
,
943 P_BOOL
, NULL
, NULL
, NULL
},
944 {"confirm_on_exit", "FALSE", &prefs_common
.confirm_on_exit
, P_BOOL
,
946 {"clean_trash_on_exit", "FALSE", &prefs_common
.clean_on_exit
, P_BOOL
,
948 {"ask_on_cleaning", "TRUE", &prefs_common
.ask_on_clean
, P_BOOL
,
950 {"warn_queued_on_exit", "TRUE", &prefs_common
.warn_queued_on_exit
,
951 P_BOOL
, NULL
, NULL
, NULL
},
952 {"work_offline", "FALSE", &prefs_common
.work_offline
, P_BOOL
,
954 {"summary_quicksearch_type", "0", &prefs_common
.summary_quicksearch_type
, P_INT
,
957 {"summary_quicksearch_recurse", "1", &prefs_common
.summary_quicksearch_recurse
, P_INT
,
960 {"summary_quicksearch_recurse", "0", &prefs_common
.summary_quicksearch_recurse
, P_INT
,
964 #if defined(__OpenBSD__)
965 {"io_timeout_secs", "80", &prefs_common
.io_timeout_secs
,
966 P_INT
, NULL
, NULL
, NULL
},
968 {"io_timeout_secs", "60", &prefs_common
.io_timeout_secs
,
969 P_INT
, NULL
, NULL
, NULL
},
971 {"hide_score", "-9999", &prefs_common
.kill_score
, P_INT
,
973 {"important_score", "1", &prefs_common
.important_score
, P_INT
,
976 {"clip_log", "TRUE", &prefs_common
.cliplog
, P_BOOL
,
978 {"log_length", "500", &prefs_common
.loglength
, P_INT
,
981 {"enable_log_standard", "TRUE", &prefs_common
.enable_log_standard
, P_BOOL
,
983 {"enable_log_warning", "TRUE", &prefs_common
.enable_log_warning
, P_BOOL
,
985 {"enable_log_error", "TRUE", &prefs_common
.enable_log_error
, P_BOOL
,
987 {"enable_log_status", "TRUE", &prefs_common
.enable_log_status
, P_BOOL
,
990 {"enable_log_standard", "FALSE", &prefs_common
.enable_log_standard
, P_BOOL
,
992 {"enable_log_warning", "FALSE", &prefs_common
.enable_log_warning
, P_BOOL
,
994 {"enable_log_error", "FALSE", &prefs_common
.enable_log_error
, P_BOOL
,
996 {"enable_log_status", "FALSE", &prefs_common
.enable_log_status
, P_BOOL
,
999 {"log_msg_color", "#00af00", &prefs_common
.color
[COL_LOG_MSG
],
1000 P_COLOR
, NULL
, NULL
, NULL
},
1001 {"log_warn_color", "#af0000", &prefs_common
.color
[COL_LOG_WARN
],
1002 P_COLOR
, NULL
, NULL
, NULL
},
1003 {"log_error_color", "#af0000", &prefs_common
.color
[COL_LOG_ERROR
],
1004 P_COLOR
, NULL
, NULL
, NULL
},
1005 {"log_in_color", "#000000", &prefs_common
.color
[COL_LOG_IN
],
1006 P_COLOR
, NULL
, NULL
, NULL
},
1007 {"log_out_color", "#0000ef", &prefs_common
.color
[COL_LOG_OUT
],
1008 P_COLOR
, NULL
, NULL
, NULL
},
1009 {"log_status_ok_color", "#00af00", &prefs_common
.color
[COL_LOG_STATUS_OK
],
1010 P_COLOR
, NULL
, NULL
, NULL
},
1011 {"log_status_nok_color", "#0000af", &prefs_common
.color
[COL_LOG_STATUS_NOK
],
1012 P_COLOR
, NULL
, NULL
, NULL
},
1013 {"log_status_skip_color", "#aa00aa", &prefs_common
.color
[COL_LOG_STATUS_SKIP
],
1014 P_COLOR
, NULL
, NULL
, NULL
},
1016 {"enable_filtering_debug", "FALSE", &prefs_common
.enable_filtering_debug
, P_BOOL
,
1018 {"filtering_debug_level", "1", &prefs_common
.filtering_debug_level
, P_INT
,
1020 {"enable_filtering_debug_inc", "TRUE", &prefs_common
.enable_filtering_debug_inc
, P_BOOL
,
1022 {"enable_filtering_debug_manual", "TRUE", &prefs_common
.enable_filtering_debug_manual
, P_BOOL
,
1024 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common
.enable_filtering_debug_folder_proc
, P_BOOL
,
1026 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common
.enable_filtering_debug_pre_proc
, P_BOOL
,
1028 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common
.enable_filtering_debug_post_proc
, P_BOOL
,
1030 {"filtering_debug_clip_log", "TRUE", &prefs_common
.filtering_debug_cliplog
, P_BOOL
,
1032 {"filtering_debug_log_length", "500", &prefs_common
.filtering_debug_loglength
, P_INT
,
1035 {"gtk_enable_accels", "TRUE", &prefs_common
.gtk_enable_accels
, P_BOOL
,
1038 {"color_new", "#0000b3", &prefs_common
.color
[COL_NEW
],
1039 P_COLOR
, NULL
, NULL
, NULL
},
1041 /* Some windows' sizes */
1042 {"filteringwin_width", "500", &prefs_common
.filteringwin_width
, P_INT
,
1044 {"filteringwin_height", "-1", &prefs_common
.filteringwin_height
, P_INT
,
1047 {"filteringactionwin_width", "490", &prefs_common
.filteringactionwin_width
, P_INT
,
1049 {"filteringactionwin_height", "-1", &prefs_common
.filteringactionwin_height
, P_INT
,
1052 {"matcherwin_width", "520", &prefs_common
.matcherwin_width
, P_INT
,
1054 {"matcherwin_height", "-1", &prefs_common
.matcherwin_height
, P_INT
,
1057 {"templateswin_width", "480", &prefs_common
.templateswin_width
, P_INT
,
1059 {"templateswin_height", "-1", &prefs_common
.templateswin_height
, P_INT
,
1062 {"actionsiodialog_width", "582", &prefs_common
.actionsiodialog_width
, P_INT
,
1064 {"actionsiodialog_height", "310", &prefs_common
.actionsiodialog_height
, P_INT
,
1067 {"actionswin_width", "486", &prefs_common
.actionswin_width
, P_INT
,
1069 {"actionswin_height", "-1", &prefs_common
.actionswin_height
, P_INT
,
1072 {"tagswin_width", "586", &prefs_common
.tagswin_width
, P_INT
,
1074 {"tagswin_height", "-1", &prefs_common
.tagswin_height
, P_INT
,
1077 {"sslmanwin_width", "486", &prefs_common
.sslmanwin_width
, P_INT
,
1079 {"sslmanwin_height", "-1", &prefs_common
.sslmanwin_height
, P_INT
,
1082 {"uriopenerwin_width", "-1", &prefs_common
.uriopenerwin_width
, P_INT
,
1084 {"uriopenerwin_height", "-1", &prefs_common
.uriopenerwin_height
, P_INT
,
1087 {"foldersortwin_width", "400", &prefs_common
.foldersortwin_width
, P_INT
,
1089 {"foldersortwin_height", "300", &prefs_common
.foldersortwin_height
, P_INT
,
1092 {"addressbookwin_width", "520", &prefs_common
.addressbookwin_width
, P_INT
,
1094 {"addressbookwin_height", "-1", &prefs_common
.addressbookwin_height
, P_INT
,
1097 {"addressbookeditpersonwin_width", "640", &prefs_common
.addressbookeditpersonwin_width
, P_INT
,
1099 {"addressbookeditpersonwin_height", "320", &prefs_common
.addressbookeditpersonwin_height
, P_INT
,
1102 {"addressbookeditgroupwin_width", "580", &prefs_common
.addressbookeditgroupwin_width
, P_INT
,
1104 {"addressbookeditgroupwin_height", "340", &prefs_common
.addressbookeditgroupwin_height
, P_INT
,
1107 {"pluginswin_width", "-1", &prefs_common
.pluginswin_width
, P_INT
,
1109 {"pluginswin_height", "-1", &prefs_common
.pluginswin_height
, P_INT
,
1112 {"prefswin_width", "600", &prefs_common
.prefswin_width
, P_INT
,
1114 {"prefswin_height", "-1", &prefs_common
.prefswin_height
, P_INT
,
1117 {"folderitemwin_width", "500", &prefs_common
.folderitemwin_width
, P_INT
,
1119 {"folderitemwin_height", "-1", &prefs_common
.folderitemwin_height
, P_INT
,
1122 {"zero_replacement_char", "0", &prefs_common
.zero_replacement
, P_STRING
,
1125 {"editaccountwin_width", "500", &prefs_common
.editaccountwin_width
, P_INT
,
1127 {"editaccountwin_height", "-1", &prefs_common
.editaccountwin_height
, P_INT
,
1130 {"accountswin_width", "500", &prefs_common
.accountswin_width
, P_INT
,
1132 {"accountswin_height", "-1", &prefs_common
.accountswin_height
, P_INT
,
1135 {"logwin_width", "520", &prefs_common
.logwin_width
, P_INT
,
1137 {"logwin_height", "-1", &prefs_common
.logwin_height
, P_INT
,
1140 {"filtering_debugwin_width", "600", &prefs_common
.filtering_debugwin_width
, P_INT
,
1142 {"filtering_debugwin_height", "-1", &prefs_common
.filtering_debugwin_height
, P_INT
,
1145 {"folderselwin_width", "300", &prefs_common
.folderselwin_width
, P_INT
,
1147 {"folderselwin_height", "-1", &prefs_common
.folderselwin_height
, P_INT
,
1150 {"addressaddwin_width", "300", &prefs_common
.addressaddwin_width
, P_INT
,
1152 {"addressaddwin_height", "-1", &prefs_common
.addressaddwin_height
, P_INT
,
1155 {"addressbook_folderselwin_width", "300", &prefs_common
.addressbook_folderselwin_width
, P_INT
,
1157 {"addressbook_folderselwin_height", "-1", &prefs_common
.addressbook_folderselwin_height
, P_INT
,
1160 {"aboutwin_width", "450", &prefs_common
.aboutwin_width
, P_INT
,
1162 {"aboutwin_height", "500", &prefs_common
.aboutwin_height
, P_INT
,
1165 {"addrgather_width", "450", &prefs_common
.addrgather_width
, P_INT
,
1167 {"addrgather_height", "-1", &prefs_common
.addrgather_height
, P_INT
,
1170 {"news_subscribe_width", "450", &prefs_common
.news_subscribe_width
, P_INT
,
1172 {"news_subscribe_height", "400", &prefs_common
.news_subscribe_height
, P_INT
,
1176 {"imap_scan_tree_recurs_limit", "64", &prefs_common
.imap_scan_tree_recurs_limit
, P_INT
,
1178 {"warn_dnd", "1", &prefs_common
.warn_dnd
, P_INT
,
1180 {"show_save_all_success", "1", &prefs_common
.show_save_all_success
, P_INT
,
1182 {"show_save_all_failure", "1", &prefs_common
.show_save_all_failure
, P_INT
,
1184 {"utf8_instead_of_locale_for_broken_mail", "0",
1185 &prefs_common
.broken_are_utf8
, P_INT
,
1187 {"enable_swap_from", "FALSE", &prefs_common
.swap_from
, P_BOOL
,
1189 {"use_stripes_everywhere", "TRUE", &prefs_common
.use_stripes_everywhere
, P_BOOL
,
1191 {"use_stripes_in_summaries", "TRUE", &prefs_common
.use_stripes_in_summaries
, P_BOOL
,
1193 {"stripes_color_offset", "4000", &prefs_common
.stripes_color_offset
, P_INT
,
1195 {"enable_hscrollbar", "TRUE", &prefs_common
.enable_hscrollbar
, P_BOOL
,
1197 {"folderview_vscrollbar_policy", "0",
1198 &prefs_common
.folderview_vscrollbar_policy
, P_ENUM
,
1200 {"textview_cursor_visible", "FALSE",
1201 &prefs_common
.textview_cursor_visible
, P_BOOL
,
1203 {"hover_timeout", "500", &prefs_common
.hover_timeout
, P_INT
,
1205 #ifndef GENERIC_UMPC
1206 {"cache_max_mem_usage", "4096", &prefs_common
.cache_max_mem_usage
, P_INT
,
1208 {"cache_min_keep_time", "15", &prefs_common
.cache_min_keep_time
, P_INT
,
1211 {"cache_max_mem_usage", "4096", &prefs_common
.cache_max_mem_usage
, P_INT
,
1213 {"cache_min_keep_time", "0", &prefs_common
.cache_min_keep_time
, P_INT
,
1216 {"thread_by_subject_max_age", "10", &prefs_common
.thread_by_subject_max_age
,
1217 P_INT
, NULL
, NULL
, NULL
},
1218 {"last_opened_folder", "", &prefs_common
.last_opened_folder
,
1219 P_STRING
, NULL
, NULL
, NULL
},
1220 {"goto_last_folder_on_startup", "FALSE", &prefs_common
.goto_last_folder_on_startup
,
1221 P_BOOL
, NULL
, NULL
, NULL
},
1222 {"startup_folder", "", &prefs_common
.startup_folder
,
1223 P_STRING
, NULL
, NULL
, NULL
},
1224 {"goto_folder_on_startup", "FALSE", &prefs_common
.goto_folder_on_startup
,
1225 P_BOOL
, NULL
, NULL
, NULL
},
1226 {"summary_quicksearch_sticky", "1", &prefs_common
.summary_quicksearch_sticky
, P_INT
,
1228 {"summary_quicksearch_dynamic", "0", &prefs_common
.summary_quicksearch_dynamic
, P_INT
,
1230 {"summary_quicksearch_autorun", "0", &prefs_common
.summary_quicksearch_autorun
, P_INT
,
1232 {"statusbar_update_step", "10", &prefs_common
.statusbar_update_step
, P_INT
,
1234 {"compose_no_markup", "FALSE", &prefs_common
.compose_no_markup
, P_BOOL
,
1236 {"skip_ssl_cert_check", "FALSE", &prefs_common
.skip_ssl_cert_check
, P_BOOL
,
1238 {"live_dangerously", "FALSE", &prefs_common
.live_dangerously
, P_BOOL
,
1240 {"save_parts_readwrite", "FALSE", &prefs_common
.save_parts_readwrite
, P_BOOL
,
1242 {"hide_quotes", "0", &prefs_common
.hide_quotes
, P_INT
,
1244 {"unsafe_ssl_certs", "FALSE", &prefs_common
.unsafe_ssl_certs
, P_BOOL
,
1246 #ifndef GENERIC_UMPC
1247 {"real_time_sync", "FALSE", &prefs_common
.real_time_sync
, P_BOOL
,
1250 {"real_time_sync", "TRUE", &prefs_common
.real_time_sync
, P_BOOL
,
1254 {"print_paper_type", NULL
, &prefs_common
.print_paper_type
, P_STRING
,
1256 {"print_paper_orientation", "0", &prefs_common
.print_paper_orientation
, P_INT
,
1258 {"print_margin_top", "-1", &prefs_common
.print_margin_top
, P_INT
,
1260 {"print_margin_bottom", "-1", &prefs_common
.print_margin_bottom
, P_INT
,
1262 {"print_margin_left", "-1", &prefs_common
.print_margin_left
, P_INT
,
1264 {"print_margin_right", "-1", &prefs_common
.print_margin_right
, P_INT
,
1266 {"print_use_color", "0", &prefs_common
.print_use_color
, P_INT
,
1268 {"print_use_collate", "0", &prefs_common
.print_use_collate
, P_INT
,
1270 {"print_use_reverse", "0", &prefs_common
.print_use_reverse
, P_INT
,
1272 {"print_use_duplex", "0", &prefs_common
.print_use_duplex
, P_INT
,
1274 {"print_imgs", "1", &prefs_common
.print_imgs
, P_INT
,
1276 {"print_previewwin_width", "600", &prefs_common
.print_previewwin_width
, P_INT
,
1278 {"print_previewwin_height", "-1", &prefs_common
.print_previewwin_height
, P_INT
,
1280 {"use_networkmanager", "TRUE", &prefs_common
.use_networkmanager
, P_BOOL
,
1282 {"use_shred", "FALSE", &prefs_common
.use_shred
, P_BOOL
,
1285 {"two_line_vertical", "TRUE", &prefs_common
.two_line_vert
,
1286 P_BOOL
, NULL
, NULL
, NULL
},
1288 {"inherit_folder_properties", "FALSE", &prefs_common
.inherit_folder_props
, P_BOOL
,
1291 {"flush_metadata", "TRUE", &prefs_common
.flush_metadata
, P_BOOL
,
1294 {"nav_history_length", "50", &prefs_common
.nav_history_length
, P_INT
,
1297 {"diff_added_color", "#008b8b", &prefs_common
.color
[COL_DIFF_ADDED
],
1298 P_COLOR
, NULL
, NULL
, NULL
},
1299 {"diff_deleted_color", "#6a5acd", &prefs_common
.color
[COL_DIFF_DELETED
],
1300 P_COLOR
, NULL
, NULL
, NULL
},
1301 {"diff_hunk_color", "#a52a2a", &prefs_common
.color
[COL_DIFF_HUNK
],
1302 P_COLOR
, NULL
, NULL
, NULL
},
1304 {"folder_search_wildcard", "TRUE", &prefs_common
.folder_search_wildcard
, P_BOOL
,
1306 {"address_search_wildcard", "TRUE", &prefs_common
.address_search_wildcard
, P_BOOL
,
1308 {"enable_avatars", "3", &prefs_common
.enable_avatars
, P_INT
, NULL
, NULL
, NULL
},
1309 #ifndef PASSWORD_CRYPTO_OLD
1310 {"use_master_passphrase", FALSE
, &prefs_common
.use_primary_passphrase
, P_BOOL
, NULL
, NULL
, NULL
},
1311 {"master_passphrase", "", &prefs_common
.primary_passphrase
, P_STRING
, NULL
, NULL
, NULL
},
1312 {"master_passphrase_salt", "", &prefs_common
.primary_passphrase_salt
, P_STRING
, NULL
, NULL
, NULL
},
1313 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common
.primary_passphrase_pbkdf2_rounds
, P_INT
, NULL
, NULL
, NULL
},
1316 {"use_proxy", "FALSE", &prefs_common
.use_proxy
, P_BOOL
, NULL
, NULL
, NULL
},
1317 {"proxy_type", "1", &prefs_common
.proxy_info
.proxy_type
, P_ENUM
, NULL
, NULL
, NULL
},
1318 {"proxy_host", "localhost", &prefs_common
.proxy_info
.proxy_host
, P_STRING
, NULL
, NULL
, NULL
},
1319 {"proxy_port", "1080", &prefs_common
.proxy_info
.proxy_port
, P_USHORT
, NULL
, NULL
, NULL
},
1320 {"use_proxy_auth", "FALSE", &prefs_common
.proxy_info
.use_proxy_auth
, P_BOOL
, NULL
, NULL
, NULL
},
1321 {"proxy_name", "", &prefs_common
.proxy_info
.proxy_name
, P_STRING
, NULL
, NULL
, NULL
},
1322 {"proxy_pass", NULL
, &prefs_common
.proxy_info
.proxy_pass
, P_STRING
, NULL
, NULL
, NULL
},
1324 {"qs_press_timeout", "500", &prefs_common
.qs_press_timeout
, P_INT
,
1327 {"passphrase_dialog_msg_title_switch", "FALSE", &prefs_common
.passphrase_dialog_msg_title_switch
,
1328 P_BOOL
, NULL
, NULL
, NULL
},
1330 {NULL
, NULL
, NULL
, P_OTHER
, NULL
, NULL
, NULL
}
1334 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1335 * Fallback to default_list if history file is not found
1337 GList
*prefs_common_read_history_from_dir_with_defaults(const gchar
*dirname
, const gchar
*history
,
1338 GList
*default_list
)
1342 gchar buf
[PREFSBUFSIZE
];
1346 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, dirname
,
1347 G_DIR_SEPARATOR_S
, history
,
1350 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, history
,
1353 if ((fp
= claws_fopen(path
, "rb")) == NULL
) {
1354 if (ENOENT
!= errno
) FILE_OP_ERROR(path
, "claws_fopen");
1356 /* returns default list if set, otherwise NULL */
1357 return default_list
;
1360 while (claws_fgets(buf
, sizeof(buf
), fp
) != NULL
) {
1362 if (buf
[0] == '\0') continue;
1363 tmp
= add_history(tmp
, buf
);
1367 tmp
= g_list_reverse(tmp
);
1373 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1375 static GList
*prefs_common_read_history_from_dir(const gchar
*dirname
, const gchar
*history
)
1377 return prefs_common_read_history_from_dir_with_defaults(dirname
, history
, NULL
);
1381 * Read history list from the specified history file
1383 static GList
*prefs_common_read_history(const gchar
*history
)
1385 return prefs_common_read_history_from_dir(NULL
, history
);
1388 void prefs_common_read_config(void)
1393 rcpath
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, COMMON_RC
, NULL
);
1394 prefs_read_config(param
, "Common", rcpath
, NULL
);
1396 prefs_read_config(param_os_specific
, "CommonWin32", rcpath
, NULL
);
1401 tmp
= g_strdup(gettext(prefs_common
.date_format
));
1402 g_free(prefs_common
.date_format
);
1403 prefs_common
.date_format
= tmp
;
1405 prefs_common
.mime_open_cmd_history
=
1406 prefs_common_read_history(COMMAND_HISTORY
);
1407 prefs_common
.summary_quicksearch_history
=
1408 prefs_common_read_history(QUICKSEARCH_HISTORY
);
1409 prefs_common
.summary_search_from_history
=
1410 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY
);
1411 prefs_common
.summary_search_to_history
=
1412 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY
);
1413 prefs_common
.summary_search_subject_history
=
1414 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY
);
1415 prefs_common
.summary_search_body_history
=
1416 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY
);
1417 prefs_common
.summary_search_adv_condition_history
=
1418 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY
);
1419 prefs_common
.message_search_history
=
1420 prefs_common_read_history(MESSAGE_SEARCH_HISTORY
);
1421 prefs_common
.compose_save_to_history
=
1422 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY
);
1423 #ifndef USE_ALT_ADDRBOOK
1424 prefs_common
.addressbook_custom_attributes
= addressbook_update_custom_attr_from_prefs();
1426 colorlabel_update_colortable_from_prefs();
1432 g_warning("failed to write"); \
1437 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1439 static void prefs_common_save_history_to_dir(const gchar
*dirname
, const gchar
*history
, GList
*list
)
1443 gchar
*path
, *tmp_path
;
1446 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, dirname
,
1447 G_DIR_SEPARATOR_S
, history
,
1450 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, history
,
1453 tmp_path
= g_strconcat(path
, ".tmp", NULL
);
1455 if ((fp
= claws_fopen(tmp_path
, "wb")) == NULL
) {
1456 FILE_OP_ERROR(tmp_path
, "claws_fopen");
1460 if (change_file_mode_rw(fp
, history
) < 0) {
1461 FILE_OP_ERROR(history
, "chmod");
1462 g_warning("can't change file mode: %s", history
);
1465 for (cur
= list
; cur
!= NULL
; cur
= cur
->next
) {
1466 TRY(claws_fputs((gchar
*)cur
->data
, fp
) != EOF
&&
1467 claws_fputc('\n', fp
) != EOF
);
1470 if (claws_safe_fclose(fp
) == EOF
) {
1471 FILE_OP_ERROR(tmp_path
, "claws_fclose");
1479 if (g_rename(tmp_path
, path
) < 0) {
1480 FILE_OP_ERROR(path
, "rename");
1486 claws_safe_fclose(fp
);
1492 * Save history list to the specified history file
1494 static void prefs_common_save_history(const gchar
*history
, GList
*list
)
1496 prefs_common_save_history_to_dir(NULL
, history
, list
);
1501 void prefs_common_write_config(void)
1503 prefs_write_config(param
, "Common", COMMON_RC
);
1505 prefs_write_config(param_os_specific
, "CommonWin32", COMMON_RC
);
1508 prefs_common_save_history(COMMAND_HISTORY
,
1509 prefs_common
.mime_open_cmd_history
);
1510 prefs_common_save_history(QUICKSEARCH_HISTORY
,
1511 prefs_common
.summary_quicksearch_history
);
1512 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY
,
1513 prefs_common
.summary_search_from_history
);
1514 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY
,
1515 prefs_common
.summary_search_to_history
);
1516 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY
,
1517 prefs_common
.summary_search_subject_history
);
1518 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY
,
1519 prefs_common
.summary_search_body_history
);
1520 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY
,
1521 prefs_common
.summary_search_adv_condition_history
);
1522 prefs_common_save_history(MESSAGE_SEARCH_HISTORY
,
1523 prefs_common
.message_search_history
);
1524 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY
,
1525 prefs_common
.compose_save_to_history
);
1527 #ifndef USE_ALT_ADDRBOOK
1528 prefs_common_save_history_to_dir(ADDRBOOK_DIR
,
1529 ADDRESSBOOK_CUSTOM_ATTRIBUTES
,
1530 prefs_common
.addressbook_custom_attributes
);
1534 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1535 both 'in' and 'out' must be non-NULL.
1536 'out' must be a pointer to a buffer whose size is at least equal
1537 to strlen(txt)+1, this buffer will get cleared. out's contents
1538 will always get set to a valid string, even if it's "".*/
1539 void pref_get_unescaped_pref(gchar
*out
, const gchar
*in
)
1546 cm_return_if_fail( in
!= NULL
);
1547 cm_return_if_fail( out
!= NULL
);
1551 memset(out
, 0, strlen(in
)+1);
1552 while (*i
!= '\0') {
1553 if (*i
== '\\' && *(i
+1) == 'n') {
1556 } else if (*i
== '\\' && *(i
+1) == 't') {
1559 } else if (*i
== '\\' && *(i
+1) == '\\') {
1570 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1571 both 'in' and 'out' must be non-NULL.
1572 'out' must be a pointer to a buffer whose size is at least equal
1573 to 2*strlen(txt)+1. out's contents will always get set to a valid
1574 string, even if it's "". */
1575 void pref_get_escaped_pref(gchar
*out
, const gchar
*in
)
1582 cm_return_if_fail( in
!= NULL
);
1583 cm_return_if_fail( out
!= NULL
);
1587 while (*i
!= '\0') {
1591 } else if (*i
== '\t') {
1594 } else if (*i
== '\\') {
1605 /* set the contents of a textview widget from the internal \-escaped
1606 representation of a pref string. both txt and textview must be non-NULL. */
1607 void pref_set_textview_from_pref(GtkTextView
*textview
, const gchar
*txt
)
1609 GtkTextBuffer
*buffer
;
1612 cm_return_if_fail( textview
!= NULL
);
1614 buffer
= gtk_text_view_get_buffer(textview
);
1617 gtk_text_buffer_set_text(buffer
, "", -1);
1619 out
= g_malloc(strlen(txt
)+1);
1621 pref_get_unescaped_pref(out
, txt
);
1623 gtk_text_buffer_set_text(buffer
, out
, -1);
1628 /* set the contents of a gtkentry widget from the internal \-escaped
1629 representation of a pref string. both txt and entry must be non-NULL. */
1630 void pref_set_entry_from_pref(GtkEntry
*entry
, const gchar
*txt
)
1634 cm_return_if_fail( entry
!= NULL
);
1636 gtk_entry_set_text(entry
, "");
1638 out
= g_malloc(strlen(txt
)+1);
1640 pref_get_unescaped_pref(out
, txt
);
1642 gtk_entry_set_text(entry
, out
);
1647 /* get the \-escaped internal representation of a pref from the contents of
1648 a textview widget. textview must be non-NULL. */
1649 gchar
*pref_get_pref_from_textview(GtkTextView
*textview
)
1651 GtkTextBuffer
*buffer
;
1652 GtkTextIter start
, end
;
1655 cm_return_val_if_fail( textview
!= NULL
, "" );
1657 buffer
= gtk_text_view_get_buffer(textview
);
1658 gtk_text_buffer_get_start_iter(buffer
, &start
);
1659 gtk_text_buffer_get_iter_at_offset(buffer
, &end
, -1);
1660 tmp
= gtk_text_buffer_get_text(buffer
, &start
, &end
, FALSE
);
1661 out
= malloc(2*strlen(tmp
)+1);
1663 pref_get_escaped_pref(out
, tmp
);
1669 /* get the \-escaped internal representation of a pref from the contents of
1670 a gtkentry widget. entry must be non-NULL. */
1671 gchar
*pref_get_pref_from_entry(GtkEntry
*entry
)
1675 cm_return_val_if_fail( entry
!= NULL
, "" );
1677 tmp
= gtk_editable_get_chars(GTK_EDITABLE(entry
), 0, -1);
1678 out
= malloc(2*strlen(tmp
)+1);
1681 pref_get_escaped_pref(out
, tmp
);
1687 /* ugly hack to be able to get this pref from ssl_certificate.c */
1688 gboolean
prefs_common_unsafe_ssl_certs(void)
1690 return prefs_common
.unsafe_ssl_certs
;
1693 gboolean
prefs_common_enable_log_standard(void)
1695 return prefs_common
.enable_log_standard
;
1698 gboolean
prefs_common_enable_log_warning(void)
1700 return prefs_common
.enable_log_warning
;
1702 gboolean
prefs_common_enable_log_error(void)
1704 return prefs_common
.enable_log_error
;
1706 gboolean
prefs_common_enable_log_status(void)
1708 return prefs_common
.enable_log_status
;
1712 return the translated name of a header, if the translate_header option is
1713 set, otherwise return the untranslated header name (header_name itself).
1714 this function is provided for convenience, it's an interface to
1715 prefs_common.trans_hdr.
1716 works with header names either with or without trailing colon, provided
1717 that gettext found such header name in the sources (they should all be
1718 found in src/gtk/headers.h anyway).
1720 const gchar
*prefs_common_translated_header_name(const gchar
*header_name
)
1722 if (header_name
== NULL
|| *header_name
== '\0')
1725 return prefs_common
.trans_hdr
? gettext(header_name
) : header_name
;
1728 const gchar
*prefs_common_get_uri_cmd(void)
1735 if (!prefs_common
.cmds_use_system_default
)
1736 return prefs_common
.uri_cmd
;
1738 tmp
= g_find_program_in_path("xdg-open");
1740 return prefs_common
.uri_cmd
;
1743 return "xdg-open %s";
1747 const gchar
*prefs_common_get_ext_editor_cmd(void)
1749 return prefs_common
.ext_editor_cmd
;
1750 #if 0 /* we should do that, but it detaches the editor and breaks
1751 compose.c's external composition. */
1754 if (!prefs_common
.cmds_use_system_default
)
1755 return prefs_common
.ext_editor_cmd
;
1757 tmp
= g_find_program_in_path("xdg-open");
1759 return prefs_common
.ext_editor_cmd
;
1762 return "xdg-open %s";
1766 gboolean
prefs_common_get_use_shred(void)
1768 return prefs_common
.use_shred
;
1771 gboolean
prefs_common_get_flush_metadata (void)
1773 return prefs_common
.flush_metadata
;
1776 PrefsCommon
*prefs_common_get_prefs(void)
1778 return &prefs_common
;