2 * Claws Mail -- a GTK based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2023 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_load_directory", NULL
,
114 &prefs_common
.attach_load_dir
, P_STRING
, NULL
, NULL
, NULL
},
117 {"mime_textviewer", NULL
,
118 &prefs_common
.mime_textviewer
, P_STRING
, NULL
, NULL
, NULL
},
119 {"mime_open_command", "notepad '%s'",
120 &prefs_common
.mime_open_cmd
, P_STRING
, NULL
, NULL
, NULL
},
123 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME
,
124 &prefs_common
.pixmap_theme_path
, P_STRING
, NULL
, NULL
, NULL
},
126 {"enable_alpha_svg", "TRUE",
127 &prefs_common
.enable_alpha_svg
, P_BOOL
, NULL
, NULL
, NULL
},
128 {"enable_pixmap_scaling", "TRUE",
129 &prefs_common
.enable_pixmap_scaling
, P_BOOL
, NULL
, NULL
, NULL
},
130 {"pixmap_scaling_auto", "TRUE",
131 &prefs_common
.pixmap_scaling_auto
, P_BOOL
, NULL
, NULL
, NULL
},
132 {"pixmap_scaling_ppi", "96",
133 &prefs_common
.pixmap_scaling_ppi
, P_INT
, NULL
, NULL
, NULL
},
137 {"ext_editor_command", "notepad %s",
138 &prefs_common
.ext_editor_cmd
, P_STRING
, NULL
, NULL
, NULL
},
140 {NULL
, NULL
, NULL
, P_OTHER
, NULL
, NULL
, NULL
}
143 # define SPECIFIC_PREFS prefs_common
147 parameter name, default value, pointer to the prefs variable, data type,
148 pointer to the widget pointer,
149 pointer to the function for data setting,
150 pointer to the function for widget setting
153 static PrefParam param
[] = {
154 {"config_version", "0",
155 &prefs_common
.config_version
, P_INT
, NULL
, NULL
, NULL
},
158 {"use_ext_inc", "FALSE", &prefs_common
.use_extinc
, P_BOOL
,
160 {"ext_inc_path", DEFAULT_INC_PATH
, &SPECIFIC_PREFS
.extinc_cmd
, P_STRING
,
163 {"autochk_newmail", "FALSE", &prefs_common
.autochk_newmail
, P_BOOL
,
165 {"autochk_interval", "600", &prefs_common
.autochk_itv
, P_INT
,
167 {"check_on_startup", "FALSE", &prefs_common
.chk_on_startup
, P_BOOL
,
169 {"open_inbox_on_inc", "FALSE", &prefs_common
.open_inbox_on_inc
,
170 P_BOOL
, NULL
, NULL
, NULL
},
171 {"scan_all_after_inc", "FALSE", &prefs_common
.scan_all_after_inc
,
172 P_BOOL
, NULL
, NULL
, NULL
},
173 {"newmail_notify_manu", "FALSE", &prefs_common
.newmail_notify_manu
,
174 P_BOOL
, NULL
, NULL
, NULL
},
175 {"newmail_notify_auto", "FALSE", &prefs_common
.newmail_notify_auto
,
176 P_BOOL
, NULL
, NULL
, NULL
},
177 {"newmail_notify_cmd", "", &SPECIFIC_PREFS
.newmail_notify_cmd
, P_STRING
,
179 {"receive_dialog_mode", "2", &prefs_common
.recv_dialog_mode
, P_ENUM
,
181 {"receivewin_width", "460", &prefs_common
.receivewin_width
, P_INT
,
183 {"receivewin_height", "-1", &prefs_common
.receivewin_height
, P_INT
,
185 {"no_receive_error_panel", "FALSE", &prefs_common
.no_recv_err_panel
,
186 P_BOOL
, NULL
, NULL
, NULL
},
187 {"close_receive_dialog", "TRUE", &prefs_common
.close_recv_dialog
,
188 P_BOOL
, NULL
, NULL
, NULL
},
191 {"save_message", "TRUE", &prefs_common
.savemsg
, P_BOOL
,
193 {"confirm_send_queued_messages", "FALSE", &prefs_common
.confirm_send_queued_messages
,
194 P_BOOL
, NULL
, NULL
, NULL
},
196 {"send_dialog_mode", "0", &prefs_common
.send_dialog_invisible
, P_BOOL
,
199 {"send_dialog_mode", "1", &prefs_common
.send_dialog_invisible
, P_BOOL
,
202 {"sendwin_width", "460", &prefs_common
.sendwin_width
, P_INT
,
204 {"sendwin_height", "-1", &prefs_common
.sendwin_height
, P_INT
,
207 {"outgoing_charset", CS_AUTO
, &prefs_common
.outgoing_charset
, P_STRING
,
209 {"encoding_method", "0", &prefs_common
.encoding_method
, P_ENUM
,
211 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common
.outgoing_fallback_to_ascii
, P_BOOL
,
213 {"rewrite_first_from", "TRUE", &prefs_common
.rewrite_first_from
,
214 P_BOOL
, NULL
, NULL
, NULL
},
215 {"warn_empty_subj", "TRUE", &prefs_common
.warn_empty_subj
,
216 P_BOOL
, NULL
, NULL
, NULL
},
217 {"warn_sending_many_recipients_num", "0", &prefs_common
.warn_sending_many_recipients_num
, P_INT
,
219 {"hide_timezone", "FALSE", &prefs_common
.hide_timezone
,
220 P_BOOL
, NULL
, NULL
, NULL
},
221 {"allow_jisx0201_kana", "FALSE", &prefs_common
.allow_jisx0201_kana
,
222 P_BOOL
, NULL
, NULL
, NULL
},
225 {"auto_ext_editor", "FALSE", &prefs_common
.auto_exteditor
, P_BOOL
,
227 {"forward_as_attachment", "FALSE", &prefs_common
.forward_as_attachment
,
228 P_BOOL
, NULL
, NULL
, NULL
},
229 {"redirect_keep_from", "FALSE",
230 &prefs_common
.redirect_keep_from
, P_BOOL
,
232 {"undo_level", "50", &prefs_common
.undolevels
, P_INT
,
234 {"compose_with_format", "FALSE", &prefs_common
.compose_with_format
, P_BOOL
,
236 {"compose_subject_format", "",
237 &prefs_common
.compose_subject_format
, P_STRING
, NULL
, NULL
, NULL
},
238 {"compose_body_format", N_("Hello,\\n"),
239 &prefs_common
.compose_body_format
, P_STRING
, NULL
, NULL
, NULL
},
240 {"show_compose_margin", "FALSE", &prefs_common
.show_compose_margin
, P_BOOL
,
242 {"type_any_header", "FALSE", &prefs_common
.type_any_header
, P_BOOL
,
246 {"linewrap_length", "72", &prefs_common
.linewrap_len
, P_INT
,
248 {"linewrap_quotation", "TRUE", &prefs_common
.linewrap_quote
, P_BOOL
,
250 {"linewrap_pastes", "TRUE", &prefs_common
.linewrap_pastes
, P_BOOL
,
252 {"primary_paste_unselects", "FALSE", &prefs_common
.primary_paste_unselects
, P_BOOL
,
254 {"linewrap_auto", "TRUE", &prefs_common
.autowrap
, P_BOOL
,
256 {"auto_indent", "TRUE", &prefs_common
.auto_indent
, P_BOOL
,
258 {"autosave", "TRUE", &prefs_common
.autosave
,
259 P_BOOL
, NULL
, NULL
, NULL
},
260 {"autosave_length", "50", &prefs_common
.autosave_length
, P_INT
,
262 {"autosave_encrypted", "FALSE", &prefs_common
.autosave_encrypted
,
263 P_BOOL
, NULL
, NULL
, NULL
},
264 {"warn_large_insert", "TRUE", &prefs_common
.warn_large_insert
,
265 P_BOOL
, NULL
, NULL
, NULL
},
266 {"warn_large_insert_size", "500", &prefs_common
.warn_large_insert_size
,
267 P_INT
, NULL
, NULL
, NULL
},
269 {"enable_aspell", "TRUE", &prefs_common
.enable_aspell
, P_BOOL
,
271 {"dictionary", "", &prefs_common
.dictionary
, P_STRING
,
273 {"alt_dictionary", "", &prefs_common
.alt_dictionary
, P_STRING
,
275 {"use_alternate_dict", "FALSE", &prefs_common
.use_alternate
, P_BOOL
,
277 {"check_while_typing", "TRUE", &prefs_common
.check_while_typing
, P_BOOL
,
279 {"recheck_when_changing_dict", "TRUE", &prefs_common
.recheck_when_changing_dict
,
280 P_BOOL
, NULL
, NULL
, NULL
},
281 {"misspelled_color", "#ff0000", &prefs_common
.color
[COL_MISSPELLED
],
282 P_COLOR
, NULL
, NULL
, NULL
},
283 {"use_both_dicts", "FALSE", &prefs_common
.use_both_dicts
, P_BOOL
,
286 {"reply_with_quote", "TRUE", &prefs_common
.reply_with_quote
, P_BOOL
,
288 {"compose_dnd_insert_or_attach", "0", &prefs_common
.compose_dnd_mode
, P_ENUM
,
291 /* Account autoselection */
292 {"reply_account_autoselect", "TRUE",
293 &prefs_common
.reply_account_autosel
, P_BOOL
,
295 {"forward_account_autoselect", "TRUE",
296 &prefs_common
.forward_account_autosel
, P_BOOL
,
298 {"reedit_account_autoselect", "TRUE",
299 &prefs_common
.reedit_account_autosel
, P_BOOL
,
302 {"default_reply_list", "TRUE", &prefs_common
.default_reply_list
, P_BOOL
,
306 {"show_ruler", "TRUE", &prefs_common
.show_ruler
, P_BOOL
,
309 {"show_ruler", "FALSE", &prefs_common
.show_ruler
, P_BOOL
,
314 {"reply_quote_mark", "> ", &prefs_common
.quotemark
, P_STRING
,
316 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
317 &prefs_common
.quotefmt
, P_STRING
, NULL
, NULL
, NULL
},
319 {"forward_quote_mark", "> ", &prefs_common
.fw_quotemark
, P_STRING
,
321 {"forward_quote_format",
322 N_("\\n\\nBegin forwarded message:\\n\\n"
323 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
324 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
325 &prefs_common
.fw_quotefmt
, P_STRING
,
327 {"quote_chars", ">", &prefs_common
.quote_chars
, P_STRING
,
333 {"message_font_gtk2", "Monospace 9",
334 &SPECIFIC_PREFS
.textfont
, P_STRING
, NULL
, NULL
, NULL
},
335 {"print_font_gtk2", "Monospace 9",
336 &SPECIFIC_PREFS
.printfont
, P_STRING
, NULL
, NULL
, NULL
},
337 {"small_font_gtk2", "Sans 9",
338 &SPECIFIC_PREFS
.smallfont
, P_STRING
, NULL
, NULL
, NULL
},
339 {"normal_font_gtk2", "Sans 9",
340 &SPECIFIC_PREFS
.normalfont
, P_STRING
, NULL
, NULL
, NULL
},
341 {"bold_font_gtk2", "Sans Bold 9",
342 &SPECIFIC_PREFS
.boldfont
, P_STRING
, NULL
, NULL
, NULL
},
344 {"message_font_gtk2", "Monospace 8",
345 &SPECIFIC_PREFS
.textfont
, P_STRING
, NULL
, NULL
, NULL
},
346 {"print_font_gtk2", "Monospace 8",
347 &SPECIFIC_PREFS
.printfont
, P_STRING
, NULL
, NULL
, NULL
},
348 {"small_font_gtk2", "Sans 8",
349 &SPECIFIC_PREFS
.smallfont
, P_STRING
, NULL
, NULL
, NULL
},
350 {"normal_font_gtk2", "Sans 8",
351 &SPECIFIC_PREFS
.normalfont
, P_STRING
, NULL
, NULL
, NULL
},
352 {"bold_font_gtk2", "Sans Bold 8",
353 &SPECIFIC_PREFS
.boldfont
, P_STRING
, NULL
, NULL
, NULL
},
356 {"use_different_print_font", "FALSE", &prefs_common
.use_different_print_font
, P_BOOL
,
358 {"derive_from_normal_font", "TRUE", &prefs_common
.derive_from_normal_font
, P_BOOL
,
362 {"custom_color1", "#ff9900", &prefs_common
.custom_colorlabel
[0].color
, P_COLOR
,
364 {"custom_colorlabel1", N_("Orange"), &prefs_common
.custom_colorlabel
[0].label
, P_STRING
,
366 {"custom_color2", "#ff0000", &prefs_common
.custom_colorlabel
[1].color
, P_COLOR
,
368 {"custom_colorlabel2", N_("Red"), &prefs_common
.custom_colorlabel
[1].label
, P_STRING
,
370 {"custom_color3", "#ff66ff", &prefs_common
.custom_colorlabel
[2].color
, P_COLOR
,
372 {"custom_colorlabel3", N_("Pink"), &prefs_common
.custom_colorlabel
[2].label
, P_STRING
,
374 {"custom_color4", "#00ccff", &prefs_common
.custom_colorlabel
[3].color
, P_COLOR
,
376 {"custom_colorlabel4", N_("Sky blue"), &prefs_common
.custom_colorlabel
[3].label
, P_STRING
,
378 {"custom_color5", "#0000ff", &prefs_common
.custom_colorlabel
[4].color
, P_COLOR
,
380 {"custom_colorlabel5", N_("Blue"), &prefs_common
.custom_colorlabel
[4].label
, P_STRING
,
382 {"custom_color6", "#009900", &prefs_common
.custom_colorlabel
[5].color
, P_COLOR
,
384 {"custom_colorlabel6", N_("Green"), &prefs_common
.custom_colorlabel
[5].label
, P_STRING
,
386 {"custom_color7", "#663333", &prefs_common
.custom_colorlabel
[6].color
, P_COLOR
,
388 {"custom_colorlabel7", N_("Brown"), &prefs_common
.custom_colorlabel
[6].label
, P_STRING
,
390 {"custom_color8", "#aaaaaa", &prefs_common
.custom_colorlabel
[7].color
, P_COLOR
,
392 {"custom_colorlabel8", N_("Grey"), &prefs_common
.custom_colorlabel
[7].label
, P_STRING
,
394 {"custom_color9", "#c07254", &prefs_common
.custom_colorlabel
[8].color
, P_COLOR
,
396 {"custom_colorlabel9", N_("Light brown"), &prefs_common
.custom_colorlabel
[8].label
, P_STRING
,
398 {"custom_color10", "#c00000", &prefs_common
.custom_colorlabel
[9].color
, P_COLOR
,
400 {"custom_colorlabel10", N_("Dark red"), &prefs_common
.custom_colorlabel
[9].label
, P_STRING
,
402 {"custom_color11", "#cc1074", &prefs_common
.custom_colorlabel
[10].color
, P_COLOR
,
404 {"custom_colorlabel11", N_("Dark pink"), &prefs_common
.custom_colorlabel
[10].label
, P_STRING
,
406 {"custom_color12", "#5094cd", &prefs_common
.custom_colorlabel
[11].color
, P_COLOR
,
408 {"custom_colorlabel12", N_("Steel blue"), &prefs_common
.custom_colorlabel
[11].label
, P_STRING
,
410 {"custom_color13", "#ffd500", &prefs_common
.custom_colorlabel
[12].color
, P_COLOR
,
412 {"custom_colorlabel13", N_("Gold"), &prefs_common
.custom_colorlabel
[12].label
, P_STRING
,
414 {"custom_color14", "#00d800", &prefs_common
.custom_colorlabel
[13].color
, P_COLOR
,
416 {"custom_colorlabel14", N_("Bright green"), &prefs_common
.custom_colorlabel
[13].label
, P_STRING
,
418 {"custom_color15", "#c060c0", &prefs_common
.custom_colorlabel
[14].color
, P_COLOR
,
420 {"custom_colorlabel15", N_("Magenta"), &prefs_common
.custom_colorlabel
[14].label
, P_STRING
,
424 {"display_image", "TRUE", &prefs_common
.display_img
, P_BOOL
,
426 {"resize_image", "TRUE", &prefs_common
.resize_img
, P_BOOL
,
428 {"inline_image", "TRUE", &prefs_common
.inline_img
, P_BOOL
,
430 {"fit_image_height", "TRUE", &prefs_common
.fit_img_height
, P_BOOL
,
433 {"display_folder_unread_num", "0",
434 &prefs_common
.display_folder_unread
, P_INT
,
436 {"newsgroup_abbrev_len", "16",
437 &prefs_common
.ng_abbrev_len
, P_INT
,
441 {"translate_header", "TRUE", &prefs_common
.trans_hdr
, P_BOOL
,
444 {"translate_header", "FALSE", &prefs_common
.trans_hdr
, P_BOOL
,
448 /* Display: Summary View */
449 {"default_sort_key", "3", &prefs_common
.default_sort_key
, P_ENUM
,
451 {"default_sort_type", "1", &prefs_common
.default_sort_type
, P_ENUM
,
453 {"use_address_book", "FALSE", &prefs_common
.use_addr_book
, P_BOOL
,
455 {"thread_by_subject", "TRUE", &prefs_common
.thread_by_subject
, P_BOOL
,
457 {"date_format", N_("%x(%a) %H:%M"), &prefs_common
.date_format
,
458 P_STRING
, NULL
, NULL
, NULL
},
459 {"msgview_date_format", "FALSE", &prefs_common
.msgview_date_format
, P_BOOL
,
462 {"next_on_delete", "FALSE", &prefs_common
.next_on_delete
, P_BOOL
,
465 {"bold_unread", "TRUE", &prefs_common
.bold_unread
, P_BOOL
,
467 {"bold_marked", "FALSE", &prefs_common
.bold_marked
, P_BOOL
,
471 {"toolbar_style", "3", &prefs_common
.toolbar_style
, P_ENUM
,
474 {"toolbar_style", "1", &prefs_common
.toolbar_style
, P_ENUM
,
477 {"show_col_headers", "TRUE", &prefs_common
.show_col_headers
, P_BOOL
,
480 {"show_statusbar", "TRUE", &prefs_common
.show_statusbar
, P_BOOL
,
482 {"show_searchbar", "TRUE", &prefs_common
.show_searchbar
, P_BOOL
,
485 {"show_statusbar", "FALSE", &prefs_common
.show_statusbar
, P_BOOL
,
487 {"show_searchbar", "FALSE", &prefs_common
.show_searchbar
, P_BOOL
,
491 {"summary_col_show_mark", "TRUE",
492 &prefs_common
.summary_col_visible
[S_COL_MARK
], P_BOOL
, NULL
, NULL
, NULL
},
493 {"summary_col_show_unread", "TRUE",
494 &prefs_common
.summary_col_visible
[S_COL_STATUS
], P_BOOL
, NULL
, NULL
, NULL
},
495 {"summary_col_show_subject", "TRUE",
496 &prefs_common
.summary_col_visible
[S_COL_SUBJECT
], P_BOOL
, NULL
, NULL
, NULL
},
497 {"summary_col_show_from", "TRUE",
498 &prefs_common
.summary_col_visible
[S_COL_FROM
], P_BOOL
, NULL
, NULL
, NULL
},
499 {"summary_col_show_to", "FALSE",
500 &prefs_common
.summary_col_visible
[S_COL_TO
], P_BOOL
, NULL
, NULL
, NULL
},
501 {"summary_col_show_date", "TRUE",
502 &prefs_common
.summary_col_visible
[S_COL_DATE
], P_BOOL
, NULL
, NULL
, NULL
},
503 {"summary_col_show_mime", "TRUE",
504 &prefs_common
.summary_col_visible
[S_COL_MIME
], P_BOOL
, NULL
, NULL
, NULL
},
505 {"summary_col_show_size", "TRUE",
506 &prefs_common
.summary_col_visible
[S_COL_SIZE
], P_BOOL
, NULL
, NULL
, NULL
},
507 {"summary_col_show_number", "FALSE",
508 &prefs_common
.summary_col_visible
[S_COL_NUMBER
], P_BOOL
, NULL
, NULL
, NULL
},
509 {"summary_col_show_score", "FALSE",
510 &prefs_common
.summary_col_visible
[S_COL_SCORE
], P_BOOL
, NULL
, NULL
, NULL
},
511 {"summary_col_show_locked", "FALSE",
512 &prefs_common
.summary_col_visible
[S_COL_LOCKED
], P_BOOL
, NULL
, NULL
, NULL
},
513 {"summary_col_show_tags", "FALSE",
514 &prefs_common
.summary_col_visible
[S_COL_TAGS
], P_BOOL
, NULL
, NULL
, NULL
},
516 {"summary_col_lock", "FALSE", &prefs_common
.summary_col_lock
, P_BOOL
,
519 {"summary_col_pos_mark", "0",
520 &prefs_common
.summary_col_pos
[S_COL_MARK
], P_INT
, NULL
, NULL
, NULL
},
521 {"summary_col_pos_unread", "1",
522 &prefs_common
.summary_col_pos
[S_COL_STATUS
], P_INT
, NULL
, NULL
, NULL
},
523 {"summary_col_pos_mime", "2",
524 &prefs_common
.summary_col_pos
[S_COL_MIME
], P_INT
, NULL
, NULL
, NULL
},
525 {"summary_col_pos_subject", "3",
526 &prefs_common
.summary_col_pos
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
527 {"summary_col_pos_from", "4",
528 &prefs_common
.summary_col_pos
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
529 {"summary_col_pos_date", "5",
530 &prefs_common
.summary_col_pos
[S_COL_DATE
], P_INT
, NULL
, NULL
, NULL
},
531 {"summary_col_pos_size", "6",
532 &prefs_common
.summary_col_pos
[S_COL_SIZE
], P_INT
, NULL
, NULL
, NULL
},
533 {"summary_col_pos_number", "7",
534 &prefs_common
.summary_col_pos
[S_COL_NUMBER
], P_INT
, NULL
, NULL
, NULL
},
535 {"summary_col_pos_score", "8",
536 &prefs_common
.summary_col_pos
[S_COL_SCORE
], P_INT
, NULL
, NULL
, NULL
},
537 {"summary_col_pos_locked", "9",
538 &prefs_common
.summary_col_pos
[S_COL_LOCKED
], P_INT
, NULL
, NULL
, NULL
},
539 {"summary_col_pos_to", "10",
540 &prefs_common
.summary_col_pos
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
541 {"summary_col_pos_tags", "11",
542 &prefs_common
.summary_col_pos
[S_COL_TAGS
], P_INT
, NULL
, NULL
, NULL
},
544 {"summary_col_size_mark", "10",
545 &prefs_common
.summary_col_size
[S_COL_MARK
], P_INT
, NULL
, NULL
, NULL
},
546 {"summary_col_size_unread", "13",
547 &prefs_common
.summary_col_size
[S_COL_STATUS
], P_INT
, NULL
, NULL
, NULL
},
548 {"summary_col_size_mime", "10",
549 &prefs_common
.summary_col_size
[S_COL_MIME
], P_INT
, NULL
, NULL
, NULL
},
551 {"summary_col_size_subject", "200",
552 &prefs_common
.summary_col_size
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
553 {"summary_col_size_from", "120",
554 &prefs_common
.summary_col_size
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
555 {"summary_col_size_to", "120",
556 &prefs_common
.summary_col_size
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
558 {"summary_col_size_subject", "300",
559 &prefs_common
.summary_col_size
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
560 {"summary_col_size_from", "150",
561 &prefs_common
.summary_col_size
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
562 {"summary_col_size_to", "150",
563 &prefs_common
.summary_col_size
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
566 {"summary_col_size_date", "118",
567 &prefs_common
.summary_col_size
[S_COL_DATE
], P_INT
, NULL
, NULL
, NULL
},
568 {"summary_col_size_size", "45",
569 &prefs_common
.summary_col_size
[S_COL_SIZE
], P_INT
, NULL
, NULL
, NULL
},
570 {"summary_col_size_number", "40",
571 &prefs_common
.summary_col_size
[S_COL_NUMBER
], P_INT
, NULL
, NULL
, NULL
},
572 {"summary_col_size_score", "40",
573 &prefs_common
.summary_col_size
[S_COL_SCORE
], P_INT
, NULL
, NULL
, NULL
},
574 {"summary_col_size_locked", "13",
575 &prefs_common
.summary_col_size
[S_COL_LOCKED
], P_INT
, NULL
, NULL
, NULL
},
576 {"summary_col_size_tags", "150",
577 &prefs_common
.summary_col_size
[S_COL_TAGS
], P_INT
, NULL
, NULL
, NULL
},
580 {"folderwin_x", "16", &prefs_common
.folderwin_x
, P_INT
,
582 {"folderwin_y", "16", &prefs_common
.folderwin_y
, P_INT
,
584 {"folderview_width", "270", &prefs_common
.folderview_width
, P_INT
,
586 {"folderview_height", "450", &prefs_common
.folderview_height
, P_INT
,
588 {"folderview_visible", "TRUE", &prefs_common
.folderview_visible
, P_BOOL
,
591 {"folder_col_show_folder", "TRUE",
592 &prefs_common
.folder_col_visible
[F_COL_FOLDER
], P_BOOL
, NULL
, NULL
, NULL
},
593 {"folder_col_show_new", "TRUE",
594 &prefs_common
.folder_col_visible
[F_COL_NEW
], P_BOOL
, NULL
, NULL
, NULL
},
595 {"folder_col_show_unread", "TRUE",
596 &prefs_common
.folder_col_visible
[F_COL_UNREAD
], P_BOOL
, NULL
, NULL
, NULL
},
597 {"folder_col_show_total", "TRUE",
598 &prefs_common
.folder_col_visible
[F_COL_TOTAL
], P_BOOL
, NULL
, NULL
, NULL
},
600 {"folder_col_pos_folder", "0",
601 &prefs_common
.folder_col_pos
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
602 {"folder_col_pos_new", "1",
603 &prefs_common
.folder_col_pos
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
604 {"folder_col_pos_unread", "2",
605 &prefs_common
.folder_col_pos
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
606 {"folder_col_pos_total", "3",
607 &prefs_common
.folder_col_pos
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
610 {"folder_col_size_folder", "120",
611 &prefs_common
.folder_col_size
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
612 {"folder_col_size_new", "32",
613 &prefs_common
.folder_col_size
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
614 {"folder_col_size_unread", "32",
615 &prefs_common
.folder_col_size
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
616 {"folder_col_size_total", "32",
617 &prefs_common
.folder_col_size
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
619 {"folder_col_size_folder", "400",
620 &prefs_common
.folder_col_size
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
621 {"folder_col_size_new", "32",
622 &prefs_common
.folder_col_size
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
623 {"folder_col_size_unread", "32",
624 &prefs_common
.folder_col_size
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
625 {"folder_col_size_total", "32",
626 &prefs_common
.folder_col_size
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
629 {"folder_default_thread", "TRUE", &prefs_common
.folder_default_thread
, P_BOOL
,
631 {"folder_default_thread_collapsed", "FALSE", &prefs_common
.folder_default_thread_collapsed
, P_BOOL
,
633 {"folder_default_hide_read_threads", "FALSE", &prefs_common
.folder_default_hide_read_threads
, P_BOOL
,
635 {"folder_default_hide_read_msgs", "FALSE", &prefs_common
.folder_default_hide_read_msgs
, P_BOOL
,
637 {"folder_default_hide_del_msgs", "FALSE", &prefs_common
.folder_default_hide_del_msgs
, P_BOOL
,
640 {"summaryview_width", "500", &prefs_common
.summaryview_width
, P_INT
,
642 {"summaryview_height", "244", &prefs_common
.summaryview_height
, P_INT
,
645 {"main_messagewin_x", "256", &prefs_common
.main_msgwin_x
, P_INT
,
647 {"main_messagewin_y", "210", &prefs_common
.main_msgwin_y
, P_INT
,
649 {"messageview_width", "500", &prefs_common
.msgview_width
, P_INT
,
651 {"messageview_height", "213", &prefs_common
.msgview_height
, P_INT
,
653 {"messageview_visible", "TRUE", &prefs_common
.msgview_visible
, P_BOOL
,
656 {"mainview_x", "64", &prefs_common
.mainview_x
, P_INT
,
658 {"mainview_y", "64", &prefs_common
.mainview_y
, P_INT
,
660 {"mainview_width", "500", &prefs_common
.mainview_width
, P_INT
,
662 {"mainview_height", "400", &prefs_common
.mainview_height
, P_INT
,
664 {"mainwin_x", "64", &prefs_common
.mainwin_x
, P_INT
,
666 {"mainwin_y", "64", &prefs_common
.mainwin_y
, P_INT
,
668 {"mainwin_maximised", "FALSE", &prefs_common
.mainwin_maximised
, P_BOOL
,
670 {"mainwin_fullscreen", "FALSE", &prefs_common
.mainwin_fullscreen
, P_BOOL
,
672 {"mainwin_menubar", "TRUE", &prefs_common
.mainwin_menubar
, P_BOOL
,
675 {"mainwin_width", "800", &prefs_common
.mainwin_width
, P_INT
,
677 {"mainwin_height", "600", &prefs_common
.mainwin_height
, P_INT
,
679 {"messagewin_width", "600", &prefs_common
.msgwin_width
, P_INT
,
681 {"messagewin_height", "540", &prefs_common
.msgwin_height
, P_INT
,
683 {"mimeview_tree_height", "60", &prefs_common
.mimeview_tree_height
, P_INT
,
685 {"sourcewin_width", "600", &prefs_common
.sourcewin_width
, P_INT
,
687 {"sourcewin_height", "500", &prefs_common
.sourcewin_height
, P_INT
,
689 {"compose_width", "600", &prefs_common
.compose_width
, P_INT
,
691 {"compose_height", "560", &prefs_common
.compose_height
, P_INT
,
694 {"mainwin_width", "700", &prefs_common
.mainwin_width
, P_INT
,
696 {"mainwin_height", "470", &prefs_common
.mainwin_height
, P_INT
,
698 {"messagewin_width", "700", &prefs_common
.msgwin_width
, P_INT
,
700 {"messagewin_height", "470", &prefs_common
.msgwin_height
, P_INT
,
702 {"sourcewin_width", "700", &prefs_common
.sourcewin_width
, P_INT
,
704 {"sourcewin_height", "470", &prefs_common
.sourcewin_height
, P_INT
,
706 {"compose_width", "700", &prefs_common
.compose_width
, P_INT
,
708 {"compose_height", "470", &prefs_common
.compose_height
, P_INT
,
711 {"compose_notebook_height", "130", &prefs_common
.compose_notebook_height
, P_INT
,
713 {"compose_x", "0", &prefs_common
.compose_x
, P_INT
,
715 {"compose_y", "0", &prefs_common
.compose_y
, P_INT
,
718 {"enable_color", "TRUE", &prefs_common
.enable_color
, P_BOOL
,
721 {"quote_level1_color", "#0000b3", &prefs_common
.color
[COL_QUOTE_LEVEL1
],
722 P_COLOR
, NULL
, NULL
, NULL
},
723 {"quote_level2_color", "#0000b3", &prefs_common
.color
[COL_QUOTE_LEVEL2
],
724 P_COLOR
, NULL
, NULL
, NULL
},
725 {"quote_level3_color", "#0000b3", &prefs_common
.color
[COL_QUOTE_LEVEL3
],
726 P_COLOR
, NULL
, NULL
, NULL
},
727 {"enable_bgcolor", "FALSE", &prefs_common
.enable_bgcolor
, P_BOOL
,
729 {"quote_level1_bgcolor", "#cccccc", &prefs_common
.color
[COL_QUOTE_LEVEL1_BG
],
730 P_COLOR
, NULL
, NULL
, NULL
},
731 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common
.color
[COL_QUOTE_LEVEL2_BG
],
732 P_COLOR
, NULL
, NULL
, NULL
},
733 {"quote_level3_bgcolor", "#dddddd", &prefs_common
.color
[COL_QUOTE_LEVEL3_BG
],
734 P_COLOR
, NULL
, NULL
, NULL
},
735 {"uri_color", "#007f00", &prefs_common
.color
[COL_URI
],
736 P_COLOR
, NULL
, NULL
, NULL
},
737 {"emphasis_color", "#0000cf", &prefs_common
.color
[COL_EMPHASIS
],
738 P_COLOR
, NULL
, NULL
, NULL
},
739 {"target_folder_color", "#da1cca", &prefs_common
.color
[COL_TGT_FOLDER
],
740 P_COLOR
, NULL
, NULL
, NULL
},
741 {"signature_color", "#797979", &prefs_common
.color
[COL_SIGNATURE
],
742 P_COLOR
, NULL
, NULL
, NULL
},
743 {"recycle_quote_colors", "FALSE", &prefs_common
.recycle_quote_colors
,
744 P_BOOL
, NULL
, NULL
, NULL
},
746 {"default_header_color", "#000000", &prefs_common
.color
[COL_DEFAULT_HEADER
],
747 P_COLOR
, NULL
, NULL
, NULL
},
748 {"default_header_bgcolor", "#f5f6be", &prefs_common
.color
[COL_DEFAULT_HEADER_BG
],
749 P_COLOR
, NULL
, NULL
, NULL
},
750 {"tags_color", "#000000", &prefs_common
.color
[COL_TAGS
],
751 P_COLOR
, NULL
, NULL
, NULL
},
752 {"tags_bgcolor", "#f5f6be", &prefs_common
.color
[COL_TAGS_BG
],
753 P_COLOR
, NULL
, NULL
, NULL
},
754 {"qs_active_color", "#000000", &prefs_common
.color
[COL_QS_ACTIVE
],
755 P_COLOR
, NULL
, NULL
, NULL
},
756 {"qs_active_bgcolor", "#f5f6be", &prefs_common
.color
[COL_QS_ACTIVE_BG
],
757 P_COLOR
, NULL
, NULL
, NULL
},
758 {"qs_error_color", "#000000", &prefs_common
.color
[COL_QS_ERROR
],
759 P_COLOR
, NULL
, NULL
, NULL
},
760 {"qs_error_bgcolor", "#ff7070", &prefs_common
.color
[COL_QS_ERROR_BG
],
761 P_COLOR
, NULL
, NULL
, NULL
},
763 {"display_header_pane", "FALSE", &prefs_common
.display_header_pane
,
764 P_BOOL
, NULL
, NULL
, NULL
},
765 {"display_header", "TRUE", &prefs_common
.display_header
, P_BOOL
,
767 {"display_xface", "TRUE", &prefs_common
.display_xface
,
768 P_BOOL
, NULL
, NULL
, NULL
},
769 {"save_xface", "TRUE", &prefs_common
.save_xface
,
770 P_BOOL
, NULL
, NULL
, NULL
},
771 {"render_html", "TRUE", &prefs_common
.render_html
, P_BOOL
,
773 {"invoke_plugin_on_html", "FALSE", &prefs_common
.invoke_plugin_on_html
, P_BOOL
,
775 {"promote_html_part", "FALSE", &prefs_common
.promote_html_part
, P_BOOL
,
777 {"line_space", "2", &prefs_common
.line_space
, P_INT
,
779 {"never_send_retrcpt", "FALSE", &prefs_common
.never_send_retrcpt
, P_BOOL
,
782 {"enable_smooth_scroll", "FALSE",
783 &prefs_common
.enable_smooth_scroll
, P_BOOL
,
785 {"scroll_step", "1", &prefs_common
.scroll_step
, P_INT
,
787 {"scroll_half_page", "FALSE", &prefs_common
.scroll_halfpage
, P_BOOL
,
789 {"hide_quoted", "TRUE",
790 &prefs_common
.hide_quoted
, P_BOOL
,
792 {"respect_flowed_format", "FALSE", &prefs_common
.respect_flowed_format
, P_BOOL
,
794 {"show_all_headers", "FALSE", &prefs_common
.show_all_headers
, P_BOOL
,
797 {"show_other_header", "FALSE", &prefs_common
.show_other_header
, P_BOOL
,
800 {"attach_desc", "TRUE", &prefs_common
.attach_desc
, P_BOOL
,
802 {"attach_save_directory", NULL
,
803 &SPECIFIC_PREFS
.attach_save_dir
, P_STRING
, NULL
, NULL
, NULL
},
804 {"attach_load_directory", NULL
,
805 &SPECIFIC_PREFS
.attach_load_dir
, P_STRING
, NULL
, NULL
, NULL
},
808 {"mime_textviewer", NULL
,
809 &SPECIFIC_PREFS
.mime_textviewer
, P_STRING
, NULL
, NULL
, NULL
},
810 {"mime_open_command", "xdg-open '%s'",
811 &SPECIFIC_PREFS
.mime_open_cmd
, P_STRING
, NULL
, NULL
, NULL
},
812 {"show_inline_attachments", "TRUE",
813 &prefs_common
.show_inline_attachments
, P_BOOL
, NULL
, NULL
, NULL
},
817 {"layout_mode", "0", &prefs_common
.layout_mode
, P_INT
,
820 {"layout_mode", "5", &prefs_common
.layout_mode
, P_INT
,
823 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
824 NULL, NULL, NULL}, */
825 {"open_selected_message_on_folder_open", "FALSE",
826 &prefs_common
.open_selected_on_folder_open
,
827 P_BOOL
, NULL
, NULL
, NULL
},
828 {"open_selected_message_on_search_results", "FALSE",
829 &prefs_common
.open_selected_on_search_results
,
830 P_BOOL
, NULL
, NULL
, NULL
},
831 {"open_selected_message_on_prevnext", "FALSE",
832 &prefs_common
.open_selected_on_prevnext
,
833 P_BOOL
, NULL
, NULL
, NULL
},
834 {"open_selected_message_on_deletemove", "FALSE",
835 &prefs_common
.open_selected_on_deletemove
,
836 P_BOOL
, NULL
, NULL
, NULL
},
837 {"open_selected_message_on_directional", "FALSE",
838 &prefs_common
.open_selected_on_directional
,
839 P_BOOL
, NULL
, NULL
, NULL
},
840 {"always_show_message_when_selected", "FALSE",
841 &prefs_common
.always_show_msg
,
842 P_BOOL
, NULL
, NULL
, NULL
},
843 {"select_on_entry", "3", &prefs_common
.select_on_entry
,
844 P_ENUM
, NULL
, NULL
, NULL
},
845 {"show_tooltips", "TRUE", &prefs_common
.show_tooltips
,
846 P_BOOL
, NULL
, NULL
, NULL
},
848 /* do it SUMMARY_OPEN_ACTIONS-1 times */
849 {"summary_select_prio1", "0", &prefs_common
.summary_select_prio
[0], P_ENUM
,
851 {"summary_select_prio2", "0", &prefs_common
.summary_select_prio
[1], P_ENUM
,
853 {"summary_select_prio3", "0", &prefs_common
.summary_select_prio
[2], P_ENUM
,
855 {"summary_select_prio4", "0", &prefs_common
.summary_select_prio
[3], P_ENUM
,
857 {"summary_select_prio5", "0", &prefs_common
.summary_select_prio
[4], P_ENUM
,
859 {"summary_select_prio6", "0", &prefs_common
.summary_select_prio
[5], P_ENUM
,
861 {"summary_select_prio7", "0", &prefs_common
.summary_select_prio
[6], P_ENUM
,
863 {"summary_select_prio8", "0", &prefs_common
.summary_select_prio
[7], P_ENUM
,
865 {"summary_select_prio9", "0", &prefs_common
.summary_select_prio
[8], P_ENUM
,
867 {"summary_select_prio10", "0", &prefs_common
.summary_select_prio
[9], P_ENUM
,
870 {"mark_as_read_on_new_window", "FALSE",
871 &prefs_common
.mark_as_read_on_new_window
,
872 P_BOOL
, NULL
, NULL
, NULL
},
873 {"mark_as_read_delay", "0",
874 &prefs_common
.mark_as_read_delay
, P_INT
,
876 {"immediate_execution", "TRUE", &prefs_common
.immediate_exec
, P_BOOL
,
878 {"nextunreadmsg_dialog", "1", &prefs_common
.next_unread_msg_dialog
, P_ENUM
,
880 {"summary_from_show", "0", &prefs_common
.summary_from_show
, P_ENUM
,
883 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME
,
884 &SPECIFIC_PREFS
.pixmap_theme_path
, P_STRING
,
887 {"enable_alpha_svg", "TRUE",
888 &SPECIFIC_PREFS
.enable_alpha_svg
, P_BOOL
,
890 {"enable_pixmap_scaling", "TRUE",
891 &SPECIFIC_PREFS
.enable_pixmap_scaling
, P_BOOL
,
893 {"pixmap_scaling_auto", "TRUE",
894 &SPECIFIC_PREFS
.pixmap_scaling_auto
, P_BOOL
,
896 {"pixmap_scaling_ppi", "96",
897 &SPECIFIC_PREFS
.pixmap_scaling_ppi
, P_INT
,
901 {"run_processingrules_before_mark_all", "FALSE", &prefs_common
.run_processingrules_before_mark_all
, P_BOOL
,
903 {"ask_mark_all_read", "TRUE", &prefs_common
.ask_mark_all_read
, P_BOOL
,
905 {"ask_override_colorlabel", "TRUE", &prefs_common
.ask_override_colorlabel
, P_BOOL
,
908 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common
.ask_apply_per_account_filtering_rules
, P_BOOL
,
910 {"apply_per_account_filtering_rules", "0", &prefs_common
.apply_per_account_filtering_rules
, P_ENUM
,
914 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common
.addressbook_use_editaddress_dialog
,
915 P_BOOL
, NULL
, NULL
, NULL
},
916 {"addressbook_hpaned_pos", "-1", &prefs_common
.addressbook_hpaned_pos
,
917 P_INT
, NULL
, NULL
, NULL
},
918 {"addressbook_vpaned_pos", "-1", &prefs_common
.addressbook_vpaned_pos
,
919 P_INT
, NULL
, NULL
, NULL
},
923 {"uri_open_command", DEFAULT_BROWSER_CMD
,
924 &SPECIFIC_PREFS
.uri_cmd
, P_STRING
, NULL
, NULL
, NULL
},
926 {"gtk_theme", DEFAULT_W32_GTK_THEME
,
927 &SPECIFIC_PREFS
.gtk_theme
, P_STRING
, NULL
, NULL
, NULL
},
929 {"ext_editor_command", DEFAULT_EDITOR_CMD
,
930 &SPECIFIC_PREFS
.ext_editor_cmd
, P_STRING
, NULL
, NULL
, NULL
},
931 {"cmds_use_system_default", "TRUE",
932 &prefs_common
.cmds_use_system_default
, P_BOOL
, NULL
, NULL
, NULL
},
933 {"add_address_by_click", "FALSE", &prefs_common
.add_address_by_click
,
934 P_BOOL
, NULL
, NULL
, NULL
},
935 {"session_passwords", "FALSE", &prefs_common
.session_passwords
,
936 P_BOOL
, NULL
, NULL
, NULL
},
937 {"confirm_on_exit", "FALSE", &prefs_common
.confirm_on_exit
, P_BOOL
,
939 {"clean_trash_on_exit", "FALSE", &prefs_common
.clean_on_exit
, P_BOOL
,
941 {"ask_on_cleaning", "TRUE", &prefs_common
.ask_on_clean
, P_BOOL
,
943 {"warn_queued_on_exit", "TRUE", &prefs_common
.warn_queued_on_exit
,
944 P_BOOL
, NULL
, NULL
, NULL
},
945 {"work_offline", "FALSE", &prefs_common
.work_offline
, P_BOOL
,
947 {"summary_quicksearch_type", "0", &prefs_common
.summary_quicksearch_type
, P_INT
,
950 {"summary_quicksearch_recurse", "1", &prefs_common
.summary_quicksearch_recurse
, P_INT
,
953 {"summary_quicksearch_recurse", "0", &prefs_common
.summary_quicksearch_recurse
, P_INT
,
957 #if defined(__OpenBSD__)
958 {"io_timeout_secs", "80", &prefs_common
.io_timeout_secs
,
959 P_INT
, NULL
, NULL
, NULL
},
961 {"io_timeout_secs", "60", &prefs_common
.io_timeout_secs
,
962 P_INT
, NULL
, NULL
, NULL
},
964 {"hide_score", "-9999", &prefs_common
.kill_score
, P_INT
,
966 {"important_score", "1", &prefs_common
.important_score
, P_INT
,
969 {"clip_log", "TRUE", &prefs_common
.cliplog
, P_BOOL
,
971 {"log_length", "500", &prefs_common
.loglength
, P_INT
,
974 {"enable_log_standard", "TRUE", &prefs_common
.enable_log_standard
, P_BOOL
,
976 {"enable_log_warning", "TRUE", &prefs_common
.enable_log_warning
, P_BOOL
,
978 {"enable_log_error", "TRUE", &prefs_common
.enable_log_error
, P_BOOL
,
980 {"enable_log_status", "TRUE", &prefs_common
.enable_log_status
, P_BOOL
,
983 {"enable_log_standard", "FALSE", &prefs_common
.enable_log_standard
, P_BOOL
,
985 {"enable_log_warning", "FALSE", &prefs_common
.enable_log_warning
, P_BOOL
,
987 {"enable_log_error", "FALSE", &prefs_common
.enable_log_error
, P_BOOL
,
989 {"enable_log_status", "FALSE", &prefs_common
.enable_log_status
, P_BOOL
,
992 {"log_msg_color", "#00af00", &prefs_common
.color
[COL_LOG_MSG
],
993 P_COLOR
, NULL
, NULL
, NULL
},
994 {"log_warn_color", "#af0000", &prefs_common
.color
[COL_LOG_WARN
],
995 P_COLOR
, NULL
, NULL
, NULL
},
996 {"log_error_color", "#af0000", &prefs_common
.color
[COL_LOG_ERROR
],
997 P_COLOR
, NULL
, NULL
, NULL
},
998 {"log_in_color", "#000000", &prefs_common
.color
[COL_LOG_IN
],
999 P_COLOR
, NULL
, NULL
, NULL
},
1000 {"log_out_color", "#0000ef", &prefs_common
.color
[COL_LOG_OUT
],
1001 P_COLOR
, NULL
, NULL
, NULL
},
1002 {"log_status_ok_color", "#00af00", &prefs_common
.color
[COL_LOG_STATUS_OK
],
1003 P_COLOR
, NULL
, NULL
, NULL
},
1004 {"log_status_nok_color", "#0000af", &prefs_common
.color
[COL_LOG_STATUS_NOK
],
1005 P_COLOR
, NULL
, NULL
, NULL
},
1006 {"log_status_skip_color", "#aa00aa", &prefs_common
.color
[COL_LOG_STATUS_SKIP
],
1007 P_COLOR
, NULL
, NULL
, NULL
},
1009 {"enable_filtering_debug", "FALSE", &prefs_common
.enable_filtering_debug
, P_BOOL
,
1011 {"filtering_debug_level", "1", &prefs_common
.filtering_debug_level
, P_INT
,
1013 {"enable_filtering_debug_inc", "TRUE", &prefs_common
.enable_filtering_debug_inc
, P_BOOL
,
1015 {"enable_filtering_debug_manual", "TRUE", &prefs_common
.enable_filtering_debug_manual
, P_BOOL
,
1017 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common
.enable_filtering_debug_folder_proc
, P_BOOL
,
1019 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common
.enable_filtering_debug_pre_proc
, P_BOOL
,
1021 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common
.enable_filtering_debug_post_proc
, P_BOOL
,
1023 {"filtering_debug_clip_log", "TRUE", &prefs_common
.filtering_debug_cliplog
, P_BOOL
,
1025 {"filtering_debug_log_length", "500", &prefs_common
.filtering_debug_loglength
, P_INT
,
1028 {"gtk_enable_accels", "TRUE", &prefs_common
.gtk_enable_accels
, P_BOOL
,
1031 {"color_new", "#0000b3", &prefs_common
.color
[COL_NEW
],
1032 P_COLOR
, NULL
, NULL
, NULL
},
1034 /* Some windows' sizes */
1035 {"filteringwin_width", "500", &prefs_common
.filteringwin_width
, P_INT
,
1037 {"filteringwin_height", "-1", &prefs_common
.filteringwin_height
, P_INT
,
1040 {"filteringactionwin_width", "490", &prefs_common
.filteringactionwin_width
, P_INT
,
1042 {"filteringactionwin_height", "-1", &prefs_common
.filteringactionwin_height
, P_INT
,
1045 {"matcherwin_width", "520", &prefs_common
.matcherwin_width
, P_INT
,
1047 {"matcherwin_height", "-1", &prefs_common
.matcherwin_height
, P_INT
,
1050 {"templateswin_width", "480", &prefs_common
.templateswin_width
, P_INT
,
1052 {"templateswin_height", "-1", &prefs_common
.templateswin_height
, P_INT
,
1055 {"actionsiodialog_width", "582", &prefs_common
.actionsiodialog_width
, P_INT
,
1057 {"actionsiodialog_height", "310", &prefs_common
.actionsiodialog_height
, P_INT
,
1060 {"actionswin_width", "486", &prefs_common
.actionswin_width
, P_INT
,
1062 {"actionswin_height", "-1", &prefs_common
.actionswin_height
, P_INT
,
1065 {"tagswin_width", "586", &prefs_common
.tagswin_width
, P_INT
,
1067 {"tagswin_height", "-1", &prefs_common
.tagswin_height
, P_INT
,
1070 {"sslmanwin_width", "486", &prefs_common
.sslmanwin_width
, P_INT
,
1072 {"sslmanwin_height", "-1", &prefs_common
.sslmanwin_height
, P_INT
,
1075 {"uriopenerwin_width", "-1", &prefs_common
.uriopenerwin_width
, P_INT
,
1077 {"uriopenerwin_height", "-1", &prefs_common
.uriopenerwin_height
, P_INT
,
1080 {"foldersortwin_width", "400", &prefs_common
.foldersortwin_width
, P_INT
,
1082 {"foldersortwin_height", "300", &prefs_common
.foldersortwin_height
, P_INT
,
1085 {"addressbookwin_width", "520", &prefs_common
.addressbookwin_width
, P_INT
,
1087 {"addressbookwin_height", "-1", &prefs_common
.addressbookwin_height
, P_INT
,
1090 {"addressbookeditpersonwin_width", "640", &prefs_common
.addressbookeditpersonwin_width
, P_INT
,
1092 {"addressbookeditpersonwin_height", "320", &prefs_common
.addressbookeditpersonwin_height
, P_INT
,
1095 {"addressbookeditgroupwin_width", "580", &prefs_common
.addressbookeditgroupwin_width
, P_INT
,
1097 {"addressbookeditgroupwin_height", "340", &prefs_common
.addressbookeditgroupwin_height
, P_INT
,
1100 {"pluginswin_width", "-1", &prefs_common
.pluginswin_width
, P_INT
,
1102 {"pluginswin_height", "-1", &prefs_common
.pluginswin_height
, P_INT
,
1105 {"prefswin_width", "600", &prefs_common
.prefswin_width
, P_INT
,
1107 {"prefswin_height", "-1", &prefs_common
.prefswin_height
, P_INT
,
1110 {"folderitemwin_width", "500", &prefs_common
.folderitemwin_width
, P_INT
,
1112 {"folderitemwin_height", "-1", &prefs_common
.folderitemwin_height
, P_INT
,
1115 {"zero_replacement_char", "0", &prefs_common
.zero_replacement
, P_STRING
,
1118 {"editaccountwin_width", "500", &prefs_common
.editaccountwin_width
, P_INT
,
1120 {"editaccountwin_height", "-1", &prefs_common
.editaccountwin_height
, P_INT
,
1123 {"accountswin_width", "500", &prefs_common
.accountswin_width
, P_INT
,
1125 {"accountswin_height", "-1", &prefs_common
.accountswin_height
, P_INT
,
1128 {"logwin_width", "520", &prefs_common
.logwin_width
, P_INT
,
1130 {"logwin_height", "-1", &prefs_common
.logwin_height
, P_INT
,
1133 {"filtering_debugwin_width", "600", &prefs_common
.filtering_debugwin_width
, P_INT
,
1135 {"filtering_debugwin_height", "-1", &prefs_common
.filtering_debugwin_height
, P_INT
,
1138 {"folderselwin_width", "300", &prefs_common
.folderselwin_width
, P_INT
,
1140 {"folderselwin_height", "-1", &prefs_common
.folderselwin_height
, P_INT
,
1143 {"addressaddwin_width", "300", &prefs_common
.addressaddwin_width
, P_INT
,
1145 {"addressaddwin_height", "-1", &prefs_common
.addressaddwin_height
, P_INT
,
1148 {"addressbook_folderselwin_width", "300", &prefs_common
.addressbook_folderselwin_width
, P_INT
,
1150 {"addressbook_folderselwin_height", "-1", &prefs_common
.addressbook_folderselwin_height
, P_INT
,
1153 {"aboutwin_width", "450", &prefs_common
.aboutwin_width
, P_INT
,
1155 {"aboutwin_height", "500", &prefs_common
.aboutwin_height
, P_INT
,
1158 {"addrgather_width", "450", &prefs_common
.addrgather_width
, P_INT
,
1160 {"addrgather_height", "-1", &prefs_common
.addrgather_height
, P_INT
,
1163 {"news_subscribe_width", "450", &prefs_common
.news_subscribe_width
, P_INT
,
1165 {"news_subscribe_height", "400", &prefs_common
.news_subscribe_height
, P_INT
,
1169 {"imap_scan_tree_recurs_limit", "64", &prefs_common
.imap_scan_tree_recurs_limit
, P_INT
,
1171 {"warn_dnd", "1", &prefs_common
.warn_dnd
, P_INT
,
1173 {"show_save_all_success", "1", &prefs_common
.show_save_all_success
, P_INT
,
1175 {"show_save_all_failure", "1", &prefs_common
.show_save_all_failure
, P_INT
,
1177 {"utf8_instead_of_locale_for_broken_mail", "0",
1178 &prefs_common
.broken_are_utf8
, P_INT
,
1180 {"enable_swap_from", "FALSE", &prefs_common
.swap_from
, P_BOOL
,
1182 {"use_stripes_everywhere", "TRUE", &prefs_common
.use_stripes_everywhere
, P_BOOL
,
1184 {"use_stripes_in_summaries", "TRUE", &prefs_common
.use_stripes_in_summaries
, P_BOOL
,
1186 {"stripes_color_offset", "4000", &prefs_common
.stripes_color_offset
, P_INT
,
1188 {"enable_hscrollbar", "TRUE", &prefs_common
.enable_hscrollbar
, P_BOOL
,
1190 {"folderview_vscrollbar_policy", "0",
1191 &prefs_common
.folderview_vscrollbar_policy
, P_ENUM
,
1193 {"textview_cursor_visible", "FALSE",
1194 &prefs_common
.textview_cursor_visible
, P_BOOL
,
1196 {"hover_timeout", "500", &prefs_common
.hover_timeout
, P_INT
,
1198 #ifndef GENERIC_UMPC
1199 {"cache_max_mem_usage", "4096", &prefs_common
.cache_max_mem_usage
, P_INT
,
1201 {"cache_min_keep_time", "15", &prefs_common
.cache_min_keep_time
, P_INT
,
1204 {"cache_max_mem_usage", "4096", &prefs_common
.cache_max_mem_usage
, P_INT
,
1206 {"cache_min_keep_time", "0", &prefs_common
.cache_min_keep_time
, P_INT
,
1209 {"thread_by_subject_max_age", "10", &prefs_common
.thread_by_subject_max_age
,
1210 P_INT
, NULL
, NULL
, NULL
},
1211 {"last_opened_folder", "", &prefs_common
.last_opened_folder
,
1212 P_STRING
, NULL
, NULL
, NULL
},
1213 {"goto_last_folder_on_startup", "FALSE", &prefs_common
.goto_last_folder_on_startup
,
1214 P_BOOL
, NULL
, NULL
, NULL
},
1215 {"startup_folder", "", &prefs_common
.startup_folder
,
1216 P_STRING
, NULL
, NULL
, NULL
},
1217 {"goto_folder_on_startup", "FALSE", &prefs_common
.goto_folder_on_startup
,
1218 P_BOOL
, NULL
, NULL
, NULL
},
1219 {"summary_quicksearch_sticky", "1", &prefs_common
.summary_quicksearch_sticky
, P_INT
,
1221 {"summary_quicksearch_dynamic", "0", &prefs_common
.summary_quicksearch_dynamic
, P_INT
,
1223 {"summary_quicksearch_autorun", "0", &prefs_common
.summary_quicksearch_autorun
, P_INT
,
1225 {"statusbar_update_step", "10", &prefs_common
.statusbar_update_step
, P_INT
,
1227 {"compose_no_markup", "FALSE", &prefs_common
.compose_no_markup
, P_BOOL
,
1229 {"skip_ssl_cert_check", "FALSE", &prefs_common
.skip_ssl_cert_check
, P_BOOL
,
1231 {"live_dangerously", "FALSE", &prefs_common
.live_dangerously
, P_BOOL
,
1233 {"save_parts_readwrite", "FALSE", &prefs_common
.save_parts_readwrite
, P_BOOL
,
1235 {"hide_quotes", "0", &prefs_common
.hide_quotes
, P_INT
,
1237 {"unsafe_ssl_certs", "FALSE", &prefs_common
.unsafe_ssl_certs
, P_BOOL
,
1239 #ifndef GENERIC_UMPC
1240 {"real_time_sync", "FALSE", &prefs_common
.real_time_sync
, P_BOOL
,
1243 {"real_time_sync", "TRUE", &prefs_common
.real_time_sync
, P_BOOL
,
1247 {"print_paper_type", NULL
, &prefs_common
.print_paper_type
, P_STRING
,
1249 {"print_paper_orientation", "0", &prefs_common
.print_paper_orientation
, P_INT
,
1251 {"print_margin_top", "-1", &prefs_common
.print_margin_top
, P_INT
,
1253 {"print_margin_bottom", "-1", &prefs_common
.print_margin_bottom
, P_INT
,
1255 {"print_margin_left", "-1", &prefs_common
.print_margin_left
, P_INT
,
1257 {"print_margin_right", "-1", &prefs_common
.print_margin_right
, P_INT
,
1259 {"print_use_color", "0", &prefs_common
.print_use_color
, P_INT
,
1261 {"print_use_collate", "0", &prefs_common
.print_use_collate
, P_INT
,
1263 {"print_use_reverse", "0", &prefs_common
.print_use_reverse
, P_INT
,
1265 {"print_use_duplex", "0", &prefs_common
.print_use_duplex
, P_INT
,
1267 {"print_imgs", "1", &prefs_common
.print_imgs
, P_INT
,
1269 {"print_previewwin_width", "600", &prefs_common
.print_previewwin_width
, P_INT
,
1271 {"print_previewwin_height", "-1", &prefs_common
.print_previewwin_height
, P_INT
,
1273 {"use_networkmanager", "TRUE", &prefs_common
.use_networkmanager
, P_BOOL
,
1275 {"use_shred", "FALSE", &prefs_common
.use_shred
, P_BOOL
,
1278 {"two_line_vertical", "TRUE", &prefs_common
.two_line_vert
,
1279 P_BOOL
, NULL
, NULL
, NULL
},
1281 {"inherit_folder_properties", "FALSE", &prefs_common
.inherit_folder_props
, P_BOOL
,
1284 {"flush_metadata", "TRUE", &prefs_common
.flush_metadata
, P_BOOL
,
1287 {"nav_history_length", "50", &prefs_common
.nav_history_length
, P_INT
,
1290 {"diff_added_color", "#008b8b", &prefs_common
.color
[COL_DIFF_ADDED
],
1291 P_COLOR
, NULL
, NULL
, NULL
},
1292 {"diff_deleted_color", "#6a5acd", &prefs_common
.color
[COL_DIFF_DELETED
],
1293 P_COLOR
, NULL
, NULL
, NULL
},
1294 {"diff_hunk_color", "#a52a2a", &prefs_common
.color
[COL_DIFF_HUNK
],
1295 P_COLOR
, NULL
, NULL
, NULL
},
1297 {"folder_search_wildcard", "TRUE", &prefs_common
.folder_search_wildcard
, P_BOOL
,
1299 {"address_search_wildcard", "TRUE", &prefs_common
.address_search_wildcard
, P_BOOL
,
1301 {"enable_avatars", "3", &prefs_common
.enable_avatars
, P_INT
, NULL
, NULL
, NULL
},
1302 #ifndef PASSWORD_CRYPTO_OLD
1303 {"use_master_passphrase", FALSE
, &prefs_common
.use_primary_passphrase
, P_BOOL
, NULL
, NULL
, NULL
},
1304 {"master_passphrase", "", &prefs_common
.primary_passphrase
, P_STRING
, NULL
, NULL
, NULL
},
1305 {"master_passphrase_salt", "", &prefs_common
.primary_passphrase_salt
, P_STRING
, NULL
, NULL
, NULL
},
1306 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common
.primary_passphrase_pbkdf2_rounds
, P_INT
, NULL
, NULL
, NULL
},
1309 {"use_proxy", "FALSE", &prefs_common
.use_proxy
, P_BOOL
, NULL
, NULL
, NULL
},
1310 {"proxy_type", "1", &prefs_common
.proxy_info
.proxy_type
, P_ENUM
, NULL
, NULL
, NULL
},
1311 {"proxy_host", "localhost", &prefs_common
.proxy_info
.proxy_host
, P_STRING
, NULL
, NULL
, NULL
},
1312 {"proxy_port", "1080", &prefs_common
.proxy_info
.proxy_port
, P_USHORT
, NULL
, NULL
, NULL
},
1313 {"use_proxy_auth", "FALSE", &prefs_common
.proxy_info
.use_proxy_auth
, P_BOOL
, NULL
, NULL
, NULL
},
1314 {"proxy_name", "", &prefs_common
.proxy_info
.proxy_name
, P_STRING
, NULL
, NULL
, NULL
},
1315 {"proxy_pass", NULL
, &prefs_common
.proxy_info
.proxy_pass
, P_STRING
, NULL
, NULL
, NULL
},
1317 {"qs_press_timeout", "500", &prefs_common
.qs_press_timeout
, P_INT
,
1320 {NULL
, NULL
, NULL
, P_OTHER
, NULL
, NULL
, NULL
}
1324 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1325 * Fallback to default_list if history file is not found
1327 GList
*prefs_common_read_history_from_dir_with_defaults(const gchar
*dirname
, const gchar
*history
,
1328 GList
*default_list
)
1332 gchar buf
[PREFSBUFSIZE
];
1336 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, dirname
,
1337 G_DIR_SEPARATOR_S
, history
,
1340 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, history
,
1343 if ((fp
= claws_fopen(path
, "rb")) == NULL
) {
1344 if (ENOENT
!= errno
) FILE_OP_ERROR(path
, "claws_fopen");
1346 /* returns default list if set, otherwise NULL */
1347 return default_list
;
1350 while (claws_fgets(buf
, sizeof(buf
), fp
) != NULL
) {
1352 if (buf
[0] == '\0') continue;
1353 tmp
= add_history(tmp
, buf
);
1357 tmp
= g_list_reverse(tmp
);
1363 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1365 static GList
*prefs_common_read_history_from_dir(const gchar
*dirname
, const gchar
*history
)
1367 return prefs_common_read_history_from_dir_with_defaults(dirname
, history
, NULL
);
1371 * Read history list from the specified history file
1373 static GList
*prefs_common_read_history(const gchar
*history
)
1375 return prefs_common_read_history_from_dir(NULL
, history
);
1378 void prefs_common_read_config(void)
1383 rcpath
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, COMMON_RC
, NULL
);
1384 prefs_read_config(param
, "Common", rcpath
, NULL
);
1386 prefs_read_config(param_os_specific
, "CommonWin32", rcpath
, NULL
);
1391 tmp
= g_strdup(gettext(prefs_common
.date_format
));
1392 g_free(prefs_common
.date_format
);
1393 prefs_common
.date_format
= tmp
;
1395 prefs_common
.mime_open_cmd_history
=
1396 prefs_common_read_history(COMMAND_HISTORY
);
1397 prefs_common
.summary_quicksearch_history
=
1398 prefs_common_read_history(QUICKSEARCH_HISTORY
);
1399 prefs_common
.summary_search_from_history
=
1400 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY
);
1401 prefs_common
.summary_search_to_history
=
1402 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY
);
1403 prefs_common
.summary_search_subject_history
=
1404 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY
);
1405 prefs_common
.summary_search_body_history
=
1406 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY
);
1407 prefs_common
.summary_search_adv_condition_history
=
1408 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY
);
1409 prefs_common
.message_search_history
=
1410 prefs_common_read_history(MESSAGE_SEARCH_HISTORY
);
1411 prefs_common
.compose_save_to_history
=
1412 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY
);
1413 #ifndef USE_ALT_ADDRBOOK
1414 prefs_common
.addressbook_custom_attributes
= addressbook_update_custom_attr_from_prefs();
1416 colorlabel_update_colortable_from_prefs();
1422 g_warning("failed to write"); \
1427 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1429 static void prefs_common_save_history_to_dir(const gchar
*dirname
, const gchar
*history
, GList
*list
)
1433 gchar
*path
, *tmp_path
;
1436 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, dirname
,
1437 G_DIR_SEPARATOR_S
, history
,
1440 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, history
,
1443 tmp_path
= g_strconcat(path
, ".tmp", NULL
);
1445 if ((fp
= claws_fopen(tmp_path
, "wb")) == NULL
) {
1446 FILE_OP_ERROR(tmp_path
, "claws_fopen");
1450 for (cur
= list
; cur
!= NULL
; cur
= cur
->next
) {
1451 TRY(claws_fputs((gchar
*)cur
->data
, fp
) != EOF
&&
1452 claws_fputc('\n', fp
) != EOF
);
1455 if (claws_safe_fclose(fp
) == EOF
) {
1456 FILE_OP_ERROR(tmp_path
, "claws_fclose");
1464 if (g_rename(tmp_path
, path
) < 0) {
1465 FILE_OP_ERROR(path
, "rename");
1471 claws_safe_fclose(fp
);
1477 * Save history list to the specified history file
1479 static void prefs_common_save_history(const gchar
*history
, GList
*list
)
1481 prefs_common_save_history_to_dir(NULL
, history
, list
);
1486 void prefs_common_write_config(void)
1488 prefs_write_config(param
, "Common", COMMON_RC
);
1490 prefs_write_config(param_os_specific
, "CommonWin32", COMMON_RC
);
1493 prefs_common_save_history(COMMAND_HISTORY
,
1494 prefs_common
.mime_open_cmd_history
);
1495 prefs_common_save_history(QUICKSEARCH_HISTORY
,
1496 prefs_common
.summary_quicksearch_history
);
1497 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY
,
1498 prefs_common
.summary_search_from_history
);
1499 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY
,
1500 prefs_common
.summary_search_to_history
);
1501 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY
,
1502 prefs_common
.summary_search_subject_history
);
1503 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY
,
1504 prefs_common
.summary_search_body_history
);
1505 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY
,
1506 prefs_common
.summary_search_adv_condition_history
);
1507 prefs_common_save_history(MESSAGE_SEARCH_HISTORY
,
1508 prefs_common
.message_search_history
);
1509 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY
,
1510 prefs_common
.compose_save_to_history
);
1512 #ifndef USE_ALT_ADDRBOOK
1513 prefs_common_save_history_to_dir(ADDRBOOK_DIR
,
1514 ADDRESSBOOK_CUSTOM_ATTRIBUTES
,
1515 prefs_common
.addressbook_custom_attributes
);
1519 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1520 both 'in' and 'out' must be non-NULL.
1521 'out' must be a pointer to a buffer whose size is at least equal
1522 to strlen(txt)+1, this buffer will get cleared. out's contents
1523 will always get set to a valid string, even if it's "".*/
1524 void pref_get_unescaped_pref(gchar
*out
, const gchar
*in
)
1531 cm_return_if_fail( in
!= NULL
);
1532 cm_return_if_fail( out
!= NULL
);
1536 memset(out
, 0, strlen(in
)+1);
1537 while (*i
!= '\0') {
1538 if (*i
== '\\' && *(i
+1) == 'n') {
1541 } else if (*i
== '\\' && *(i
+1) == 't') {
1544 } else if (*i
== '\\' && *(i
+1) == '\\') {
1555 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1556 both 'in' and 'out' must be non-NULL.
1557 'out' must be a pointer to a buffer whose size is at least equal
1558 to 2*strlen(txt)+1. out's contents will always get set to a valid
1559 string, even if it's "". */
1560 void pref_get_escaped_pref(gchar
*out
, const gchar
*in
)
1567 cm_return_if_fail( in
!= NULL
);
1568 cm_return_if_fail( out
!= NULL
);
1572 while (*i
!= '\0') {
1576 } else if (*i
== '\t') {
1579 } else if (*i
== '\\') {
1590 /* set the contents of a textview widget from the internal \-escaped
1591 representation of a pref string. both txt and textview must be non-NULL. */
1592 void pref_set_textview_from_pref(GtkTextView
*textview
, const gchar
*txt
)
1594 GtkTextBuffer
*buffer
;
1597 cm_return_if_fail( textview
!= NULL
);
1599 buffer
= gtk_text_view_get_buffer(textview
);
1602 gtk_text_buffer_set_text(buffer
, "", -1);
1604 out
= g_malloc(strlen(txt
)+1);
1606 pref_get_unescaped_pref(out
, txt
);
1608 gtk_text_buffer_set_text(buffer
, out
, -1);
1613 /* set the contents of a gtkentry widget from the internal \-escaped
1614 representation of a pref string. both txt and entry must be non-NULL. */
1615 void pref_set_entry_from_pref(GtkEntry
*entry
, const gchar
*txt
)
1619 cm_return_if_fail( entry
!= NULL
);
1621 gtk_entry_set_text(entry
, "");
1623 out
= g_malloc(strlen(txt
)+1);
1625 pref_get_unescaped_pref(out
, txt
);
1627 gtk_entry_set_text(entry
, out
);
1632 /* get the \-escaped internal representation of a pref from the contents of
1633 a textview widget. textview must be non-NULL. */
1634 gchar
*pref_get_pref_from_textview(GtkTextView
*textview
)
1636 GtkTextBuffer
*buffer
;
1637 GtkTextIter start
, end
;
1640 cm_return_val_if_fail( textview
!= NULL
, "" );
1642 buffer
= gtk_text_view_get_buffer(textview
);
1643 gtk_text_buffer_get_start_iter(buffer
, &start
);
1644 gtk_text_buffer_get_iter_at_offset(buffer
, &end
, -1);
1645 tmp
= gtk_text_buffer_get_text(buffer
, &start
, &end
, FALSE
);
1646 out
= malloc(2*strlen(tmp
)+1);
1648 pref_get_escaped_pref(out
, tmp
);
1654 /* get the \-escaped internal representation of a pref from the contents of
1655 a gtkentry widget. entry must be non-NULL. */
1656 gchar
*pref_get_pref_from_entry(GtkEntry
*entry
)
1660 cm_return_val_if_fail( entry
!= NULL
, "" );
1662 tmp
= gtk_editable_get_chars(GTK_EDITABLE(entry
), 0, -1);
1663 out
= malloc(2*strlen(tmp
)+1);
1666 pref_get_escaped_pref(out
, tmp
);
1672 /* ugly hack to be able to get this pref from ssl_certificate.c */
1673 gboolean
prefs_common_unsafe_ssl_certs(void)
1675 return prefs_common
.unsafe_ssl_certs
;
1678 gboolean
prefs_common_enable_log_standard(void)
1680 return prefs_common
.enable_log_standard
;
1683 gboolean
prefs_common_enable_log_warning(void)
1685 return prefs_common
.enable_log_warning
;
1687 gboolean
prefs_common_enable_log_error(void)
1689 return prefs_common
.enable_log_error
;
1691 gboolean
prefs_common_enable_log_status(void)
1693 return prefs_common
.enable_log_status
;
1697 return the translated name of a header, if the translate_header option is
1698 set, otherwise return the untranslated header name (header_name itself).
1699 this function is provided for convenience, it's an interface to
1700 prefs_common.trans_hdr.
1701 works with header names either with or without trailing colon, provided
1702 that gettext found such header name in the sources (they should all be
1703 found in src/gtk/headers.h anyway).
1705 const gchar
*prefs_common_translated_header_name(const gchar
*header_name
)
1707 if (header_name
== NULL
|| *header_name
== '\0')
1710 return prefs_common
.trans_hdr
? gettext(header_name
) : header_name
;
1713 const gchar
*prefs_common_get_uri_cmd(void)
1720 if (!prefs_common
.cmds_use_system_default
)
1721 return prefs_common
.uri_cmd
;
1723 tmp
= g_find_program_in_path("xdg-open");
1725 return prefs_common
.uri_cmd
;
1728 return "xdg-open %s";
1732 const gchar
*prefs_common_get_ext_editor_cmd(void)
1734 return prefs_common
.ext_editor_cmd
;
1735 #if 0 /* we should do that, but it detaches the editor and breaks
1736 compose.c's external composition. */
1739 if (!prefs_common
.cmds_use_system_default
)
1740 return prefs_common
.ext_editor_cmd
;
1742 tmp
= g_find_program_in_path("xdg-open");
1744 return prefs_common
.ext_editor_cmd
;
1747 return "xdg-open %s";
1751 gboolean
prefs_common_get_use_shred(void)
1753 return prefs_common
.use_shred
;
1756 gboolean
prefs_common_get_flush_metadata (void)
1758 return prefs_common
.flush_metadata
;
1761 PrefsCommon
*prefs_common_get_prefs(void)
1763 return &prefs_common
;