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,
266 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
269 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
274 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
276 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q"),
277 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
279 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
281 {"forward_quote_format",
282 N_("\\n\\nBegin forwarded message:\\n\\n"
283 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
284 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
285 &prefs_common.fw_quotefmt, P_STRING, NULL, NULL, NULL},
286 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
290 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
291 {"widget_font", NULL,
292 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
293 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
294 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
295 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
296 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
297 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
298 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
299 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
300 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
304 {"widget_font_gtk2", NULL,
305 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
306 {"message_font_gtk2", "Monospace 9",
307 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
308 {"print_font_gtk2", "Monospace 9",
309 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
310 {"small_font_gtk2", "Sans 9",
311 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
312 {"normal_font_gtk2", "Sans 9",
313 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
315 {"widget_font_gtk2", NULL,
316 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
317 {"message_font_gtk2", "Monospace 8",
318 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
319 {"print_font_gtk2", "Monospace 8",
320 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
321 {"small_font_gtk2", "Sans 8",
322 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
323 {"normal_font_gtk2", "Sans 8",
324 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
327 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
329 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
331 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
333 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
335 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
337 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
339 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
341 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
343 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
345 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
347 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
349 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
351 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
353 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
355 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
357 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
359 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
361 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
363 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
365 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
367 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
369 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
371 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
373 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
375 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
377 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
379 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
381 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
383 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
385 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
389 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
391 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
393 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
396 {"display_folder_unread_num", "0",
397 &prefs_common.display_folder_unread, P_INT,
399 {"newsgroup_abbrev_len", "16",
400 &prefs_common.ng_abbrev_len, P_INT,
403 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
406 /* Display: Summary View */
407 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
409 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
411 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
412 P_STRING, NULL, NULL, NULL},
414 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
417 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
420 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
423 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
426 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
428 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
431 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
434 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
438 {"summary_col_show_mark", "TRUE",
439 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
440 {"summary_col_show_unread", "TRUE",
441 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
442 {"summary_col_show_subject", "TRUE",
443 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
444 {"summary_col_show_from", "TRUE",
445 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
446 {"summary_col_show_to", "FALSE",
447 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
448 {"summary_col_show_date", "TRUE",
449 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
450 {"summary_col_show_mime", "TRUE",
451 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
452 {"summary_col_show_size", "TRUE",
453 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
454 {"summary_col_show_number", "FALSE",
455 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
456 {"summary_col_show_score", "FALSE",
457 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
458 {"summary_col_show_locked", "FALSE",
459 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
461 {"summary_col_pos_mark", "0",
462 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
463 {"summary_col_pos_unread", "1",
464 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
465 {"summary_col_pos_mime", "2",
466 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
467 {"summary_col_pos_subject", "3",
468 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
469 {"summary_col_pos_from", "4",
470 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
471 {"summary_col_pos_date", "5",
472 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
473 {"summary_col_pos_size", "6",
474 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
475 {"summary_col_pos_number", "7",
476 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
477 {"summary_col_pos_score", "8",
478 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
479 {"summary_col_pos_locked", "9",
480 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
481 {"summary_col_pos_to", "10",
482 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
484 {"summary_col_size_mark", "10",
485 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
486 {"summary_col_size_unread", "13",
487 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
488 {"summary_col_size_mime", "10",
489 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
491 {"summary_col_size_subject", "200",
492 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
493 {"summary_col_size_from", "120",
494 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
495 {"summary_col_size_to", "120",
496 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
498 {"summary_col_size_subject", "300",
499 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
500 {"summary_col_size_from", "150",
501 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
502 {"summary_col_size_to", "150",
503 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
506 {"summary_col_size_date", "118",
507 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
508 {"summary_col_size_size", "45",
509 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
510 {"summary_col_size_number", "40",
511 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
512 {"summary_col_size_score", "40",
513 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
514 {"summary_col_size_locked", "13",
515 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
518 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
520 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
522 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
524 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
526 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
529 {"folder_col_show_folder", "TRUE",
530 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
531 {"folder_col_show_new", "TRUE",
532 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
533 {"folder_col_show_unread", "TRUE",
534 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
535 {"folder_col_show_total", "TRUE",
536 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
538 {"folder_col_pos_folder", "0",
539 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
540 {"folder_col_pos_new", "1",
541 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
542 {"folder_col_pos_unread", "2",
543 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
544 {"folder_col_pos_total", "3",
545 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
548 {"folder_col_size_folder", "120",
549 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
550 {"folder_col_size_new", "32",
551 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
552 {"folder_col_size_unread", "32",
553 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
554 {"folder_col_size_total", "32",
555 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
557 {"folder_col_size_folder", "400",
558 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
559 {"folder_col_size_new", "32",
560 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
561 {"folder_col_size_unread", "32",
562 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
563 {"folder_col_size_total", "32",
564 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
566 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
568 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
571 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
573 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
575 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
577 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
579 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
582 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
584 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
586 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
588 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
590 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
592 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
595 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
597 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
599 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
601 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
603 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
605 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
607 {"compose_width", "600", &prefs_common.compose_width, P_INT,
609 {"compose_height", "560", &prefs_common.compose_height, P_INT,
612 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
614 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
616 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
618 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
620 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
622 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
624 {"compose_width", "700", &prefs_common.compose_width, P_INT,
626 {"compose_height", "470", &prefs_common.compose_height, P_INT,
629 {"compose_x", "0", &prefs_common.compose_x, P_INT,
631 {"compose_y", "0", &prefs_common.compose_y, P_INT,
634 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
637 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
639 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
641 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
643 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
645 {"quote_level1_bgcolor", "13421772", &prefs_common.quote_level1_bgcol, P_COLOR,
647 {"quote_level2_bgcolor", "13948116", &prefs_common.quote_level2_bgcol, P_COLOR,
649 {"quote_level3_bgcolor", "14540253", &prefs_common.quote_level3_bgcol, P_COLOR,
651 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
653 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
655 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
657 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
658 P_BOOL, NULL, NULL, NULL},
660 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
661 P_BOOL, NULL, NULL, NULL},
662 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
664 {"display_xface", "TRUE", &prefs_common.display_xface,
665 P_BOOL, NULL, NULL, NULL},
666 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
668 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
670 {"line_space", "2", &prefs_common.line_space, P_INT,
672 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
675 {"enable_smooth_scroll", "FALSE",
676 &prefs_common.enable_smooth_scroll, P_BOOL,
678 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
680 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
682 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
685 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
688 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
691 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
693 {"attach_save_directory", NULL,
694 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
695 {"attach_load_directory", NULL,
696 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
699 {"mime_textviewer", NULL,
700 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
701 {"mime_open_command", "gedit '%s'",
702 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
706 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
709 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
712 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
713 NULL, NULL, NULL}, */
714 {"always_show_message_when_selected", "FALSE",
715 &prefs_common.always_show_msg,
716 P_BOOL, NULL, NULL, NULL},
717 {"select_on_entry", "3", &prefs_common.select_on_entry,
718 P_ENUM, NULL, NULL, NULL},
720 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
722 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
724 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
726 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
728 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
730 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
733 {"mark_as_read_on_new_window", "FALSE",
734 &prefs_common.mark_as_read_on_new_window,
735 P_BOOL, NULL, NULL, NULL},
736 {"mark_as_read_delay", "0",
737 &prefs_common.mark_as_read_delay, P_INT,
739 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
741 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
744 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
745 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
748 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
751 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
753 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
757 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
758 P_BOOL, NULL, NULL, NULL},
759 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
760 P_INT, NULL, NULL, NULL},
761 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
762 P_INT, NULL, NULL, NULL},
765 {"uri_open_command", DEFAULT_BROWSER_CMD,
766 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
767 {"print_command", "lpr %s",
768 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
769 {"ext_editor_command", DEFAULT_EDITOR_CMD,
770 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
771 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
772 P_BOOL, NULL, NULL, NULL},
773 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
775 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
777 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
779 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
780 P_BOOL, NULL, NULL, NULL},
781 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
783 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
786 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
789 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
793 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
794 P_INT, NULL, NULL, NULL},
795 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
797 {"important_score", "1", &prefs_common.important_score, P_INT,
800 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
802 {"log_length", "500", &prefs_common.loglength, P_INT,
805 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
807 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
809 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
811 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
813 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
815 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
817 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
819 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
822 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
824 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
826 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
828 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
830 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
832 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
834 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
836 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
838 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
841 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
844 {"color_new", "179", &prefs_common.color_new, P_COLOR,
847 /* Some windows' sizes */
848 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
850 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
853 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
855 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
858 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
860 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
863 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
865 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
868 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
870 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
873 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
875 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
878 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
880 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
883 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
885 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
888 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
890 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
893 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
895 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
898 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
900 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
903 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
906 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
908 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
911 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
913 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
916 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
918 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
921 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
923 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
926 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
928 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
931 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
933 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
936 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
938 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
942 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
944 {"utf8_instead_of_locale_for_broken_mail", "0",
945 &prefs_common.broken_are_utf8, P_INT,
947 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
949 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
951 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
953 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
955 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
957 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
959 {"folderview_vscrollbar_policy", "0",
960 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
962 {"textview_cursor_visible", "FALSE",
963 &prefs_common.textview_cursor_visible, P_BOOL,
965 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
968 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
970 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
973 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
975 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
978 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
979 P_INT, NULL, NULL, NULL },
980 {"last_opened_folder", "", &prefs_common.last_opened_folder,
981 P_STRING, NULL, NULL, NULL },
982 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
983 P_BOOL, NULL, NULL, NULL },
984 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
986 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
988 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
990 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
992 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
994 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
996 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
998 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1000 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1003 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1006 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1009 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1012 PrefsCommon *prefs_common_get(void)
1014 return &prefs_common;
1018 * Read history list from the specified history file
1020 static GList *prefs_common_read_history(const gchar *history)
1024 gchar buf[PREFSBUFSIZE];
1027 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1029 if ((fp = g_fopen(path, "rb")) == NULL) {
1030 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1035 while (fgets(buf, sizeof(buf), fp) != NULL) {
1037 if (buf[0] == '\0') continue;
1038 tmp = add_history(tmp, buf);
1042 tmp = g_list_reverse(tmp);
1047 void prefs_common_read_config(void)
1052 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1053 prefs_read_config(param, "Common", rcpath, NULL);
1055 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1060 tmp = g_strdup(gettext(prefs_common.quotefmt));
1061 g_free(prefs_common.quotefmt);
1062 prefs_common.quotefmt = tmp;
1064 tmp = g_strdup(gettext(prefs_common.fw_quotefmt));
1065 g_free(prefs_common.fw_quotefmt);
1066 prefs_common.fw_quotefmt = tmp;
1068 tmp = g_strdup(gettext(prefs_common.date_format));
1069 g_free(prefs_common.date_format);
1070 prefs_common.date_format = tmp;
1072 tmp = g_strdup(gettext(prefs_common.compose_body_format));
1073 g_free(prefs_common.compose_body_format);
1074 prefs_common.compose_body_format = tmp;
1076 prefs_common.mime_open_cmd_history =
1077 prefs_common_read_history(COMMAND_HISTORY);
1078 prefs_common.summary_quicksearch_history =
1079 prefs_common_read_history(QUICKSEARCH_HISTORY);
1080 prefs_common.summary_search_from_history =
1081 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1082 prefs_common.summary_search_to_history =
1083 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1084 prefs_common.summary_search_subject_history =
1085 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1086 prefs_common.summary_search_body_history =
1087 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1088 prefs_common.summary_search_adv_condition_history =
1089 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1090 prefs_common.message_search_history =
1091 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1093 colorlabel_update_colortable_from_prefs();
1099 g_warning("failed to write\n"); \
1104 * Save history list to the specified history file
1106 static void prefs_common_save_history(const gchar *history, GList *list)
1110 gchar *path, *tmp_path;
1112 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1114 tmp_path = g_strconcat(path, ".tmp", NULL);
1116 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1117 FILE_OP_ERROR(tmp_path, "fopen");
1121 for (cur = list; cur != NULL; cur = cur->next) {
1122 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1123 fputc('\n', fp) != EOF);
1126 if (fclose(fp) == EOF) {
1127 FILE_OP_ERROR(tmp_path, "fclose");
1135 if (g_rename(tmp_path, path) < 0) {
1136 FILE_OP_ERROR(path, "rename");
1149 void prefs_common_write_config(void)
1151 prefs_write_config(param, "Common", COMMON_RC);
1153 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1156 prefs_common_save_history(COMMAND_HISTORY,
1157 prefs_common.mime_open_cmd_history);
1158 prefs_common_save_history(QUICKSEARCH_HISTORY,
1159 prefs_common.summary_quicksearch_history);
1160 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1161 prefs_common.summary_search_from_history);
1162 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1163 prefs_common.summary_search_to_history);
1164 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1165 prefs_common.summary_search_subject_history);
1166 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1167 prefs_common.summary_search_body_history);
1168 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1169 prefs_common.summary_search_adv_condition_history);
1170 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1171 prefs_common.message_search_history);
1174 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1175 both 'in' and 'out' must be non-NULL.
1176 'out' must be a pointer to a buffer whose size is at least equal
1177 to strlen(txt)+1, this buffer will get cleared. out's contents
1178 will always get set to a valid string, even if it's "".*/
1179 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1186 g_return_if_fail( in != NULL );
1187 g_return_if_fail( out != NULL );
1191 memset(out, 0, strlen(in)+1);
1192 while (*i != '\0') {
1193 if (*i == '\\' && *(i+1) == 'n') {
1196 } else if (*i == '\\' && *(i+1) == 't') {
1199 } else if (*i == '\\' && *(i+1) == '\\') {
1210 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1211 both 'in' and 'out' must be non-NULL.
1212 'out' must be a pointer to a buffer whose size is at least equal
1213 to 2*strlen(txt)+1. out's contents will always get set to a valid
1214 string, even if it's "". */
1215 void pref_get_escaped_pref(gchar *out, const gchar *in)
1222 g_return_if_fail( in != NULL );
1223 g_return_if_fail( out != NULL );
1227 while (*i != '\0') {
1231 } else if (*i == '\t') {
1234 } else if (*i == '\\') {
1245 /* set the contents of a textview widget from the internal \-escaped
1246 representation of a pref string. both txt and textview must be non-NULL. */
1247 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1249 GtkTextBuffer *buffer;
1252 g_return_if_fail( textview != NULL );
1254 buffer = gtk_text_view_get_buffer(textview);
1257 gtk_text_buffer_set_text(buffer, "", -1);
1259 out = malloc(strlen(txt)+1);
1261 pref_get_unescaped_pref(out, txt);
1263 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1268 /* set the contents of a gtkentry widget from the internal \-escaped
1269 representation of a pref string. both txt and entry must be non-NULL. */
1270 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1274 g_return_if_fail( entry != NULL );
1276 gtk_entry_set_text(entry, "");
1278 out = malloc(strlen(txt)+1);
1280 pref_get_unescaped_pref(out, txt);
1282 gtk_entry_set_text(entry, out?out:"");
1287 /* get the \-escaped internal representation of a pref from the contents of
1288 a textview widget. textview must be non-NULL. */
1289 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1291 GtkTextBuffer *buffer;
1292 GtkTextIter start, end;
1295 g_return_val_if_fail( textview != NULL, "" );
1297 buffer = gtk_text_view_get_buffer(textview);
1298 gtk_text_buffer_get_start_iter(buffer, &start);
1299 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1300 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1301 out = malloc(2*strlen(tmp)+1);
1303 pref_get_escaped_pref(out, tmp);
1309 /* get the \-escaped internal representation of a pref from the contents of
1310 a gtkentry widget. entry must be non-NULL. */
1311 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1315 g_return_val_if_fail( entry != NULL, "" );
1317 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1318 out = malloc(2*strlen(tmp)+1);
1320 pref_get_escaped_pref(out, tmp);
1326 /* ugly hack to be able to get this pref from ssl_certificate.c */
1327 gboolean prefs_common_unsafe_ssl_certs(void)
1329 return prefs_common.unsafe_ssl_certs;
1333 return the translated name of a header, if the translate_header option is
1334 set, otherwise return the untranslated header name (header_name itself).
1335 this function is provided for convenience, it's an interface to
1336 prefs_common.trans_hdr.
1337 works with header names either with or without trailing colon, provided
1338 that gettext found such header name in the sources (they should all be
1339 found in src/gtk/headers.h anyway).
1341 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1343 if (header_name == NULL || *header_name == '\0')
1346 return prefs_common.trans_hdr ? gettext(header_name) : header_name;