2 * Claws Mail -- a GTK based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2022 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 {"show_col_headers", "TRUE", &prefs_common
.show_col_headers
, P_BOOL
,
478 {"show_statusbar", "TRUE", &prefs_common
.show_statusbar
, P_BOOL
,
480 {"show_searchbar", "TRUE", &prefs_common
.show_searchbar
, P_BOOL
,
483 {"show_statusbar", "FALSE", &prefs_common
.show_statusbar
, P_BOOL
,
485 {"show_searchbar", "FALSE", &prefs_common
.show_searchbar
, P_BOOL
,
489 {"summary_col_show_mark", "TRUE",
490 &prefs_common
.summary_col_visible
[S_COL_MARK
], P_BOOL
, NULL
, NULL
, NULL
},
491 {"summary_col_show_unread", "TRUE",
492 &prefs_common
.summary_col_visible
[S_COL_STATUS
], P_BOOL
, NULL
, NULL
, NULL
},
493 {"summary_col_show_subject", "TRUE",
494 &prefs_common
.summary_col_visible
[S_COL_SUBJECT
], P_BOOL
, NULL
, NULL
, NULL
},
495 {"summary_col_show_from", "TRUE",
496 &prefs_common
.summary_col_visible
[S_COL_FROM
], P_BOOL
, NULL
, NULL
, NULL
},
497 {"summary_col_show_to", "FALSE",
498 &prefs_common
.summary_col_visible
[S_COL_TO
], P_BOOL
, NULL
, NULL
, NULL
},
499 {"summary_col_show_date", "TRUE",
500 &prefs_common
.summary_col_visible
[S_COL_DATE
], P_BOOL
, NULL
, NULL
, NULL
},
501 {"summary_col_show_mime", "TRUE",
502 &prefs_common
.summary_col_visible
[S_COL_MIME
], P_BOOL
, NULL
, NULL
, NULL
},
503 {"summary_col_show_size", "TRUE",
504 &prefs_common
.summary_col_visible
[S_COL_SIZE
], P_BOOL
, NULL
, NULL
, NULL
},
505 {"summary_col_show_number", "FALSE",
506 &prefs_common
.summary_col_visible
[S_COL_NUMBER
], P_BOOL
, NULL
, NULL
, NULL
},
507 {"summary_col_show_score", "FALSE",
508 &prefs_common
.summary_col_visible
[S_COL_SCORE
], P_BOOL
, NULL
, NULL
, NULL
},
509 {"summary_col_show_locked", "FALSE",
510 &prefs_common
.summary_col_visible
[S_COL_LOCKED
], P_BOOL
, NULL
, NULL
, NULL
},
511 {"summary_col_show_tags", "FALSE",
512 &prefs_common
.summary_col_visible
[S_COL_TAGS
], P_BOOL
, NULL
, NULL
, NULL
},
514 {"summary_col_lock", "FALSE", &prefs_common
.summary_col_lock
, P_BOOL
,
517 {"summary_col_pos_mark", "0",
518 &prefs_common
.summary_col_pos
[S_COL_MARK
], P_INT
, NULL
, NULL
, NULL
},
519 {"summary_col_pos_unread", "1",
520 &prefs_common
.summary_col_pos
[S_COL_STATUS
], P_INT
, NULL
, NULL
, NULL
},
521 {"summary_col_pos_mime", "2",
522 &prefs_common
.summary_col_pos
[S_COL_MIME
], P_INT
, NULL
, NULL
, NULL
},
523 {"summary_col_pos_subject", "3",
524 &prefs_common
.summary_col_pos
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
525 {"summary_col_pos_from", "4",
526 &prefs_common
.summary_col_pos
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
527 {"summary_col_pos_date", "5",
528 &prefs_common
.summary_col_pos
[S_COL_DATE
], P_INT
, NULL
, NULL
, NULL
},
529 {"summary_col_pos_size", "6",
530 &prefs_common
.summary_col_pos
[S_COL_SIZE
], P_INT
, NULL
, NULL
, NULL
},
531 {"summary_col_pos_number", "7",
532 &prefs_common
.summary_col_pos
[S_COL_NUMBER
], P_INT
, NULL
, NULL
, NULL
},
533 {"summary_col_pos_score", "8",
534 &prefs_common
.summary_col_pos
[S_COL_SCORE
], P_INT
, NULL
, NULL
, NULL
},
535 {"summary_col_pos_locked", "9",
536 &prefs_common
.summary_col_pos
[S_COL_LOCKED
], P_INT
, NULL
, NULL
, NULL
},
537 {"summary_col_pos_to", "10",
538 &prefs_common
.summary_col_pos
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
539 {"summary_col_pos_tags", "11",
540 &prefs_common
.summary_col_pos
[S_COL_TAGS
], P_INT
, NULL
, NULL
, NULL
},
542 {"summary_col_size_mark", "10",
543 &prefs_common
.summary_col_size
[S_COL_MARK
], P_INT
, NULL
, NULL
, NULL
},
544 {"summary_col_size_unread", "13",
545 &prefs_common
.summary_col_size
[S_COL_STATUS
], P_INT
, NULL
, NULL
, NULL
},
546 {"summary_col_size_mime", "10",
547 &prefs_common
.summary_col_size
[S_COL_MIME
], P_INT
, NULL
, NULL
, NULL
},
549 {"summary_col_size_subject", "200",
550 &prefs_common
.summary_col_size
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
551 {"summary_col_size_from", "120",
552 &prefs_common
.summary_col_size
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
553 {"summary_col_size_to", "120",
554 &prefs_common
.summary_col_size
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
556 {"summary_col_size_subject", "300",
557 &prefs_common
.summary_col_size
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
558 {"summary_col_size_from", "150",
559 &prefs_common
.summary_col_size
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
560 {"summary_col_size_to", "150",
561 &prefs_common
.summary_col_size
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
564 {"summary_col_size_date", "118",
565 &prefs_common
.summary_col_size
[S_COL_DATE
], P_INT
, NULL
, NULL
, NULL
},
566 {"summary_col_size_size", "45",
567 &prefs_common
.summary_col_size
[S_COL_SIZE
], P_INT
, NULL
, NULL
, NULL
},
568 {"summary_col_size_number", "40",
569 &prefs_common
.summary_col_size
[S_COL_NUMBER
], P_INT
, NULL
, NULL
, NULL
},
570 {"summary_col_size_score", "40",
571 &prefs_common
.summary_col_size
[S_COL_SCORE
], P_INT
, NULL
, NULL
, NULL
},
572 {"summary_col_size_locked", "13",
573 &prefs_common
.summary_col_size
[S_COL_LOCKED
], P_INT
, NULL
, NULL
, NULL
},
574 {"summary_col_size_tags", "150",
575 &prefs_common
.summary_col_size
[S_COL_TAGS
], P_INT
, NULL
, NULL
, NULL
},
578 {"folderwin_x", "16", &prefs_common
.folderwin_x
, P_INT
,
580 {"folderwin_y", "16", &prefs_common
.folderwin_y
, P_INT
,
582 {"folderview_width", "270", &prefs_common
.folderview_width
, P_INT
,
584 {"folderview_height", "450", &prefs_common
.folderview_height
, P_INT
,
586 {"folderview_visible", "TRUE", &prefs_common
.folderview_visible
, P_BOOL
,
589 {"folder_col_show_folder", "TRUE",
590 &prefs_common
.folder_col_visible
[F_COL_FOLDER
], P_BOOL
, NULL
, NULL
, NULL
},
591 {"folder_col_show_new", "TRUE",
592 &prefs_common
.folder_col_visible
[F_COL_NEW
], P_BOOL
, NULL
, NULL
, NULL
},
593 {"folder_col_show_unread", "TRUE",
594 &prefs_common
.folder_col_visible
[F_COL_UNREAD
], P_BOOL
, NULL
, NULL
, NULL
},
595 {"folder_col_show_total", "TRUE",
596 &prefs_common
.folder_col_visible
[F_COL_TOTAL
], P_BOOL
, NULL
, NULL
, NULL
},
598 {"folder_col_pos_folder", "0",
599 &prefs_common
.folder_col_pos
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
600 {"folder_col_pos_new", "1",
601 &prefs_common
.folder_col_pos
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
602 {"folder_col_pos_unread", "2",
603 &prefs_common
.folder_col_pos
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
604 {"folder_col_pos_total", "3",
605 &prefs_common
.folder_col_pos
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
608 {"folder_col_size_folder", "120",
609 &prefs_common
.folder_col_size
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
610 {"folder_col_size_new", "32",
611 &prefs_common
.folder_col_size
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
612 {"folder_col_size_unread", "32",
613 &prefs_common
.folder_col_size
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
614 {"folder_col_size_total", "32",
615 &prefs_common
.folder_col_size
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
617 {"folder_col_size_folder", "400",
618 &prefs_common
.folder_col_size
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
619 {"folder_col_size_new", "32",
620 &prefs_common
.folder_col_size
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
621 {"folder_col_size_unread", "32",
622 &prefs_common
.folder_col_size
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
623 {"folder_col_size_total", "32",
624 &prefs_common
.folder_col_size
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
627 {"folder_default_thread", "TRUE", &prefs_common
.folder_default_thread
, P_BOOL
,
629 {"folder_default_thread_collapsed", "FALSE", &prefs_common
.folder_default_thread_collapsed
, P_BOOL
,
631 {"folder_default_hide_read_threads", "FALSE", &prefs_common
.folder_default_hide_read_threads
, P_BOOL
,
633 {"folder_default_hide_read_msgs", "FALSE", &prefs_common
.folder_default_hide_read_msgs
, P_BOOL
,
635 {"folder_default_hide_del_msgs", "FALSE", &prefs_common
.folder_default_hide_del_msgs
, P_BOOL
,
638 {"summaryview_width", "500", &prefs_common
.summaryview_width
, P_INT
,
640 {"summaryview_height", "244", &prefs_common
.summaryview_height
, P_INT
,
643 {"main_messagewin_x", "256", &prefs_common
.main_msgwin_x
, P_INT
,
645 {"main_messagewin_y", "210", &prefs_common
.main_msgwin_y
, P_INT
,
647 {"messageview_width", "500", &prefs_common
.msgview_width
, P_INT
,
649 {"messageview_height", "213", &prefs_common
.msgview_height
, P_INT
,
651 {"messageview_visible", "TRUE", &prefs_common
.msgview_visible
, P_BOOL
,
654 {"mainview_x", "64", &prefs_common
.mainview_x
, P_INT
,
656 {"mainview_y", "64", &prefs_common
.mainview_y
, P_INT
,
658 {"mainview_width", "500", &prefs_common
.mainview_width
, P_INT
,
660 {"mainview_height", "400", &prefs_common
.mainview_height
, P_INT
,
662 {"mainwin_x", "64", &prefs_common
.mainwin_x
, P_INT
,
664 {"mainwin_y", "64", &prefs_common
.mainwin_y
, P_INT
,
666 {"mainwin_maximised", "FALSE", &prefs_common
.mainwin_maximised
, P_BOOL
,
668 {"mainwin_fullscreen", "FALSE", &prefs_common
.mainwin_fullscreen
, P_BOOL
,
670 {"mainwin_menubar", "TRUE", &prefs_common
.mainwin_menubar
, P_BOOL
,
673 {"mainwin_width", "800", &prefs_common
.mainwin_width
, P_INT
,
675 {"mainwin_height", "600", &prefs_common
.mainwin_height
, P_INT
,
677 {"messagewin_width", "600", &prefs_common
.msgwin_width
, P_INT
,
679 {"messagewin_height", "540", &prefs_common
.msgwin_height
, P_INT
,
681 {"mimeview_tree_height", "60", &prefs_common
.mimeview_tree_height
, P_INT
,
683 {"sourcewin_width", "600", &prefs_common
.sourcewin_width
, P_INT
,
685 {"sourcewin_height", "500", &prefs_common
.sourcewin_height
, P_INT
,
687 {"compose_width", "600", &prefs_common
.compose_width
, P_INT
,
689 {"compose_height", "560", &prefs_common
.compose_height
, P_INT
,
692 {"mainwin_width", "700", &prefs_common
.mainwin_width
, P_INT
,
694 {"mainwin_height", "470", &prefs_common
.mainwin_height
, P_INT
,
696 {"messagewin_width", "700", &prefs_common
.msgwin_width
, P_INT
,
698 {"messagewin_height", "470", &prefs_common
.msgwin_height
, P_INT
,
700 {"sourcewin_width", "700", &prefs_common
.sourcewin_width
, P_INT
,
702 {"sourcewin_height", "470", &prefs_common
.sourcewin_height
, P_INT
,
704 {"compose_width", "700", &prefs_common
.compose_width
, P_INT
,
706 {"compose_height", "470", &prefs_common
.compose_height
, P_INT
,
709 {"compose_notebook_height", "130", &prefs_common
.compose_notebook_height
, P_INT
,
711 {"compose_x", "0", &prefs_common
.compose_x
, P_INT
,
713 {"compose_y", "0", &prefs_common
.compose_y
, P_INT
,
716 {"enable_color", "TRUE", &prefs_common
.enable_color
, P_BOOL
,
719 {"quote_level1_color", "#0000b3", &prefs_common
.color
[COL_QUOTE_LEVEL1
],
720 P_COLOR
, NULL
, NULL
, NULL
},
721 {"quote_level2_color", "#0000b3", &prefs_common
.color
[COL_QUOTE_LEVEL2
],
722 P_COLOR
, NULL
, NULL
, NULL
},
723 {"quote_level3_color", "#0000b3", &prefs_common
.color
[COL_QUOTE_LEVEL3
],
724 P_COLOR
, NULL
, NULL
, NULL
},
725 {"enable_bgcolor", "FALSE", &prefs_common
.enable_bgcolor
, P_BOOL
,
727 {"quote_level1_bgcolor", "#cccccc", &prefs_common
.color
[COL_QUOTE_LEVEL1_BG
],
728 P_COLOR
, NULL
, NULL
, NULL
},
729 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common
.color
[COL_QUOTE_LEVEL2_BG
],
730 P_COLOR
, NULL
, NULL
, NULL
},
731 {"quote_level3_bgcolor", "#dddddd", &prefs_common
.color
[COL_QUOTE_LEVEL3_BG
],
732 P_COLOR
, NULL
, NULL
, NULL
},
733 {"uri_color", "#007f00", &prefs_common
.color
[COL_URI
],
734 P_COLOR
, NULL
, NULL
, NULL
},
735 {"emphasis_color", "#0000cf", &prefs_common
.color
[COL_EMPHASIS
],
736 P_COLOR
, NULL
, NULL
, NULL
},
737 {"target_folder_color", "#da1cca", &prefs_common
.color
[COL_TGT_FOLDER
],
738 P_COLOR
, NULL
, NULL
, NULL
},
739 {"signature_color", "#797979", &prefs_common
.color
[COL_SIGNATURE
],
740 P_COLOR
, NULL
, NULL
, NULL
},
741 {"recycle_quote_colors", "FALSE", &prefs_common
.recycle_quote_colors
,
742 P_BOOL
, NULL
, NULL
, NULL
},
744 {"default_header_color", "#000000", &prefs_common
.color
[COL_DEFAULT_HEADER
],
745 P_COLOR
, NULL
, NULL
, NULL
},
746 {"default_header_bgcolor", "#f5f6be", &prefs_common
.color
[COL_DEFAULT_HEADER_BG
],
747 P_COLOR
, NULL
, NULL
, NULL
},
748 {"tags_color", "#000000", &prefs_common
.color
[COL_TAGS
],
749 P_COLOR
, NULL
, NULL
, NULL
},
750 {"tags_bgcolor", "#f5f6be", &prefs_common
.color
[COL_TAGS_BG
],
751 P_COLOR
, NULL
, NULL
, NULL
},
752 {"qs_active_color", "#000000", &prefs_common
.color
[COL_QS_ACTIVE
],
753 P_COLOR
, NULL
, NULL
, NULL
},
754 {"qs_active_bgcolor", "#f5f6be", &prefs_common
.color
[COL_QS_ACTIVE_BG
],
755 P_COLOR
, NULL
, NULL
, NULL
},
756 {"qs_error_color", "#000000", &prefs_common
.color
[COL_QS_ERROR
],
757 P_COLOR
, NULL
, NULL
, NULL
},
758 {"qs_error_bgcolor", "#ff7070", &prefs_common
.color
[COL_QS_ERROR_BG
],
759 P_COLOR
, NULL
, NULL
, NULL
},
761 {"display_header_pane", "FALSE", &prefs_common
.display_header_pane
,
762 P_BOOL
, NULL
, NULL
, NULL
},
763 {"display_header", "TRUE", &prefs_common
.display_header
, P_BOOL
,
765 {"display_xface", "TRUE", &prefs_common
.display_xface
,
766 P_BOOL
, NULL
, NULL
, NULL
},
767 {"save_xface", "TRUE", &prefs_common
.save_xface
,
768 P_BOOL
, NULL
, NULL
, NULL
},
769 {"render_html", "TRUE", &prefs_common
.render_html
, P_BOOL
,
771 {"invoke_plugin_on_html", "FALSE", &prefs_common
.invoke_plugin_on_html
, P_BOOL
,
773 {"promote_html_part", "FALSE", &prefs_common
.promote_html_part
, P_BOOL
,
775 {"line_space", "2", &prefs_common
.line_space
, P_INT
,
777 {"never_send_retrcpt", "FALSE", &prefs_common
.never_send_retrcpt
, P_BOOL
,
780 {"enable_smooth_scroll", "FALSE",
781 &prefs_common
.enable_smooth_scroll
, P_BOOL
,
783 {"scroll_step", "1", &prefs_common
.scroll_step
, P_INT
,
785 {"scroll_half_page", "FALSE", &prefs_common
.scroll_halfpage
, P_BOOL
,
787 {"hide_quoted", "TRUE",
788 &prefs_common
.hide_quoted
, P_BOOL
,
790 {"respect_flowed_format", "FALSE", &prefs_common
.respect_flowed_format
, P_BOOL
,
792 {"show_all_headers", "FALSE", &prefs_common
.show_all_headers
, P_BOOL
,
795 {"show_other_header", "FALSE", &prefs_common
.show_other_header
, P_BOOL
,
798 {"attach_desc", "TRUE", &prefs_common
.attach_desc
, P_BOOL
,
800 {"attach_save_directory", NULL
,
801 &SPECIFIC_PREFS
.attach_save_dir
, P_STRING
, NULL
, NULL
, NULL
},
802 {"attach_load_directory", NULL
,
803 &SPECIFIC_PREFS
.attach_load_dir
, P_STRING
, NULL
, NULL
, NULL
},
806 {"mime_textviewer", NULL
,
807 &SPECIFIC_PREFS
.mime_textviewer
, P_STRING
, NULL
, NULL
, NULL
},
808 {"mime_open_command", "xdg-open '%s'",
809 &SPECIFIC_PREFS
.mime_open_cmd
, P_STRING
, NULL
, NULL
, NULL
},
810 {"show_inline_attachments", "TRUE",
811 &prefs_common
.show_inline_attachments
, P_BOOL
, NULL
, NULL
, NULL
},
815 {"layout_mode", "0", &prefs_common
.layout_mode
, P_INT
,
818 {"layout_mode", "5", &prefs_common
.layout_mode
, P_INT
,
821 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
822 NULL, NULL, NULL}, */
823 {"open_selected_message_on_folder_open", "FALSE",
824 &prefs_common
.open_selected_on_folder_open
,
825 P_BOOL
, NULL
, NULL
, NULL
},
826 {"open_selected_message_on_search_results", "FALSE",
827 &prefs_common
.open_selected_on_search_results
,
828 P_BOOL
, NULL
, NULL
, NULL
},
829 {"open_selected_message_on_prevnext", "FALSE",
830 &prefs_common
.open_selected_on_prevnext
,
831 P_BOOL
, NULL
, NULL
, NULL
},
832 {"open_selected_message_on_deletemove", "FALSE",
833 &prefs_common
.open_selected_on_deletemove
,
834 P_BOOL
, NULL
, NULL
, NULL
},
835 {"open_selected_message_on_directional", "FALSE",
836 &prefs_common
.open_selected_on_directional
,
837 P_BOOL
, NULL
, NULL
, NULL
},
838 {"always_show_message_when_selected", "FALSE",
839 &prefs_common
.always_show_msg
,
840 P_BOOL
, NULL
, NULL
, NULL
},
841 {"select_on_entry", "3", &prefs_common
.select_on_entry
,
842 P_ENUM
, NULL
, NULL
, NULL
},
843 {"show_tooltips", "TRUE", &prefs_common
.show_tooltips
,
844 P_BOOL
, NULL
, NULL
, NULL
},
846 /* do it SUMMARY_OPEN_ACTIONS-1 times */
847 {"summary_select_prio1", "0", &prefs_common
.summary_select_prio
[0], P_ENUM
,
849 {"summary_select_prio2", "0", &prefs_common
.summary_select_prio
[1], P_ENUM
,
851 {"summary_select_prio3", "0", &prefs_common
.summary_select_prio
[2], P_ENUM
,
853 {"summary_select_prio4", "0", &prefs_common
.summary_select_prio
[3], P_ENUM
,
855 {"summary_select_prio5", "0", &prefs_common
.summary_select_prio
[4], P_ENUM
,
857 {"summary_select_prio6", "0", &prefs_common
.summary_select_prio
[5], P_ENUM
,
859 {"summary_select_prio7", "0", &prefs_common
.summary_select_prio
[6], P_ENUM
,
861 {"summary_select_prio8", "0", &prefs_common
.summary_select_prio
[7], P_ENUM
,
863 {"summary_select_prio9", "0", &prefs_common
.summary_select_prio
[8], P_ENUM
,
865 {"summary_select_prio10", "0", &prefs_common
.summary_select_prio
[9], P_ENUM
,
868 {"mark_as_read_on_new_window", "FALSE",
869 &prefs_common
.mark_as_read_on_new_window
,
870 P_BOOL
, NULL
, NULL
, NULL
},
871 {"mark_as_read_delay", "0",
872 &prefs_common
.mark_as_read_delay
, P_INT
,
874 {"immediate_execution", "TRUE", &prefs_common
.immediate_exec
, P_BOOL
,
876 {"nextunreadmsg_dialog", "1", &prefs_common
.next_unread_msg_dialog
, P_ENUM
,
878 {"summary_from_show", "0", &prefs_common
.summary_from_show
, P_ENUM
,
881 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME
,
882 &SPECIFIC_PREFS
.pixmap_theme_path
, P_STRING
,
885 {"enable_alpha_svg", "TRUE",
886 &SPECIFIC_PREFS
.enable_alpha_svg
, P_BOOL
,
888 {"enable_pixmap_scaling", "TRUE",
889 &SPECIFIC_PREFS
.enable_pixmap_scaling
, P_BOOL
,
891 {"pixmap_scaling_auto", "TRUE",
892 &SPECIFIC_PREFS
.pixmap_scaling_auto
, P_BOOL
,
894 {"pixmap_scaling_ppi", "96",
895 &SPECIFIC_PREFS
.pixmap_scaling_ppi
, P_INT
,
899 {"run_processingrules_before_mark_all", "FALSE", &prefs_common
.run_processingrules_before_mark_all
, P_BOOL
,
901 {"ask_mark_all_read", "TRUE", &prefs_common
.ask_mark_all_read
, P_BOOL
,
903 {"ask_override_colorlabel", "TRUE", &prefs_common
.ask_override_colorlabel
, P_BOOL
,
906 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common
.ask_apply_per_account_filtering_rules
, P_BOOL
,
908 {"apply_per_account_filtering_rules", "0", &prefs_common
.apply_per_account_filtering_rules
, P_ENUM
,
912 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common
.addressbook_use_editaddress_dialog
,
913 P_BOOL
, NULL
, NULL
, NULL
},
914 {"addressbook_hpaned_pos", "-1", &prefs_common
.addressbook_hpaned_pos
,
915 P_INT
, NULL
, NULL
, NULL
},
916 {"addressbook_vpaned_pos", "-1", &prefs_common
.addressbook_vpaned_pos
,
917 P_INT
, NULL
, NULL
, NULL
},
921 {"uri_open_command", DEFAULT_BROWSER_CMD
,
922 &SPECIFIC_PREFS
.uri_cmd
, P_STRING
, NULL
, NULL
, NULL
},
924 {"gtk_theme", DEFAULT_W32_GTK_THEME
,
925 &SPECIFIC_PREFS
.gtk_theme
, P_STRING
, NULL
, NULL
, NULL
},
927 {"ext_editor_command", DEFAULT_EDITOR_CMD
,
928 &SPECIFIC_PREFS
.ext_editor_cmd
, P_STRING
, NULL
, NULL
, NULL
},
929 {"cmds_use_system_default", "TRUE",
930 &prefs_common
.cmds_use_system_default
, P_BOOL
, NULL
, NULL
, NULL
},
931 {"add_address_by_click", "FALSE", &prefs_common
.add_address_by_click
,
932 P_BOOL
, NULL
, NULL
, NULL
},
933 {"session_passwords", "FALSE", &prefs_common
.session_passwords
,
934 P_BOOL
, NULL
, NULL
, NULL
},
935 {"confirm_on_exit", "FALSE", &prefs_common
.confirm_on_exit
, P_BOOL
,
937 {"clean_trash_on_exit", "FALSE", &prefs_common
.clean_on_exit
, P_BOOL
,
939 {"ask_on_cleaning", "TRUE", &prefs_common
.ask_on_clean
, P_BOOL
,
941 {"warn_queued_on_exit", "TRUE", &prefs_common
.warn_queued_on_exit
,
942 P_BOOL
, NULL
, NULL
, NULL
},
943 {"work_offline", "FALSE", &prefs_common
.work_offline
, P_BOOL
,
945 {"summary_quicksearch_type", "0", &prefs_common
.summary_quicksearch_type
, P_INT
,
948 {"summary_quicksearch_recurse", "1", &prefs_common
.summary_quicksearch_recurse
, P_INT
,
951 {"summary_quicksearch_recurse", "0", &prefs_common
.summary_quicksearch_recurse
, P_INT
,
955 #if defined(__OpenBSD__)
956 {"io_timeout_secs", "80", &prefs_common
.io_timeout_secs
,
957 P_INT
, NULL
, NULL
, NULL
},
959 {"io_timeout_secs", "60", &prefs_common
.io_timeout_secs
,
960 P_INT
, NULL
, NULL
, NULL
},
962 {"hide_score", "-9999", &prefs_common
.kill_score
, P_INT
,
964 {"important_score", "1", &prefs_common
.important_score
, P_INT
,
967 {"clip_log", "TRUE", &prefs_common
.cliplog
, P_BOOL
,
969 {"log_length", "500", &prefs_common
.loglength
, P_INT
,
972 {"enable_log_standard", "TRUE", &prefs_common
.enable_log_standard
, P_BOOL
,
974 {"enable_log_warning", "TRUE", &prefs_common
.enable_log_warning
, P_BOOL
,
976 {"enable_log_error", "TRUE", &prefs_common
.enable_log_error
, P_BOOL
,
978 {"enable_log_status", "TRUE", &prefs_common
.enable_log_status
, P_BOOL
,
981 {"enable_log_standard", "FALSE", &prefs_common
.enable_log_standard
, P_BOOL
,
983 {"enable_log_warning", "FALSE", &prefs_common
.enable_log_warning
, P_BOOL
,
985 {"enable_log_error", "FALSE", &prefs_common
.enable_log_error
, P_BOOL
,
987 {"enable_log_status", "FALSE", &prefs_common
.enable_log_status
, P_BOOL
,
990 {"log_msg_color", "#00af00", &prefs_common
.color
[COL_LOG_MSG
],
991 P_COLOR
, NULL
, NULL
, NULL
},
992 {"log_warn_color", "#af0000", &prefs_common
.color
[COL_LOG_WARN
],
993 P_COLOR
, NULL
, NULL
, NULL
},
994 {"log_error_color", "#af0000", &prefs_common
.color
[COL_LOG_ERROR
],
995 P_COLOR
, NULL
, NULL
, NULL
},
996 {"log_in_color", "#000000", &prefs_common
.color
[COL_LOG_IN
],
997 P_COLOR
, NULL
, NULL
, NULL
},
998 {"log_out_color", "#0000ef", &prefs_common
.color
[COL_LOG_OUT
],
999 P_COLOR
, NULL
, NULL
, NULL
},
1000 {"log_status_ok_color", "#00af00", &prefs_common
.color
[COL_LOG_STATUS_OK
],
1001 P_COLOR
, NULL
, NULL
, NULL
},
1002 {"log_status_nok_color", "#0000af", &prefs_common
.color
[COL_LOG_STATUS_NOK
],
1003 P_COLOR
, NULL
, NULL
, NULL
},
1004 {"log_status_skip_color", "#aa00aa", &prefs_common
.color
[COL_LOG_STATUS_SKIP
],
1005 P_COLOR
, NULL
, NULL
, NULL
},
1007 {"enable_filtering_debug", "FALSE", &prefs_common
.enable_filtering_debug
, P_BOOL
,
1009 {"filtering_debug_level", "1", &prefs_common
.filtering_debug_level
, P_INT
,
1011 {"enable_filtering_debug_inc", "TRUE", &prefs_common
.enable_filtering_debug_inc
, P_BOOL
,
1013 {"enable_filtering_debug_manual", "TRUE", &prefs_common
.enable_filtering_debug_manual
, P_BOOL
,
1015 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common
.enable_filtering_debug_folder_proc
, P_BOOL
,
1017 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common
.enable_filtering_debug_pre_proc
, P_BOOL
,
1019 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common
.enable_filtering_debug_post_proc
, P_BOOL
,
1021 {"filtering_debug_clip_log", "TRUE", &prefs_common
.filtering_debug_cliplog
, P_BOOL
,
1023 {"filtering_debug_log_length", "500", &prefs_common
.filtering_debug_loglength
, P_INT
,
1026 {"gtk_enable_accels", "TRUE", &prefs_common
.gtk_enable_accels
, P_BOOL
,
1029 {"color_new", "#0000b3", &prefs_common
.color
[COL_NEW
],
1030 P_COLOR
, NULL
, NULL
, NULL
},
1032 /* Some windows' sizes */
1033 {"filteringwin_width", "500", &prefs_common
.filteringwin_width
, P_INT
,
1035 {"filteringwin_height", "-1", &prefs_common
.filteringwin_height
, P_INT
,
1038 {"filteringactionwin_width", "490", &prefs_common
.filteringactionwin_width
, P_INT
,
1040 {"filteringactionwin_height", "-1", &prefs_common
.filteringactionwin_height
, P_INT
,
1043 {"matcherwin_width", "520", &prefs_common
.matcherwin_width
, P_INT
,
1045 {"matcherwin_height", "-1", &prefs_common
.matcherwin_height
, P_INT
,
1048 {"templateswin_width", "480", &prefs_common
.templateswin_width
, P_INT
,
1050 {"templateswin_height", "-1", &prefs_common
.templateswin_height
, P_INT
,
1053 {"actionsiodialog_width", "582", &prefs_common
.actionsiodialog_width
, P_INT
,
1055 {"actionsiodialog_height", "310", &prefs_common
.actionsiodialog_height
, P_INT
,
1058 {"actionswin_width", "486", &prefs_common
.actionswin_width
, P_INT
,
1060 {"actionswin_height", "-1", &prefs_common
.actionswin_height
, P_INT
,
1063 {"tagswin_width", "586", &prefs_common
.tagswin_width
, P_INT
,
1065 {"tagswin_height", "-1", &prefs_common
.tagswin_height
, P_INT
,
1068 {"sslmanwin_width", "486", &prefs_common
.sslmanwin_width
, P_INT
,
1070 {"sslmanwin_height", "-1", &prefs_common
.sslmanwin_height
, P_INT
,
1073 {"uriopenerwin_width", "-1", &prefs_common
.uriopenerwin_width
, P_INT
,
1075 {"uriopenerwin_height", "-1", &prefs_common
.uriopenerwin_height
, P_INT
,
1078 {"foldersortwin_width", "400", &prefs_common
.foldersortwin_width
, P_INT
,
1080 {"foldersortwin_height", "300", &prefs_common
.foldersortwin_height
, P_INT
,
1083 {"addressbookwin_width", "520", &prefs_common
.addressbookwin_width
, P_INT
,
1085 {"addressbookwin_height", "-1", &prefs_common
.addressbookwin_height
, P_INT
,
1088 {"addressbookeditpersonwin_width", "640", &prefs_common
.addressbookeditpersonwin_width
, P_INT
,
1090 {"addressbookeditpersonwin_height", "320", &prefs_common
.addressbookeditpersonwin_height
, P_INT
,
1093 {"addressbookeditgroupwin_width", "580", &prefs_common
.addressbookeditgroupwin_width
, P_INT
,
1095 {"addressbookeditgroupwin_height", "340", &prefs_common
.addressbookeditgroupwin_height
, P_INT
,
1098 {"pluginswin_width", "-1", &prefs_common
.pluginswin_width
, P_INT
,
1100 {"pluginswin_height", "-1", &prefs_common
.pluginswin_height
, P_INT
,
1103 {"prefswin_width", "600", &prefs_common
.prefswin_width
, P_INT
,
1105 {"prefswin_height", "-1", &prefs_common
.prefswin_height
, P_INT
,
1108 {"folderitemwin_width", "500", &prefs_common
.folderitemwin_width
, P_INT
,
1110 {"folderitemwin_height", "-1", &prefs_common
.folderitemwin_height
, P_INT
,
1113 {"zero_replacement_char", "0", &prefs_common
.zero_replacement
, P_STRING
,
1116 {"editaccountwin_width", "500", &prefs_common
.editaccountwin_width
, P_INT
,
1118 {"editaccountwin_height", "-1", &prefs_common
.editaccountwin_height
, P_INT
,
1121 {"accountswin_width", "500", &prefs_common
.accountswin_width
, P_INT
,
1123 {"accountswin_height", "-1", &prefs_common
.accountswin_height
, P_INT
,
1126 {"logwin_width", "520", &prefs_common
.logwin_width
, P_INT
,
1128 {"logwin_height", "-1", &prefs_common
.logwin_height
, P_INT
,
1131 {"filtering_debugwin_width", "600", &prefs_common
.filtering_debugwin_width
, P_INT
,
1133 {"filtering_debugwin_height", "-1", &prefs_common
.filtering_debugwin_height
, P_INT
,
1136 {"folderselwin_width", "300", &prefs_common
.folderselwin_width
, P_INT
,
1138 {"folderselwin_height", "-1", &prefs_common
.folderselwin_height
, P_INT
,
1141 {"addressaddwin_width", "300", &prefs_common
.addressaddwin_width
, P_INT
,
1143 {"addressaddwin_height", "-1", &prefs_common
.addressaddwin_height
, P_INT
,
1146 {"addressbook_folderselwin_width", "300", &prefs_common
.addressbook_folderselwin_width
, P_INT
,
1148 {"addressbook_folderselwin_height", "-1", &prefs_common
.addressbook_folderselwin_height
, P_INT
,
1151 {"aboutwin_width", "450", &prefs_common
.aboutwin_width
, P_INT
,
1153 {"aboutwin_height", "500", &prefs_common
.aboutwin_height
, P_INT
,
1156 {"addrgather_width", "450", &prefs_common
.addrgather_width
, P_INT
,
1158 {"addrgather_height", "-1", &prefs_common
.addrgather_height
, P_INT
,
1161 {"news_subscribe_width", "450", &prefs_common
.news_subscribe_width
, P_INT
,
1163 {"news_subscribe_height", "400", &prefs_common
.news_subscribe_height
, P_INT
,
1167 {"imap_scan_tree_recurs_limit", "64", &prefs_common
.imap_scan_tree_recurs_limit
, P_INT
,
1169 {"warn_dnd", "1", &prefs_common
.warn_dnd
, P_INT
,
1171 {"show_save_all_success", "1", &prefs_common
.show_save_all_success
, P_INT
,
1173 {"show_save_all_failure", "1", &prefs_common
.show_save_all_failure
, 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_primary_passphrase
, P_BOOL
, NULL
, NULL
, NULL
},
1298 {"master_passphrase", "", &prefs_common
.primary_passphrase
, P_STRING
, NULL
, NULL
, NULL
},
1299 {"master_passphrase_salt", "", &prefs_common
.primary_passphrase_salt
, P_STRING
, NULL
, NULL
, NULL
},
1300 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common
.primary_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 {"qs_press_timeout", "500", &prefs_common
.qs_press_timeout
, P_INT
,
1314 {NULL
, NULL
, NULL
, P_OTHER
, NULL
, NULL
, NULL
}
1318 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1319 * Fallback to default_list if history file is not found
1321 GList
*prefs_common_read_history_from_dir_with_defaults(const gchar
*dirname
, const gchar
*history
,
1322 GList
*default_list
)
1326 gchar buf
[PREFSBUFSIZE
];
1330 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, dirname
,
1331 G_DIR_SEPARATOR_S
, history
,
1334 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, history
,
1337 if ((fp
= claws_fopen(path
, "rb")) == NULL
) {
1338 if (ENOENT
!= errno
) FILE_OP_ERROR(path
, "claws_fopen");
1340 /* returns default list if set, otherwise NULL */
1341 return default_list
;
1344 while (claws_fgets(buf
, sizeof(buf
), fp
) != NULL
) {
1346 if (buf
[0] == '\0') continue;
1347 tmp
= add_history(tmp
, buf
);
1351 tmp
= g_list_reverse(tmp
);
1357 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1359 static GList
*prefs_common_read_history_from_dir(const gchar
*dirname
, const gchar
*history
)
1361 return prefs_common_read_history_from_dir_with_defaults(dirname
, history
, NULL
);
1365 * Read history list from the specified history file
1367 static GList
*prefs_common_read_history(const gchar
*history
)
1369 return prefs_common_read_history_from_dir(NULL
, history
);
1372 void prefs_common_read_config(void)
1377 rcpath
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, COMMON_RC
, NULL
);
1378 prefs_read_config(param
, "Common", rcpath
, NULL
);
1380 prefs_read_config(param_os_specific
, "CommonWin32", rcpath
, NULL
);
1385 tmp
= g_strdup(gettext(prefs_common
.date_format
));
1386 g_free(prefs_common
.date_format
);
1387 prefs_common
.date_format
= tmp
;
1389 prefs_common
.mime_open_cmd_history
=
1390 prefs_common_read_history(COMMAND_HISTORY
);
1391 prefs_common
.summary_quicksearch_history
=
1392 prefs_common_read_history(QUICKSEARCH_HISTORY
);
1393 prefs_common
.summary_search_from_history
=
1394 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY
);
1395 prefs_common
.summary_search_to_history
=
1396 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY
);
1397 prefs_common
.summary_search_subject_history
=
1398 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY
);
1399 prefs_common
.summary_search_body_history
=
1400 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY
);
1401 prefs_common
.summary_search_adv_condition_history
=
1402 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY
);
1403 prefs_common
.message_search_history
=
1404 prefs_common_read_history(MESSAGE_SEARCH_HISTORY
);
1405 prefs_common
.compose_save_to_history
=
1406 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY
);
1407 #ifndef USE_ALT_ADDRBOOK
1408 prefs_common
.addressbook_custom_attributes
= addressbook_update_custom_attr_from_prefs();
1410 colorlabel_update_colortable_from_prefs();
1416 g_warning("failed to write"); \
1421 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1423 static void prefs_common_save_history_to_dir(const gchar
*dirname
, const gchar
*history
, GList
*list
)
1427 gchar
*path
, *tmp_path
;
1430 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, dirname
,
1431 G_DIR_SEPARATOR_S
, history
,
1434 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, history
,
1437 tmp_path
= g_strconcat(path
, ".tmp", NULL
);
1439 if ((fp
= claws_fopen(tmp_path
, "wb")) == NULL
) {
1440 FILE_OP_ERROR(tmp_path
, "claws_fopen");
1444 for (cur
= list
; cur
!= NULL
; cur
= cur
->next
) {
1445 TRY(claws_fputs((gchar
*)cur
->data
, fp
) != EOF
&&
1446 claws_fputc('\n', fp
) != EOF
);
1449 if (claws_safe_fclose(fp
) == EOF
) {
1450 FILE_OP_ERROR(tmp_path
, "claws_fclose");
1458 if (g_rename(tmp_path
, path
) < 0) {
1459 FILE_OP_ERROR(path
, "rename");
1465 claws_safe_fclose(fp
);
1471 * Save history list to the specified history file
1473 static void prefs_common_save_history(const gchar
*history
, GList
*list
)
1475 prefs_common_save_history_to_dir(NULL
, history
, list
);
1480 void prefs_common_write_config(void)
1482 prefs_write_config(param
, "Common", COMMON_RC
);
1484 prefs_write_config(param_os_specific
, "CommonWin32", COMMON_RC
);
1487 prefs_common_save_history(COMMAND_HISTORY
,
1488 prefs_common
.mime_open_cmd_history
);
1489 prefs_common_save_history(QUICKSEARCH_HISTORY
,
1490 prefs_common
.summary_quicksearch_history
);
1491 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY
,
1492 prefs_common
.summary_search_from_history
);
1493 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY
,
1494 prefs_common
.summary_search_to_history
);
1495 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY
,
1496 prefs_common
.summary_search_subject_history
);
1497 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY
,
1498 prefs_common
.summary_search_body_history
);
1499 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY
,
1500 prefs_common
.summary_search_adv_condition_history
);
1501 prefs_common_save_history(MESSAGE_SEARCH_HISTORY
,
1502 prefs_common
.message_search_history
);
1503 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY
,
1504 prefs_common
.compose_save_to_history
);
1506 #ifndef USE_ALT_ADDRBOOK
1507 prefs_common_save_history_to_dir(ADDRBOOK_DIR
,
1508 ADDRESSBOOK_CUSTOM_ATTRIBUTES
,
1509 prefs_common
.addressbook_custom_attributes
);
1513 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1514 both 'in' and 'out' must be non-NULL.
1515 'out' must be a pointer to a buffer whose size is at least equal
1516 to strlen(txt)+1, this buffer will get cleared. out's contents
1517 will always get set to a valid string, even if it's "".*/
1518 void pref_get_unescaped_pref(gchar
*out
, const gchar
*in
)
1525 cm_return_if_fail( in
!= NULL
);
1526 cm_return_if_fail( out
!= NULL
);
1530 memset(out
, 0, strlen(in
)+1);
1531 while (*i
!= '\0') {
1532 if (*i
== '\\' && *(i
+1) == 'n') {
1535 } else if (*i
== '\\' && *(i
+1) == 't') {
1538 } else if (*i
== '\\' && *(i
+1) == '\\') {
1549 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1550 both 'in' and 'out' must be non-NULL.
1551 'out' must be a pointer to a buffer whose size is at least equal
1552 to 2*strlen(txt)+1. out's contents will always get set to a valid
1553 string, even if it's "". */
1554 void pref_get_escaped_pref(gchar
*out
, const gchar
*in
)
1561 cm_return_if_fail( in
!= NULL
);
1562 cm_return_if_fail( out
!= NULL
);
1566 while (*i
!= '\0') {
1570 } else if (*i
== '\t') {
1573 } else if (*i
== '\\') {
1584 /* set the contents of a textview widget from the internal \-escaped
1585 representation of a pref string. both txt and textview must be non-NULL. */
1586 void pref_set_textview_from_pref(GtkTextView
*textview
, const gchar
*txt
)
1588 GtkTextBuffer
*buffer
;
1591 cm_return_if_fail( textview
!= NULL
);
1593 buffer
= gtk_text_view_get_buffer(textview
);
1596 gtk_text_buffer_set_text(buffer
, "", -1);
1598 out
= g_malloc(strlen(txt
)+1);
1600 pref_get_unescaped_pref(out
, txt
);
1602 gtk_text_buffer_set_text(buffer
, out
, -1);
1607 /* set the contents of a gtkentry widget from the internal \-escaped
1608 representation of a pref string. both txt and entry must be non-NULL. */
1609 void pref_set_entry_from_pref(GtkEntry
*entry
, const gchar
*txt
)
1613 cm_return_if_fail( entry
!= NULL
);
1615 gtk_entry_set_text(entry
, "");
1617 out
= g_malloc(strlen(txt
)+1);
1619 pref_get_unescaped_pref(out
, txt
);
1621 gtk_entry_set_text(entry
, out
);
1626 /* get the \-escaped internal representation of a pref from the contents of
1627 a textview widget. textview must be non-NULL. */
1628 gchar
*pref_get_pref_from_textview(GtkTextView
*textview
)
1630 GtkTextBuffer
*buffer
;
1631 GtkTextIter start
, end
;
1634 cm_return_val_if_fail( textview
!= NULL
, "" );
1636 buffer
= gtk_text_view_get_buffer(textview
);
1637 gtk_text_buffer_get_start_iter(buffer
, &start
);
1638 gtk_text_buffer_get_iter_at_offset(buffer
, &end
, -1);
1639 tmp
= gtk_text_buffer_get_text(buffer
, &start
, &end
, FALSE
);
1640 out
= malloc(2*strlen(tmp
)+1);
1642 pref_get_escaped_pref(out
, tmp
);
1648 /* get the \-escaped internal representation of a pref from the contents of
1649 a gtkentry widget. entry must be non-NULL. */
1650 gchar
*pref_get_pref_from_entry(GtkEntry
*entry
)
1654 cm_return_val_if_fail( entry
!= NULL
, "" );
1656 tmp
= gtk_editable_get_chars(GTK_EDITABLE(entry
), 0, -1);
1657 out
= malloc(2*strlen(tmp
)+1);
1660 pref_get_escaped_pref(out
, tmp
);
1666 /* ugly hack to be able to get this pref from ssl_certificate.c */
1667 gboolean
prefs_common_unsafe_ssl_certs(void)
1669 return prefs_common
.unsafe_ssl_certs
;
1672 gboolean
prefs_common_enable_log_standard(void)
1674 return prefs_common
.enable_log_standard
;
1677 gboolean
prefs_common_enable_log_warning(void)
1679 return prefs_common
.enable_log_warning
;
1681 gboolean
prefs_common_enable_log_error(void)
1683 return prefs_common
.enable_log_error
;
1685 gboolean
prefs_common_enable_log_status(void)
1687 return prefs_common
.enable_log_status
;
1691 return the translated name of a header, if the translate_header option is
1692 set, otherwise return the untranslated header name (header_name itself).
1693 this function is provided for convenience, it's an interface to
1694 prefs_common.trans_hdr.
1695 works with header names either with or without trailing colon, provided
1696 that gettext found such header name in the sources (they should all be
1697 found in src/gtk/headers.h anyway).
1699 const gchar
*prefs_common_translated_header_name(const gchar
*header_name
)
1701 if (header_name
== NULL
|| *header_name
== '\0')
1704 return prefs_common
.trans_hdr
? gettext(header_name
) : header_name
;
1707 const gchar
*prefs_common_get_uri_cmd(void)
1714 if (!prefs_common
.cmds_use_system_default
)
1715 return prefs_common
.uri_cmd
;
1717 tmp
= g_find_program_in_path("xdg-open");
1719 return prefs_common
.uri_cmd
;
1722 return "xdg-open %s";
1726 const gchar
*prefs_common_get_ext_editor_cmd(void)
1728 return prefs_common
.ext_editor_cmd
;
1729 #if 0 /* we should do that, but it detaches the editor and breaks
1730 compose.c's external composition. */
1733 if (!prefs_common
.cmds_use_system_default
)
1734 return prefs_common
.ext_editor_cmd
;
1736 tmp
= g_find_program_in_path("xdg-open");
1738 return prefs_common
.ext_editor_cmd
;
1741 return "xdg-open %s";
1745 gboolean
prefs_common_get_use_shred(void)
1747 return prefs_common
.use_shred
;
1750 gboolean
prefs_common_get_flush_metadata (void)
1752 return prefs_common
.flush_metadata
;
1755 PrefsCommon
*prefs_common_get_prefs(void)
1757 return &prefs_common
;