2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2020 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
,
469 {"toolbar_style", "3", &prefs_common
.toolbar_style
, P_ENUM
,
472 {"toolbar_style", "1", &prefs_common
.toolbar_style
, P_ENUM
,
475 {"toolbar_detachable", "FALSE", &prefs_common
.toolbar_detachable
, P_BOOL
,
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_can_change_accels", "FALSE", &prefs_common
.gtk_can_change_accels
, P_BOOL
,
1030 {"gtk_enable_accels", "TRUE", &prefs_common
.gtk_enable_accels
, P_BOOL
,
1033 {"color_new", "#0000b3", &prefs_common
.color
[COL_NEW
],
1034 P_COLOR
, NULL
, NULL
, NULL
},
1036 /* Some windows' sizes */
1037 {"filteringwin_width", "500", &prefs_common
.filteringwin_width
, P_INT
,
1039 {"filteringwin_height", "-1", &prefs_common
.filteringwin_height
, P_INT
,
1042 {"filteringactionwin_width", "490", &prefs_common
.filteringactionwin_width
, P_INT
,
1044 {"filteringactionwin_height", "-1", &prefs_common
.filteringactionwin_height
, P_INT
,
1047 {"matcherwin_width", "520", &prefs_common
.matcherwin_width
, P_INT
,
1049 {"matcherwin_height", "-1", &prefs_common
.matcherwin_height
, P_INT
,
1052 {"templateswin_width", "480", &prefs_common
.templateswin_width
, P_INT
,
1054 {"templateswin_height", "-1", &prefs_common
.templateswin_height
, P_INT
,
1057 {"actionsiodialog_width", "582", &prefs_common
.actionsiodialog_width
, P_INT
,
1059 {"actionsiodialog_height", "310", &prefs_common
.actionsiodialog_height
, P_INT
,
1062 {"actionswin_width", "486", &prefs_common
.actionswin_width
, P_INT
,
1064 {"actionswin_height", "-1", &prefs_common
.actionswin_height
, P_INT
,
1067 {"tagswin_width", "586", &prefs_common
.tagswin_width
, P_INT
,
1069 {"tagswin_height", "-1", &prefs_common
.tagswin_height
, P_INT
,
1072 {"sslmanwin_width", "486", &prefs_common
.sslmanwin_width
, P_INT
,
1074 {"sslmanwin_height", "-1", &prefs_common
.sslmanwin_height
, P_INT
,
1077 {"uriopenerwin_width", "-1", &prefs_common
.uriopenerwin_width
, P_INT
,
1079 {"uriopenerwin_height", "-1", &prefs_common
.uriopenerwin_height
, P_INT
,
1082 {"foldersortwin_width", "400", &prefs_common
.foldersortwin_width
, P_INT
,
1084 {"foldersortwin_height", "300", &prefs_common
.foldersortwin_height
, P_INT
,
1087 {"addressbookwin_width", "520", &prefs_common
.addressbookwin_width
, P_INT
,
1089 {"addressbookwin_height", "-1", &prefs_common
.addressbookwin_height
, P_INT
,
1092 {"addressbookeditpersonwin_width", "640", &prefs_common
.addressbookeditpersonwin_width
, P_INT
,
1094 {"addressbookeditpersonwin_height", "320", &prefs_common
.addressbookeditpersonwin_height
, P_INT
,
1097 {"addressbookeditgroupwin_width", "580", &prefs_common
.addressbookeditgroupwin_width
, P_INT
,
1099 {"addressbookeditgroupwin_height", "340", &prefs_common
.addressbookeditgroupwin_height
, P_INT
,
1102 {"pluginswin_width", "-1", &prefs_common
.pluginswin_width
, P_INT
,
1104 {"pluginswin_height", "-1", &prefs_common
.pluginswin_height
, P_INT
,
1107 {"prefswin_width", "600", &prefs_common
.prefswin_width
, P_INT
,
1109 {"prefswin_height", "-1", &prefs_common
.prefswin_height
, P_INT
,
1112 {"folderitemwin_width", "500", &prefs_common
.folderitemwin_width
, P_INT
,
1114 {"folderitemwin_height", "-1", &prefs_common
.folderitemwin_height
, P_INT
,
1117 {"zero_replacement_char", "0", &prefs_common
.zero_replacement
, P_STRING
,
1120 {"editaccountwin_width", "500", &prefs_common
.editaccountwin_width
, P_INT
,
1122 {"editaccountwin_height", "-1", &prefs_common
.editaccountwin_height
, P_INT
,
1125 {"accountswin_width", "500", &prefs_common
.accountswin_width
, P_INT
,
1127 {"accountswin_height", "-1", &prefs_common
.accountswin_height
, P_INT
,
1130 {"logwin_width", "520", &prefs_common
.logwin_width
, P_INT
,
1132 {"logwin_height", "-1", &prefs_common
.logwin_height
, P_INT
,
1135 {"filtering_debugwin_width", "600", &prefs_common
.filtering_debugwin_width
, P_INT
,
1137 {"filtering_debugwin_height", "-1", &prefs_common
.filtering_debugwin_height
, P_INT
,
1140 {"folderselwin_width", "300", &prefs_common
.folderselwin_width
, P_INT
,
1142 {"folderselwin_height", "-1", &prefs_common
.folderselwin_height
, P_INT
,
1145 {"addressaddwin_width", "300", &prefs_common
.addressaddwin_width
, P_INT
,
1147 {"addressaddwin_height", "-1", &prefs_common
.addressaddwin_height
, P_INT
,
1150 {"addressbook_folderselwin_width", "300", &prefs_common
.addressbook_folderselwin_width
, P_INT
,
1152 {"addressbook_folderselwin_height", "-1", &prefs_common
.addressbook_folderselwin_height
, P_INT
,
1155 {"aboutwin_width", "450", &prefs_common
.aboutwin_width
, P_INT
,
1157 {"aboutwin_height", "500", &prefs_common
.aboutwin_height
, P_INT
,
1160 {"addrgather_width", "450", &prefs_common
.addrgather_width
, P_INT
,
1162 {"addrgather_height", "-1", &prefs_common
.addrgather_height
, P_INT
,
1165 {"news_subscribe_width", "450", &prefs_common
.news_subscribe_width
, P_INT
,
1167 {"news_subscribe_height", "400", &prefs_common
.news_subscribe_height
, P_INT
,
1171 {"imap_scan_tree_recurs_limit", "64", &prefs_common
.imap_scan_tree_recurs_limit
, P_INT
,
1173 {"warn_dnd", "1", &prefs_common
.warn_dnd
, P_INT
,
1175 {"utf8_instead_of_locale_for_broken_mail", "0",
1176 &prefs_common
.broken_are_utf8
, P_INT
,
1178 {"enable_swap_from", "FALSE", &prefs_common
.swap_from
, P_BOOL
,
1180 {"use_stripes_everywhere", "TRUE", &prefs_common
.use_stripes_everywhere
, P_BOOL
,
1182 {"use_stripes_in_summaries", "TRUE", &prefs_common
.use_stripes_in_summaries
, P_BOOL
,
1184 {"stripes_color_offset", "4000", &prefs_common
.stripes_color_offset
, P_INT
,
1186 {"enable_hscrollbar", "TRUE", &prefs_common
.enable_hscrollbar
, P_BOOL
,
1188 {"folderview_vscrollbar_policy", "0",
1189 &prefs_common
.folderview_vscrollbar_policy
, P_ENUM
,
1191 {"textview_cursor_visible", "FALSE",
1192 &prefs_common
.textview_cursor_visible
, P_BOOL
,
1194 {"hover_timeout", "500", &prefs_common
.hover_timeout
, P_INT
,
1196 #ifndef GENERIC_UMPC
1197 {"cache_max_mem_usage", "4096", &prefs_common
.cache_max_mem_usage
, P_INT
,
1199 {"cache_min_keep_time", "15", &prefs_common
.cache_min_keep_time
, P_INT
,
1202 {"cache_max_mem_usage", "4096", &prefs_common
.cache_max_mem_usage
, P_INT
,
1204 {"cache_min_keep_time", "0", &prefs_common
.cache_min_keep_time
, P_INT
,
1207 {"thread_by_subject_max_age", "10", &prefs_common
.thread_by_subject_max_age
,
1208 P_INT
, NULL
, NULL
, NULL
},
1209 {"last_opened_folder", "", &prefs_common
.last_opened_folder
,
1210 P_STRING
, NULL
, NULL
, NULL
},
1211 {"goto_last_folder_on_startup", "FALSE", &prefs_common
.goto_last_folder_on_startup
,
1212 P_BOOL
, NULL
, NULL
, NULL
},
1213 {"summary_quicksearch_sticky", "1", &prefs_common
.summary_quicksearch_sticky
, P_INT
,
1215 {"summary_quicksearch_dynamic", "0", &prefs_common
.summary_quicksearch_dynamic
, P_INT
,
1217 {"summary_quicksearch_autorun", "0", &prefs_common
.summary_quicksearch_autorun
, P_INT
,
1219 {"statusbar_update_step", "10", &prefs_common
.statusbar_update_step
, P_INT
,
1221 {"compose_no_markup", "FALSE", &prefs_common
.compose_no_markup
, P_BOOL
,
1223 {"skip_ssl_cert_check", "FALSE", &prefs_common
.skip_ssl_cert_check
, P_BOOL
,
1225 {"live_dangerously", "FALSE", &prefs_common
.live_dangerously
, P_BOOL
,
1227 {"save_parts_readwrite", "FALSE", &prefs_common
.save_parts_readwrite
, P_BOOL
,
1229 {"hide_quotes", "0", &prefs_common
.hide_quotes
, P_INT
,
1231 {"unsafe_ssl_certs", "FALSE", &prefs_common
.unsafe_ssl_certs
, P_BOOL
,
1233 #ifndef GENERIC_UMPC
1234 {"real_time_sync", "FALSE", &prefs_common
.real_time_sync
, P_BOOL
,
1237 {"real_time_sync", "TRUE", &prefs_common
.real_time_sync
, P_BOOL
,
1241 {"print_paper_type", NULL
, &prefs_common
.print_paper_type
, P_STRING
,
1243 {"print_paper_orientation", "0", &prefs_common
.print_paper_orientation
, P_INT
,
1245 {"print_margin_top", "-1", &prefs_common
.print_margin_top
, P_INT
,
1247 {"print_margin_bottom", "-1", &prefs_common
.print_margin_bottom
, P_INT
,
1249 {"print_margin_left", "-1", &prefs_common
.print_margin_left
, P_INT
,
1251 {"print_margin_right", "-1", &prefs_common
.print_margin_right
, P_INT
,
1253 {"print_use_color", "0", &prefs_common
.print_use_color
, P_INT
,
1255 {"print_use_collate", "0", &prefs_common
.print_use_collate
, P_INT
,
1257 {"print_use_reverse", "0", &prefs_common
.print_use_reverse
, P_INT
,
1259 {"print_use_duplex", "0", &prefs_common
.print_use_duplex
, P_INT
,
1261 {"print_imgs", "1", &prefs_common
.print_imgs
, P_INT
,
1263 {"print_previewwin_width", "600", &prefs_common
.print_previewwin_width
, P_INT
,
1265 {"print_previewwin_height", "-1", &prefs_common
.print_previewwin_height
, P_INT
,
1267 {"use_networkmanager", "TRUE", &prefs_common
.use_networkmanager
, P_BOOL
,
1269 {"use_shred", "FALSE", &prefs_common
.use_shred
, P_BOOL
,
1272 {"two_line_vertical", "TRUE", &prefs_common
.two_line_vert
,
1273 P_BOOL
, NULL
, NULL
, NULL
},
1275 {"inherit_folder_properties", "FALSE", &prefs_common
.inherit_folder_props
, P_BOOL
,
1278 {"flush_metadata", "TRUE", &prefs_common
.flush_metadata
, P_BOOL
,
1281 {"nav_history_length", "50", &prefs_common
.nav_history_length
, P_INT
,
1284 {"diff_added_color", "#008b8b", &prefs_common
.color
[COL_DIFF_ADDED
],
1285 P_COLOR
, NULL
, NULL
, NULL
},
1286 {"diff_deleted_color", "#6a5acd", &prefs_common
.color
[COL_DIFF_DELETED
],
1287 P_COLOR
, NULL
, NULL
, NULL
},
1288 {"diff_hunk_color", "#a52a2a", &prefs_common
.color
[COL_DIFF_HUNK
],
1289 P_COLOR
, NULL
, NULL
, NULL
},
1291 {"folder_search_wildcard", "TRUE", &prefs_common
.folder_search_wildcard
, P_BOOL
,
1293 {"address_search_wildcard", "TRUE", &prefs_common
.address_search_wildcard
, P_BOOL
,
1295 {"enable_avatars", "3", &prefs_common
.enable_avatars
, P_INT
, NULL
, NULL
, NULL
},
1296 #ifndef PASSWORD_CRYPTO_OLD
1297 {"use_master_passphrase", FALSE
, &prefs_common
.use_master_passphrase
, P_BOOL
, NULL
, NULL
, NULL
},
1298 {"master_passphrase", "", &prefs_common
.master_passphrase
, P_STRING
, NULL
, NULL
, NULL
},
1299 {"master_passphrase_salt", "", &prefs_common
.master_passphrase_salt
, P_STRING
, NULL
, NULL
, NULL
},
1300 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common
.master_passphrase_pbkdf2_rounds
, P_INT
, NULL
, NULL
, NULL
},
1303 {"use_proxy", "FALSE", &prefs_common
.use_proxy
, P_BOOL
, NULL
, NULL
, NULL
},
1304 {"proxy_type", "1", &prefs_common
.proxy_info
.proxy_type
, P_ENUM
, NULL
, NULL
, NULL
},
1305 {"proxy_host", "localhost", &prefs_common
.proxy_info
.proxy_host
, P_STRING
, NULL
, NULL
, NULL
},
1306 {"proxy_port", "1080", &prefs_common
.proxy_info
.proxy_port
, P_USHORT
, NULL
, NULL
, NULL
},
1307 {"use_proxy_auth", "FALSE", &prefs_common
.proxy_info
.use_proxy_auth
, P_BOOL
, NULL
, NULL
, NULL
},
1308 {"proxy_name", "", &prefs_common
.proxy_info
.proxy_name
, P_STRING
, NULL
, NULL
, NULL
},
1309 {"proxy_pass", NULL
, &prefs_common
.proxy_info
.proxy_pass
, P_STRING
, NULL
, NULL
, NULL
},
1311 {NULL
, NULL
, NULL
, P_OTHER
, NULL
, NULL
, NULL
}
1315 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1316 * Fallback to default_list if history file is not found
1318 GList
*prefs_common_read_history_from_dir_with_defaults(const gchar
*dirname
, const gchar
*history
,
1319 GList
*default_list
)
1323 gchar buf
[PREFSBUFSIZE
];
1327 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, dirname
,
1328 G_DIR_SEPARATOR_S
, history
,
1331 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, history
,
1334 if ((fp
= claws_fopen(path
, "rb")) == NULL
) {
1335 if (ENOENT
!= errno
) FILE_OP_ERROR(path
, "claws_fopen");
1337 /* returns default list if set, otherwise NULL */
1338 return default_list
;
1341 while (claws_fgets(buf
, sizeof(buf
), fp
) != NULL
) {
1343 if (buf
[0] == '\0') continue;
1344 tmp
= add_history(tmp
, buf
);
1348 tmp
= g_list_reverse(tmp
);
1354 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1356 static GList
*prefs_common_read_history_from_dir(const gchar
*dirname
, const gchar
*history
)
1358 return prefs_common_read_history_from_dir_with_defaults(dirname
, history
, NULL
);
1362 * Read history list from the specified history file
1364 static GList
*prefs_common_read_history(const gchar
*history
)
1366 return prefs_common_read_history_from_dir(NULL
, history
);
1369 void prefs_common_read_config(void)
1374 rcpath
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, COMMON_RC
, NULL
);
1375 prefs_read_config(param
, "Common", rcpath
, NULL
);
1377 prefs_read_config(param_os_specific
, "CommonWin32", rcpath
, NULL
);
1382 tmp
= g_strdup(gettext(prefs_common
.date_format
));
1383 g_free(prefs_common
.date_format
);
1384 prefs_common
.date_format
= tmp
;
1386 prefs_common
.mime_open_cmd_history
=
1387 prefs_common_read_history(COMMAND_HISTORY
);
1388 prefs_common
.summary_quicksearch_history
=
1389 prefs_common_read_history(QUICKSEARCH_HISTORY
);
1390 prefs_common
.summary_search_from_history
=
1391 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY
);
1392 prefs_common
.summary_search_to_history
=
1393 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY
);
1394 prefs_common
.summary_search_subject_history
=
1395 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY
);
1396 prefs_common
.summary_search_body_history
=
1397 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY
);
1398 prefs_common
.summary_search_adv_condition_history
=
1399 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY
);
1400 prefs_common
.message_search_history
=
1401 prefs_common_read_history(MESSAGE_SEARCH_HISTORY
);
1402 prefs_common
.compose_save_to_history
=
1403 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY
);
1404 #ifndef USE_ALT_ADDRBOOK
1405 prefs_common
.addressbook_custom_attributes
= addressbook_update_custom_attr_from_prefs();
1407 colorlabel_update_colortable_from_prefs();
1413 g_warning("failed to write"); \
1418 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1420 static void prefs_common_save_history_to_dir(const gchar
*dirname
, const gchar
*history
, GList
*list
)
1424 gchar
*path
, *tmp_path
;
1427 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, dirname
,
1428 G_DIR_SEPARATOR_S
, history
,
1431 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, history
,
1434 tmp_path
= g_strconcat(path
, ".tmp", NULL
);
1436 if ((fp
= claws_fopen(tmp_path
, "wb")) == NULL
) {
1437 FILE_OP_ERROR(tmp_path
, "claws_fopen");
1441 for (cur
= list
; cur
!= NULL
; cur
= cur
->next
) {
1442 TRY(claws_fputs((gchar
*)cur
->data
, fp
) != EOF
&&
1443 claws_fputc('\n', fp
) != EOF
);
1446 if (claws_safe_fclose(fp
) == EOF
) {
1447 FILE_OP_ERROR(tmp_path
, "claws_fclose");
1455 if (g_rename(tmp_path
, path
) < 0) {
1456 FILE_OP_ERROR(path
, "rename");
1462 claws_safe_fclose(fp
);
1468 * Save history list to the specified history file
1470 static void prefs_common_save_history(const gchar
*history
, GList
*list
)
1472 prefs_common_save_history_to_dir(NULL
, history
, list
);
1477 void prefs_common_write_config(void)
1479 prefs_write_config(param
, "Common", COMMON_RC
);
1481 prefs_write_config(param_os_specific
, "CommonWin32", COMMON_RC
);
1484 prefs_common_save_history(COMMAND_HISTORY
,
1485 prefs_common
.mime_open_cmd_history
);
1486 prefs_common_save_history(QUICKSEARCH_HISTORY
,
1487 prefs_common
.summary_quicksearch_history
);
1488 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY
,
1489 prefs_common
.summary_search_from_history
);
1490 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY
,
1491 prefs_common
.summary_search_to_history
);
1492 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY
,
1493 prefs_common
.summary_search_subject_history
);
1494 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY
,
1495 prefs_common
.summary_search_body_history
);
1496 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY
,
1497 prefs_common
.summary_search_adv_condition_history
);
1498 prefs_common_save_history(MESSAGE_SEARCH_HISTORY
,
1499 prefs_common
.message_search_history
);
1500 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY
,
1501 prefs_common
.compose_save_to_history
);
1503 #ifndef USE_ALT_ADDRBOOK
1504 prefs_common_save_history_to_dir(ADDRBOOK_DIR
,
1505 ADDRESSBOOK_CUSTOM_ATTRIBUTES
,
1506 prefs_common
.addressbook_custom_attributes
);
1510 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1511 both 'in' and 'out' must be non-NULL.
1512 'out' must be a pointer to a buffer whose size is at least equal
1513 to strlen(txt)+1, this buffer will get cleared. out's contents
1514 will always get set to a valid string, even if it's "".*/
1515 void pref_get_unescaped_pref(gchar
*out
, const gchar
*in
)
1522 cm_return_if_fail( in
!= NULL
);
1523 cm_return_if_fail( out
!= NULL
);
1527 memset(out
, 0, strlen(in
)+1);
1528 while (*i
!= '\0') {
1529 if (*i
== '\\' && *(i
+1) == 'n') {
1532 } else if (*i
== '\\' && *(i
+1) == 't') {
1535 } else if (*i
== '\\' && *(i
+1) == '\\') {
1546 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1547 both 'in' and 'out' must be non-NULL.
1548 'out' must be a pointer to a buffer whose size is at least equal
1549 to 2*strlen(txt)+1. out's contents will always get set to a valid
1550 string, even if it's "". */
1551 void pref_get_escaped_pref(gchar
*out
, const gchar
*in
)
1558 cm_return_if_fail( in
!= NULL
);
1559 cm_return_if_fail( out
!= NULL
);
1563 while (*i
!= '\0') {
1567 } else if (*i
== '\t') {
1570 } else if (*i
== '\\') {
1581 /* set the contents of a textview widget from the internal \-escaped
1582 representation of a pref string. both txt and textview must be non-NULL. */
1583 void pref_set_textview_from_pref(GtkTextView
*textview
, const gchar
*txt
)
1585 GtkTextBuffer
*buffer
;
1588 cm_return_if_fail( textview
!= NULL
);
1590 buffer
= gtk_text_view_get_buffer(textview
);
1593 gtk_text_buffer_set_text(buffer
, "", -1);
1595 out
= g_malloc(strlen(txt
)+1);
1597 pref_get_unescaped_pref(out
, txt
);
1599 gtk_text_buffer_set_text(buffer
, out
, -1);
1604 /* set the contents of a gtkentry widget from the internal \-escaped
1605 representation of a pref string. both txt and entry must be non-NULL. */
1606 void pref_set_entry_from_pref(GtkEntry
*entry
, const gchar
*txt
)
1610 cm_return_if_fail( entry
!= NULL
);
1612 gtk_entry_set_text(entry
, "");
1614 out
= g_malloc(strlen(txt
)+1);
1616 pref_get_unescaped_pref(out
, txt
);
1618 gtk_entry_set_text(entry
, out
);
1623 /* get the \-escaped internal representation of a pref from the contents of
1624 a textview widget. textview must be non-NULL. */
1625 gchar
*pref_get_pref_from_textview(GtkTextView
*textview
)
1627 GtkTextBuffer
*buffer
;
1628 GtkTextIter start
, end
;
1631 cm_return_val_if_fail( textview
!= NULL
, "" );
1633 buffer
= gtk_text_view_get_buffer(textview
);
1634 gtk_text_buffer_get_start_iter(buffer
, &start
);
1635 gtk_text_buffer_get_iter_at_offset(buffer
, &end
, -1);
1636 tmp
= gtk_text_buffer_get_text(buffer
, &start
, &end
, FALSE
);
1637 out
= malloc(2*strlen(tmp
)+1);
1639 pref_get_escaped_pref(out
, tmp
);
1645 /* get the \-escaped internal representation of a pref from the contents of
1646 a gtkentry widget. entry must be non-NULL. */
1647 gchar
*pref_get_pref_from_entry(GtkEntry
*entry
)
1651 cm_return_val_if_fail( entry
!= NULL
, "" );
1653 tmp
= gtk_editable_get_chars(GTK_EDITABLE(entry
), 0, -1);
1654 out
= malloc(2*strlen(tmp
)+1);
1657 pref_get_escaped_pref(out
, tmp
);
1663 /* ugly hack to be able to get this pref from ssl_certificate.c */
1664 gboolean
prefs_common_unsafe_ssl_certs(void)
1666 return prefs_common
.unsafe_ssl_certs
;
1669 gboolean
prefs_common_enable_log_standard(void)
1671 return prefs_common
.enable_log_standard
;
1674 gboolean
prefs_common_enable_log_warning(void)
1676 return prefs_common
.enable_log_warning
;
1678 gboolean
prefs_common_enable_log_error(void)
1680 return prefs_common
.enable_log_error
;
1682 gboolean
prefs_common_enable_log_status(void)
1684 return prefs_common
.enable_log_status
;
1688 return the translated name of a header, if the translate_header option is
1689 set, otherwise return the untranslated header name (header_name itself).
1690 this function is provided for convenience, it's an interface to
1691 prefs_common.trans_hdr.
1692 works with header names either with or without trailing colon, provided
1693 that gettext found such header name in the sources (they should all be
1694 found in src/gtk/headers.h anyway).
1696 const gchar
*prefs_common_translated_header_name(const gchar
*header_name
)
1698 if (header_name
== NULL
|| *header_name
== '\0')
1701 return prefs_common
.trans_hdr
? gettext(header_name
) : header_name
;
1704 const gchar
*prefs_common_get_uri_cmd(void)
1711 if (!prefs_common
.cmds_use_system_default
)
1712 return prefs_common
.uri_cmd
;
1714 tmp
= g_find_program_in_path("xdg-open");
1716 return prefs_common
.uri_cmd
;
1719 return "xdg-open %s";
1723 const gchar
*prefs_common_get_ext_editor_cmd(void)
1725 return prefs_common
.ext_editor_cmd
;
1726 #if 0 /* we should do that, but it detaches the editor and breaks
1727 compose.c's external composition. */
1730 if (!prefs_common
.cmds_use_system_default
)
1731 return prefs_common
.ext_editor_cmd
;
1733 tmp
= g_find_program_in_path("xdg-open");
1735 return prefs_common
.ext_editor_cmd
;
1738 return "xdg-open %s";
1742 gboolean
prefs_common_get_use_shred(void)
1744 return prefs_common
.use_shred
;
1747 gboolean
prefs_common_get_flush_metadata (void)
1749 return prefs_common
.flush_metadata
;
1752 PrefsCommon
*prefs_common_get_prefs(void)
1754 return &prefs_common
;