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 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1123 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1124 * Fallback to default_list if history file is not found
1126 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1127 GList *default_list)
1131 gchar buf[PREFSBUFSIZE];
1135 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1136 G_DIR_SEPARATOR_S, history,
1139 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1142 if ((fp = g_fopen(path, "rb")) == NULL) {
1143 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1145 /* returns default list if set, otherwise NULL */
1146 return default_list;
1149 while (fgets(buf, sizeof(buf), fp) != NULL) {
1151 if (buf[0] == '\0') continue;
1152 tmp = add_history(tmp, buf);
1156 tmp = g_list_reverse(tmp);
1162 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1164 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1166 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1170 * Read history list from the specified history file
1172 static GList *prefs_common_read_history(const gchar *history)
1174 return prefs_common_read_history_from_dir(NULL, history);
1177 void prefs_common_read_config(void)
1182 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1183 prefs_read_config(param, "Common", rcpath, NULL);
1185 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1190 tmp = g_strdup(gettext(prefs_common.date_format));
1191 g_free(prefs_common.date_format);
1192 prefs_common.date_format = tmp;
1194 prefs_common.mime_open_cmd_history =
1195 prefs_common_read_history(COMMAND_HISTORY);
1196 prefs_common.summary_quicksearch_history =
1197 prefs_common_read_history(QUICKSEARCH_HISTORY);
1198 prefs_common.summary_search_from_history =
1199 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1200 prefs_common.summary_search_to_history =
1201 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1202 prefs_common.summary_search_subject_history =
1203 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1204 prefs_common.summary_search_body_history =
1205 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1206 prefs_common.summary_search_adv_condition_history =
1207 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1208 prefs_common.message_search_history =
1209 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1211 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1213 colorlabel_update_colortable_from_prefs();
1219 g_warning("failed to write\n"); \
1224 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1226 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1230 gchar *path, *tmp_path;
1233 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1234 G_DIR_SEPARATOR_S, history,
1237 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1240 tmp_path = g_strconcat(path, ".tmp", NULL);
1242 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1243 FILE_OP_ERROR(tmp_path, "fopen");
1247 for (cur = list; cur != NULL; cur = cur->next) {
1248 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1249 fputc('\n', fp) != EOF);
1252 if (fclose(fp) == EOF) {
1253 FILE_OP_ERROR(tmp_path, "fclose");
1261 if (g_rename(tmp_path, path) < 0) {
1262 FILE_OP_ERROR(path, "rename");
1274 * Save history list to the specified history file
1276 static void prefs_common_save_history(const gchar *history, GList *list)
1278 prefs_common_save_history_to_dir(NULL, history, list);
1283 void prefs_common_write_config(void)
1285 prefs_write_config(param, "Common", COMMON_RC);
1287 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1290 prefs_common_save_history(COMMAND_HISTORY,
1291 prefs_common.mime_open_cmd_history);
1292 prefs_common_save_history(QUICKSEARCH_HISTORY,
1293 prefs_common.summary_quicksearch_history);
1294 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1295 prefs_common.summary_search_from_history);
1296 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1297 prefs_common.summary_search_to_history);
1298 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1299 prefs_common.summary_search_subject_history);
1300 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1301 prefs_common.summary_search_body_history);
1302 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1303 prefs_common.summary_search_adv_condition_history);
1304 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1305 prefs_common.message_search_history);
1307 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1308 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1309 prefs_common.addressbook_custom_attributes);
1312 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1313 both 'in' and 'out' must be non-NULL.
1314 'out' must be a pointer to a buffer whose size is at least equal
1315 to strlen(txt)+1, this buffer will get cleared. out's contents
1316 will always get set to a valid string, even if it's "".*/
1317 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1324 g_return_if_fail( in != NULL );
1325 g_return_if_fail( out != NULL );
1329 memset(out, 0, strlen(in)+1);
1330 while (*i != '\0') {
1331 if (*i == '\\' && *(i+1) == 'n') {
1334 } else if (*i == '\\' && *(i+1) == 't') {
1337 } else if (*i == '\\' && *(i+1) == '\\') {
1348 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1349 both 'in' and 'out' must be non-NULL.
1350 'out' must be a pointer to a buffer whose size is at least equal
1351 to 2*strlen(txt)+1. out's contents will always get set to a valid
1352 string, even if it's "". */
1353 void pref_get_escaped_pref(gchar *out, const gchar *in)
1360 g_return_if_fail( in != NULL );
1361 g_return_if_fail( out != NULL );
1365 while (*i != '\0') {
1369 } else if (*i == '\t') {
1372 } else if (*i == '\\') {
1383 /* set the contents of a textview widget from the internal \-escaped
1384 representation of a pref string. both txt and textview must be non-NULL. */
1385 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1387 GtkTextBuffer *buffer;
1390 g_return_if_fail( textview != NULL );
1392 buffer = gtk_text_view_get_buffer(textview);
1395 gtk_text_buffer_set_text(buffer, "", -1);
1397 out = malloc(strlen(txt)+1);
1399 pref_get_unescaped_pref(out, txt);
1401 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1406 /* set the contents of a gtkentry widget from the internal \-escaped
1407 representation of a pref string. both txt and entry must be non-NULL. */
1408 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1412 g_return_if_fail( entry != NULL );
1414 gtk_entry_set_text(entry, "");
1416 out = malloc(strlen(txt)+1);
1418 pref_get_unescaped_pref(out, txt);
1420 gtk_entry_set_text(entry, out?out:"");
1425 /* get the \-escaped internal representation of a pref from the contents of
1426 a textview widget. textview must be non-NULL. */
1427 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1429 GtkTextBuffer *buffer;
1430 GtkTextIter start, end;
1433 g_return_val_if_fail( textview != NULL, "" );
1435 buffer = gtk_text_view_get_buffer(textview);
1436 gtk_text_buffer_get_start_iter(buffer, &start);
1437 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1438 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1439 out = malloc(2*strlen(tmp)+1);
1441 pref_get_escaped_pref(out, tmp);
1447 /* get the \-escaped internal representation of a pref from the contents of
1448 a gtkentry widget. entry must be non-NULL. */
1449 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1453 g_return_val_if_fail( entry != NULL, "" );
1455 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1456 out = malloc(2*strlen(tmp)+1);
1458 pref_get_escaped_pref(out, tmp);
1464 /* ugly hack to be able to get this pref from ssl_certificate.c */
1465 gboolean prefs_common_unsafe_ssl_certs(void)
1467 return prefs_common.unsafe_ssl_certs;
1470 gboolean prefs_common_enable_log_standard(void)
1472 return prefs_common.enable_log_standard;
1475 gboolean prefs_common_enable_log_warning(void)
1477 return prefs_common.enable_log_warning;
1479 gboolean prefs_common_enable_log_error(void)
1481 return prefs_common.enable_log_error;
1483 gboolean prefs_common_enable_log_status(void)
1485 return prefs_common.enable_log_status;
1489 const gchar *prefs_common_get_data_root(void)
1491 if (prefs_common.data_root && *prefs_common.data_root)
1492 return prefs_common.data_root;
1498 return the translated name of a header, if the translate_header option is
1499 set, otherwise return the untranslated header name (header_name itself).
1500 this function is provided for convenience, it's an interface to
1501 prefs_common.trans_hdr.
1502 works with header names either with or without trailing colon, provided
1503 that gettext found such header name in the sources (they should all be
1504 found in src/gtk/headers.h anyway).
1506 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1508 if (header_name == NULL || *header_name == '\0')
1511 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1514 const gchar *prefs_common_get_uri_cmd(void)
1518 if (!prefs_common.cmds_use_system_default)
1519 return prefs_common.uri_cmd;
1521 tmp = g_find_program_in_path("xdg-open");
1523 return prefs_common.uri_cmd;
1526 return "xdg-open %s";
1529 const gchar *prefs_common_get_ext_editor_cmd(void)
1531 return prefs_common.ext_editor_cmd;
1532 #if 0 /* we should do that, but it detaches the editor and breaks
1533 compose.c's external composition. */
1536 if (!prefs_common.cmds_use_system_default)
1537 return prefs_common.ext_editor_cmd;
1539 tmp = g_find_program_in_path("xdg-open");
1541 return prefs_common.ext_editor_cmd;
1544 return "xdg-open %s";
1548 gboolean prefs_common_get_use_shred(void)
1550 return prefs_common.use_shred;