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 {"line_space", "2", &prefs_common.line_space, P_INT,
719 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
722 {"enable_smooth_scroll", "FALSE",
723 &prefs_common.enable_smooth_scroll, P_BOOL,
725 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
727 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
729 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
732 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
735 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
737 {"attach_save_directory", NULL,
738 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
739 {"attach_load_directory", NULL,
740 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
743 {"mime_textviewer", NULL,
744 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
745 {"mime_open_command", "gedit '%s'",
746 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
750 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
753 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
756 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
757 NULL, NULL, NULL}, */
758 {"always_show_message_when_selected", "FALSE",
759 &prefs_common.always_show_msg,
760 P_BOOL, NULL, NULL, NULL},
761 {"select_on_entry", "3", &prefs_common.select_on_entry,
762 P_ENUM, NULL, NULL, NULL},
763 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
764 P_BOOL, NULL, NULL, NULL},
766 /* do it SUMMARY_OPEN_ACTIONS-1 times */
767 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
769 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
771 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
773 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
775 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
777 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
779 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
782 {"mark_as_read_on_new_window", "FALSE",
783 &prefs_common.mark_as_read_on_new_window,
784 P_BOOL, NULL, NULL, NULL},
785 {"mark_as_read_delay", "0",
786 &prefs_common.mark_as_read_delay, P_INT,
788 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
790 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
793 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
794 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
797 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
800 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
802 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
806 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
807 P_BOOL, NULL, NULL, NULL},
808 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
809 P_INT, NULL, NULL, NULL},
810 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
811 P_INT, NULL, NULL, NULL},
814 {"uri_open_command", DEFAULT_BROWSER_CMD,
815 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
816 {"print_command", "lpr %s",
817 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
818 {"ext_editor_command", DEFAULT_EDITOR_CMD,
819 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
820 {"cmds_use_system_default", "FALSE",
821 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
822 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
823 P_BOOL, NULL, NULL, NULL},
824 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
826 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
828 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
830 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
831 P_BOOL, NULL, NULL, NULL},
832 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
834 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
837 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
840 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
844 #if defined(__OpenBSD__)
845 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
846 P_INT, NULL, NULL, NULL},
848 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
849 P_INT, NULL, NULL, NULL},
851 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
853 {"important_score", "1", &prefs_common.important_score, P_INT,
856 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
858 {"log_length", "500", &prefs_common.loglength, P_INT,
861 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
863 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
865 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
867 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
870 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
872 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
874 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
876 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
879 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
881 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
883 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
885 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
887 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
889 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
891 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
893 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
896 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
898 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
900 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
902 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
904 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
906 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
908 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
910 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
912 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
915 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
918 {"color_new", "179", &prefs_common.color_new, P_COLOR,
921 /* Some windows' sizes */
922 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
924 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
927 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
929 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
932 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
934 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
937 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
939 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
942 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
944 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
947 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
949 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
952 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
954 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
957 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
959 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
962 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
964 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
967 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
969 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
972 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
974 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
977 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
979 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
982 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
985 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
987 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
990 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
992 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
995 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
997 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1000 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1002 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1005 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1007 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1010 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1012 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1015 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1017 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1021 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1023 {"utf8_instead_of_locale_for_broken_mail", "0",
1024 &prefs_common.broken_are_utf8, P_INT,
1026 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1028 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1030 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1032 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1034 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1036 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1038 {"folderview_vscrollbar_policy", "0",
1039 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1041 {"textview_cursor_visible", "FALSE",
1042 &prefs_common.textview_cursor_visible, P_BOOL,
1044 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1046 #ifndef GENERIC_UMPC
1047 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1049 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1052 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1054 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1057 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1058 P_INT, NULL, NULL, NULL },
1059 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1060 P_STRING, NULL, NULL, NULL },
1061 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1062 P_BOOL, NULL, NULL, NULL },
1063 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1065 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1067 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1069 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1071 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1073 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1075 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1077 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1079 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1081 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1083 #ifndef GENERIC_UMPC
1084 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1087 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1091 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1093 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1095 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1097 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1099 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1101 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1103 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1105 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1107 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1109 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1111 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1114 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1115 P_BOOL, NULL, NULL, NULL },
1117 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1121 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1122 * Fallback to default_list if history file is not found
1124 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1125 GList *default_list)
1129 gchar buf[PREFSBUFSIZE];
1133 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1134 G_DIR_SEPARATOR_S, history,
1137 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1140 if ((fp = g_fopen(path, "rb")) == NULL) {
1141 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1143 /* returns default list if set, otherwise NULL */
1144 return default_list;
1147 while (fgets(buf, sizeof(buf), fp) != NULL) {
1149 if (buf[0] == '\0') continue;
1150 tmp = add_history(tmp, buf);
1154 tmp = g_list_reverse(tmp);
1160 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1162 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1164 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1168 * Read history list from the specified history file
1170 static GList *prefs_common_read_history(const gchar *history)
1172 return prefs_common_read_history_from_dir(NULL, history);
1175 void prefs_common_read_config(void)
1180 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1181 prefs_read_config(param, "Common", rcpath, NULL);
1183 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1188 tmp = g_strdup(gettext(prefs_common.date_format));
1189 g_free(prefs_common.date_format);
1190 prefs_common.date_format = tmp;
1192 prefs_common.mime_open_cmd_history =
1193 prefs_common_read_history(COMMAND_HISTORY);
1194 prefs_common.summary_quicksearch_history =
1195 prefs_common_read_history(QUICKSEARCH_HISTORY);
1196 prefs_common.summary_search_from_history =
1197 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1198 prefs_common.summary_search_to_history =
1199 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1200 prefs_common.summary_search_subject_history =
1201 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1202 prefs_common.summary_search_body_history =
1203 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1204 prefs_common.summary_search_adv_condition_history =
1205 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1206 prefs_common.message_search_history =
1207 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1209 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1211 colorlabel_update_colortable_from_prefs();
1217 g_warning("failed to write\n"); \
1222 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1224 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1228 gchar *path, *tmp_path;
1231 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1232 G_DIR_SEPARATOR_S, history,
1235 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1238 tmp_path = g_strconcat(path, ".tmp", NULL);
1240 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1241 FILE_OP_ERROR(tmp_path, "fopen");
1245 for (cur = list; cur != NULL; cur = cur->next) {
1246 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1247 fputc('\n', fp) != EOF);
1250 if (fclose(fp) == EOF) {
1251 FILE_OP_ERROR(tmp_path, "fclose");
1259 if (g_rename(tmp_path, path) < 0) {
1260 FILE_OP_ERROR(path, "rename");
1272 * Save history list to the specified history file
1274 static void prefs_common_save_history(const gchar *history, GList *list)
1276 prefs_common_save_history_to_dir(NULL, history, list);
1281 void prefs_common_write_config(void)
1283 prefs_write_config(param, "Common", COMMON_RC);
1285 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1288 prefs_common_save_history(COMMAND_HISTORY,
1289 prefs_common.mime_open_cmd_history);
1290 prefs_common_save_history(QUICKSEARCH_HISTORY,
1291 prefs_common.summary_quicksearch_history);
1292 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1293 prefs_common.summary_search_from_history);
1294 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1295 prefs_common.summary_search_to_history);
1296 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1297 prefs_common.summary_search_subject_history);
1298 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1299 prefs_common.summary_search_body_history);
1300 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1301 prefs_common.summary_search_adv_condition_history);
1302 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1303 prefs_common.message_search_history);
1305 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1306 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1307 prefs_common.addressbook_custom_attributes);
1310 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1311 both 'in' and 'out' must be non-NULL.
1312 'out' must be a pointer to a buffer whose size is at least equal
1313 to strlen(txt)+1, this buffer will get cleared. out's contents
1314 will always get set to a valid string, even if it's "".*/
1315 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1322 g_return_if_fail( in != NULL );
1323 g_return_if_fail( out != NULL );
1327 memset(out, 0, strlen(in)+1);
1328 while (*i != '\0') {
1329 if (*i == '\\' && *(i+1) == 'n') {
1332 } else if (*i == '\\' && *(i+1) == 't') {
1335 } else if (*i == '\\' && *(i+1) == '\\') {
1346 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1347 both 'in' and 'out' must be non-NULL.
1348 'out' must be a pointer to a buffer whose size is at least equal
1349 to 2*strlen(txt)+1. out's contents will always get set to a valid
1350 string, even if it's "". */
1351 void pref_get_escaped_pref(gchar *out, const gchar *in)
1358 g_return_if_fail( in != NULL );
1359 g_return_if_fail( out != NULL );
1363 while (*i != '\0') {
1367 } else if (*i == '\t') {
1370 } else if (*i == '\\') {
1381 /* set the contents of a textview widget from the internal \-escaped
1382 representation of a pref string. both txt and textview must be non-NULL. */
1383 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1385 GtkTextBuffer *buffer;
1388 g_return_if_fail( textview != NULL );
1390 buffer = gtk_text_view_get_buffer(textview);
1393 gtk_text_buffer_set_text(buffer, "", -1);
1395 out = malloc(strlen(txt)+1);
1397 pref_get_unescaped_pref(out, txt);
1399 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1404 /* set the contents of a gtkentry widget from the internal \-escaped
1405 representation of a pref string. both txt and entry must be non-NULL. */
1406 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1410 g_return_if_fail( entry != NULL );
1412 gtk_entry_set_text(entry, "");
1414 out = malloc(strlen(txt)+1);
1416 pref_get_unescaped_pref(out, txt);
1418 gtk_entry_set_text(entry, out?out:"");
1423 /* get the \-escaped internal representation of a pref from the contents of
1424 a textview widget. textview must be non-NULL. */
1425 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1427 GtkTextBuffer *buffer;
1428 GtkTextIter start, end;
1431 g_return_val_if_fail( textview != NULL, "" );
1433 buffer = gtk_text_view_get_buffer(textview);
1434 gtk_text_buffer_get_start_iter(buffer, &start);
1435 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1436 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1437 out = malloc(2*strlen(tmp)+1);
1439 pref_get_escaped_pref(out, tmp);
1445 /* get the \-escaped internal representation of a pref from the contents of
1446 a gtkentry widget. entry must be non-NULL. */
1447 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1451 g_return_val_if_fail( entry != NULL, "" );
1453 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1454 out = malloc(2*strlen(tmp)+1);
1456 pref_get_escaped_pref(out, tmp);
1462 /* ugly hack to be able to get this pref from ssl_certificate.c */
1463 gboolean prefs_common_unsafe_ssl_certs(void)
1465 return prefs_common.unsafe_ssl_certs;
1468 gboolean prefs_common_enable_log_standard(void)
1470 return prefs_common.enable_log_standard;
1473 gboolean prefs_common_enable_log_warning(void)
1475 return prefs_common.enable_log_warning;
1477 gboolean prefs_common_enable_log_error(void)
1479 return prefs_common.enable_log_error;
1481 gboolean prefs_common_enable_log_status(void)
1483 return prefs_common.enable_log_status;
1487 const gchar *prefs_common_get_data_root(void)
1489 if (prefs_common.data_root && *prefs_common.data_root)
1490 return prefs_common.data_root;
1496 return the translated name of a header, if the translate_header option is
1497 set, otherwise return the untranslated header name (header_name itself).
1498 this function is provided for convenience, it's an interface to
1499 prefs_common.trans_hdr.
1500 works with header names either with or without trailing colon, provided
1501 that gettext found such header name in the sources (they should all be
1502 found in src/gtk/headers.h anyway).
1504 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1506 if (header_name == NULL || *header_name == '\0')
1509 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1512 const gchar *prefs_common_get_uri_cmd(void)
1516 if (!prefs_common.cmds_use_system_default)
1517 return prefs_common.uri_cmd;
1519 tmp = g_find_program_in_path("xdg-open");
1521 return prefs_common.uri_cmd;
1524 return "xdg-open %s";
1527 const gchar *prefs_common_get_ext_editor_cmd(void)
1529 return prefs_common.ext_editor_cmd;
1530 #if 0 /* we should do that, but it detaches the editor and breaks
1531 compose.c's external composition. */
1534 if (!prefs_common.cmds_use_system_default)
1535 return prefs_common.ext_editor_cmd;
1537 tmp = g_find_program_in_path("xdg-open");
1539 return prefs_common.ext_editor_cmd;
1542 return "xdg-open %s";
1546 gboolean prefs_common_get_use_shred(void)
1548 return prefs_common.use_shred;