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 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
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 {"data_root", "", &prefs_common.data_root, P_STRING,
147 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
149 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
152 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
154 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
156 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
158 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
159 P_BOOL, NULL, NULL, NULL},
160 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
161 P_BOOL, NULL, NULL, NULL},
162 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
163 P_BOOL, NULL, NULL, NULL},
164 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
165 P_BOOL, NULL, NULL, NULL},
166 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
169 {"maemo_play_sound", "FALSE", &prefs_common.maemo_play_sound, P_BOOL,
171 {"maemo_show_banner", "FALSE", &prefs_common.maemo_show_banner, P_BOOL,
174 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
176 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
178 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
180 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
181 P_BOOL, NULL, NULL, NULL},
182 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
183 P_BOOL, NULL, NULL, NULL},
186 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
188 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
189 P_BOOL, NULL, NULL, NULL},
190 {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_BOOL,
192 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
194 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
197 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
199 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
202 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
203 P_BOOL, NULL, NULL, NULL},
206 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
208 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
209 P_BOOL, NULL, NULL, NULL},
210 {"redirect_keep_from", "FALSE",
211 &prefs_common.redirect_keep_from, P_BOOL,
213 {"undo_level", "50", &prefs_common.undolevels, P_INT,
215 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
217 {"compose_subject_format", "",
218 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
219 {"compose_body_format", N_("Hello,\\n"),
220 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
222 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
224 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
226 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
228 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
230 {"autosave", "TRUE", &prefs_common.autosave,
231 P_BOOL, NULL, NULL, NULL},
232 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
235 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
237 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
239 {"dictionary", "", &prefs_common.dictionary, P_STRING,
241 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
243 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
245 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
247 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
249 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
250 P_BOOL, NULL, NULL, NULL},
251 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
253 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
256 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
258 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
261 /* Account autoselection */
262 {"reply_account_autoselect", "TRUE",
263 &prefs_common.reply_account_autosel, P_BOOL,
265 {"forward_account_autoselect", "TRUE",
266 &prefs_common.forward_account_autosel, P_BOOL,
268 {"reedit_account_autoselect", "TRUE",
269 &prefs_common.reedit_account_autosel, P_BOOL,
272 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
276 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
279 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
284 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
286 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q"),
287 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
289 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
291 {"forward_quote_format",
292 N_("\\n\\nBegin forwarded message:\\n\\n"
293 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
294 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
295 &prefs_common.fw_quotefmt, P_STRING, NULL, NULL, NULL},
296 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
300 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
301 {"widget_font", NULL,
302 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
303 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
304 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
305 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
306 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
307 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
308 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
309 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
310 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
314 {"widget_font_gtk2", NULL,
315 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
316 {"message_font_gtk2", "Monospace 9",
317 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
318 {"print_font_gtk2", "Monospace 9",
319 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
320 {"small_font_gtk2", "Sans 9",
321 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
322 {"normal_font_gtk2", "Sans 9",
323 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
325 {"widget_font_gtk2", NULL,
326 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
327 {"message_font_gtk2", "Monospace 8",
328 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
329 {"print_font_gtk2", "Monospace 8",
330 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
331 {"small_font_gtk2", "Sans 8",
332 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
333 {"normal_font_gtk2", "Sans 8",
334 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
337 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
339 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
341 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
343 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
345 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
347 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
349 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
351 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
353 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
355 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
357 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
359 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
361 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
363 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
365 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
367 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
369 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
371 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
373 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
375 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
377 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
379 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
381 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
383 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
385 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
387 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
389 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
391 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
393 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
395 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
399 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
401 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
403 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
406 {"display_folder_unread_num", "0",
407 &prefs_common.display_folder_unread, P_INT,
409 {"newsgroup_abbrev_len", "16",
410 &prefs_common.ng_abbrev_len, P_INT,
413 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
416 /* Display: Summary View */
417 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
419 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
421 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
422 P_STRING, NULL, NULL, NULL},
424 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
427 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
430 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
433 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
436 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
438 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
441 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
443 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
446 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
448 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
452 {"summary_col_show_mark", "TRUE",
453 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
454 {"summary_col_show_unread", "TRUE",
455 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
456 {"summary_col_show_subject", "TRUE",
457 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
458 {"summary_col_show_from", "TRUE",
459 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
460 {"summary_col_show_to", "FALSE",
461 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
462 {"summary_col_show_date", "TRUE",
463 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
464 {"summary_col_show_mime", "TRUE",
465 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
466 {"summary_col_show_size", "TRUE",
467 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
468 {"summary_col_show_number", "FALSE",
469 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
470 {"summary_col_show_score", "FALSE",
471 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
472 {"summary_col_show_locked", "FALSE",
473 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
474 {"summary_col_show_tags", "FALSE",
475 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_pos_mark", "0",
478 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
479 {"summary_col_pos_unread", "1",
480 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
481 {"summary_col_pos_mime", "2",
482 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
483 {"summary_col_pos_subject", "3",
484 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
485 {"summary_col_pos_from", "4",
486 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
487 {"summary_col_pos_date", "5",
488 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
489 {"summary_col_pos_size", "6",
490 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
491 {"summary_col_pos_number", "7",
492 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
493 {"summary_col_pos_score", "8",
494 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
495 {"summary_col_pos_locked", "9",
496 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
497 {"summary_col_pos_to", "10",
498 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
499 {"summary_col_pos_tags", "11",
500 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
502 {"summary_col_size_mark", "10",
503 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
504 {"summary_col_size_unread", "13",
505 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
506 {"summary_col_size_mime", "10",
507 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
509 {"summary_col_size_subject", "200",
510 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
511 {"summary_col_size_from", "120",
512 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
513 {"summary_col_size_to", "120",
514 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
516 {"summary_col_size_subject", "300",
517 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
518 {"summary_col_size_from", "150",
519 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
520 {"summary_col_size_to", "150",
521 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
524 {"summary_col_size_date", "118",
525 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
526 {"summary_col_size_size", "45",
527 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
528 {"summary_col_size_number", "40",
529 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_score", "40",
531 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_locked", "13",
533 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_tags", "150",
535 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
538 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
540 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
542 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
544 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
546 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
549 {"folder_col_show_folder", "TRUE",
550 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
551 {"folder_col_show_new", "TRUE",
552 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
553 {"folder_col_show_unread", "TRUE",
554 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
555 {"folder_col_show_total", "TRUE",
556 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
558 {"folder_col_pos_folder", "0",
559 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
560 {"folder_col_pos_new", "1",
561 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
562 {"folder_col_pos_unread", "2",
563 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
564 {"folder_col_pos_total", "3",
565 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
568 {"folder_col_size_folder", "120",
569 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
570 {"folder_col_size_new", "32",
571 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
572 {"folder_col_size_unread", "32",
573 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
574 {"folder_col_size_total", "32",
575 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
577 {"folder_col_size_folder", "400",
578 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
579 {"folder_col_size_new", "32",
580 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
581 {"folder_col_size_unread", "32",
582 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
583 {"folder_col_size_total", "32",
584 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
586 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
588 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
591 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
593 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
595 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
597 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
599 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
602 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
604 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
606 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
608 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
610 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
612 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
615 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
617 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
619 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
621 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
623 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
625 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
627 {"compose_width", "600", &prefs_common.compose_width, P_INT,
629 {"compose_height", "560", &prefs_common.compose_height, P_INT,
632 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
634 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
636 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
638 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
640 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
642 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
644 {"compose_width", "700", &prefs_common.compose_width, P_INT,
646 {"compose_height", "470", &prefs_common.compose_height, P_INT,
649 {"compose_x", "0", &prefs_common.compose_x, P_INT,
651 {"compose_y", "0", &prefs_common.compose_y, P_INT,
654 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
657 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
659 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
661 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
663 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
665 {"quote_level1_bgcolor", "13421772", &prefs_common.quote_level1_bgcol, P_COLOR,
667 {"quote_level2_bgcolor", "13948116", &prefs_common.quote_level2_bgcol, P_COLOR,
669 {"quote_level3_bgcolor", "14540253", &prefs_common.quote_level3_bgcol, P_COLOR,
671 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
673 {"emphasis_color", "207", &prefs_common.emphasis_col, P_COLOR,
675 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
677 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
679 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
680 P_BOOL, NULL, NULL, NULL},
682 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
683 P_BOOL, NULL, NULL, NULL},
684 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
686 {"display_xface", "TRUE", &prefs_common.display_xface,
687 P_BOOL, NULL, NULL, NULL},
688 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
690 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
692 {"line_space", "2", &prefs_common.line_space, P_INT,
694 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
697 {"enable_smooth_scroll", "FALSE",
698 &prefs_common.enable_smooth_scroll, P_BOOL,
700 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
702 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
704 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
707 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
710 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
713 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
715 {"attach_save_directory", NULL,
716 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
717 {"attach_load_directory", NULL,
718 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
721 {"mime_textviewer", NULL,
722 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
723 {"mime_open_command", "gedit '%s'",
724 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
728 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
731 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
734 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
735 NULL, NULL, NULL}, */
736 {"always_show_message_when_selected", "FALSE",
737 &prefs_common.always_show_msg,
738 P_BOOL, NULL, NULL, NULL},
739 {"select_on_entry", "3", &prefs_common.select_on_entry,
740 P_ENUM, NULL, NULL, NULL},
742 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
744 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
746 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
748 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
750 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
752 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
755 {"mark_as_read_on_new_window", "FALSE",
756 &prefs_common.mark_as_read_on_new_window,
757 P_BOOL, NULL, NULL, NULL},
758 {"mark_as_read_delay", "0",
759 &prefs_common.mark_as_read_delay, P_INT,
761 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
763 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
766 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
767 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
770 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
773 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
775 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
779 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
780 P_BOOL, NULL, NULL, NULL},
781 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
782 P_INT, NULL, NULL, NULL},
783 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
784 P_INT, NULL, NULL, NULL},
787 {"uri_open_command", DEFAULT_BROWSER_CMD,
788 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
789 {"print_command", "lpr %s",
790 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
791 {"ext_editor_command", DEFAULT_EDITOR_CMD,
792 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
793 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
794 P_BOOL, NULL, NULL, NULL},
795 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
797 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
799 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
801 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
802 P_BOOL, NULL, NULL, NULL},
803 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
805 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
808 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
811 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
815 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
816 P_INT, NULL, NULL, NULL},
817 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
819 {"important_score", "1", &prefs_common.important_score, P_INT,
822 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
824 {"log_length", "500", &prefs_common.loglength, P_INT,
827 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
829 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
831 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
833 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
836 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
838 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
840 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
842 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
845 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
847 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
849 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
851 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
853 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
855 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
857 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
859 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
862 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
864 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
866 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
868 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
870 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
872 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
874 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
876 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
878 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
881 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
884 {"color_new", "179", &prefs_common.color_new, P_COLOR,
887 /* Some windows' sizes */
888 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
890 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
893 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
895 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
898 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
900 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
903 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
905 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
908 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
910 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
913 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
915 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
918 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
920 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
923 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
925 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
928 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
930 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
933 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
935 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
938 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
940 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
943 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
945 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
948 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
951 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
953 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
956 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
958 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
961 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
963 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
966 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
968 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
971 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
973 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
976 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
978 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
981 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
983 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
987 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
989 {"utf8_instead_of_locale_for_broken_mail", "0",
990 &prefs_common.broken_are_utf8, P_INT,
992 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
994 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
996 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
998 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1000 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1002 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1004 {"folderview_vscrollbar_policy", "0",
1005 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1007 {"textview_cursor_visible", "FALSE",
1008 &prefs_common.textview_cursor_visible, P_BOOL,
1010 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1013 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1015 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1018 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1020 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1023 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1024 P_INT, NULL, NULL, NULL },
1025 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1026 P_STRING, NULL, NULL, NULL },
1027 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1028 P_BOOL, NULL, NULL, NULL },
1029 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1031 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1033 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1035 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1037 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1039 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1041 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1043 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1045 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1048 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1051 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1054 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1057 PrefsCommon *prefs_common_get(void)
1059 return &prefs_common;
1063 * Read history list from the specified history file
1065 static GList *prefs_common_read_history(const gchar *history)
1069 gchar buf[PREFSBUFSIZE];
1072 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1074 if ((fp = g_fopen(path, "rb")) == NULL) {
1075 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1080 while (fgets(buf, sizeof(buf), fp) != NULL) {
1082 if (buf[0] == '\0') continue;
1083 tmp = add_history(tmp, buf);
1087 tmp = g_list_reverse(tmp);
1092 void prefs_common_read_config(void)
1097 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1098 prefs_read_config(param, "Common", rcpath, NULL);
1100 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1105 tmp = g_strdup(gettext(prefs_common.quotefmt));
1106 g_free(prefs_common.quotefmt);
1107 prefs_common.quotefmt = tmp;
1109 tmp = g_strdup(gettext(prefs_common.fw_quotefmt));
1110 g_free(prefs_common.fw_quotefmt);
1111 prefs_common.fw_quotefmt = tmp;
1113 tmp = g_strdup(gettext(prefs_common.date_format));
1114 g_free(prefs_common.date_format);
1115 prefs_common.date_format = tmp;
1117 tmp = g_strdup(gettext(prefs_common.compose_body_format));
1118 g_free(prefs_common.compose_body_format);
1119 prefs_common.compose_body_format = tmp;
1121 prefs_common.mime_open_cmd_history =
1122 prefs_common_read_history(COMMAND_HISTORY);
1123 prefs_common.summary_quicksearch_history =
1124 prefs_common_read_history(QUICKSEARCH_HISTORY);
1125 prefs_common.summary_search_from_history =
1126 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1127 prefs_common.summary_search_to_history =
1128 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1129 prefs_common.summary_search_subject_history =
1130 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1131 prefs_common.summary_search_body_history =
1132 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1133 prefs_common.summary_search_adv_condition_history =
1134 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1135 prefs_common.message_search_history =
1136 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1138 colorlabel_update_colortable_from_prefs();
1144 g_warning("failed to write\n"); \
1149 * Save history list to the specified history file
1151 static void prefs_common_save_history(const gchar *history, GList *list)
1155 gchar *path, *tmp_path;
1157 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1159 tmp_path = g_strconcat(path, ".tmp", NULL);
1161 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1162 FILE_OP_ERROR(tmp_path, "fopen");
1166 for (cur = list; cur != NULL; cur = cur->next) {
1167 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1168 fputc('\n', fp) != EOF);
1171 if (fclose(fp) == EOF) {
1172 FILE_OP_ERROR(tmp_path, "fclose");
1180 if (g_rename(tmp_path, path) < 0) {
1181 FILE_OP_ERROR(path, "rename");
1194 void prefs_common_write_config(void)
1196 prefs_write_config(param, "Common", COMMON_RC);
1198 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1201 prefs_common_save_history(COMMAND_HISTORY,
1202 prefs_common.mime_open_cmd_history);
1203 prefs_common_save_history(QUICKSEARCH_HISTORY,
1204 prefs_common.summary_quicksearch_history);
1205 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1206 prefs_common.summary_search_from_history);
1207 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1208 prefs_common.summary_search_to_history);
1209 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1210 prefs_common.summary_search_subject_history);
1211 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1212 prefs_common.summary_search_body_history);
1213 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1214 prefs_common.summary_search_adv_condition_history);
1215 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1216 prefs_common.message_search_history);
1219 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1220 both 'in' and 'out' must be non-NULL.
1221 'out' must be a pointer to a buffer whose size is at least equal
1222 to strlen(txt)+1, this buffer will get cleared. out's contents
1223 will always get set to a valid string, even if it's "".*/
1224 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1231 g_return_if_fail( in != NULL );
1232 g_return_if_fail( out != NULL );
1236 memset(out, 0, strlen(in)+1);
1237 while (*i != '\0') {
1238 if (*i == '\\' && *(i+1) == 'n') {
1241 } else if (*i == '\\' && *(i+1) == 't') {
1244 } else if (*i == '\\' && *(i+1) == '\\') {
1255 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1256 both 'in' and 'out' must be non-NULL.
1257 'out' must be a pointer to a buffer whose size is at least equal
1258 to 2*strlen(txt)+1. out's contents will always get set to a valid
1259 string, even if it's "". */
1260 void pref_get_escaped_pref(gchar *out, const gchar *in)
1267 g_return_if_fail( in != NULL );
1268 g_return_if_fail( out != NULL );
1272 while (*i != '\0') {
1276 } else if (*i == '\t') {
1279 } else if (*i == '\\') {
1290 /* set the contents of a textview widget from the internal \-escaped
1291 representation of a pref string. both txt and textview must be non-NULL. */
1292 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1294 GtkTextBuffer *buffer;
1297 g_return_if_fail( textview != NULL );
1299 buffer = gtk_text_view_get_buffer(textview);
1302 gtk_text_buffer_set_text(buffer, "", -1);
1304 out = malloc(strlen(txt)+1);
1306 pref_get_unescaped_pref(out, txt);
1308 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1313 /* set the contents of a gtkentry widget from the internal \-escaped
1314 representation of a pref string. both txt and entry must be non-NULL. */
1315 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1319 g_return_if_fail( entry != NULL );
1321 gtk_entry_set_text(entry, "");
1323 out = malloc(strlen(txt)+1);
1325 pref_get_unescaped_pref(out, txt);
1327 gtk_entry_set_text(entry, out?out:"");
1332 /* get the \-escaped internal representation of a pref from the contents of
1333 a textview widget. textview must be non-NULL. */
1334 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1336 GtkTextBuffer *buffer;
1337 GtkTextIter start, end;
1340 g_return_val_if_fail( textview != NULL, "" );
1342 buffer = gtk_text_view_get_buffer(textview);
1343 gtk_text_buffer_get_start_iter(buffer, &start);
1344 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1345 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1346 out = malloc(2*strlen(tmp)+1);
1348 pref_get_escaped_pref(out, tmp);
1354 /* get the \-escaped internal representation of a pref from the contents of
1355 a gtkentry widget. entry must be non-NULL. */
1356 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1360 g_return_val_if_fail( entry != NULL, "" );
1362 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1363 out = malloc(2*strlen(tmp)+1);
1365 pref_get_escaped_pref(out, tmp);
1371 /* ugly hack to be able to get this pref from ssl_certificate.c */
1372 gboolean prefs_common_unsafe_ssl_certs(void)
1374 return prefs_common.unsafe_ssl_certs;
1377 gboolean prefs_common_enable_log_standard(void)
1379 return prefs_common.enable_log_standard;
1382 gboolean prefs_common_enable_log_warning(void)
1384 return prefs_common.enable_log_warning;
1386 gboolean prefs_common_enable_log_error(void)
1388 return prefs_common.enable_log_error;
1390 gboolean prefs_common_enable_log_status(void)
1392 return prefs_common.enable_log_status;
1396 const gchar *prefs_common_get_data_root(void)
1398 if (prefs_common.data_root && *prefs_common.data_root)
1399 return prefs_common.data_root;
1405 return the translated name of a header, if the translate_header option is
1406 set, otherwise return the untranslated header name (header_name itself).
1407 this function is provided for convenience, it's an interface to
1408 prefs_common.trans_hdr.
1409 works with header names either with or without trailing colon, provided
1410 that gettext found such header name in the sources (they should all be
1411 found in src/gtk/headers.h anyway).
1413 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1415 if (header_name == NULL || *header_name == '\0')
1418 return prefs_common.trans_hdr ? gettext(header_name) : header_name;