2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2019 Hiroyuki Yamamoto and the Claws Mail team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21 #include "claws-features.h"
27 #include <glib/gi18n.h>
29 #include <gdk/gdkkeysyms.h>
34 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "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 "folderview.h"
60 #include "stock_pixmap.h"
61 #include "prefswindow.h"
62 #include "colorlabel.h"
63 #include "passwordstore.h"
64 #include "file-utils.h"
66 #ifndef USE_ALT_ADDRBOOK
67 #include "addrcustomattr.h"
76 PrefsCommon prefs_common
;
82 * In the Windows version prefs_common contains
83 * - the non-OS-specific settings of the "Common" section and
84 * - the OS-specific settings of the "CommonWin32" section
85 * The OS-specific settings of the "Common" section are not used
86 * but saved in prefs_unix.
89 # define SPECIFIC_PREFS prefs_unix
91 static PrefsCommon prefs_unix
;
93 static PrefParam param_os_specific
[] = {
96 &prefs_common
.extinc_cmd
, P_STRING
, NULL
, NULL
, NULL
},
97 {"newmail_notify_cmd", "",
98 &prefs_common
.newmail_notify_cmd
, P_STRING
, NULL
, NULL
, NULL
},
101 {"message_font_gtk2", "Monospace 9",
102 &prefs_common
.textfont
, P_STRING
, NULL
, NULL
, NULL
},
103 {"print_font_gtk2", "Monospace 9",
104 &prefs_common
.printfont
, P_STRING
, NULL
, NULL
, NULL
},
105 {"small_font_gtk2", "Sans 9",
106 &prefs_common
.smallfont
, P_STRING
, NULL
, NULL
, NULL
},
107 {"normal_font_gtk2", "Sans 9",
108 &prefs_common
.normalfont
, P_STRING
, NULL
, NULL
, NULL
},
109 {"bold_font_gtk2", "Sans 9 Bold",
110 &prefs_common
.boldfont
, P_STRING
, NULL
, NULL
, NULL
},
112 {"attach_save_directory", NULL
,
113 &prefs_common
.attach_save_dir
, P_STRING
, NULL
, NULL
, NULL
},
114 {"attach_load_directory", NULL
,
115 &prefs_common
.attach_load_dir
, P_STRING
, NULL
, NULL
, NULL
},
118 {"mime_textviewer", NULL
,
119 &prefs_common
.mime_textviewer
, P_STRING
, NULL
, NULL
, NULL
},
120 {"mime_open_command", "notepad '%s'",
121 &prefs_common
.mime_open_cmd
, P_STRING
, NULL
, NULL
, NULL
},
124 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME
,
125 &prefs_common
.pixmap_theme_path
, P_STRING
, NULL
, NULL
, NULL
},
127 {"enable_alpha_svg", "TRUE",
128 &prefs_common
.enable_alpha_svg
, P_BOOL
, NULL
, NULL
, NULL
},
129 {"enable_pixmap_scaling", "TRUE",
130 &prefs_common
.enable_pixmap_scaling
, P_BOOL
, NULL
, NULL
, NULL
},
131 {"pixmap_scaling_auto", "TRUE",
132 &prefs_common
.pixmap_scaling_auto
, P_BOOL
, NULL
, NULL
, NULL
},
133 {"pixmap_scaling_ppi", "96",
134 &prefs_common
.pixmap_scaling_ppi
, P_INT
, NULL
, NULL
, NULL
},
138 {"ext_editor_command", "notepad %s",
139 &prefs_common
.ext_editor_cmd
, P_STRING
, NULL
, NULL
, NULL
},
141 {NULL
, NULL
, NULL
, P_OTHER
, NULL
, NULL
, NULL
}
144 # define SPECIFIC_PREFS prefs_common
148 parameter name, default value, pointer to the prefs variable, data type,
149 pointer to the widget pointer,
150 pointer to the function for data setting,
151 pointer to the function for widget setting
154 static PrefParam param
[] = {
155 {"config_version", "0",
156 &prefs_common
.config_version
, P_INT
, NULL
, NULL
, NULL
},
159 {"use_ext_inc", "FALSE", &prefs_common
.use_extinc
, P_BOOL
,
161 {"ext_inc_path", DEFAULT_INC_PATH
, &SPECIFIC_PREFS
.extinc_cmd
, P_STRING
,
164 {"autochk_newmail", "FALSE", &prefs_common
.autochk_newmail
, P_BOOL
,
166 {"autochk_interval", "600", &prefs_common
.autochk_itv
, P_INT
,
168 {"check_on_startup", "FALSE", &prefs_common
.chk_on_startup
, P_BOOL
,
170 {"open_inbox_on_inc", "FALSE", &prefs_common
.open_inbox_on_inc
,
171 P_BOOL
, NULL
, NULL
, NULL
},
172 {"scan_all_after_inc", "FALSE", &prefs_common
.scan_all_after_inc
,
173 P_BOOL
, NULL
, NULL
, NULL
},
174 {"newmail_notify_manu", "FALSE", &prefs_common
.newmail_notify_manu
,
175 P_BOOL
, NULL
, NULL
, NULL
},
176 {"newmail_notify_auto", "FALSE", &prefs_common
.newmail_notify_auto
,
177 P_BOOL
, NULL
, NULL
, NULL
},
178 {"newmail_notify_cmd", "", &SPECIFIC_PREFS
.newmail_notify_cmd
, P_STRING
,
180 {"receive_dialog_mode", "2", &prefs_common
.recv_dialog_mode
, P_ENUM
,
182 {"receivewin_width", "460", &prefs_common
.receivewin_width
, P_INT
,
184 {"receivewin_height", "-1", &prefs_common
.receivewin_height
, P_INT
,
186 {"no_receive_error_panel", "FALSE", &prefs_common
.no_recv_err_panel
,
187 P_BOOL
, NULL
, NULL
, NULL
},
188 {"close_receive_dialog", "TRUE", &prefs_common
.close_recv_dialog
,
189 P_BOOL
, NULL
, NULL
, NULL
},
192 {"save_message", "TRUE", &prefs_common
.savemsg
, P_BOOL
,
194 {"confirm_send_queued_messages", "FALSE", &prefs_common
.confirm_send_queued_messages
,
195 P_BOOL
, NULL
, NULL
, NULL
},
197 {"send_dialog_mode", "0", &prefs_common
.send_dialog_invisible
, P_BOOL
,
200 {"send_dialog_mode", "1", &prefs_common
.send_dialog_invisible
, P_BOOL
,
203 {"sendwin_width", "460", &prefs_common
.sendwin_width
, P_INT
,
205 {"sendwin_height", "-1", &prefs_common
.sendwin_height
, P_INT
,
208 {"outgoing_charset", CS_AUTO
, &prefs_common
.outgoing_charset
, P_STRING
,
210 {"encoding_method", "0", &prefs_common
.encoding_method
, P_ENUM
,
212 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common
.outgoing_fallback_to_ascii
, P_BOOL
,
214 {"rewrite_first_from", "TRUE", &prefs_common
.rewrite_first_from
,
215 P_BOOL
, NULL
, NULL
, NULL
},
216 {"warn_empty_subj", "TRUE", &prefs_common
.warn_empty_subj
,
217 P_BOOL
, NULL
, NULL
, NULL
},
218 {"warn_sending_many_recipients_num", "0", &prefs_common
.warn_sending_many_recipients_num
, P_INT
,
220 {"hide_timezone", "FALSE", &prefs_common
.hide_timezone
,
221 P_BOOL
, NULL
, NULL
, NULL
},
222 {"allow_jisx0201_kana", "FALSE", &prefs_common
.allow_jisx0201_kana
,
223 P_BOOL
, NULL
, NULL
, NULL
},
226 {"auto_ext_editor", "FALSE", &prefs_common
.auto_exteditor
, P_BOOL
,
228 {"forward_as_attachment", "FALSE", &prefs_common
.forward_as_attachment
,
229 P_BOOL
, NULL
, NULL
, NULL
},
230 {"redirect_keep_from", "FALSE",
231 &prefs_common
.redirect_keep_from
, P_BOOL
,
233 {"undo_level", "50", &prefs_common
.undolevels
, P_INT
,
235 {"compose_with_format", "FALSE", &prefs_common
.compose_with_format
, P_BOOL
,
237 {"compose_subject_format", "",
238 &prefs_common
.compose_subject_format
, P_STRING
, NULL
, NULL
, NULL
},
239 {"compose_body_format", N_("Hello,\\n"),
240 &prefs_common
.compose_body_format
, P_STRING
, NULL
, NULL
, NULL
},
241 {"show_compose_margin", "FALSE", &prefs_common
.show_compose_margin
, P_BOOL
,
243 {"type_any_header", "FALSE", &prefs_common
.type_any_header
, P_BOOL
,
247 {"linewrap_length", "72", &prefs_common
.linewrap_len
, P_INT
,
249 {"linewrap_quotation", "TRUE", &prefs_common
.linewrap_quote
, P_BOOL
,
251 {"linewrap_pastes", "TRUE", &prefs_common
.linewrap_pastes
, P_BOOL
,
253 {"primary_paste_unselects", "FALSE", &prefs_common
.primary_paste_unselects
, P_BOOL
,
255 {"linewrap_auto", "TRUE", &prefs_common
.autowrap
, P_BOOL
,
257 {"auto_indent", "TRUE", &prefs_common
.auto_indent
, P_BOOL
,
259 {"autosave", "TRUE", &prefs_common
.autosave
,
260 P_BOOL
, NULL
, NULL
, NULL
},
261 {"autosave_length", "50", &prefs_common
.autosave_length
, P_INT
,
263 {"autosave_encrypted", "FALSE", &prefs_common
.autosave_encrypted
,
264 P_BOOL
, NULL
, NULL
, NULL
},
265 {"warn_large_insert", "TRUE", &prefs_common
.warn_large_insert
,
266 P_BOOL
, NULL
, NULL
, NULL
},
267 {"warn_large_insert_size", "500", &prefs_common
.warn_large_insert_size
,
268 P_INT
, NULL
, NULL
, NULL
},
270 {"enable_aspell", "TRUE", &prefs_common
.enable_aspell
, P_BOOL
,
272 {"dictionary", "", &prefs_common
.dictionary
, P_STRING
,
274 {"alt_dictionary", "", &prefs_common
.alt_dictionary
, P_STRING
,
276 {"use_alternate_dict", "FALSE", &prefs_common
.use_alternate
, P_BOOL
,
278 {"check_while_typing", "TRUE", &prefs_common
.check_while_typing
, P_BOOL
,
280 {"recheck_when_changing_dict", "TRUE", &prefs_common
.recheck_when_changing_dict
,
281 P_BOOL
, NULL
, NULL
, NULL
},
282 {"misspelled_color", "#ff0000", &prefs_common
.color
[COL_MISSPELLED
],
283 P_COLOR
, NULL
, NULL
, NULL
},
284 {"use_both_dicts", "FALSE", &prefs_common
.use_both_dicts
, P_BOOL
,
287 {"reply_with_quote", "TRUE", &prefs_common
.reply_with_quote
, P_BOOL
,
289 {"compose_dnd_insert_or_attach", "0", &prefs_common
.compose_dnd_mode
, P_ENUM
,
292 /* Account autoselection */
293 {"reply_account_autoselect", "TRUE",
294 &prefs_common
.reply_account_autosel
, P_BOOL
,
296 {"forward_account_autoselect", "TRUE",
297 &prefs_common
.forward_account_autosel
, P_BOOL
,
299 {"reedit_account_autoselect", "TRUE",
300 &prefs_common
.reedit_account_autosel
, P_BOOL
,
303 {"default_reply_list", "TRUE", &prefs_common
.default_reply_list
, P_BOOL
,
307 {"show_ruler", "TRUE", &prefs_common
.show_ruler
, P_BOOL
,
310 {"show_ruler", "FALSE", &prefs_common
.show_ruler
, P_BOOL
,
315 {"reply_quote_mark", "> ", &prefs_common
.quotemark
, P_STRING
,
317 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
318 &prefs_common
.quotefmt
, P_STRING
, NULL
, NULL
, NULL
},
320 {"forward_quote_mark", "> ", &prefs_common
.fw_quotemark
, P_STRING
,
322 {"forward_quote_format",
323 N_("\\n\\nBegin forwarded message:\\n\\n"
324 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
325 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
326 &prefs_common
.fw_quotefmt
, P_STRING
,
328 {"quote_chars", ">", &prefs_common
.quote_chars
, P_STRING
,
334 {"message_font_gtk2", "Monospace 9",
335 &SPECIFIC_PREFS
.textfont
, P_STRING
, NULL
, NULL
, NULL
},
336 {"print_font_gtk2", "Monospace 9",
337 &SPECIFIC_PREFS
.printfont
, P_STRING
, NULL
, NULL
, NULL
},
338 {"small_font_gtk2", "Sans 9",
339 &SPECIFIC_PREFS
.smallfont
, P_STRING
, NULL
, NULL
, NULL
},
340 {"normal_font_gtk2", "Sans 9",
341 &SPECIFIC_PREFS
.normalfont
, P_STRING
, NULL
, NULL
, NULL
},
342 {"bold_font_gtk2", "Sans Bold 9",
343 &SPECIFIC_PREFS
.boldfont
, P_STRING
, NULL
, NULL
, NULL
},
345 {"message_font_gtk2", "Monospace 8",
346 &SPECIFIC_PREFS
.textfont
, P_STRING
, NULL
, NULL
, NULL
},
347 {"print_font_gtk2", "Monospace 8",
348 &SPECIFIC_PREFS
.printfont
, P_STRING
, NULL
, NULL
, NULL
},
349 {"small_font_gtk2", "Sans 8",
350 &SPECIFIC_PREFS
.smallfont
, P_STRING
, NULL
, NULL
, NULL
},
351 {"normal_font_gtk2", "Sans 8",
352 &SPECIFIC_PREFS
.normalfont
, P_STRING
, NULL
, NULL
, NULL
},
353 {"bold_font_gtk2", "Sans Bold 8",
354 &SPECIFIC_PREFS
.boldfont
, P_STRING
, NULL
, NULL
, NULL
},
357 {"use_different_print_font", "FALSE", &prefs_common
.use_different_print_font
, P_BOOL
,
359 {"derive_from_normal_font", "TRUE", &prefs_common
.derive_from_normal_font
, P_BOOL
,
363 {"custom_color1", "#ff9900", &prefs_common
.custom_colorlabel
[0].color
, P_COLOR
,
365 {"custom_colorlabel1", N_("Orange"), &prefs_common
.custom_colorlabel
[0].label
, P_STRING
,
367 {"custom_color2", "#ff0000", &prefs_common
.custom_colorlabel
[1].color
, P_COLOR
,
369 {"custom_colorlabel2", N_("Red"), &prefs_common
.custom_colorlabel
[1].label
, P_STRING
,
371 {"custom_color3", "#ff66ff", &prefs_common
.custom_colorlabel
[2].color
, P_COLOR
,
373 {"custom_colorlabel3", N_("Pink"), &prefs_common
.custom_colorlabel
[2].label
, P_STRING
,
375 {"custom_color4", "#00ccff", &prefs_common
.custom_colorlabel
[3].color
, P_COLOR
,
377 {"custom_colorlabel4", N_("Sky blue"), &prefs_common
.custom_colorlabel
[3].label
, P_STRING
,
379 {"custom_color5", "#0000ff", &prefs_common
.custom_colorlabel
[4].color
, P_COLOR
,
381 {"custom_colorlabel5", N_("Blue"), &prefs_common
.custom_colorlabel
[4].label
, P_STRING
,
383 {"custom_color6", "#009900", &prefs_common
.custom_colorlabel
[5].color
, P_COLOR
,
385 {"custom_colorlabel6", N_("Green"), &prefs_common
.custom_colorlabel
[5].label
, P_STRING
,
387 {"custom_color7", "#663333", &prefs_common
.custom_colorlabel
[6].color
, P_COLOR
,
389 {"custom_colorlabel7", N_("Brown"), &prefs_common
.custom_colorlabel
[6].label
, P_STRING
,
391 {"custom_color8", "#aaaaaa", &prefs_common
.custom_colorlabel
[7].color
, P_COLOR
,
393 {"custom_colorlabel8", N_("Grey"), &prefs_common
.custom_colorlabel
[7].label
, P_STRING
,
395 {"custom_color9", "#c07254", &prefs_common
.custom_colorlabel
[8].color
, P_COLOR
,
397 {"custom_colorlabel9", N_("Light brown"), &prefs_common
.custom_colorlabel
[8].label
, P_STRING
,
399 {"custom_color10", "#c00000", &prefs_common
.custom_colorlabel
[9].color
, P_COLOR
,
401 {"custom_colorlabel10", N_("Dark red"), &prefs_common
.custom_colorlabel
[9].label
, P_STRING
,
403 {"custom_color11", "#cc1074", &prefs_common
.custom_colorlabel
[10].color
, P_COLOR
,
405 {"custom_colorlabel11", N_("Dark pink"), &prefs_common
.custom_colorlabel
[10].label
, P_STRING
,
407 {"custom_color12", "#5094cd", &prefs_common
.custom_colorlabel
[11].color
, P_COLOR
,
409 {"custom_colorlabel12", N_("Steel blue"), &prefs_common
.custom_colorlabel
[11].label
, P_STRING
,
411 {"custom_color13", "#ffd500", &prefs_common
.custom_colorlabel
[12].color
, P_COLOR
,
413 {"custom_colorlabel13", N_("Gold"), &prefs_common
.custom_colorlabel
[12].label
, P_STRING
,
415 {"custom_color14", "#00d800", &prefs_common
.custom_colorlabel
[13].color
, P_COLOR
,
417 {"custom_colorlabel14", N_("Bright green"), &prefs_common
.custom_colorlabel
[13].label
, P_STRING
,
419 {"custom_color15", "#c060c0", &prefs_common
.custom_colorlabel
[14].color
, P_COLOR
,
421 {"custom_colorlabel15", N_("Magenta"), &prefs_common
.custom_colorlabel
[14].label
, P_STRING
,
425 {"display_image", "TRUE", &prefs_common
.display_img
, P_BOOL
,
427 {"resize_image", "TRUE", &prefs_common
.resize_img
, P_BOOL
,
429 {"inline_image", "TRUE", &prefs_common
.inline_img
, P_BOOL
,
432 {"display_folder_unread_num", "0",
433 &prefs_common
.display_folder_unread
, P_INT
,
435 {"newsgroup_abbrev_len", "16",
436 &prefs_common
.ng_abbrev_len
, P_INT
,
439 {"translate_header", "FALSE", &prefs_common
.trans_hdr
, P_BOOL
,
442 /* Display: Summary View */
443 {"default_sort_key", "3", &prefs_common
.default_sort_key
, P_ENUM
,
445 {"default_sort_type", "1", &prefs_common
.default_sort_type
, P_ENUM
,
447 {"use_address_book", "FALSE", &prefs_common
.use_addr_book
, P_BOOL
,
449 {"thread_by_subject", "TRUE", &prefs_common
.thread_by_subject
, P_BOOL
,
451 {"date_format", N_("%x(%a) %H:%M"), &prefs_common
.date_format
,
452 P_STRING
, NULL
, NULL
, NULL
},
453 {"msgview_date_format", "FALSE", &prefs_common
.msgview_date_format
, P_BOOL
,
456 {"next_on_delete", "FALSE", &prefs_common
.next_on_delete
, P_BOOL
,
459 {"bold_unread", "TRUE", &prefs_common
.bold_unread
, P_BOOL
,
463 {"toolbar_style", "3", &prefs_common
.toolbar_style
, P_ENUM
,
466 {"toolbar_style", "1", &prefs_common
.toolbar_style
, P_ENUM
,
469 {"toolbar_detachable", "FALSE", &prefs_common
.toolbar_detachable
, P_BOOL
,
471 {"show_col_headers", "TRUE", &prefs_common
.show_col_headers
, P_BOOL
,
474 {"show_statusbar", "TRUE", &prefs_common
.show_statusbar
, P_BOOL
,
476 {"show_searchbar", "TRUE", &prefs_common
.show_searchbar
, P_BOOL
,
479 {"show_statusbar", "FALSE", &prefs_common
.show_statusbar
, P_BOOL
,
481 {"show_searchbar", "FALSE", &prefs_common
.show_searchbar
, P_BOOL
,
485 {"summary_col_show_mark", "TRUE",
486 &prefs_common
.summary_col_visible
[S_COL_MARK
], P_BOOL
, NULL
, NULL
, NULL
},
487 {"summary_col_show_unread", "TRUE",
488 &prefs_common
.summary_col_visible
[S_COL_STATUS
], P_BOOL
, NULL
, NULL
, NULL
},
489 {"summary_col_show_subject", "TRUE",
490 &prefs_common
.summary_col_visible
[S_COL_SUBJECT
], P_BOOL
, NULL
, NULL
, NULL
},
491 {"summary_col_show_from", "TRUE",
492 &prefs_common
.summary_col_visible
[S_COL_FROM
], P_BOOL
, NULL
, NULL
, NULL
},
493 {"summary_col_show_to", "FALSE",
494 &prefs_common
.summary_col_visible
[S_COL_TO
], P_BOOL
, NULL
, NULL
, NULL
},
495 {"summary_col_show_date", "TRUE",
496 &prefs_common
.summary_col_visible
[S_COL_DATE
], P_BOOL
, NULL
, NULL
, NULL
},
497 {"summary_col_show_mime", "TRUE",
498 &prefs_common
.summary_col_visible
[S_COL_MIME
], P_BOOL
, NULL
, NULL
, NULL
},
499 {"summary_col_show_size", "TRUE",
500 &prefs_common
.summary_col_visible
[S_COL_SIZE
], P_BOOL
, NULL
, NULL
, NULL
},
501 {"summary_col_show_number", "FALSE",
502 &prefs_common
.summary_col_visible
[S_COL_NUMBER
], P_BOOL
, NULL
, NULL
, NULL
},
503 {"summary_col_show_score", "FALSE",
504 &prefs_common
.summary_col_visible
[S_COL_SCORE
], P_BOOL
, NULL
, NULL
, NULL
},
505 {"summary_col_show_locked", "FALSE",
506 &prefs_common
.summary_col_visible
[S_COL_LOCKED
], P_BOOL
, NULL
, NULL
, NULL
},
507 {"summary_col_show_tags", "FALSE",
508 &prefs_common
.summary_col_visible
[S_COL_TAGS
], P_BOOL
, NULL
, NULL
, NULL
},
510 {"summary_col_lock", "FALSE", &prefs_common
.summary_col_lock
, P_BOOL
,
513 {"summary_col_pos_mark", "0",
514 &prefs_common
.summary_col_pos
[S_COL_MARK
], P_INT
, NULL
, NULL
, NULL
},
515 {"summary_col_pos_unread", "1",
516 &prefs_common
.summary_col_pos
[S_COL_STATUS
], P_INT
, NULL
, NULL
, NULL
},
517 {"summary_col_pos_mime", "2",
518 &prefs_common
.summary_col_pos
[S_COL_MIME
], P_INT
, NULL
, NULL
, NULL
},
519 {"summary_col_pos_subject", "3",
520 &prefs_common
.summary_col_pos
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
521 {"summary_col_pos_from", "4",
522 &prefs_common
.summary_col_pos
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
523 {"summary_col_pos_date", "5",
524 &prefs_common
.summary_col_pos
[S_COL_DATE
], P_INT
, NULL
, NULL
, NULL
},
525 {"summary_col_pos_size", "6",
526 &prefs_common
.summary_col_pos
[S_COL_SIZE
], P_INT
, NULL
, NULL
, NULL
},
527 {"summary_col_pos_number", "7",
528 &prefs_common
.summary_col_pos
[S_COL_NUMBER
], P_INT
, NULL
, NULL
, NULL
},
529 {"summary_col_pos_score", "8",
530 &prefs_common
.summary_col_pos
[S_COL_SCORE
], P_INT
, NULL
, NULL
, NULL
},
531 {"summary_col_pos_locked", "9",
532 &prefs_common
.summary_col_pos
[S_COL_LOCKED
], P_INT
, NULL
, NULL
, NULL
},
533 {"summary_col_pos_to", "10",
534 &prefs_common
.summary_col_pos
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
535 {"summary_col_pos_tags", "11",
536 &prefs_common
.summary_col_pos
[S_COL_TAGS
], P_INT
, NULL
, NULL
, NULL
},
538 {"summary_col_size_mark", "10",
539 &prefs_common
.summary_col_size
[S_COL_MARK
], P_INT
, NULL
, NULL
, NULL
},
540 {"summary_col_size_unread", "13",
541 &prefs_common
.summary_col_size
[S_COL_STATUS
], P_INT
, NULL
, NULL
, NULL
},
542 {"summary_col_size_mime", "10",
543 &prefs_common
.summary_col_size
[S_COL_MIME
], P_INT
, NULL
, NULL
, NULL
},
545 {"summary_col_size_subject", "200",
546 &prefs_common
.summary_col_size
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
547 {"summary_col_size_from", "120",
548 &prefs_common
.summary_col_size
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
549 {"summary_col_size_to", "120",
550 &prefs_common
.summary_col_size
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
552 {"summary_col_size_subject", "300",
553 &prefs_common
.summary_col_size
[S_COL_SUBJECT
], P_INT
, NULL
, NULL
, NULL
},
554 {"summary_col_size_from", "150",
555 &prefs_common
.summary_col_size
[S_COL_FROM
], P_INT
, NULL
, NULL
, NULL
},
556 {"summary_col_size_to", "150",
557 &prefs_common
.summary_col_size
[S_COL_TO
], P_INT
, NULL
, NULL
, NULL
},
560 {"summary_col_size_date", "118",
561 &prefs_common
.summary_col_size
[S_COL_DATE
], P_INT
, NULL
, NULL
, NULL
},
562 {"summary_col_size_size", "45",
563 &prefs_common
.summary_col_size
[S_COL_SIZE
], P_INT
, NULL
, NULL
, NULL
},
564 {"summary_col_size_number", "40",
565 &prefs_common
.summary_col_size
[S_COL_NUMBER
], P_INT
, NULL
, NULL
, NULL
},
566 {"summary_col_size_score", "40",
567 &prefs_common
.summary_col_size
[S_COL_SCORE
], P_INT
, NULL
, NULL
, NULL
},
568 {"summary_col_size_locked", "13",
569 &prefs_common
.summary_col_size
[S_COL_LOCKED
], P_INT
, NULL
, NULL
, NULL
},
570 {"summary_col_size_tags", "150",
571 &prefs_common
.summary_col_size
[S_COL_TAGS
], P_INT
, NULL
, NULL
, NULL
},
574 {"folderwin_x", "16", &prefs_common
.folderwin_x
, P_INT
,
576 {"folderwin_y", "16", &prefs_common
.folderwin_y
, P_INT
,
578 {"folderview_width", "270", &prefs_common
.folderview_width
, P_INT
,
580 {"folderview_height", "450", &prefs_common
.folderview_height
, P_INT
,
582 {"folderview_visible", "TRUE", &prefs_common
.folderview_visible
, P_BOOL
,
585 {"folder_col_show_folder", "TRUE",
586 &prefs_common
.folder_col_visible
[F_COL_FOLDER
], P_BOOL
, NULL
, NULL
, NULL
},
587 {"folder_col_show_new", "TRUE",
588 &prefs_common
.folder_col_visible
[F_COL_NEW
], P_BOOL
, NULL
, NULL
, NULL
},
589 {"folder_col_show_unread", "TRUE",
590 &prefs_common
.folder_col_visible
[F_COL_UNREAD
], P_BOOL
, NULL
, NULL
, NULL
},
591 {"folder_col_show_total", "TRUE",
592 &prefs_common
.folder_col_visible
[F_COL_TOTAL
], P_BOOL
, NULL
, NULL
, NULL
},
594 {"folder_col_pos_folder", "0",
595 &prefs_common
.folder_col_pos
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
596 {"folder_col_pos_new", "1",
597 &prefs_common
.folder_col_pos
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
598 {"folder_col_pos_unread", "2",
599 &prefs_common
.folder_col_pos
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
600 {"folder_col_pos_total", "3",
601 &prefs_common
.folder_col_pos
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
604 {"folder_col_size_folder", "120",
605 &prefs_common
.folder_col_size
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
606 {"folder_col_size_new", "32",
607 &prefs_common
.folder_col_size
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
608 {"folder_col_size_unread", "32",
609 &prefs_common
.folder_col_size
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
610 {"folder_col_size_total", "32",
611 &prefs_common
.folder_col_size
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
613 {"folder_col_size_folder", "400",
614 &prefs_common
.folder_col_size
[F_COL_FOLDER
], P_INT
, NULL
, NULL
, NULL
},
615 {"folder_col_size_new", "32",
616 &prefs_common
.folder_col_size
[F_COL_NEW
], P_INT
, NULL
, NULL
, NULL
},
617 {"folder_col_size_unread", "32",
618 &prefs_common
.folder_col_size
[F_COL_UNREAD
], P_INT
, NULL
, NULL
, NULL
},
619 {"folder_col_size_total", "32",
620 &prefs_common
.folder_col_size
[F_COL_TOTAL
], P_INT
, NULL
, NULL
, NULL
},
623 {"folder_default_thread", "TRUE", &prefs_common
.folder_default_thread
, P_BOOL
,
625 {"folder_default_thread_collapsed", "FALSE", &prefs_common
.folder_default_thread_collapsed
, P_BOOL
,
627 {"folder_default_hide_read_threads", "FALSE", &prefs_common
.folder_default_hide_read_threads
, P_BOOL
,
629 {"folder_default_hide_read_msgs", "FALSE", &prefs_common
.folder_default_hide_read_msgs
, P_BOOL
,
631 {"folder_default_hide_del_msgs", "FALSE", &prefs_common
.folder_default_hide_del_msgs
, P_BOOL
,
634 {"summaryview_width", "500", &prefs_common
.summaryview_width
, P_INT
,
636 {"summaryview_height", "244", &prefs_common
.summaryview_height
, P_INT
,
639 {"main_messagewin_x", "256", &prefs_common
.main_msgwin_x
, P_INT
,
641 {"main_messagewin_y", "210", &prefs_common
.main_msgwin_y
, P_INT
,
643 {"messageview_width", "500", &prefs_common
.msgview_width
, P_INT
,
645 {"messageview_height", "213", &prefs_common
.msgview_height
, P_INT
,
647 {"messageview_visible", "TRUE", &prefs_common
.msgview_visible
, P_BOOL
,
650 {"mainview_x", "64", &prefs_common
.mainview_x
, P_INT
,
652 {"mainview_y", "64", &prefs_common
.mainview_y
, P_INT
,
654 {"mainview_width", "500", &prefs_common
.mainview_width
, P_INT
,
656 {"mainview_height", "400", &prefs_common
.mainview_height
, P_INT
,
658 {"mainwin_x", "64", &prefs_common
.mainwin_x
, P_INT
,
660 {"mainwin_y", "64", &prefs_common
.mainwin_y
, P_INT
,
662 {"mainwin_maximised", "FALSE", &prefs_common
.mainwin_maximised
, P_BOOL
,
664 {"mainwin_fullscreen", "FALSE", &prefs_common
.mainwin_fullscreen
, P_BOOL
,
666 {"mainwin_menubar", "TRUE", &prefs_common
.mainwin_menubar
, P_BOOL
,
669 {"mainwin_width", "800", &prefs_common
.mainwin_width
, P_INT
,
671 {"mainwin_height", "600", &prefs_common
.mainwin_height
, P_INT
,
673 {"messagewin_width", "600", &prefs_common
.msgwin_width
, P_INT
,
675 {"messagewin_height", "540", &prefs_common
.msgwin_height
, P_INT
,
677 {"mimeview_tree_height", "60", &prefs_common
.mimeview_tree_height
, P_INT
,
679 {"sourcewin_width", "600", &prefs_common
.sourcewin_width
, P_INT
,
681 {"sourcewin_height", "500", &prefs_common
.sourcewin_height
, P_INT
,
683 {"compose_width", "600", &prefs_common
.compose_width
, P_INT
,
685 {"compose_height", "560", &prefs_common
.compose_height
, P_INT
,
688 {"mainwin_width", "700", &prefs_common
.mainwin_width
, P_INT
,
690 {"mainwin_height", "470", &prefs_common
.mainwin_height
, P_INT
,
692 {"messagewin_width", "700", &prefs_common
.msgwin_width
, P_INT
,
694 {"messagewin_height", "470", &prefs_common
.msgwin_height
, P_INT
,
696 {"sourcewin_width", "700", &prefs_common
.sourcewin_width
, P_INT
,
698 {"sourcewin_height", "470", &prefs_common
.sourcewin_height
, P_INT
,
700 {"compose_width", "700", &prefs_common
.compose_width
, P_INT
,
702 {"compose_height", "470", &prefs_common
.compose_height
, P_INT
,
705 {"compose_notebook_height", "130", &prefs_common
.compose_notebook_height
, P_INT
,
707 {"compose_x", "0", &prefs_common
.compose_x
, P_INT
,
709 {"compose_y", "0", &prefs_common
.compose_y
, P_INT
,
712 {"enable_color", "TRUE", &prefs_common
.enable_color
, P_BOOL
,
715 {"quote_level1_color", "#0000b3", &prefs_common
.color
[COL_QUOTE_LEVEL1
],
716 P_COLOR
, NULL
, NULL
, NULL
},
717 {"quote_level2_color", "#0000b3", &prefs_common
.color
[COL_QUOTE_LEVEL2
],
718 P_COLOR
, NULL
, NULL
, NULL
},
719 {"quote_level3_color", "#0000b3", &prefs_common
.color
[COL_QUOTE_LEVEL3
],
720 P_COLOR
, NULL
, NULL
, NULL
},
721 {"enable_bgcolor", "FALSE", &prefs_common
.enable_bgcolor
, P_BOOL
,
723 {"quote_level1_bgcolor", "#cccccc", &prefs_common
.color
[COL_QUOTE_LEVEL1_BG
],
724 P_COLOR
, NULL
, NULL
, NULL
},
725 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common
.color
[COL_QUOTE_LEVEL2_BG
],
726 P_COLOR
, NULL
, NULL
, NULL
},
727 {"quote_level3_bgcolor", "#dddddd", &prefs_common
.color
[COL_QUOTE_LEVEL3_BG
],
728 P_COLOR
, NULL
, NULL
, NULL
},
729 {"uri_color", "#007f00", &prefs_common
.color
[COL_URI
],
730 P_COLOR
, NULL
, NULL
, NULL
},
731 {"emphasis_color", "#0000cf", &prefs_common
.color
[COL_EMPHASIS
],
732 P_COLOR
, NULL
, NULL
, NULL
},
733 {"target_folder_color", "#da1cca", &prefs_common
.color
[COL_TGT_FOLDER
],
734 P_COLOR
, NULL
, NULL
, NULL
},
735 {"signature_color", "#797979", &prefs_common
.color
[COL_SIGNATURE
],
736 P_COLOR
, NULL
, NULL
, NULL
},
737 {"recycle_quote_colors", "FALSE", &prefs_common
.recycle_quote_colors
,
738 P_BOOL
, NULL
, NULL
, NULL
},
740 {"default_header_color", "#000000", &prefs_common
.color
[COL_DEFAULT_HEADER
],
741 P_COLOR
, NULL
, NULL
, NULL
},
742 {"default_header_bgcolor", "#f5f6be", &prefs_common
.color
[COL_DEFAULT_HEADER_BG
],
743 P_COLOR
, NULL
, NULL
, NULL
},
744 {"tags_color", "#000000", &prefs_common
.color
[COL_TAGS
],
745 P_COLOR
, NULL
, NULL
, NULL
},
746 {"tags_bgcolor", "#f5f6be", &prefs_common
.color
[COL_TAGS_BG
],
747 P_COLOR
, NULL
, NULL
, NULL
},
748 {"qs_active_color", "#000000", &prefs_common
.color
[COL_QS_ACTIVE
],
749 P_COLOR
, NULL
, NULL
, NULL
},
750 {"qs_active_bgcolor", "#f5f6be", &prefs_common
.color
[COL_QS_ACTIVE_BG
],
751 P_COLOR
, NULL
, NULL
, NULL
},
752 {"qs_error_color", "#000000", &prefs_common
.color
[COL_QS_ERROR
],
753 P_COLOR
, NULL
, NULL
, NULL
},
754 {"qs_error_bgcolor", "#ff7070", &prefs_common
.color
[COL_QS_ERROR_BG
],
755 P_COLOR
, NULL
, NULL
, NULL
},
757 {"display_header_pane", "FALSE", &prefs_common
.display_header_pane
,
758 P_BOOL
, NULL
, NULL
, NULL
},
759 {"display_header", "TRUE", &prefs_common
.display_header
, P_BOOL
,
761 {"display_xface", "TRUE", &prefs_common
.display_xface
,
762 P_BOOL
, NULL
, NULL
, NULL
},
763 {"render_html", "TRUE", &prefs_common
.render_html
, P_BOOL
,
765 {"invoke_plugin_on_html", "FALSE", &prefs_common
.invoke_plugin_on_html
, P_BOOL
,
767 {"promote_html_part", "FALSE", &prefs_common
.promote_html_part
, P_BOOL
,
769 {"line_space", "2", &prefs_common
.line_space
, P_INT
,
771 {"never_send_retrcpt", "FALSE", &prefs_common
.never_send_retrcpt
, P_BOOL
,
774 {"enable_smooth_scroll", "FALSE",
775 &prefs_common
.enable_smooth_scroll
, P_BOOL
,
777 {"scroll_step", "1", &prefs_common
.scroll_step
, P_INT
,
779 {"scroll_half_page", "FALSE", &prefs_common
.scroll_halfpage
, P_BOOL
,
781 {"hide_quoted", "TRUE",
782 &prefs_common
.hide_quoted
, P_BOOL
,
784 {"respect_flowed_format", "FALSE", &prefs_common
.respect_flowed_format
, P_BOOL
,
786 {"show_all_headers", "FALSE", &prefs_common
.show_all_headers
, P_BOOL
,
789 {"show_other_header", "FALSE", &prefs_common
.show_other_header
, P_BOOL
,
792 {"attach_desc", "TRUE", &prefs_common
.attach_desc
, P_BOOL
,
794 {"attach_save_directory", NULL
,
795 &SPECIFIC_PREFS
.attach_save_dir
, P_STRING
, NULL
, NULL
, NULL
},
796 {"attach_load_directory", NULL
,
797 &SPECIFIC_PREFS
.attach_load_dir
, P_STRING
, NULL
, NULL
, NULL
},
800 {"mime_textviewer", NULL
,
801 &SPECIFIC_PREFS
.mime_textviewer
, P_STRING
, NULL
, NULL
, NULL
},
802 {"mime_open_command", "xdg-open '%s'",
803 &SPECIFIC_PREFS
.mime_open_cmd
, P_STRING
, NULL
, NULL
, NULL
},
804 {"show_inline_attachments", "TRUE",
805 &prefs_common
.show_inline_attachments
, P_BOOL
, NULL
, NULL
, NULL
},
809 {"layout_mode", "0", &prefs_common
.layout_mode
, P_INT
,
812 {"layout_mode", "5", &prefs_common
.layout_mode
, P_INT
,
815 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
816 NULL, NULL, NULL}, */
817 {"open_selected_message_on_folder_open", "FALSE",
818 &prefs_common
.open_selected_on_folder_open
,
819 P_BOOL
, NULL
, NULL
, NULL
},
820 {"open_selected_message_on_search_results", "FALSE",
821 &prefs_common
.open_selected_on_search_results
,
822 P_BOOL
, NULL
, NULL
, NULL
},
823 {"open_selected_message_on_prevnext", "FALSE",
824 &prefs_common
.open_selected_on_prevnext
,
825 P_BOOL
, NULL
, NULL
, NULL
},
826 {"open_selected_message_on_deletemove", "FALSE",
827 &prefs_common
.open_selected_on_deletemove
,
828 P_BOOL
, NULL
, NULL
, NULL
},
829 {"open_selected_message_on_directional", "FALSE",
830 &prefs_common
.open_selected_on_directional
,
831 P_BOOL
, NULL
, NULL
, NULL
},
832 {"always_show_message_when_selected", "FALSE",
833 &prefs_common
.always_show_msg
,
834 P_BOOL
, NULL
, NULL
, NULL
},
835 {"select_on_entry", "3", &prefs_common
.select_on_entry
,
836 P_ENUM
, NULL
, NULL
, NULL
},
837 {"show_tooltips", "TRUE", &prefs_common
.show_tooltips
,
838 P_BOOL
, NULL
, NULL
, NULL
},
840 /* do it SUMMARY_OPEN_ACTIONS-1 times */
841 {"summary_select_prio1", "0", &prefs_common
.summary_select_prio
[0], P_ENUM
,
843 {"summary_select_prio2", "0", &prefs_common
.summary_select_prio
[1], P_ENUM
,
845 {"summary_select_prio3", "0", &prefs_common
.summary_select_prio
[2], P_ENUM
,
847 {"summary_select_prio4", "0", &prefs_common
.summary_select_prio
[3], P_ENUM
,
849 {"summary_select_prio5", "0", &prefs_common
.summary_select_prio
[4], P_ENUM
,
851 {"summary_select_prio6", "0", &prefs_common
.summary_select_prio
[5], P_ENUM
,
853 {"summary_select_prio7", "0", &prefs_common
.summary_select_prio
[6], P_ENUM
,
855 {"summary_select_prio8", "0", &prefs_common
.summary_select_prio
[7], P_ENUM
,
857 {"summary_select_prio9", "0", &prefs_common
.summary_select_prio
[8], P_ENUM
,
859 {"summary_select_prio10", "0", &prefs_common
.summary_select_prio
[9], P_ENUM
,
862 {"mark_as_read_on_new_window", "FALSE",
863 &prefs_common
.mark_as_read_on_new_window
,
864 P_BOOL
, NULL
, NULL
, NULL
},
865 {"mark_as_read_delay", "0",
866 &prefs_common
.mark_as_read_delay
, P_INT
,
868 {"immediate_execution", "TRUE", &prefs_common
.immediate_exec
, P_BOOL
,
870 {"nextunreadmsg_dialog", "1", &prefs_common
.next_unread_msg_dialog
, P_ENUM
,
872 {"summary_from_show", "0", &prefs_common
.summary_from_show
, P_ENUM
,
875 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME
,
876 &SPECIFIC_PREFS
.pixmap_theme_path
, P_STRING
,
879 {"enable_alpha_svg", "TRUE",
880 &SPECIFIC_PREFS
.enable_alpha_svg
, P_BOOL
,
882 {"enable_pixmap_scaling", "TRUE",
883 &SPECIFIC_PREFS
.enable_pixmap_scaling
, P_BOOL
,
885 {"pixmap_scaling_auto", "TRUE",
886 &SPECIFIC_PREFS
.pixmap_scaling_auto
, P_BOOL
,
888 {"pixmap_scaling_ppi", "96",
889 &SPECIFIC_PREFS
.pixmap_scaling_ppi
, P_INT
,
893 {"ask_mark_all_read", "TRUE", &prefs_common
.ask_mark_all_read
, P_BOOL
,
895 {"ask_override_colorlabel", "TRUE", &prefs_common
.ask_override_colorlabel
, P_BOOL
,
898 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common
.ask_apply_per_account_filtering_rules
, P_BOOL
,
900 {"apply_per_account_filtering_rules", "0", &prefs_common
.apply_per_account_filtering_rules
, P_ENUM
,
904 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common
.addressbook_use_editaddress_dialog
,
905 P_BOOL
, NULL
, NULL
, NULL
},
906 {"addressbook_hpaned_pos", "-1", &prefs_common
.addressbook_hpaned_pos
,
907 P_INT
, NULL
, NULL
, NULL
},
908 {"addressbook_vpaned_pos", "-1", &prefs_common
.addressbook_vpaned_pos
,
909 P_INT
, NULL
, NULL
, NULL
},
913 {"uri_open_command", DEFAULT_BROWSER_CMD
,
914 &SPECIFIC_PREFS
.uri_cmd
, P_STRING
, NULL
, NULL
, NULL
},
916 {"gtk_theme", DEFAULT_W32_GTK_THEME
,
917 &SPECIFIC_PREFS
.gtk_theme
, P_STRING
, NULL
, NULL
, NULL
},
919 {"ext_editor_command", DEFAULT_EDITOR_CMD
,
920 &SPECIFIC_PREFS
.ext_editor_cmd
, P_STRING
, NULL
, NULL
, NULL
},
921 {"cmds_use_system_default", "TRUE",
922 &prefs_common
.cmds_use_system_default
, P_BOOL
, NULL
, NULL
, NULL
},
923 {"add_address_by_click", "FALSE", &prefs_common
.add_address_by_click
,
924 P_BOOL
, NULL
, NULL
, NULL
},
925 {"session_passwords", "FALSE", &prefs_common
.session_passwords
,
926 P_BOOL
, NULL
, NULL
, NULL
},
927 {"confirm_on_exit", "FALSE", &prefs_common
.confirm_on_exit
, P_BOOL
,
929 {"clean_trash_on_exit", "FALSE", &prefs_common
.clean_on_exit
, P_BOOL
,
931 {"ask_on_cleaning", "TRUE", &prefs_common
.ask_on_clean
, P_BOOL
,
933 {"warn_queued_on_exit", "TRUE", &prefs_common
.warn_queued_on_exit
,
934 P_BOOL
, NULL
, NULL
, NULL
},
935 {"work_offline", "FALSE", &prefs_common
.work_offline
, P_BOOL
,
937 {"summary_quicksearch_type", "0", &prefs_common
.summary_quicksearch_type
, P_INT
,
940 {"summary_quicksearch_recurse", "1", &prefs_common
.summary_quicksearch_recurse
, P_INT
,
943 {"summary_quicksearch_recurse", "0", &prefs_common
.summary_quicksearch_recurse
, P_INT
,
947 #if defined(__OpenBSD__)
948 {"io_timeout_secs", "80", &prefs_common
.io_timeout_secs
,
949 P_INT
, NULL
, NULL
, NULL
},
951 {"io_timeout_secs", "60", &prefs_common
.io_timeout_secs
,
952 P_INT
, NULL
, NULL
, NULL
},
954 {"hide_score", "-9999", &prefs_common
.kill_score
, P_INT
,
956 {"important_score", "1", &prefs_common
.important_score
, P_INT
,
959 {"clip_log", "TRUE", &prefs_common
.cliplog
, P_BOOL
,
961 {"log_length", "500", &prefs_common
.loglength
, P_INT
,
964 {"enable_log_standard", "TRUE", &prefs_common
.enable_log_standard
, P_BOOL
,
966 {"enable_log_warning", "TRUE", &prefs_common
.enable_log_warning
, P_BOOL
,
968 {"enable_log_error", "TRUE", &prefs_common
.enable_log_error
, P_BOOL
,
970 {"enable_log_status", "TRUE", &prefs_common
.enable_log_status
, P_BOOL
,
973 {"enable_log_standard", "FALSE", &prefs_common
.enable_log_standard
, P_BOOL
,
975 {"enable_log_warning", "FALSE", &prefs_common
.enable_log_warning
, P_BOOL
,
977 {"enable_log_error", "FALSE", &prefs_common
.enable_log_error
, P_BOOL
,
979 {"enable_log_status", "FALSE", &prefs_common
.enable_log_status
, P_BOOL
,
982 {"log_msg_color", "#00af00", &prefs_common
.color
[COL_LOG_MSG
],
983 P_COLOR
, NULL
, NULL
, NULL
},
984 {"log_warn_color", "#af0000", &prefs_common
.color
[COL_LOG_WARN
],
985 P_COLOR
, NULL
, NULL
, NULL
},
986 {"log_error_color", "#af0000", &prefs_common
.color
[COL_LOG_ERROR
],
987 P_COLOR
, NULL
, NULL
, NULL
},
988 {"log_in_color", "#000000", &prefs_common
.color
[COL_LOG_IN
],
989 P_COLOR
, NULL
, NULL
, NULL
},
990 {"log_out_color", "#0000ef", &prefs_common
.color
[COL_LOG_OUT
],
991 P_COLOR
, NULL
, NULL
, NULL
},
992 {"log_status_ok_color", "#00af00", &prefs_common
.color
[COL_LOG_STATUS_OK
],
993 P_COLOR
, NULL
, NULL
, NULL
},
994 {"log_status_nok_color", "#0000af", &prefs_common
.color
[COL_LOG_STATUS_NOK
],
995 P_COLOR
, NULL
, NULL
, NULL
},
996 {"log_status_skip_color", "#aa00aa", &prefs_common
.color
[COL_LOG_STATUS_SKIP
],
997 P_COLOR
, NULL
, NULL
, NULL
},
999 {"enable_filtering_debug", "FALSE", &prefs_common
.enable_filtering_debug
, P_BOOL
,
1001 {"filtering_debug_level", "1", &prefs_common
.filtering_debug_level
, P_INT
,
1003 {"enable_filtering_debug_inc", "TRUE", &prefs_common
.enable_filtering_debug_inc
, P_BOOL
,
1005 {"enable_filtering_debug_manual", "TRUE", &prefs_common
.enable_filtering_debug_manual
, P_BOOL
,
1007 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common
.enable_filtering_debug_folder_proc
, P_BOOL
,
1009 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common
.enable_filtering_debug_pre_proc
, P_BOOL
,
1011 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common
.enable_filtering_debug_post_proc
, P_BOOL
,
1013 {"filtering_debug_clip_log", "TRUE", &prefs_common
.filtering_debug_cliplog
, P_BOOL
,
1015 {"filtering_debug_log_length", "500", &prefs_common
.filtering_debug_loglength
, P_INT
,
1018 {"gtk_can_change_accels", "FALSE", &prefs_common
.gtk_can_change_accels
, P_BOOL
,
1020 {"gtk_enable_accels", "TRUE", &prefs_common
.gtk_enable_accels
, P_BOOL
,
1023 {"color_new", "#0000b3", &prefs_common
.color
[COL_NEW
],
1024 P_COLOR
, NULL
, NULL
, NULL
},
1026 /* Some windows' sizes */
1027 {"filteringwin_width", "500", &prefs_common
.filteringwin_width
, P_INT
,
1029 {"filteringwin_height", "-1", &prefs_common
.filteringwin_height
, P_INT
,
1032 {"filteringactionwin_width", "490", &prefs_common
.filteringactionwin_width
, P_INT
,
1034 {"filteringactionwin_height", "-1", &prefs_common
.filteringactionwin_height
, P_INT
,
1037 {"matcherwin_width", "520", &prefs_common
.matcherwin_width
, P_INT
,
1039 {"matcherwin_height", "-1", &prefs_common
.matcherwin_height
, P_INT
,
1042 {"templateswin_width", "480", &prefs_common
.templateswin_width
, P_INT
,
1044 {"templateswin_height", "-1", &prefs_common
.templateswin_height
, P_INT
,
1047 {"actionsiodialog_width", "582", &prefs_common
.actionsiodialog_width
, P_INT
,
1049 {"actionsiodialog_height", "310", &prefs_common
.actionsiodialog_height
, P_INT
,
1052 {"actionswin_width", "486", &prefs_common
.actionswin_width
, P_INT
,
1054 {"actionswin_height", "-1", &prefs_common
.actionswin_height
, P_INT
,
1057 {"tagswin_width", "486", &prefs_common
.tagswin_width
, P_INT
,
1059 {"tagswin_height", "-1", &prefs_common
.tagswin_height
, P_INT
,
1062 {"sslmanwin_width", "486", &prefs_common
.sslmanwin_width
, P_INT
,
1064 {"sslmanwin_height", "-1", &prefs_common
.sslmanwin_height
, P_INT
,
1067 {"uriopenerwin_width", "-1", &prefs_common
.uriopenerwin_width
, P_INT
,
1069 {"uriopenerwin_height", "-1", &prefs_common
.uriopenerwin_height
, P_INT
,
1072 {"foldersortwin_width", "400", &prefs_common
.foldersortwin_width
, P_INT
,
1074 {"foldersortwin_height", "300", &prefs_common
.foldersortwin_height
, P_INT
,
1077 {"addressbookwin_width", "520", &prefs_common
.addressbookwin_width
, P_INT
,
1079 {"addressbookwin_height", "-1", &prefs_common
.addressbookwin_height
, P_INT
,
1082 {"addressbookeditpersonwin_width", "640", &prefs_common
.addressbookeditpersonwin_width
, P_INT
,
1084 {"addressbookeditpersonwin_height", "320", &prefs_common
.addressbookeditpersonwin_height
, P_INT
,
1087 {"addressbookeditgroupwin_width", "580", &prefs_common
.addressbookeditgroupwin_width
, P_INT
,
1089 {"addressbookeditgroupwin_height", "340", &prefs_common
.addressbookeditgroupwin_height
, P_INT
,
1092 {"pluginswin_width", "-1", &prefs_common
.pluginswin_width
, P_INT
,
1094 {"pluginswin_height", "-1", &prefs_common
.pluginswin_height
, P_INT
,
1097 {"prefswin_width", "600", &prefs_common
.prefswin_width
, P_INT
,
1099 {"prefswin_height", "-1", &prefs_common
.prefswin_height
, P_INT
,
1102 {"folderitemwin_width", "500", &prefs_common
.folderitemwin_width
, P_INT
,
1104 {"folderitemwin_height", "-1", &prefs_common
.folderitemwin_height
, P_INT
,
1107 {"zero_replacement_char", "0", &prefs_common
.zero_replacement
, P_STRING
,
1110 {"editaccountwin_width", "500", &prefs_common
.editaccountwin_width
, P_INT
,
1112 {"editaccountwin_height", "-1", &prefs_common
.editaccountwin_height
, P_INT
,
1115 {"accountswin_width", "500", &prefs_common
.accountswin_width
, P_INT
,
1117 {"accountswin_height", "-1", &prefs_common
.accountswin_height
, P_INT
,
1120 {"logwin_width", "520", &prefs_common
.logwin_width
, P_INT
,
1122 {"logwin_height", "-1", &prefs_common
.logwin_height
, P_INT
,
1125 {"filtering_debugwin_width", "600", &prefs_common
.filtering_debugwin_width
, P_INT
,
1127 {"filtering_debugwin_height", "-1", &prefs_common
.filtering_debugwin_height
, P_INT
,
1130 {"folderselwin_width", "300", &prefs_common
.folderselwin_width
, P_INT
,
1132 {"folderselwin_height", "-1", &prefs_common
.folderselwin_height
, P_INT
,
1135 {"addressaddwin_width", "300", &prefs_common
.addressaddwin_width
, P_INT
,
1137 {"addressaddwin_height", "-1", &prefs_common
.addressaddwin_height
, P_INT
,
1140 {"addressbook_folderselwin_width", "300", &prefs_common
.addressbook_folderselwin_width
, P_INT
,
1142 {"addressbook_folderselwin_height", "-1", &prefs_common
.addressbook_folderselwin_height
, P_INT
,
1145 {"aboutwin_width", "450", &prefs_common
.aboutwin_width
, P_INT
,
1147 {"aboutwin_height", "500", &prefs_common
.aboutwin_height
, P_INT
,
1150 {"addrgather_width", "450", &prefs_common
.addrgather_width
, P_INT
,
1152 {"addrgather_height", "-1", &prefs_common
.addrgather_height
, P_INT
,
1155 {"news_subscribe_width", "450", &prefs_common
.news_subscribe_width
, P_INT
,
1157 {"news_subscribe_height", "400", &prefs_common
.news_subscribe_height
, P_INT
,
1161 {"warn_dnd", "1", &prefs_common
.warn_dnd
, P_INT
,
1163 {"utf8_instead_of_locale_for_broken_mail", "0",
1164 &prefs_common
.broken_are_utf8
, P_INT
,
1166 {"enable_swap_from", "FALSE", &prefs_common
.swap_from
, P_BOOL
,
1168 {"use_stripes_everywhere", "TRUE", &prefs_common
.use_stripes_everywhere
, P_BOOL
,
1170 {"use_stripes_in_summaries", "TRUE", &prefs_common
.use_stripes_in_summaries
, P_BOOL
,
1172 {"stripes_color_offset", "4000", &prefs_common
.stripes_color_offset
, P_INT
,
1174 {"enable_hscrollbar", "TRUE", &prefs_common
.enable_hscrollbar
, P_BOOL
,
1176 {"folderview_vscrollbar_policy", "0",
1177 &prefs_common
.folderview_vscrollbar_policy
, P_ENUM
,
1179 {"textview_cursor_visible", "FALSE",
1180 &prefs_common
.textview_cursor_visible
, P_BOOL
,
1182 {"hover_timeout", "500", &prefs_common
.hover_timeout
, P_INT
,
1184 #ifndef GENERIC_UMPC
1185 {"cache_max_mem_usage", "4096", &prefs_common
.cache_max_mem_usage
, P_INT
,
1187 {"cache_min_keep_time", "15", &prefs_common
.cache_min_keep_time
, P_INT
,
1190 {"cache_max_mem_usage", "4096", &prefs_common
.cache_max_mem_usage
, P_INT
,
1192 {"cache_min_keep_time", "0", &prefs_common
.cache_min_keep_time
, P_INT
,
1195 {"thread_by_subject_max_age", "10", &prefs_common
.thread_by_subject_max_age
,
1196 P_INT
, NULL
, NULL
, NULL
},
1197 {"last_opened_folder", "", &prefs_common
.last_opened_folder
,
1198 P_STRING
, NULL
, NULL
, NULL
},
1199 {"goto_last_folder_on_startup", "FALSE", &prefs_common
.goto_last_folder_on_startup
,
1200 P_BOOL
, NULL
, NULL
, NULL
},
1201 {"summary_quicksearch_sticky", "1", &prefs_common
.summary_quicksearch_sticky
, P_INT
,
1203 {"summary_quicksearch_dynamic", "0", &prefs_common
.summary_quicksearch_dynamic
, P_INT
,
1205 {"summary_quicksearch_autorun", "0", &prefs_common
.summary_quicksearch_autorun
, P_INT
,
1207 {"statusbar_update_step", "10", &prefs_common
.statusbar_update_step
, P_INT
,
1209 {"compose_no_markup", "FALSE", &prefs_common
.compose_no_markup
, P_BOOL
,
1211 {"skip_ssl_cert_check", "FALSE", &prefs_common
.skip_ssl_cert_check
, P_BOOL
,
1213 {"live_dangerously", "FALSE", &prefs_common
.live_dangerously
, P_BOOL
,
1215 {"save_parts_readwrite", "FALSE", &prefs_common
.save_parts_readwrite
, P_BOOL
,
1217 {"hide_quotes", "0", &prefs_common
.hide_quotes
, P_INT
,
1219 {"unsafe_ssl_certs", "FALSE", &prefs_common
.unsafe_ssl_certs
, P_BOOL
,
1221 #ifndef GENERIC_UMPC
1222 {"real_time_sync", "FALSE", &prefs_common
.real_time_sync
, P_BOOL
,
1225 {"real_time_sync", "TRUE", &prefs_common
.real_time_sync
, P_BOOL
,
1229 {"print_paper_type", NULL
, &prefs_common
.print_paper_type
, P_STRING
,
1231 {"print_paper_orientation", "0", &prefs_common
.print_paper_orientation
, P_INT
,
1233 {"print_margin_top", "-1", &prefs_common
.print_margin_top
, P_INT
,
1235 {"print_margin_bottom", "-1", &prefs_common
.print_margin_bottom
, P_INT
,
1237 {"print_margin_left", "-1", &prefs_common
.print_margin_left
, P_INT
,
1239 {"print_margin_right", "-1", &prefs_common
.print_margin_right
, P_INT
,
1241 {"print_use_color", "0", &prefs_common
.print_use_color
, P_INT
,
1243 {"print_use_collate", "0", &prefs_common
.print_use_collate
, P_INT
,
1245 {"print_use_reverse", "0", &prefs_common
.print_use_reverse
, P_INT
,
1247 {"print_use_duplex", "0", &prefs_common
.print_use_duplex
, P_INT
,
1249 {"print_imgs", "1", &prefs_common
.print_imgs
, P_INT
,
1251 {"print_previewwin_width", "600", &prefs_common
.print_previewwin_width
, P_INT
,
1253 {"print_previewwin_height", "-1", &prefs_common
.print_previewwin_height
, P_INT
,
1255 {"use_networkmanager", "TRUE", &prefs_common
.use_networkmanager
, P_BOOL
,
1257 {"use_shred", "FALSE", &prefs_common
.use_shred
, P_BOOL
,
1260 {"two_line_vertical", "TRUE", &prefs_common
.two_line_vert
,
1261 P_BOOL
, NULL
, NULL
, NULL
},
1263 {"inherit_folder_properties", "FALSE", &prefs_common
.inherit_folder_props
, P_BOOL
,
1266 {"flush_metadata", "TRUE", &prefs_common
.flush_metadata
, P_BOOL
,
1269 {"nav_history_length", "50", &prefs_common
.nav_history_length
, P_INT
,
1272 {"diff_added_color", "#008b8b", &prefs_common
.color
[COL_DIFF_ADDED
],
1273 P_COLOR
, NULL
, NULL
, NULL
},
1274 {"diff_deleted_color", "#6a5acd", &prefs_common
.color
[COL_DIFF_DELETED
],
1275 P_COLOR
, NULL
, NULL
, NULL
},
1276 {"diff_hunk_color", "#a52a2a", &prefs_common
.color
[COL_DIFF_HUNK
],
1277 P_COLOR
, NULL
, NULL
, NULL
},
1279 {"folder_search_wildcard", "TRUE", &prefs_common
.folder_search_wildcard
, P_BOOL
,
1281 {"address_search_wildcard", "TRUE", &prefs_common
.address_search_wildcard
, P_BOOL
,
1283 {"enable_avatars", "3", &prefs_common
.enable_avatars
, P_INT
, NULL
, NULL
, NULL
},
1284 #ifndef PASSWORD_CRYPTO_OLD
1285 {"use_master_passphrase", FALSE
, &prefs_common
.use_master_passphrase
, P_BOOL
, NULL
, NULL
, NULL
},
1286 {"master_passphrase", "", &prefs_common
.master_passphrase
, P_STRING
, NULL
, NULL
, NULL
},
1287 {"master_passphrase_salt", "", &prefs_common
.master_passphrase_salt
, P_STRING
, NULL
, NULL
, NULL
},
1288 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common
.master_passphrase_pbkdf2_rounds
, P_INT
, NULL
, NULL
, NULL
},
1291 {"use_proxy", "FALSE", &prefs_common
.use_proxy
, P_BOOL
, NULL
, NULL
, NULL
},
1292 {"proxy_type", "1", &prefs_common
.proxy_info
.proxy_type
, P_ENUM
, NULL
, NULL
, NULL
},
1293 {"proxy_host", "localhost", &prefs_common
.proxy_info
.proxy_host
, P_STRING
, NULL
, NULL
, NULL
},
1294 {"proxy_port", "1080", &prefs_common
.proxy_info
.proxy_port
, P_USHORT
, NULL
, NULL
, NULL
},
1295 {"use_proxy_auth", "FALSE", &prefs_common
.proxy_info
.use_proxy_auth
, P_BOOL
, NULL
, NULL
, NULL
},
1296 {"proxy_name", "", &prefs_common
.proxy_info
.proxy_name
, P_STRING
, NULL
, NULL
, NULL
},
1297 {"proxy_pass", NULL
, &prefs_common
.proxy_info
.proxy_pass
, P_STRING
, NULL
, NULL
, NULL
},
1299 {NULL
, NULL
, NULL
, P_OTHER
, NULL
, NULL
, NULL
}
1303 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1304 * Fallback to default_list if history file is not found
1306 GList
*prefs_common_read_history_from_dir_with_defaults(const gchar
*dirname
, const gchar
*history
,
1307 GList
*default_list
)
1311 gchar buf
[PREFSBUFSIZE
];
1315 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, dirname
,
1316 G_DIR_SEPARATOR_S
, history
,
1319 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, history
,
1322 if ((fp
= claws_fopen(path
, "rb")) == NULL
) {
1323 if (ENOENT
!= errno
) FILE_OP_ERROR(path
, "claws_fopen");
1325 /* returns default list if set, otherwise NULL */
1326 return default_list
;
1329 while (claws_fgets(buf
, sizeof(buf
), fp
) != NULL
) {
1331 if (buf
[0] == '\0') continue;
1332 tmp
= add_history(tmp
, buf
);
1336 tmp
= g_list_reverse(tmp
);
1342 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1344 static GList
*prefs_common_read_history_from_dir(const gchar
*dirname
, const gchar
*history
)
1346 return prefs_common_read_history_from_dir_with_defaults(dirname
, history
, NULL
);
1350 * Read history list from the specified history file
1352 static GList
*prefs_common_read_history(const gchar
*history
)
1354 return prefs_common_read_history_from_dir(NULL
, history
);
1357 void prefs_common_read_config(void)
1362 rcpath
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, COMMON_RC
, NULL
);
1363 prefs_read_config(param
, "Common", rcpath
, NULL
);
1365 prefs_read_config(param_os_specific
, "CommonWin32", rcpath
, NULL
);
1370 tmp
= g_strdup(gettext(prefs_common
.date_format
));
1371 g_free(prefs_common
.date_format
);
1372 prefs_common
.date_format
= tmp
;
1374 prefs_common
.mime_open_cmd_history
=
1375 prefs_common_read_history(COMMAND_HISTORY
);
1376 prefs_common
.summary_quicksearch_history
=
1377 prefs_common_read_history(QUICKSEARCH_HISTORY
);
1378 prefs_common
.summary_search_from_history
=
1379 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY
);
1380 prefs_common
.summary_search_to_history
=
1381 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY
);
1382 prefs_common
.summary_search_subject_history
=
1383 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY
);
1384 prefs_common
.summary_search_body_history
=
1385 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY
);
1386 prefs_common
.summary_search_adv_condition_history
=
1387 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY
);
1388 prefs_common
.message_search_history
=
1389 prefs_common_read_history(MESSAGE_SEARCH_HISTORY
);
1390 prefs_common
.compose_save_to_history
=
1391 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY
);
1392 #ifndef USE_ALT_ADDRBOOK
1393 prefs_common
.addressbook_custom_attributes
= addressbook_update_custom_attr_from_prefs();
1395 colorlabel_update_colortable_from_prefs();
1401 g_warning("failed to write"); \
1406 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1408 static void prefs_common_save_history_to_dir(const gchar
*dirname
, const gchar
*history
, GList
*list
)
1412 gchar
*path
, *tmp_path
;
1415 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, dirname
,
1416 G_DIR_SEPARATOR_S
, history
,
1419 path
= g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S
, history
,
1422 tmp_path
= g_strconcat(path
, ".tmp", NULL
);
1424 if ((fp
= claws_fopen(tmp_path
, "wb")) == NULL
) {
1425 FILE_OP_ERROR(tmp_path
, "claws_fopen");
1429 for (cur
= list
; cur
!= NULL
; cur
= cur
->next
) {
1430 TRY(claws_fputs((gchar
*)cur
->data
, fp
) != EOF
&&
1431 claws_fputc('\n', fp
) != EOF
);
1434 if (claws_safe_fclose(fp
) == EOF
) {
1435 FILE_OP_ERROR(tmp_path
, "claws_fclose");
1443 if (g_rename(tmp_path
, path
) < 0) {
1444 FILE_OP_ERROR(path
, "rename");
1450 claws_safe_fclose(fp
);
1456 * Save history list to the specified history file
1458 static void prefs_common_save_history(const gchar
*history
, GList
*list
)
1460 prefs_common_save_history_to_dir(NULL
, history
, list
);
1465 void prefs_common_write_config(void)
1467 prefs_write_config(param
, "Common", COMMON_RC
);
1469 prefs_write_config(param_os_specific
, "CommonWin32", COMMON_RC
);
1472 prefs_common_save_history(COMMAND_HISTORY
,
1473 prefs_common
.mime_open_cmd_history
);
1474 prefs_common_save_history(QUICKSEARCH_HISTORY
,
1475 prefs_common
.summary_quicksearch_history
);
1476 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY
,
1477 prefs_common
.summary_search_from_history
);
1478 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY
,
1479 prefs_common
.summary_search_to_history
);
1480 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY
,
1481 prefs_common
.summary_search_subject_history
);
1482 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY
,
1483 prefs_common
.summary_search_body_history
);
1484 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY
,
1485 prefs_common
.summary_search_adv_condition_history
);
1486 prefs_common_save_history(MESSAGE_SEARCH_HISTORY
,
1487 prefs_common
.message_search_history
);
1488 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY
,
1489 prefs_common
.compose_save_to_history
);
1491 #ifndef USE_ALT_ADDRBOOK
1492 prefs_common_save_history_to_dir(ADDRBOOK_DIR
,
1493 ADDRESSBOOK_CUSTOM_ATTRIBUTES
,
1494 prefs_common
.addressbook_custom_attributes
);
1498 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1499 both 'in' and 'out' must be non-NULL.
1500 'out' must be a pointer to a buffer whose size is at least equal
1501 to strlen(txt)+1, this buffer will get cleared. out's contents
1502 will always get set to a valid string, even if it's "".*/
1503 void pref_get_unescaped_pref(gchar
*out
, const gchar
*in
)
1510 cm_return_if_fail( in
!= NULL
);
1511 cm_return_if_fail( out
!= NULL
);
1515 memset(out
, 0, strlen(in
)+1);
1516 while (*i
!= '\0') {
1517 if (*i
== '\\' && *(i
+1) == 'n') {
1520 } else if (*i
== '\\' && *(i
+1) == 't') {
1523 } else if (*i
== '\\' && *(i
+1) == '\\') {
1534 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1535 both 'in' and 'out' must be non-NULL.
1536 'out' must be a pointer to a buffer whose size is at least equal
1537 to 2*strlen(txt)+1. out's contents will always get set to a valid
1538 string, even if it's "". */
1539 void pref_get_escaped_pref(gchar
*out
, const gchar
*in
)
1546 cm_return_if_fail( in
!= NULL
);
1547 cm_return_if_fail( out
!= NULL
);
1551 while (*i
!= '\0') {
1555 } else if (*i
== '\t') {
1558 } else if (*i
== '\\') {
1569 /* set the contents of a textview widget from the internal \-escaped
1570 representation of a pref string. both txt and textview must be non-NULL. */
1571 void pref_set_textview_from_pref(GtkTextView
*textview
, const gchar
*txt
)
1573 GtkTextBuffer
*buffer
;
1576 cm_return_if_fail( textview
!= NULL
);
1578 buffer
= gtk_text_view_get_buffer(textview
);
1581 gtk_text_buffer_set_text(buffer
, "", -1);
1583 out
= g_malloc(strlen(txt
)+1);
1585 pref_get_unescaped_pref(out
, txt
);
1587 gtk_text_buffer_set_text(buffer
, out
, -1);
1592 /* set the contents of a gtkentry widget from the internal \-escaped
1593 representation of a pref string. both txt and entry must be non-NULL. */
1594 void pref_set_entry_from_pref(GtkEntry
*entry
, const gchar
*txt
)
1598 cm_return_if_fail( entry
!= NULL
);
1600 gtk_entry_set_text(entry
, "");
1602 out
= g_malloc(strlen(txt
)+1);
1604 pref_get_unescaped_pref(out
, txt
);
1606 gtk_entry_set_text(entry
, out
);
1611 /* get the \-escaped internal representation of a pref from the contents of
1612 a textview widget. textview must be non-NULL. */
1613 gchar
*pref_get_pref_from_textview(GtkTextView
*textview
)
1615 GtkTextBuffer
*buffer
;
1616 GtkTextIter start
, end
;
1619 cm_return_val_if_fail( textview
!= NULL
, "" );
1621 buffer
= gtk_text_view_get_buffer(textview
);
1622 gtk_text_buffer_get_start_iter(buffer
, &start
);
1623 gtk_text_buffer_get_iter_at_offset(buffer
, &end
, -1);
1624 tmp
= gtk_text_buffer_get_text(buffer
, &start
, &end
, FALSE
);
1625 out
= malloc(2*strlen(tmp
)+1);
1627 pref_get_escaped_pref(out
, tmp
);
1633 /* get the \-escaped internal representation of a pref from the contents of
1634 a gtkentry widget. entry must be non-NULL. */
1635 gchar
*pref_get_pref_from_entry(GtkEntry
*entry
)
1639 cm_return_val_if_fail( entry
!= NULL
, "" );
1641 tmp
= gtk_editable_get_chars(GTK_EDITABLE(entry
), 0, -1);
1642 out
= malloc(2*strlen(tmp
)+1);
1645 pref_get_escaped_pref(out
, tmp
);
1651 /* ugly hack to be able to get this pref from ssl_certificate.c */
1652 gboolean
prefs_common_unsafe_ssl_certs(void)
1654 return prefs_common
.unsafe_ssl_certs
;
1657 gboolean
prefs_common_enable_log_standard(void)
1659 return prefs_common
.enable_log_standard
;
1662 gboolean
prefs_common_enable_log_warning(void)
1664 return prefs_common
.enable_log_warning
;
1666 gboolean
prefs_common_enable_log_error(void)
1668 return prefs_common
.enable_log_error
;
1670 gboolean
prefs_common_enable_log_status(void)
1672 return prefs_common
.enable_log_status
;
1676 return the translated name of a header, if the translate_header option is
1677 set, otherwise return the untranslated header name (header_name itself).
1678 this function is provided for convenience, it's an interface to
1679 prefs_common.trans_hdr.
1680 works with header names either with or without trailing colon, provided
1681 that gettext found such header name in the sources (they should all be
1682 found in src/gtk/headers.h anyway).
1684 const gchar
*prefs_common_translated_header_name(const gchar
*header_name
)
1686 if (header_name
== NULL
|| *header_name
== '\0')
1689 return prefs_common
.trans_hdr
? gettext(header_name
) : header_name
;
1692 const gchar
*prefs_common_get_uri_cmd(void)
1699 if (!prefs_common
.cmds_use_system_default
)
1700 return prefs_common
.uri_cmd
;
1702 tmp
= g_find_program_in_path("xdg-open");
1704 return prefs_common
.uri_cmd
;
1707 return "xdg-open %s";
1711 const gchar
*prefs_common_get_ext_editor_cmd(void)
1713 return prefs_common
.ext_editor_cmd
;
1714 #if 0 /* we should do that, but it detaches the editor and breaks
1715 compose.c's external composition. */
1718 if (!prefs_common
.cmds_use_system_default
)
1719 return prefs_common
.ext_editor_cmd
;
1721 tmp
= g_find_program_in_path("xdg-open");
1723 return prefs_common
.ext_editor_cmd
;
1726 return "xdg-open %s";
1730 gboolean
prefs_common_get_use_shred(void)
1732 return prefs_common
.use_shred
;
1735 gboolean
prefs_common_get_flush_metadata (void)
1737 return prefs_common
.flush_metadata
;
1740 PrefsCommon
*prefs_common_get_prefs(void)
1742 return &prefs_common
;