2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2007 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 2 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, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
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 "mainwindow.h"
45 #include "summaryview.h"
46 #include "folderview.h"
47 #include "messageview.h"
48 #include "manage_window.h"
54 #include "alertpanel.h"
58 #include "folderview.h"
59 #include "stock_pixmap.h"
60 #include "prefswindow.h"
61 #include "colorlabel.h"
69 PrefsCommon prefs_common;
75 * In the Windows version prefs_common contains
76 * - the non-OS-specific settings of the "Common" section and
77 * - the OS-specific settings of the "CommonWin32" section
78 * The OS-specific settings of the "Common" section are not used
79 * but saved in prefs_unix.
82 # define SPECIFIC_PREFS prefs_unix
84 static PrefsCommon prefs_unix;
86 static PrefParam param_os_specific[] = {
89 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
90 {"newmail_notify_cmd", "",
91 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
94 {"widget_font_gtk2", NULL,
95 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
96 {"message_font_gtk2", "Monospace 9",
97 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
98 {"print_font_gtk2", "Monospace 9",
99 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
100 {"small_font_gtk2", "Sans 9",
101 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
102 {"normal_font_gtk2", "Sans 9",
103 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
106 {"attach_save_directory", NULL,
107 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
108 {"attach_load_directory", NULL,
109 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
112 {"mime_textviewer", NULL,
113 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
114 {"mime_open_command", "notepad '%s'",
115 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
118 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
119 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
122 {"uri_open_command", NULL,
123 &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
124 {"print_command", "notepad /p %s",
125 &prefs_common.print_cmd, P_STRING, NULL, NULL, NULL},
126 {"ext_editor_command", "notepad %s",
127 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
129 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
132 # define SPECIFIC_PREFS prefs_common
136 parameter name, default value, pointer to the prefs variable, data type,
137 pointer to the widget pointer,
138 pointer to the function for data setting,
139 pointer to the function for widget setting
142 static PrefParam param[] = {
144 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
146 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
149 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
151 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
153 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
155 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
156 P_BOOL, NULL, NULL, NULL},
157 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
158 P_BOOL, NULL, NULL, NULL},
159 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
160 P_BOOL, NULL, NULL, NULL},
161 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
162 P_BOOL, NULL, NULL, NULL},
163 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
165 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
167 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
169 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
171 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
172 P_BOOL, NULL, NULL, NULL},
173 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
174 P_BOOL, NULL, NULL, NULL},
177 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
179 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
180 P_BOOL, NULL, NULL, NULL},
181 {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_ENUM,
183 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
185 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
188 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
190 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
193 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
194 P_BOOL, NULL, NULL, NULL},
197 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
199 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
200 P_BOOL, NULL, NULL, NULL},
201 {"redirect_keep_from", "FALSE",
202 &prefs_common.redirect_keep_from, P_BOOL,
204 {"undo_level", "50", &prefs_common.undolevels, P_INT,
206 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
208 {"compose_subject_format", "",
209 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
210 {"compose_body_format", N_("Hello,\\n"),
211 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
213 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
215 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
217 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
219 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
221 {"autosave", "TRUE", &prefs_common.autosave,
222 P_BOOL, NULL, NULL, NULL},
223 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
226 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
228 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
230 {"dictionary", "", &prefs_common.dictionary, P_STRING,
232 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
234 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
236 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
238 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
240 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
241 P_BOOL, NULL, NULL, NULL},
242 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
244 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
247 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
249 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
252 /* Account autoselection */
253 {"reply_account_autoselect", "TRUE",
254 &prefs_common.reply_account_autosel, P_BOOL,
256 {"forward_account_autoselect", "TRUE",
257 &prefs_common.forward_account_autosel, P_BOOL,
259 {"reedit_account_autoselect", "TRUE",
260 &prefs_common.reedit_account_autosel, P_BOOL,
263 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
266 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
270 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
272 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q"),
273 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
275 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
277 {"forward_quote_format",
278 N_("\\n\\nBegin forwarded message:\\n\\n"
279 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
280 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
281 &prefs_common.fw_quotefmt, P_STRING, NULL, NULL, NULL},
282 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
286 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
287 {"widget_font", NULL,
288 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
289 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
290 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
291 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
292 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
293 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
294 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
295 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
296 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
299 {"widget_font_gtk2", NULL,
300 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
301 {"message_font_gtk2", "Monospace 9",
302 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
303 {"print_font_gtk2", "Monospace 9",
304 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
305 {"small_font_gtk2", "Sans 9",
306 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
307 {"normal_font_gtk2", "Sans 9",
308 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
311 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
313 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
315 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
317 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
319 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
321 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
323 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
325 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
327 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
329 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
331 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
333 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
335 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
337 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
339 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
341 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
343 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
345 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
347 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
349 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
351 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
353 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
355 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
357 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
359 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
361 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
363 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
365 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
367 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
369 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
373 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
375 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
377 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
380 {"display_folder_unread_num", "0",
381 &prefs_common.display_folder_unread, P_INT,
383 {"newsgroup_abbrev_len", "16",
384 &prefs_common.ng_abbrev_len, P_INT,
387 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
390 /* Display: Summary View */
391 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
393 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
395 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
396 P_STRING, NULL, NULL, NULL},
398 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
401 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
403 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
405 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
407 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
409 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
413 {"summary_col_show_mark", "TRUE",
414 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
415 {"summary_col_show_unread", "TRUE",
416 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
417 {"summary_col_show_mime", "TRUE",
418 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
419 {"summary_col_show_subject", "TRUE",
420 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
421 {"summary_col_show_from", "TRUE",
422 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
423 {"summary_col_show_to", "FALSE",
424 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
425 {"summary_col_show_date", "TRUE",
426 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
427 {"summary_col_show_size", "TRUE",
428 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
429 {"summary_col_show_number", "FALSE",
430 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
431 {"summary_col_show_score", "FALSE",
432 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
433 {"summary_col_show_locked", "FALSE",
434 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
436 {"summary_col_pos_mark", "0",
437 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
438 {"summary_col_pos_unread", "1",
439 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
440 {"summary_col_pos_mime", "2",
441 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
442 {"summary_col_pos_subject", "3",
443 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
444 {"summary_col_pos_from", "4",
445 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
446 {"summary_col_pos_date", "5",
447 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
448 {"summary_col_pos_size", "6",
449 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
450 {"summary_col_pos_number", "7",
451 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
452 {"summary_col_pos_score", "8",
453 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
454 {"summary_col_pos_locked", "9",
455 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
456 {"summary_col_pos_to", "10",
457 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
459 {"summary_col_size_mark", "10",
460 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
461 {"summary_col_size_unread", "13",
462 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
463 {"summary_col_size_mime", "10",
464 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
465 {"summary_col_size_subject", "200",
466 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
467 {"summary_col_size_from", "120",
468 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
469 {"summary_col_size_to", "120",
470 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
471 {"summary_col_size_date", "118",
472 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
473 {"summary_col_size_size", "45",
474 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
475 {"summary_col_size_number", "40",
476 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
477 {"summary_col_size_score", "40",
478 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
479 {"summary_col_size_locked", "13",
480 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
483 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
485 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
487 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
489 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
491 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
494 {"folder_col_show_folder", "TRUE",
495 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
496 {"folder_col_show_new", "TRUE",
497 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
498 {"folder_col_show_unread", "TRUE",
499 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
500 {"folder_col_show_total", "TRUE",
501 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
503 {"folder_col_pos_folder", "0",
504 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
505 {"folder_col_pos_new", "1",
506 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
507 {"folder_col_pos_unread", "2",
508 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
509 {"folder_col_pos_total", "3",
510 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
512 {"folder_col_size_folder", "120",
513 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
514 {"folder_col_size_new", "32",
515 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
516 {"folder_col_size_unread", "32",
517 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
518 {"folder_col_size_total", "32",
519 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
521 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
523 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
526 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
528 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
530 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
532 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
534 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
537 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
539 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
541 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
543 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
545 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
547 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
549 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
551 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
553 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
555 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
557 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
559 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
561 {"compose_width", "600", &prefs_common.compose_width, P_INT,
563 {"compose_height", "560", &prefs_common.compose_height, P_INT,
565 {"compose_x", "0", &prefs_common.compose_x, P_INT,
567 {"compose_y", "0", &prefs_common.compose_y, P_INT,
570 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
573 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
575 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
577 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
579 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
581 {"quote_level1_bgcolor", "13421772", &prefs_common.quote_level1_bgcol, P_COLOR,
583 {"quote_level2_bgcolor", "13948116", &prefs_common.quote_level2_bgcol, P_COLOR,
585 {"quote_level3_bgcolor", "14540253", &prefs_common.quote_level3_bgcol, P_COLOR,
587 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
589 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
591 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
593 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
594 P_BOOL, NULL, NULL, NULL},
596 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
597 P_BOOL, NULL, NULL, NULL},
598 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
600 {"display_xface", "TRUE", &prefs_common.display_xface,
601 P_BOOL, NULL, NULL, NULL},
602 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
604 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
606 {"line_space", "2", &prefs_common.line_space, P_INT,
608 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
611 {"enable_smooth_scroll", "FALSE",
612 &prefs_common.enable_smooth_scroll, P_BOOL,
614 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
616 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
618 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
621 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
624 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
627 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
629 {"attach_save_directory", NULL,
630 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
631 {"attach_load_directory", NULL,
632 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
635 {"mime_textviewer", NULL,
636 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
637 {"mime_open_command", "gedit '%s'",
638 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
641 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
644 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
645 NULL, NULL, NULL}, */
646 {"always_show_message_when_selected", "FALSE",
647 &prefs_common.always_show_msg,
648 P_BOOL, NULL, NULL, NULL},
649 {"select_on_entry", "2", &prefs_common.select_on_entry,
650 P_ENUM, NULL, NULL, NULL},
651 {"mark_as_read_on_new_window", "FALSE",
652 &prefs_common.mark_as_read_on_new_window,
653 P_BOOL, NULL, NULL, NULL},
654 {"mark_as_read_delay", "0",
655 &prefs_common.mark_as_read_delay, P_INT,
657 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
659 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
662 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
663 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
666 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
669 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
671 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
675 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
676 P_BOOL, NULL, NULL, NULL},
677 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
678 P_INT, NULL, NULL, NULL},
679 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
680 P_INT, NULL, NULL, NULL},
683 {"uri_open_command", DEFAULT_BROWSER_CMD,
684 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
685 {"print_command", "lpr %s",
686 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
687 {"ext_editor_command", DEFAULT_EDITOR_CMD,
688 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
689 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
690 P_BOOL, NULL, NULL, NULL},
691 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
693 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
695 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
697 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
698 P_BOOL, NULL, NULL, NULL},
699 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
701 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
703 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
706 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
707 P_INT, NULL, NULL, NULL},
708 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
710 {"important_score", "1", &prefs_common.important_score, P_INT,
713 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
715 {"log_length", "500", &prefs_common.loglength, P_INT,
718 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
720 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
722 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
724 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
726 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
728 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
730 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
732 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
735 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
737 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
739 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
741 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
743 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
745 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
747 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
749 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
751 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
754 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
757 {"color_new", "179", &prefs_common.color_new, P_COLOR,
760 /* Some windows' sizes */
761 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
763 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
766 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
768 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
771 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
773 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
776 {"templateswin_width", "440", &prefs_common.templateswin_width, P_INT,
778 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
781 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
783 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
786 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
788 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
791 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
793 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
796 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
798 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
801 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
803 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
806 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
808 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
811 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
813 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
816 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
818 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
821 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
823 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
826 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
828 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
831 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
833 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
836 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
838 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
841 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
843 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
846 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
848 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
852 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
854 {"utf8_instead_of_locale_for_broken_mail", "0",
855 &prefs_common.broken_are_utf8, P_INT,
857 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
859 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
861 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
863 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
865 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
867 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
869 {"folderview_vscrollbar_policy", "0",
870 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
872 {"textview_cursor_visible", "FALSE",
873 &prefs_common.textview_cursor_visible, P_BOOL,
875 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
877 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
879 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
881 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
882 P_INT, NULL, NULL, NULL },
883 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
885 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
887 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
889 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
891 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
893 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
895 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
897 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
900 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
903 PrefsCommon *prefs_common_get(void)
905 return &prefs_common;
909 * Read history list from the specified history file
911 static GList *prefs_common_read_history(const gchar *history)
915 gchar buf[PREFSBUFSIZE];
918 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
920 if ((fp = g_fopen(path, "rb")) == NULL) {
921 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
926 while (fgets(buf, sizeof(buf), fp) != NULL) {
928 if (buf[0] == '\0') continue;
929 tmp = add_history(tmp, buf);
933 tmp = g_list_reverse(tmp);
938 void prefs_common_read_config(void)
943 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
944 prefs_read_config(param, "Common", rcpath, NULL);
946 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
951 tmp = g_strdup(gettext(prefs_common.quotefmt));
952 g_free(prefs_common.quotefmt);
953 prefs_common.quotefmt = tmp;
955 tmp = g_strdup(gettext(prefs_common.fw_quotefmt));
956 g_free(prefs_common.fw_quotefmt);
957 prefs_common.fw_quotefmt = tmp;
959 tmp = g_strdup(gettext(prefs_common.date_format));
960 g_free(prefs_common.date_format);
961 prefs_common.date_format = tmp;
963 tmp = g_strdup(gettext(prefs_common.compose_body_format));
964 g_free(prefs_common.compose_body_format);
965 prefs_common.compose_body_format = tmp;
967 prefs_common.mime_open_cmd_history =
968 prefs_common_read_history(COMMAND_HISTORY);
969 prefs_common.summary_quicksearch_history =
970 prefs_common_read_history(QUICKSEARCH_HISTORY);
971 prefs_common.summary_search_from_history =
972 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
973 prefs_common.summary_search_to_history =
974 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
975 prefs_common.summary_search_subject_history =
976 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
977 prefs_common.summary_search_body_history =
978 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
979 prefs_common.summary_search_adv_condition_history =
980 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
981 prefs_common.message_search_history =
982 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
984 colorlabel_update_colortable_from_prefs();
988 * Save history list to the specified history file
990 static void prefs_common_save_history(const gchar *history, GList *list)
996 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
998 if ((fp = g_fopen(path, "wb")) == NULL) {
999 FILE_OP_ERROR(path, "fopen");
1004 for (cur = list; cur != NULL; cur = cur->next) {
1005 fputs((gchar *)cur->data, fp);
1013 void prefs_common_write_config(void)
1015 prefs_write_config(param, "Common", COMMON_RC);
1017 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1020 prefs_common_save_history(COMMAND_HISTORY,
1021 prefs_common.mime_open_cmd_history);
1022 prefs_common_save_history(QUICKSEARCH_HISTORY,
1023 prefs_common.summary_quicksearch_history);
1024 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1025 prefs_common.summary_search_from_history);
1026 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1027 prefs_common.summary_search_to_history);
1028 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1029 prefs_common.summary_search_subject_history);
1030 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1031 prefs_common.summary_search_body_history);
1032 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1033 prefs_common.summary_search_adv_condition_history);
1034 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1035 prefs_common.message_search_history);
1038 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1039 both 'in' and 'out' must be non-NULL.
1040 'out' must be a pointer to a buffer whose size is at least equal
1041 to strlen(txt)+1, this buffer will get cleared. out's contents
1042 will always get set to a valid string, even if it's "".*/
1043 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1050 g_return_if_fail( in != NULL );
1051 g_return_if_fail( out != NULL );
1055 memset(out, 0, strlen(in)+1);
1056 while (*i != '\0') {
1057 if (*i == '\\' && *(i+1) == 'n') {
1060 } else if (*i == '\\' && *(i+1) == 't') {
1063 } else if (*i == '\\' && *(i+1) == '\\') {
1074 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1075 both 'in' and 'out' must be non-NULL.
1076 'out' must be a pointer to a buffer whose size is at least equal
1077 to 2*strlen(txt)+1. out's contents will always get set to a valid
1078 string, even if it's "". */
1079 void pref_get_escaped_pref(gchar *out, const gchar *in)
1086 g_return_if_fail( in != NULL );
1087 g_return_if_fail( out != NULL );
1091 while (*i != '\0') {
1095 } else if (*i == '\t') {
1098 } else if (*i == '\\') {
1109 /* set the contents of a textview widget from the internal \-escaped
1110 representation of a pref string. both txt and textview must be non-NULL. */
1111 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1113 GtkTextBuffer *buffer;
1116 g_return_if_fail( txt != NULL );
1117 g_return_if_fail( textview != NULL );
1119 buffer = gtk_text_view_get_buffer(textview);
1120 out = malloc(strlen(txt)+1);
1122 pref_get_unescaped_pref(out, txt);
1124 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1128 /* set the contents of a gtkentry widget from the internal \-escaped
1129 representation of a pref string. both txt and entry must be non-NULL. */
1130 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1134 g_return_if_fail( txt != NULL );
1135 g_return_if_fail( entry != NULL );
1137 out = malloc(strlen(txt)+1);
1139 pref_get_unescaped_pref(out, txt);
1141 gtk_entry_set_text(entry, out?out:"");
1145 /* get the \-escaped internal representation of a pref from the contents of
1146 a textview widget. textview must be non-NULL. */
1147 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1149 GtkTextBuffer *buffer;
1150 GtkTextIter start, end;
1153 g_return_val_if_fail( textview != NULL, "" );
1155 buffer = gtk_text_view_get_buffer(textview);
1156 gtk_text_buffer_get_start_iter(buffer, &start);
1157 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1158 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1159 out = malloc(2*strlen(tmp)+1);
1161 pref_get_escaped_pref(out, tmp);
1167 /* get the \-escaped internal representation of a pref from the contents of
1168 a gtkentry widget. entry must be non-NULL. */
1169 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1173 g_return_val_if_fail( entry != NULL, "" );
1175 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1176 out = malloc(2*strlen(tmp)+1);
1178 pref_get_escaped_pref(out, tmp);
1184 /* ugly hack to be able to get this pref from ssl_certificate.c */
1185 gboolean prefs_common_unsafe_ssl_certs(void)
1187 return prefs_common.unsafe_ssl_certs;