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},
105 {"attach_save_directory", NULL,
106 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
107 {"attach_load_directory", NULL,
108 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
111 {"mime_textviewer", NULL,
112 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
113 {"mime_open_command", "notepad '%s'",
114 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
117 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
118 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
121 {"uri_open_command", NULL,
122 &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
123 {"print_command", "notepad /p %s",
124 &prefs_common.print_cmd, P_STRING, NULL, NULL, NULL},
125 {"ext_editor_command", "notepad %s",
126 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
128 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
131 # define SPECIFIC_PREFS prefs_common
135 parameter name, default value, pointer to the prefs variable, data type,
136 pointer to the widget pointer,
137 pointer to the function for data setting,
138 pointer to the function for widget setting
141 static PrefParam param[] = {
143 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
145 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
148 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
150 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
152 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
154 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
155 P_BOOL, NULL, NULL, NULL},
156 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
157 P_BOOL, NULL, NULL, NULL},
158 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
159 P_BOOL, NULL, NULL, NULL},
160 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
161 P_BOOL, NULL, NULL, NULL},
162 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
164 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
166 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
168 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
170 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
171 P_BOOL, NULL, NULL, NULL},
172 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
173 P_BOOL, NULL, NULL, NULL},
176 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
178 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
179 P_BOOL, NULL, NULL, NULL},
180 {"send_dialog_mode", "1", &prefs_common.send_dialog_mode, P_ENUM,
182 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
184 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
187 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
189 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
192 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
193 P_BOOL, NULL, NULL, NULL},
196 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
198 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
199 P_BOOL, NULL, NULL, NULL},
200 {"redirect_keep_from", "FALSE",
201 &prefs_common.redirect_keep_from, P_BOOL,
203 {"undo_level", "50", &prefs_common.undolevels, P_INT,
205 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
207 {"compose_subject_format", "",
208 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
209 {"compose_body_format", N_("Hello,\\n"),
210 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
212 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
214 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
216 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
218 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
220 {"autosave", "TRUE", &prefs_common.autosave,
221 P_BOOL, NULL, NULL, NULL},
222 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
225 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
227 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
229 {"dictionary", "", &prefs_common.dictionary, P_STRING,
231 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
233 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
235 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
237 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
239 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
240 P_BOOL, NULL, NULL, NULL},
241 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
243 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
246 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
248 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
251 /* Account autoselection */
252 {"reply_account_autoselect", "TRUE",
253 &prefs_common.reply_account_autosel, P_BOOL,
255 {"forward_account_autoselect", "TRUE",
256 &prefs_common.forward_account_autosel, P_BOOL,
258 {"reedit_account_autoselect", "TRUE",
259 &prefs_common.reedit_account_autosel, P_BOOL,
262 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
265 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
269 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
271 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q"),
272 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
274 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
276 {"forward_quote_format",
277 N_("\\n\\nBegin forwarded message:\\n\\n"
278 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
279 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
280 &prefs_common.fw_quotefmt, P_STRING, NULL, NULL, NULL},
281 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
285 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
286 {"widget_font", NULL,
287 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
288 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
289 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
290 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
291 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
292 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
293 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
294 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
295 &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},
310 {"widget_font_gtk2", NULL,
311 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
312 {"message_font_gtk2", "Monospace 8",
313 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
314 {"print_font_gtk2", "Monospace 8",
315 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
316 {"small_font_gtk2", "Sans 8",
317 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
318 {"normal_font_gtk2", "Sans 8",
319 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
322 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
324 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
326 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
328 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
330 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
332 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
334 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
336 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
338 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
340 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
342 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
344 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
346 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
348 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
350 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
352 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
354 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
356 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
358 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
360 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
362 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
364 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
366 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
368 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
370 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
372 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
374 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
376 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
378 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
380 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
384 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
386 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
388 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
391 {"display_folder_unread_num", "0",
392 &prefs_common.display_folder_unread, P_INT,
394 {"newsgroup_abbrev_len", "16",
395 &prefs_common.ng_abbrev_len, P_INT,
398 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
401 /* Display: Summary View */
402 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
404 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
406 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
407 P_STRING, NULL, NULL, NULL},
409 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
412 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
415 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
418 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
421 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
423 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
426 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
429 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
433 {"summary_col_show_mark", "TRUE",
434 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
435 {"summary_col_show_unread", "TRUE",
436 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
437 {"summary_col_show_subject", "TRUE",
438 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
439 {"summary_col_show_from", "TRUE",
440 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
441 {"summary_col_show_to", "FALSE",
442 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
443 {"summary_col_show_date", "TRUE",
444 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
445 {"summary_col_show_mime", "TRUE",
446 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
447 {"summary_col_show_size", "TRUE",
448 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
449 {"summary_col_show_number", "FALSE",
450 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
451 {"summary_col_show_score", "FALSE",
452 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
453 {"summary_col_show_locked", "FALSE",
454 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
456 {"summary_col_pos_mark", "0",
457 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
458 {"summary_col_pos_unread", "1",
459 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
460 {"summary_col_pos_mime", "2",
461 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
462 {"summary_col_pos_subject", "3",
463 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
464 {"summary_col_pos_from", "4",
465 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
466 {"summary_col_pos_date", "5",
467 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
468 {"summary_col_pos_size", "6",
469 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
470 {"summary_col_pos_number", "7",
471 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
472 {"summary_col_pos_score", "8",
473 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
474 {"summary_col_pos_locked", "9",
475 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
476 {"summary_col_pos_to", "10",
477 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
479 {"summary_col_size_mark", "10",
480 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
481 {"summary_col_size_unread", "13",
482 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
483 {"summary_col_size_mime", "10",
484 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
486 {"summary_col_size_subject", "200",
487 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
488 {"summary_col_size_from", "120",
489 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
490 {"summary_col_size_to", "120",
491 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
493 {"summary_col_size_subject", "300",
494 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
495 {"summary_col_size_from", "150",
496 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
497 {"summary_col_size_to", "150",
498 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
501 {"summary_col_size_date", "118",
502 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
503 {"summary_col_size_size", "45",
504 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
505 {"summary_col_size_number", "40",
506 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
507 {"summary_col_size_score", "40",
508 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
509 {"summary_col_size_locked", "13",
510 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
513 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
515 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
517 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
519 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
521 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
524 {"folder_col_show_folder", "TRUE",
525 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
526 {"folder_col_show_new", "TRUE",
527 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
528 {"folder_col_show_unread", "TRUE",
529 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
530 {"folder_col_show_total", "TRUE",
531 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
533 {"folder_col_pos_folder", "0",
534 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
535 {"folder_col_pos_new", "1",
536 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
537 {"folder_col_pos_unread", "2",
538 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
539 {"folder_col_pos_total", "3",
540 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
543 {"folder_col_size_folder", "120",
544 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
545 {"folder_col_size_new", "32",
546 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
547 {"folder_col_size_unread", "32",
548 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
549 {"folder_col_size_total", "32",
550 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
552 {"folder_col_size_folder", "400",
553 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
554 {"folder_col_size_new", "32",
555 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
556 {"folder_col_size_unread", "32",
557 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
558 {"folder_col_size_total", "32",
559 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
561 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
563 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
566 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
568 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
570 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
572 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
574 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
577 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
579 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
581 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
583 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
585 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
587 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
590 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
592 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
594 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
596 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
598 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
600 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
602 {"compose_width", "600", &prefs_common.compose_width, P_INT,
604 {"compose_height", "560", &prefs_common.compose_height, P_INT,
607 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
609 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
611 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
613 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
615 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
617 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
619 {"compose_width", "700", &prefs_common.compose_width, P_INT,
621 {"compose_height", "470", &prefs_common.compose_height, P_INT,
624 {"compose_x", "0", &prefs_common.compose_x, P_INT,
626 {"compose_y", "0", &prefs_common.compose_y, P_INT,
629 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
632 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
634 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
636 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
638 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
640 {"quote_level1_bgcolor", "13421772", &prefs_common.quote_level1_bgcol, P_COLOR,
642 {"quote_level2_bgcolor", "13948116", &prefs_common.quote_level2_bgcol, P_COLOR,
644 {"quote_level3_bgcolor", "14540253", &prefs_common.quote_level3_bgcol, P_COLOR,
646 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
648 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
650 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
652 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
653 P_BOOL, NULL, NULL, NULL},
655 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
656 P_BOOL, NULL, NULL, NULL},
657 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
659 {"display_xface", "TRUE", &prefs_common.display_xface,
660 P_BOOL, NULL, NULL, NULL},
661 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
663 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
665 {"line_space", "2", &prefs_common.line_space, P_INT,
667 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
670 {"enable_smooth_scroll", "FALSE",
671 &prefs_common.enable_smooth_scroll, P_BOOL,
673 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
675 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
677 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
680 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
683 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
686 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
688 {"attach_save_directory", NULL,
689 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
690 {"attach_load_directory", NULL,
691 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
694 {"mime_textviewer", NULL,
695 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
696 {"mime_open_command", "gedit '%s'",
697 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
701 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
704 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
707 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
708 NULL, NULL, NULL}, */
709 {"always_show_message_when_selected", "FALSE",
710 &prefs_common.always_show_msg,
711 P_BOOL, NULL, NULL, NULL},
712 {"select_on_entry", "2", &prefs_common.select_on_entry,
713 P_ENUM, NULL, NULL, NULL},
714 {"mark_as_read_on_new_window", "FALSE",
715 &prefs_common.mark_as_read_on_new_window,
716 P_BOOL, NULL, NULL, NULL},
717 {"mark_as_read_delay", "0",
718 &prefs_common.mark_as_read_delay, P_INT,
720 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
722 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
725 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
726 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
729 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
732 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
734 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
738 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
739 P_BOOL, NULL, NULL, NULL},
740 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
741 P_INT, NULL, NULL, NULL},
742 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
743 P_INT, NULL, NULL, NULL},
746 {"uri_open_command", DEFAULT_BROWSER_CMD,
747 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
748 {"print_command", "lpr %s",
749 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
750 {"ext_editor_command", DEFAULT_EDITOR_CMD,
751 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
752 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
753 P_BOOL, NULL, NULL, NULL},
754 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
756 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
758 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
760 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
761 P_BOOL, NULL, NULL, NULL},
762 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
764 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
767 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
770 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
774 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
775 P_INT, NULL, NULL, NULL},
776 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
778 {"important_score", "1", &prefs_common.important_score, P_INT,
781 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
783 {"log_length", "500", &prefs_common.loglength, P_INT,
786 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
788 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
790 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
792 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
794 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
796 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
798 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
800 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
803 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
805 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
807 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
809 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
811 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
813 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
815 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
817 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
819 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
822 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
825 {"color_new", "179", &prefs_common.color_new, P_COLOR,
828 /* Some windows' sizes */
829 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
831 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
834 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
836 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
839 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
841 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
844 {"templateswin_width", "440", &prefs_common.templateswin_width, P_INT,
846 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
849 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
851 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
854 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
856 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
859 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
861 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
864 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
866 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
869 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
871 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
874 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
876 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
879 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
881 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
884 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
886 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
889 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
891 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
894 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
896 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
899 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
901 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
904 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
906 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
909 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
911 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
914 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
916 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
920 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
922 {"utf8_instead_of_locale_for_broken_mail", "0",
923 &prefs_common.broken_are_utf8, P_INT,
925 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
927 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
929 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
931 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
933 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
935 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
937 {"folderview_vscrollbar_policy", "0",
938 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
940 {"textview_cursor_visible", "FALSE",
941 &prefs_common.textview_cursor_visible, P_BOOL,
943 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
946 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
948 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
951 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
953 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
956 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
957 P_INT, NULL, NULL, NULL },
958 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
960 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
962 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
964 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
966 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
968 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
970 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
972 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
975 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
978 PrefsCommon *prefs_common_get(void)
980 return &prefs_common;
984 * Read history list from the specified history file
986 static GList *prefs_common_read_history(const gchar *history)
990 gchar buf[PREFSBUFSIZE];
993 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
995 if ((fp = g_fopen(path, "rb")) == NULL) {
996 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1001 while (fgets(buf, sizeof(buf), fp) != NULL) {
1003 if (buf[0] == '\0') continue;
1004 tmp = add_history(tmp, buf);
1008 tmp = g_list_reverse(tmp);
1013 void prefs_common_read_config(void)
1018 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1019 prefs_read_config(param, "Common", rcpath, NULL);
1021 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1026 tmp = g_strdup(gettext(prefs_common.quotefmt));
1027 g_free(prefs_common.quotefmt);
1028 prefs_common.quotefmt = tmp;
1030 tmp = g_strdup(gettext(prefs_common.fw_quotefmt));
1031 g_free(prefs_common.fw_quotefmt);
1032 prefs_common.fw_quotefmt = tmp;
1034 tmp = g_strdup(gettext(prefs_common.date_format));
1035 g_free(prefs_common.date_format);
1036 prefs_common.date_format = tmp;
1038 tmp = g_strdup(gettext(prefs_common.compose_body_format));
1039 g_free(prefs_common.compose_body_format);
1040 prefs_common.compose_body_format = tmp;
1042 prefs_common.mime_open_cmd_history =
1043 prefs_common_read_history(COMMAND_HISTORY);
1044 prefs_common.summary_quicksearch_history =
1045 prefs_common_read_history(QUICKSEARCH_HISTORY);
1046 prefs_common.summary_search_from_history =
1047 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1048 prefs_common.summary_search_to_history =
1049 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1050 prefs_common.summary_search_subject_history =
1051 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1052 prefs_common.summary_search_body_history =
1053 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1054 prefs_common.summary_search_adv_condition_history =
1055 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1056 prefs_common.message_search_history =
1057 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1059 colorlabel_update_colortable_from_prefs();
1063 * Save history list to the specified history file
1065 static void prefs_common_save_history(const gchar *history, GList *list)
1071 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1073 if ((fp = g_fopen(path, "wb")) == NULL) {
1074 FILE_OP_ERROR(path, "fopen");
1079 for (cur = list; cur != NULL; cur = cur->next) {
1080 fputs((gchar *)cur->data, fp);
1088 void prefs_common_write_config(void)
1090 prefs_write_config(param, "Common", COMMON_RC);
1092 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1095 prefs_common_save_history(COMMAND_HISTORY,
1096 prefs_common.mime_open_cmd_history);
1097 prefs_common_save_history(QUICKSEARCH_HISTORY,
1098 prefs_common.summary_quicksearch_history);
1099 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1100 prefs_common.summary_search_from_history);
1101 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1102 prefs_common.summary_search_to_history);
1103 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1104 prefs_common.summary_search_subject_history);
1105 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1106 prefs_common.summary_search_body_history);
1107 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1108 prefs_common.summary_search_adv_condition_history);
1109 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1110 prefs_common.message_search_history);
1113 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1114 both 'in' and 'out' must be non-NULL.
1115 'out' must be a pointer to a buffer whose size is at least equal
1116 to strlen(txt)+1, this buffer will get cleared. out's contents
1117 will always get set to a valid string, even if it's "".*/
1118 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1125 g_return_if_fail( in != NULL );
1126 g_return_if_fail( out != NULL );
1130 memset(out, 0, strlen(in)+1);
1131 while (*i != '\0') {
1132 if (*i == '\\' && *(i+1) == 'n') {
1135 } else if (*i == '\\' && *(i+1) == 't') {
1138 } else if (*i == '\\' && *(i+1) == '\\') {
1149 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1150 both 'in' and 'out' must be non-NULL.
1151 'out' must be a pointer to a buffer whose size is at least equal
1152 to 2*strlen(txt)+1. out's contents will always get set to a valid
1153 string, even if it's "". */
1154 void pref_get_escaped_pref(gchar *out, const gchar *in)
1161 g_return_if_fail( in != NULL );
1162 g_return_if_fail( out != NULL );
1166 while (*i != '\0') {
1170 } else if (*i == '\t') {
1173 } else if (*i == '\\') {
1184 /* set the contents of a textview widget from the internal \-escaped
1185 representation of a pref string. both txt and textview must be non-NULL. */
1186 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1188 GtkTextBuffer *buffer;
1191 g_return_if_fail( txt != NULL );
1192 g_return_if_fail( textview != NULL );
1194 buffer = gtk_text_view_get_buffer(textview);
1195 out = malloc(strlen(txt)+1);
1197 pref_get_unescaped_pref(out, txt);
1199 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1203 /* set the contents of a gtkentry widget from the internal \-escaped
1204 representation of a pref string. both txt and entry must be non-NULL. */
1205 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1209 g_return_if_fail( txt != NULL );
1210 g_return_if_fail( entry != NULL );
1212 out = malloc(strlen(txt)+1);
1214 pref_get_unescaped_pref(out, txt);
1216 gtk_entry_set_text(entry, out?out:"");
1220 /* get the \-escaped internal representation of a pref from the contents of
1221 a textview widget. textview must be non-NULL. */
1222 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1224 GtkTextBuffer *buffer;
1225 GtkTextIter start, end;
1228 g_return_val_if_fail( textview != NULL, "" );
1230 buffer = gtk_text_view_get_buffer(textview);
1231 gtk_text_buffer_get_start_iter(buffer, &start);
1232 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1233 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1234 out = malloc(2*strlen(tmp)+1);
1236 pref_get_escaped_pref(out, tmp);
1242 /* get the \-escaped internal representation of a pref from the contents of
1243 a gtkentry widget. entry must be non-NULL. */
1244 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1248 g_return_val_if_fail( entry != NULL, "" );
1250 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1251 out = malloc(2*strlen(tmp)+1);
1253 pref_get_escaped_pref(out, tmp);
1259 /* ugly hack to be able to get this pref from ssl_certificate.c */
1260 gboolean prefs_common_unsafe_ssl_certs(void)
1262 return prefs_common.unsafe_ssl_certs;