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"
62 #include "addrcustomattr.h"
70 PrefsCommon prefs_common;
76 * In the Windows version prefs_common contains
77 * - the non-OS-specific settings of the "Common" section and
78 * - the OS-specific settings of the "CommonWin32" section
79 * The OS-specific settings of the "Common" section are not used
80 * but saved in prefs_unix.
83 # define SPECIFIC_PREFS prefs_unix
85 static PrefsCommon prefs_unix;
87 static PrefParam param_os_specific[] = {
90 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
91 {"newmail_notify_cmd", "",
92 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
95 {"widget_font_gtk2", NULL,
96 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
97 {"message_font_gtk2", "Monospace 9",
98 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
99 {"print_font_gtk2", "Monospace 9",
100 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
101 {"small_font_gtk2", "Sans 9",
102 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
103 {"normal_font_gtk2", "Sans 9",
104 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
105 {"bold_font_gtk2", "Sans 9 Bold",
106 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
108 {"attach_save_directory", NULL,
109 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
110 {"attach_load_directory", NULL,
111 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
114 {"mime_textviewer", NULL,
115 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
116 {"mime_open_command", "notepad '%s'",
117 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
120 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
121 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
124 {"uri_open_command", NULL,
125 &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
126 {"print_command", "notepad /p %s",
127 &prefs_common.print_cmd, P_STRING, NULL, NULL, NULL},
128 {"ext_editor_command", "notepad %s",
129 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
131 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
134 # define SPECIFIC_PREFS prefs_common
138 parameter name, default value, pointer to the prefs variable, data type,
139 pointer to the widget pointer,
140 pointer to the function for data setting,
141 pointer to the function for widget setting
144 static PrefParam param[] = {
146 {"data_root", "", &prefs_common.data_root, P_STRING,
150 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
152 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
155 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
157 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
159 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
161 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
162 P_BOOL, NULL, NULL, NULL},
163 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
164 P_BOOL, NULL, NULL, NULL},
165 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
166 P_BOOL, NULL, NULL, NULL},
167 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
168 P_BOOL, NULL, NULL, NULL},
169 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
172 {"maemo_show_led", "TRUE", &prefs_common.maemo_show_led, P_BOOL,
174 {"maemo_play_sound", "FALSE", &prefs_common.maemo_play_sound, P_BOOL,
176 {"maemo_show_banner", "FALSE", &prefs_common.maemo_show_banner, P_BOOL,
179 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
181 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
183 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
185 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
186 P_BOOL, NULL, NULL, NULL},
187 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
188 P_BOOL, NULL, NULL, NULL},
191 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
193 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
194 P_BOOL, NULL, NULL, NULL},
196 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
199 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
202 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
204 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
207 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
209 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
211 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
214 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
215 P_BOOL, NULL, NULL, NULL},
218 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
220 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
221 P_BOOL, NULL, NULL, NULL},
222 {"redirect_keep_from", "FALSE",
223 &prefs_common.redirect_keep_from, P_BOOL,
225 {"undo_level", "50", &prefs_common.undolevels, P_INT,
227 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
229 {"compose_subject_format", "",
230 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
231 {"compose_body_format", N_("Hello,\\n"),
232 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
234 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
236 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
238 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
240 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
242 {"autosave", "TRUE", &prefs_common.autosave,
243 P_BOOL, NULL, NULL, NULL},
244 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
247 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
249 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
251 {"dictionary", "", &prefs_common.dictionary, P_STRING,
253 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
255 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
257 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
259 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
261 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
262 P_BOOL, NULL, NULL, NULL},
263 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
265 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
268 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
270 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
273 /* Account autoselection */
274 {"reply_account_autoselect", "TRUE",
275 &prefs_common.reply_account_autosel, P_BOOL,
277 {"forward_account_autoselect", "TRUE",
278 &prefs_common.forward_account_autosel, P_BOOL,
280 {"reedit_account_autoselect", "TRUE",
281 &prefs_common.reedit_account_autosel, P_BOOL,
284 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
288 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
291 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
296 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
298 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q"),
299 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
301 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
303 {"forward_quote_format",
304 N_("\\n\\nBegin forwarded message:\\n\\n"
305 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
306 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
307 &prefs_common.fw_quotefmt, P_STRING,
309 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
313 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
314 {"widget_font", NULL,
315 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
317 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
318 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
319 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
320 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
321 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
322 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
323 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
327 {"widget_font_gtk2", NULL,
328 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
329 {"message_font_gtk2", "Monospace 9",
330 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
331 {"print_font_gtk2", "Monospace 9",
332 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
333 {"small_font_gtk2", "Sans 9",
334 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
335 {"normal_font_gtk2", "Sans 9",
336 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
337 {"bold_font_gtk2", "Sans Bold 9",
338 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
340 {"widget_font_gtk2", NULL,
341 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
342 {"message_font_gtk2", "Monospace 8",
343 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
344 {"print_font_gtk2", "Monospace 8",
345 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
346 {"small_font_gtk2", "Sans 8",
347 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
348 {"normal_font_gtk2", "Sans 8",
349 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
350 {"bold_font_gtk2", "Sans Bold 8",
351 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
354 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
356 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
360 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
362 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
364 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
366 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
368 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
370 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
372 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
374 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
376 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
378 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
380 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
382 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
384 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
386 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
388 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
390 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
392 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
394 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
396 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
398 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
400 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
402 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
404 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
406 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
408 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
410 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
412 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
414 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
416 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
418 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
422 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
424 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
426 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
429 {"display_folder_unread_num", "0",
430 &prefs_common.display_folder_unread, P_INT,
432 {"newsgroup_abbrev_len", "16",
433 &prefs_common.ng_abbrev_len, P_INT,
436 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
439 /* Display: Summary View */
440 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
442 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
444 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
445 P_STRING, NULL, NULL, NULL},
447 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
450 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
453 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
456 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
459 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
461 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
464 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
466 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
469 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
471 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
475 {"summary_col_show_mark", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_unread", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_subject", "TRUE",
480 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_from", "TRUE",
482 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_to", "FALSE",
484 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_date", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_mime", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_size", "TRUE",
490 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_number", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_score", "FALSE",
494 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_locked", "FALSE",
496 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_tags", "FALSE",
498 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
500 {"summary_col_pos_mark", "0",
501 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_unread", "1",
503 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_mime", "2",
505 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_subject", "3",
507 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_from", "4",
509 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_date", "5",
511 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_size", "6",
513 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_number", "7",
515 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_score", "8",
517 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_locked", "9",
519 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_to", "10",
521 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_tags", "11",
523 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
525 {"summary_col_size_mark", "10",
526 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
527 {"summary_col_size_unread", "13",
528 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
529 {"summary_col_size_mime", "10",
530 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_subject", "200",
533 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_from", "120",
535 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
536 {"summary_col_size_to", "120",
537 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_subject", "300",
540 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_from", "150",
542 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_to", "150",
544 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_date", "118",
548 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_size", "45",
550 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_number", "40",
552 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_score", "40",
554 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_locked", "13",
556 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
557 {"summary_col_size_tags", "150",
558 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
561 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
563 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
565 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
567 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
569 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
572 {"folder_col_show_folder", "TRUE",
573 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
574 {"folder_col_show_new", "TRUE",
575 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
576 {"folder_col_show_unread", "TRUE",
577 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
578 {"folder_col_show_total", "TRUE",
579 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
581 {"folder_col_pos_folder", "0",
582 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
583 {"folder_col_pos_new", "1",
584 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
585 {"folder_col_pos_unread", "2",
586 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
587 {"folder_col_pos_total", "3",
588 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
591 {"folder_col_size_folder", "120",
592 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
593 {"folder_col_size_new", "32",
594 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
595 {"folder_col_size_unread", "32",
596 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
597 {"folder_col_size_total", "32",
598 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_folder", "400",
601 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_new", "32",
603 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
604 {"folder_col_size_unread", "32",
605 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
606 {"folder_col_size_total", "32",
607 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
609 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
611 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
614 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
616 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
618 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
620 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
622 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
625 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
627 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
629 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
631 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
633 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
635 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
637 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
640 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
642 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
644 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
646 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
648 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
650 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
652 {"compose_width", "600", &prefs_common.compose_width, P_INT,
654 {"compose_height", "560", &prefs_common.compose_height, P_INT,
657 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
659 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
661 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
663 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
665 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
667 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
669 {"compose_width", "700", &prefs_common.compose_width, P_INT,
671 {"compose_height", "470", &prefs_common.compose_height, P_INT,
674 {"compose_x", "0", &prefs_common.compose_x, P_INT,
676 {"compose_y", "0", &prefs_common.compose_y, P_INT,
679 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
682 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
684 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
686 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
688 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
690 {"quote_level1_bgcolor", "13421772", &prefs_common.quote_level1_bgcol, P_COLOR,
692 {"quote_level2_bgcolor", "13948116", &prefs_common.quote_level2_bgcol, P_COLOR,
694 {"quote_level3_bgcolor", "14540253", &prefs_common.quote_level3_bgcol, P_COLOR,
696 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
698 {"emphasis_color", "207", &prefs_common.emphasis_col, P_COLOR,
700 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
702 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
704 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
705 P_BOOL, NULL, NULL, NULL},
707 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
708 P_BOOL, NULL, NULL, NULL},
709 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
711 {"display_xface", "TRUE", &prefs_common.display_xface,
712 P_BOOL, NULL, NULL, NULL},
713 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
715 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
717 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
719 {"line_space", "2", &prefs_common.line_space, P_INT,
721 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
724 {"enable_smooth_scroll", "FALSE",
725 &prefs_common.enable_smooth_scroll, P_BOOL,
727 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
729 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
731 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
734 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
737 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
739 {"attach_save_directory", NULL,
740 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
741 {"attach_load_directory", NULL,
742 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
745 {"mime_textviewer", NULL,
746 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
747 {"mime_open_command", "gedit '%s'",
748 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
752 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
755 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
758 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
759 NULL, NULL, NULL}, */
760 {"always_show_message_when_selected", "FALSE",
761 &prefs_common.always_show_msg,
762 P_BOOL, NULL, NULL, NULL},
763 {"select_on_entry", "3", &prefs_common.select_on_entry,
764 P_ENUM, NULL, NULL, NULL},
765 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
766 P_BOOL, NULL, NULL, NULL},
768 /* do it SUMMARY_OPEN_ACTIONS-1 times */
769 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
771 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
773 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
775 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
777 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
779 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
781 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
784 {"mark_as_read_on_new_window", "FALSE",
785 &prefs_common.mark_as_read_on_new_window,
786 P_BOOL, NULL, NULL, NULL},
787 {"mark_as_read_delay", "0",
788 &prefs_common.mark_as_read_delay, P_INT,
790 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
792 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
795 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
796 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
799 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
802 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
804 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
808 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
809 P_BOOL, NULL, NULL, NULL},
810 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
811 P_INT, NULL, NULL, NULL},
812 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
813 P_INT, NULL, NULL, NULL},
816 {"uri_open_command", DEFAULT_BROWSER_CMD,
817 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
818 {"print_command", "lpr %s",
819 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
820 {"ext_editor_command", DEFAULT_EDITOR_CMD,
821 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
822 {"cmds_use_system_default", "FALSE",
823 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
824 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
825 P_BOOL, NULL, NULL, NULL},
826 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
828 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
830 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
832 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
833 P_BOOL, NULL, NULL, NULL},
834 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
836 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
839 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
842 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
846 #if defined(__OpenBSD__)
847 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
848 P_INT, NULL, NULL, NULL},
850 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
851 P_INT, NULL, NULL, NULL},
853 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
855 {"important_score", "1", &prefs_common.important_score, P_INT,
858 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
860 {"log_length", "500", &prefs_common.loglength, P_INT,
863 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
865 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
867 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
869 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
872 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
874 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
876 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
878 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
881 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
883 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
885 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
887 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
889 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
891 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
893 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
895 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
898 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
900 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
902 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
904 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
906 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
908 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
910 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
912 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
914 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
917 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
920 {"color_new", "179", &prefs_common.color_new, P_COLOR,
923 /* Some windows' sizes */
924 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
926 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
929 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
931 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
934 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
936 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
939 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
941 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
944 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
946 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
949 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
951 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
954 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
956 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
959 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
961 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
964 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
966 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
969 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
971 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
974 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
976 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
979 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
981 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
984 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
987 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
989 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
992 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
994 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
997 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
999 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1002 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1004 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1007 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1009 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1012 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1014 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1017 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1019 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1023 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1025 {"utf8_instead_of_locale_for_broken_mail", "0",
1026 &prefs_common.broken_are_utf8, P_INT,
1028 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1030 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1032 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1034 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1036 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1038 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1040 {"folderview_vscrollbar_policy", "0",
1041 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1043 {"textview_cursor_visible", "FALSE",
1044 &prefs_common.textview_cursor_visible, P_BOOL,
1046 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1048 #ifndef GENERIC_UMPC
1049 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1051 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1054 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1056 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1059 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1060 P_INT, NULL, NULL, NULL },
1061 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1062 P_STRING, NULL, NULL, NULL },
1063 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1064 P_BOOL, NULL, NULL, NULL },
1065 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1067 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1069 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1071 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1073 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1075 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1077 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1079 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1081 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1083 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1085 #ifndef GENERIC_UMPC
1086 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1089 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1093 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1095 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1097 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1099 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1101 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1103 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1105 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1107 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1109 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1111 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1113 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1116 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1117 P_BOOL, NULL, NULL, NULL },
1119 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1122 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1126 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1127 * Fallback to default_list if history file is not found
1129 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1130 GList *default_list)
1134 gchar buf[PREFSBUFSIZE];
1138 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1139 G_DIR_SEPARATOR_S, history,
1142 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1145 if ((fp = g_fopen(path, "rb")) == NULL) {
1146 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1148 /* returns default list if set, otherwise NULL */
1149 return default_list;
1152 while (fgets(buf, sizeof(buf), fp) != NULL) {
1154 if (buf[0] == '\0') continue;
1155 tmp = add_history(tmp, buf);
1159 tmp = g_list_reverse(tmp);
1165 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1167 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1169 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1173 * Read history list from the specified history file
1175 static GList *prefs_common_read_history(const gchar *history)
1177 return prefs_common_read_history_from_dir(NULL, history);
1180 void prefs_common_read_config(void)
1185 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1186 prefs_read_config(param, "Common", rcpath, NULL);
1188 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1193 tmp = g_strdup(gettext(prefs_common.date_format));
1194 g_free(prefs_common.date_format);
1195 prefs_common.date_format = tmp;
1197 prefs_common.mime_open_cmd_history =
1198 prefs_common_read_history(COMMAND_HISTORY);
1199 prefs_common.summary_quicksearch_history =
1200 prefs_common_read_history(QUICKSEARCH_HISTORY);
1201 prefs_common.summary_search_from_history =
1202 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1203 prefs_common.summary_search_to_history =
1204 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1205 prefs_common.summary_search_subject_history =
1206 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1207 prefs_common.summary_search_body_history =
1208 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1209 prefs_common.summary_search_adv_condition_history =
1210 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1211 prefs_common.message_search_history =
1212 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1214 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1216 colorlabel_update_colortable_from_prefs();
1222 g_warning("failed to write\n"); \
1227 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1229 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1233 gchar *path, *tmp_path;
1236 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1237 G_DIR_SEPARATOR_S, history,
1240 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1243 tmp_path = g_strconcat(path, ".tmp", NULL);
1245 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1246 FILE_OP_ERROR(tmp_path, "fopen");
1250 for (cur = list; cur != NULL; cur = cur->next) {
1251 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1252 fputc('\n', fp) != EOF);
1255 if (fclose(fp) == EOF) {
1256 FILE_OP_ERROR(tmp_path, "fclose");
1264 if (g_rename(tmp_path, path) < 0) {
1265 FILE_OP_ERROR(path, "rename");
1277 * Save history list to the specified history file
1279 static void prefs_common_save_history(const gchar *history, GList *list)
1281 prefs_common_save_history_to_dir(NULL, history, list);
1286 void prefs_common_write_config(void)
1288 prefs_write_config(param, "Common", COMMON_RC);
1290 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1293 prefs_common_save_history(COMMAND_HISTORY,
1294 prefs_common.mime_open_cmd_history);
1295 prefs_common_save_history(QUICKSEARCH_HISTORY,
1296 prefs_common.summary_quicksearch_history);
1297 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1298 prefs_common.summary_search_from_history);
1299 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1300 prefs_common.summary_search_to_history);
1301 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1302 prefs_common.summary_search_subject_history);
1303 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1304 prefs_common.summary_search_body_history);
1305 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1306 prefs_common.summary_search_adv_condition_history);
1307 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1308 prefs_common.message_search_history);
1310 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1311 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1312 prefs_common.addressbook_custom_attributes);
1315 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1316 both 'in' and 'out' must be non-NULL.
1317 'out' must be a pointer to a buffer whose size is at least equal
1318 to strlen(txt)+1, this buffer will get cleared. out's contents
1319 will always get set to a valid string, even if it's "".*/
1320 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1327 g_return_if_fail( in != NULL );
1328 g_return_if_fail( out != NULL );
1332 memset(out, 0, strlen(in)+1);
1333 while (*i != '\0') {
1334 if (*i == '\\' && *(i+1) == 'n') {
1337 } else if (*i == '\\' && *(i+1) == 't') {
1340 } else if (*i == '\\' && *(i+1) == '\\') {
1351 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1352 both 'in' and 'out' must be non-NULL.
1353 'out' must be a pointer to a buffer whose size is at least equal
1354 to 2*strlen(txt)+1. out's contents will always get set to a valid
1355 string, even if it's "". */
1356 void pref_get_escaped_pref(gchar *out, const gchar *in)
1363 g_return_if_fail( in != NULL );
1364 g_return_if_fail( out != NULL );
1368 while (*i != '\0') {
1372 } else if (*i == '\t') {
1375 } else if (*i == '\\') {
1386 /* set the contents of a textview widget from the internal \-escaped
1387 representation of a pref string. both txt and textview must be non-NULL. */
1388 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1390 GtkTextBuffer *buffer;
1393 g_return_if_fail( textview != NULL );
1395 buffer = gtk_text_view_get_buffer(textview);
1398 gtk_text_buffer_set_text(buffer, "", -1);
1400 out = malloc(strlen(txt)+1);
1402 pref_get_unescaped_pref(out, txt);
1404 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1409 /* set the contents of a gtkentry widget from the internal \-escaped
1410 representation of a pref string. both txt and entry must be non-NULL. */
1411 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1415 g_return_if_fail( entry != NULL );
1417 gtk_entry_set_text(entry, "");
1419 out = malloc(strlen(txt)+1);
1421 pref_get_unescaped_pref(out, txt);
1423 gtk_entry_set_text(entry, out?out:"");
1428 /* get the \-escaped internal representation of a pref from the contents of
1429 a textview widget. textview must be non-NULL. */
1430 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1432 GtkTextBuffer *buffer;
1433 GtkTextIter start, end;
1436 g_return_val_if_fail( textview != NULL, "" );
1438 buffer = gtk_text_view_get_buffer(textview);
1439 gtk_text_buffer_get_start_iter(buffer, &start);
1440 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1441 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1442 out = malloc(2*strlen(tmp)+1);
1444 pref_get_escaped_pref(out, tmp);
1450 /* get the \-escaped internal representation of a pref from the contents of
1451 a gtkentry widget. entry must be non-NULL. */
1452 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1456 g_return_val_if_fail( entry != NULL, "" );
1458 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1459 out = malloc(2*strlen(tmp)+1);
1461 pref_get_escaped_pref(out, tmp);
1467 /* ugly hack to be able to get this pref from ssl_certificate.c */
1468 gboolean prefs_common_unsafe_ssl_certs(void)
1470 return prefs_common.unsafe_ssl_certs;
1473 gboolean prefs_common_enable_log_standard(void)
1475 return prefs_common.enable_log_standard;
1478 gboolean prefs_common_enable_log_warning(void)
1480 return prefs_common.enable_log_warning;
1482 gboolean prefs_common_enable_log_error(void)
1484 return prefs_common.enable_log_error;
1486 gboolean prefs_common_enable_log_status(void)
1488 return prefs_common.enable_log_status;
1492 const gchar *prefs_common_get_data_root(void)
1494 if (prefs_common.data_root && *prefs_common.data_root)
1495 return prefs_common.data_root;
1501 return the translated name of a header, if the translate_header option is
1502 set, otherwise return the untranslated header name (header_name itself).
1503 this function is provided for convenience, it's an interface to
1504 prefs_common.trans_hdr.
1505 works with header names either with or without trailing colon, provided
1506 that gettext found such header name in the sources (they should all be
1507 found in src/gtk/headers.h anyway).
1509 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1511 if (header_name == NULL || *header_name == '\0')
1514 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1517 const gchar *prefs_common_get_uri_cmd(void)
1521 if (!prefs_common.cmds_use_system_default)
1522 return prefs_common.uri_cmd;
1524 tmp = g_find_program_in_path("xdg-open");
1526 return prefs_common.uri_cmd;
1529 return "xdg-open %s";
1532 const gchar *prefs_common_get_ext_editor_cmd(void)
1534 return prefs_common.ext_editor_cmd;
1535 #if 0 /* we should do that, but it detaches the editor and breaks
1536 compose.c's external composition. */
1539 if (!prefs_common.cmds_use_system_default)
1540 return prefs_common.ext_editor_cmd;
1542 tmp = g_find_program_in_path("xdg-open");
1544 return prefs_common.ext_editor_cmd;
1547 return "xdg-open %s";
1551 gboolean prefs_common_get_use_shred(void)
1553 return prefs_common.use_shred;