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,
212 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
213 P_BOOL, NULL, NULL, NULL},
216 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
218 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
219 P_BOOL, NULL, NULL, NULL},
220 {"redirect_keep_from", "FALSE",
221 &prefs_common.redirect_keep_from, P_BOOL,
223 {"undo_level", "50", &prefs_common.undolevels, P_INT,
225 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
227 {"compose_subject_format", "",
228 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
229 {"compose_body_format", NULL,
230 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
232 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
234 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
236 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
238 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
240 {"autosave", "TRUE", &prefs_common.autosave,
241 P_BOOL, NULL, NULL, NULL},
242 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
245 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
247 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
249 {"dictionary", "", &prefs_common.dictionary, P_STRING,
251 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
253 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
255 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
257 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
259 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
260 P_BOOL, NULL, NULL, NULL},
261 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
263 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
266 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
268 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
271 /* Account autoselection */
272 {"reply_account_autoselect", "TRUE",
273 &prefs_common.reply_account_autosel, P_BOOL,
275 {"forward_account_autoselect", "TRUE",
276 &prefs_common.forward_account_autosel, P_BOOL,
278 {"reedit_account_autoselect", "TRUE",
279 &prefs_common.reedit_account_autosel, P_BOOL,
282 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
286 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
289 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
294 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
296 {"reply_quote_format", NULL,
297 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
299 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
301 {"forward_quote_format", NULL, &prefs_common.fw_quotefmt, P_STRING,
303 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
307 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
308 {"widget_font", NULL,
309 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
310 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
311 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
312 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
313 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
314 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
315 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
317 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
321 {"widget_font_gtk2", NULL,
322 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
323 {"message_font_gtk2", "Monospace 9",
324 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
325 {"print_font_gtk2", "Monospace 9",
326 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
327 {"small_font_gtk2", "Sans 9",
328 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
329 {"normal_font_gtk2", "Sans 9",
330 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
331 {"bold_font_gtk2", "Sans Bold 9",
332 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
334 {"widget_font_gtk2", NULL,
335 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
336 {"message_font_gtk2", "Monospace 8",
337 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
338 {"print_font_gtk2", "Monospace 8",
339 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
340 {"small_font_gtk2", "Sans 8",
341 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
342 {"normal_font_gtk2", "Sans 8",
343 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
344 {"bold_font_gtk2", "Sans Bold 8",
345 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
348 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
350 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
354 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
356 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
358 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
360 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
362 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
364 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
366 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
368 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
370 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
372 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
374 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
376 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
378 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
380 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
382 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
384 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
386 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
388 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
390 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
392 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
394 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
396 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
398 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
400 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
402 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
404 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
406 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
408 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
410 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
412 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
416 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
418 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
420 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
423 {"display_folder_unread_num", "0",
424 &prefs_common.display_folder_unread, P_INT,
426 {"newsgroup_abbrev_len", "16",
427 &prefs_common.ng_abbrev_len, P_INT,
430 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
433 /* Display: Summary View */
434 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
436 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
438 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
439 P_STRING, NULL, NULL, NULL},
441 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
444 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
447 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
450 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
453 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
455 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
458 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
460 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
463 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
465 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
469 {"summary_col_show_mark", "TRUE",
470 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
471 {"summary_col_show_unread", "TRUE",
472 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
473 {"summary_col_show_subject", "TRUE",
474 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
475 {"summary_col_show_from", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_to", "FALSE",
478 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_date", "TRUE",
480 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_mime", "TRUE",
482 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_size", "TRUE",
484 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_number", "FALSE",
486 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_score", "FALSE",
488 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_locked", "FALSE",
490 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_tags", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
494 {"summary_col_pos_mark", "0",
495 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
496 {"summary_col_pos_unread", "1",
497 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
498 {"summary_col_pos_mime", "2",
499 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
500 {"summary_col_pos_subject", "3",
501 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_from", "4",
503 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_date", "5",
505 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_size", "6",
507 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_number", "7",
509 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_score", "8",
511 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_locked", "9",
513 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_to", "10",
515 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_tags", "11",
517 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
519 {"summary_col_size_mark", "10",
520 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
521 {"summary_col_size_unread", "13",
522 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
523 {"summary_col_size_mime", "10",
524 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
526 {"summary_col_size_subject", "200",
527 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
528 {"summary_col_size_from", "120",
529 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_to", "120",
531 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
533 {"summary_col_size_subject", "300",
534 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
535 {"summary_col_size_from", "150",
536 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_to", "150",
538 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_date", "118",
542 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_size", "45",
544 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_number", "40",
546 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_score", "40",
548 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_locked", "13",
550 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_tags", "150",
552 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
555 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
557 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
559 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
561 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
563 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
566 {"folder_col_show_folder", "TRUE",
567 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
568 {"folder_col_show_new", "TRUE",
569 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
570 {"folder_col_show_unread", "TRUE",
571 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
572 {"folder_col_show_total", "TRUE",
573 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
575 {"folder_col_pos_folder", "0",
576 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
577 {"folder_col_pos_new", "1",
578 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
579 {"folder_col_pos_unread", "2",
580 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
581 {"folder_col_pos_total", "3",
582 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
585 {"folder_col_size_folder", "120",
586 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
587 {"folder_col_size_new", "32",
588 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
589 {"folder_col_size_unread", "32",
590 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
591 {"folder_col_size_total", "32",
592 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
594 {"folder_col_size_folder", "400",
595 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
596 {"folder_col_size_new", "32",
597 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
598 {"folder_col_size_unread", "32",
599 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_total", "32",
601 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
603 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
605 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
608 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
610 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
612 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
614 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
616 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
619 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
621 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
623 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
625 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
627 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
629 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
631 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
634 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
636 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
638 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
640 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
642 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
644 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
646 {"compose_width", "600", &prefs_common.compose_width, P_INT,
648 {"compose_height", "560", &prefs_common.compose_height, P_INT,
651 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
653 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
655 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
657 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
659 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
661 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
663 {"compose_width", "700", &prefs_common.compose_width, P_INT,
665 {"compose_height", "470", &prefs_common.compose_height, P_INT,
668 {"compose_x", "0", &prefs_common.compose_x, P_INT,
670 {"compose_y", "0", &prefs_common.compose_y, P_INT,
673 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
676 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
678 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
680 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
682 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
684 {"quote_level1_bgcolor", "13421772", &prefs_common.quote_level1_bgcol, P_COLOR,
686 {"quote_level2_bgcolor", "13948116", &prefs_common.quote_level2_bgcol, P_COLOR,
688 {"quote_level3_bgcolor", "14540253", &prefs_common.quote_level3_bgcol, P_COLOR,
690 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
692 {"emphasis_color", "207", &prefs_common.emphasis_col, P_COLOR,
694 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
696 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
698 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
699 P_BOOL, NULL, NULL, NULL},
701 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
702 P_BOOL, NULL, NULL, NULL},
703 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
705 {"display_xface", "TRUE", &prefs_common.display_xface,
706 P_BOOL, NULL, NULL, NULL},
707 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
709 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
711 {"line_space", "2", &prefs_common.line_space, P_INT,
713 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
716 {"enable_smooth_scroll", "FALSE",
717 &prefs_common.enable_smooth_scroll, P_BOOL,
719 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
721 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
723 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
726 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
729 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
731 {"attach_save_directory", NULL,
732 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
733 {"attach_load_directory", NULL,
734 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
737 {"mime_textviewer", NULL,
738 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
739 {"mime_open_command", "gedit '%s'",
740 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
744 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
747 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
750 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
751 NULL, NULL, NULL}, */
752 {"always_show_message_when_selected", "FALSE",
753 &prefs_common.always_show_msg,
754 P_BOOL, NULL, NULL, NULL},
755 {"select_on_entry", "3", &prefs_common.select_on_entry,
756 P_ENUM, NULL, NULL, NULL},
757 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
758 P_BOOL, NULL, NULL, NULL},
760 /* do it SUMMARY_OPEN_ACTIONS-1 times */
761 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
763 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
765 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
767 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
769 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
771 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
773 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
776 {"mark_as_read_on_new_window", "FALSE",
777 &prefs_common.mark_as_read_on_new_window,
778 P_BOOL, NULL, NULL, NULL},
779 {"mark_as_read_delay", "0",
780 &prefs_common.mark_as_read_delay, P_INT,
782 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
784 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
787 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
788 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
791 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
794 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
796 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
800 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
801 P_BOOL, NULL, NULL, NULL},
802 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
803 P_INT, NULL, NULL, NULL},
804 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
805 P_INT, NULL, NULL, NULL},
808 {"uri_open_command", DEFAULT_BROWSER_CMD,
809 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
810 {"print_command", "lpr %s",
811 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
812 {"ext_editor_command", DEFAULT_EDITOR_CMD,
813 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
814 {"cmds_use_system_default", "FALSE",
815 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
816 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
817 P_BOOL, NULL, NULL, NULL},
818 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
820 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
822 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
824 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
825 P_BOOL, NULL, NULL, NULL},
826 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
828 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
831 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
834 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
838 #if defined(__OpenBSD__)
839 {"io_timeout_secs", "75", &prefs_common.io_timeout_secs,
840 P_INT, NULL, NULL, NULL},
842 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
843 P_INT, NULL, NULL, NULL},
845 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
847 {"important_score", "1", &prefs_common.important_score, P_INT,
850 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
852 {"log_length", "500", &prefs_common.loglength, P_INT,
855 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
857 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
859 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
861 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
864 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
866 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
868 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
870 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
873 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
875 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
877 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
879 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
881 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
883 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
885 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
887 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
890 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
892 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
894 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
896 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
898 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
900 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
902 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
904 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
906 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
909 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
912 {"color_new", "179", &prefs_common.color_new, P_COLOR,
915 /* Some windows' sizes */
916 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
918 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
921 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
923 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
926 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
928 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
931 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
933 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
936 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
938 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
941 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
943 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
946 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
948 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
951 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
953 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
956 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
958 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
961 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
963 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
966 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
968 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
971 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
973 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
976 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
979 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
981 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
984 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
986 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
989 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
991 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
994 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
996 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
999 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1001 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1004 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1006 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1009 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1011 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1015 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1017 {"utf8_instead_of_locale_for_broken_mail", "0",
1018 &prefs_common.broken_are_utf8, P_INT,
1020 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1022 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1024 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1026 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1028 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1030 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1032 {"folderview_vscrollbar_policy", "0",
1033 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1035 {"textview_cursor_visible", "FALSE",
1036 &prefs_common.textview_cursor_visible, P_BOOL,
1038 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1041 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1043 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1046 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1048 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1051 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1052 P_INT, NULL, NULL, NULL },
1053 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1054 P_STRING, NULL, NULL, NULL },
1055 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1056 P_BOOL, NULL, NULL, NULL },
1057 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1059 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1061 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1063 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1065 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1067 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1069 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1071 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1073 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1075 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1078 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1081 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1085 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1087 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1089 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1091 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1093 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1095 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1097 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1099 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1101 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1103 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1105 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1108 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1112 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1113 * Fallback to default_list if history file is not found
1115 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1116 GList *default_list)
1120 gchar buf[PREFSBUFSIZE];
1124 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1125 G_DIR_SEPARATOR_S, history,
1128 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1131 if ((fp = g_fopen(path, "rb")) == NULL) {
1132 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1134 /* returns default list if set, otherwise NULL */
1135 return default_list;
1138 while (fgets(buf, sizeof(buf), fp) != NULL) {
1140 if (buf[0] == '\0') continue;
1141 tmp = add_history(tmp, buf);
1145 tmp = g_list_reverse(tmp);
1151 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1153 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1155 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1159 * Read history list from the specified history file
1161 static GList *prefs_common_read_history(const gchar *history)
1163 return prefs_common_read_history_from_dir(NULL, history);
1166 void prefs_common_read_config(void)
1171 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1172 prefs_read_config(param, "Common", rcpath, NULL);
1174 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1179 tmp = g_strdup(gettext(prefs_common.date_format));
1180 g_free(prefs_common.date_format);
1181 prefs_common.date_format = tmp;
1183 prefs_common.mime_open_cmd_history =
1184 prefs_common_read_history(COMMAND_HISTORY);
1185 prefs_common.summary_quicksearch_history =
1186 prefs_common_read_history(QUICKSEARCH_HISTORY);
1187 prefs_common.summary_search_from_history =
1188 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1189 prefs_common.summary_search_to_history =
1190 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1191 prefs_common.summary_search_subject_history =
1192 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1193 prefs_common.summary_search_body_history =
1194 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1195 prefs_common.summary_search_adv_condition_history =
1196 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1197 prefs_common.message_search_history =
1198 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1200 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1202 colorlabel_update_colortable_from_prefs();
1208 g_warning("failed to write\n"); \
1213 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1215 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1219 gchar *path, *tmp_path;
1222 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1223 G_DIR_SEPARATOR_S, history,
1226 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1229 tmp_path = g_strconcat(path, ".tmp", NULL);
1231 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1232 FILE_OP_ERROR(tmp_path, "fopen");
1236 for (cur = list; cur != NULL; cur = cur->next) {
1237 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1238 fputc('\n', fp) != EOF);
1241 if (fclose(fp) == EOF) {
1242 FILE_OP_ERROR(tmp_path, "fclose");
1250 if (g_rename(tmp_path, path) < 0) {
1251 FILE_OP_ERROR(path, "rename");
1263 * Save history list to the specified history file
1265 static void prefs_common_save_history(const gchar *history, GList *list)
1267 prefs_common_save_history_to_dir(NULL, history, list);
1272 void prefs_common_write_config(void)
1274 prefs_write_config(param, "Common", COMMON_RC);
1276 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1279 prefs_common_save_history(COMMAND_HISTORY,
1280 prefs_common.mime_open_cmd_history);
1281 prefs_common_save_history(QUICKSEARCH_HISTORY,
1282 prefs_common.summary_quicksearch_history);
1283 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1284 prefs_common.summary_search_from_history);
1285 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1286 prefs_common.summary_search_to_history);
1287 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1288 prefs_common.summary_search_subject_history);
1289 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1290 prefs_common.summary_search_body_history);
1291 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1292 prefs_common.summary_search_adv_condition_history);
1293 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1294 prefs_common.message_search_history);
1296 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1297 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1298 prefs_common.addressbook_custom_attributes);
1301 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1302 both 'in' and 'out' must be non-NULL.
1303 'out' must be a pointer to a buffer whose size is at least equal
1304 to strlen(txt)+1, this buffer will get cleared. out's contents
1305 will always get set to a valid string, even if it's "".*/
1306 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1313 g_return_if_fail( in != NULL );
1314 g_return_if_fail( out != NULL );
1318 memset(out, 0, strlen(in)+1);
1319 while (*i != '\0') {
1320 if (*i == '\\' && *(i+1) == 'n') {
1323 } else if (*i == '\\' && *(i+1) == 't') {
1326 } else if (*i == '\\' && *(i+1) == '\\') {
1337 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1338 both 'in' and 'out' must be non-NULL.
1339 'out' must be a pointer to a buffer whose size is at least equal
1340 to 2*strlen(txt)+1. out's contents will always get set to a valid
1341 string, even if it's "". */
1342 void pref_get_escaped_pref(gchar *out, const gchar *in)
1349 g_return_if_fail( in != NULL );
1350 g_return_if_fail( out != NULL );
1354 while (*i != '\0') {
1358 } else if (*i == '\t') {
1361 } else if (*i == '\\') {
1372 /* set the contents of a textview widget from the internal \-escaped
1373 representation of a pref string. both txt and textview must be non-NULL. */
1374 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1376 GtkTextBuffer *buffer;
1379 g_return_if_fail( textview != NULL );
1381 buffer = gtk_text_view_get_buffer(textview);
1384 gtk_text_buffer_set_text(buffer, "", -1);
1386 out = malloc(strlen(txt)+1);
1388 pref_get_unescaped_pref(out, txt);
1390 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1395 /* set the contents of a gtkentry widget from the internal \-escaped
1396 representation of a pref string. both txt and entry must be non-NULL. */
1397 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1401 g_return_if_fail( entry != NULL );
1403 gtk_entry_set_text(entry, "");
1405 out = malloc(strlen(txt)+1);
1407 pref_get_unescaped_pref(out, txt);
1409 gtk_entry_set_text(entry, out?out:"");
1414 /* get the \-escaped internal representation of a pref from the contents of
1415 a textview widget. textview must be non-NULL. */
1416 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1418 GtkTextBuffer *buffer;
1419 GtkTextIter start, end;
1422 g_return_val_if_fail( textview != NULL, "" );
1424 buffer = gtk_text_view_get_buffer(textview);
1425 gtk_text_buffer_get_start_iter(buffer, &start);
1426 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1427 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1428 out = malloc(2*strlen(tmp)+1);
1430 pref_get_escaped_pref(out, tmp);
1436 /* get the \-escaped internal representation of a pref from the contents of
1437 a gtkentry widget. entry must be non-NULL. */
1438 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1442 g_return_val_if_fail( entry != NULL, "" );
1444 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1445 out = malloc(2*strlen(tmp)+1);
1447 pref_get_escaped_pref(out, tmp);
1453 /* ugly hack to be able to get this pref from ssl_certificate.c */
1454 gboolean prefs_common_unsafe_ssl_certs(void)
1456 return prefs_common.unsafe_ssl_certs;
1459 gboolean prefs_common_enable_log_standard(void)
1461 return prefs_common.enable_log_standard;
1464 gboolean prefs_common_enable_log_warning(void)
1466 return prefs_common.enable_log_warning;
1468 gboolean prefs_common_enable_log_error(void)
1470 return prefs_common.enable_log_error;
1472 gboolean prefs_common_enable_log_status(void)
1474 return prefs_common.enable_log_status;
1478 const gchar *prefs_common_get_data_root(void)
1480 if (prefs_common.data_root && *prefs_common.data_root)
1481 return prefs_common.data_root;
1487 return the translated name of a header, if the translate_header option is
1488 set, otherwise return the untranslated header name (header_name itself).
1489 this function is provided for convenience, it's an interface to
1490 prefs_common.trans_hdr.
1491 works with header names either with or without trailing colon, provided
1492 that gettext found such header name in the sources (they should all be
1493 found in src/gtk/headers.h anyway).
1495 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1497 if (header_name == NULL || *header_name == '\0')
1500 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1503 const gchar *prefs_common_get_uri_cmd(void)
1507 if (!prefs_common.cmds_use_system_default)
1508 return prefs_common.uri_cmd;
1510 tmp = g_find_program_in_path("xdg-open");
1512 return prefs_common.uri_cmd;
1515 return "xdg-open %s";
1518 const gchar *prefs_common_get_ext_editor_cmd(void)
1520 return prefs_common.ext_editor_cmd;
1521 #if 0 /* we should do that, but it detaches the editor and breaks
1522 compose.c's external composition. */
1525 if (!prefs_common.cmds_use_system_default)
1526 return prefs_common.ext_editor_cmd;
1528 tmp = g_find_program_in_path("xdg-open");
1530 return prefs_common.ext_editor_cmd;
1533 return "xdg-open %s";
1537 gboolean prefs_common_get_use_shred(void)
1539 return prefs_common.use_shred;