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 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1109 P_BOOL, NULL, NULL, NULL },
1111 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1115 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1116 * Fallback to default_list if history file is not found
1118 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1119 GList *default_list)
1123 gchar buf[PREFSBUFSIZE];
1127 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1128 G_DIR_SEPARATOR_S, history,
1131 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1134 if ((fp = g_fopen(path, "rb")) == NULL) {
1135 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1137 /* returns default list if set, otherwise NULL */
1138 return default_list;
1141 while (fgets(buf, sizeof(buf), fp) != NULL) {
1143 if (buf[0] == '\0') continue;
1144 tmp = add_history(tmp, buf);
1148 tmp = g_list_reverse(tmp);
1154 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1156 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1158 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1162 * Read history list from the specified history file
1164 static GList *prefs_common_read_history(const gchar *history)
1166 return prefs_common_read_history_from_dir(NULL, history);
1169 void prefs_common_read_config(void)
1174 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1175 prefs_read_config(param, "Common", rcpath, NULL);
1177 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1182 tmp = g_strdup(gettext(prefs_common.date_format));
1183 g_free(prefs_common.date_format);
1184 prefs_common.date_format = tmp;
1186 prefs_common.mime_open_cmd_history =
1187 prefs_common_read_history(COMMAND_HISTORY);
1188 prefs_common.summary_quicksearch_history =
1189 prefs_common_read_history(QUICKSEARCH_HISTORY);
1190 prefs_common.summary_search_from_history =
1191 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1192 prefs_common.summary_search_to_history =
1193 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1194 prefs_common.summary_search_subject_history =
1195 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1196 prefs_common.summary_search_body_history =
1197 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1198 prefs_common.summary_search_adv_condition_history =
1199 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1200 prefs_common.message_search_history =
1201 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1203 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1205 colorlabel_update_colortable_from_prefs();
1211 g_warning("failed to write\n"); \
1216 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1218 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1222 gchar *path, *tmp_path;
1225 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1226 G_DIR_SEPARATOR_S, history,
1229 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1232 tmp_path = g_strconcat(path, ".tmp", NULL);
1234 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1235 FILE_OP_ERROR(tmp_path, "fopen");
1239 for (cur = list; cur != NULL; cur = cur->next) {
1240 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1241 fputc('\n', fp) != EOF);
1244 if (fclose(fp) == EOF) {
1245 FILE_OP_ERROR(tmp_path, "fclose");
1253 if (g_rename(tmp_path, path) < 0) {
1254 FILE_OP_ERROR(path, "rename");
1266 * Save history list to the specified history file
1268 static void prefs_common_save_history(const gchar *history, GList *list)
1270 prefs_common_save_history_to_dir(NULL, history, list);
1275 void prefs_common_write_config(void)
1277 prefs_write_config(param, "Common", COMMON_RC);
1279 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1282 prefs_common_save_history(COMMAND_HISTORY,
1283 prefs_common.mime_open_cmd_history);
1284 prefs_common_save_history(QUICKSEARCH_HISTORY,
1285 prefs_common.summary_quicksearch_history);
1286 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1287 prefs_common.summary_search_from_history);
1288 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1289 prefs_common.summary_search_to_history);
1290 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1291 prefs_common.summary_search_subject_history);
1292 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1293 prefs_common.summary_search_body_history);
1294 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1295 prefs_common.summary_search_adv_condition_history);
1296 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1297 prefs_common.message_search_history);
1299 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1300 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1301 prefs_common.addressbook_custom_attributes);
1304 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1305 both 'in' and 'out' must be non-NULL.
1306 'out' must be a pointer to a buffer whose size is at least equal
1307 to strlen(txt)+1, this buffer will get cleared. out's contents
1308 will always get set to a valid string, even if it's "".*/
1309 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1316 g_return_if_fail( in != NULL );
1317 g_return_if_fail( out != NULL );
1321 memset(out, 0, strlen(in)+1);
1322 while (*i != '\0') {
1323 if (*i == '\\' && *(i+1) == 'n') {
1326 } else if (*i == '\\' && *(i+1) == 't') {
1329 } else if (*i == '\\' && *(i+1) == '\\') {
1340 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1341 both 'in' and 'out' must be non-NULL.
1342 'out' must be a pointer to a buffer whose size is at least equal
1343 to 2*strlen(txt)+1. out's contents will always get set to a valid
1344 string, even if it's "". */
1345 void pref_get_escaped_pref(gchar *out, const gchar *in)
1352 g_return_if_fail( in != NULL );
1353 g_return_if_fail( out != NULL );
1357 while (*i != '\0') {
1361 } else if (*i == '\t') {
1364 } else if (*i == '\\') {
1375 /* set the contents of a textview widget from the internal \-escaped
1376 representation of a pref string. both txt and textview must be non-NULL. */
1377 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1379 GtkTextBuffer *buffer;
1382 g_return_if_fail( textview != NULL );
1384 buffer = gtk_text_view_get_buffer(textview);
1387 gtk_text_buffer_set_text(buffer, "", -1);
1389 out = malloc(strlen(txt)+1);
1391 pref_get_unescaped_pref(out, txt);
1393 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1398 /* set the contents of a gtkentry widget from the internal \-escaped
1399 representation of a pref string. both txt and entry must be non-NULL. */
1400 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1404 g_return_if_fail( entry != NULL );
1406 gtk_entry_set_text(entry, "");
1408 out = malloc(strlen(txt)+1);
1410 pref_get_unescaped_pref(out, txt);
1412 gtk_entry_set_text(entry, out?out:"");
1417 /* get the \-escaped internal representation of a pref from the contents of
1418 a textview widget. textview must be non-NULL. */
1419 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1421 GtkTextBuffer *buffer;
1422 GtkTextIter start, end;
1425 g_return_val_if_fail( textview != NULL, "" );
1427 buffer = gtk_text_view_get_buffer(textview);
1428 gtk_text_buffer_get_start_iter(buffer, &start);
1429 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1430 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1431 out = malloc(2*strlen(tmp)+1);
1433 pref_get_escaped_pref(out, tmp);
1439 /* get the \-escaped internal representation of a pref from the contents of
1440 a gtkentry widget. entry must be non-NULL. */
1441 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1445 g_return_val_if_fail( entry != NULL, "" );
1447 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1448 out = malloc(2*strlen(tmp)+1);
1450 pref_get_escaped_pref(out, tmp);
1456 /* ugly hack to be able to get this pref from ssl_certificate.c */
1457 gboolean prefs_common_unsafe_ssl_certs(void)
1459 return prefs_common.unsafe_ssl_certs;
1462 gboolean prefs_common_enable_log_standard(void)
1464 return prefs_common.enable_log_standard;
1467 gboolean prefs_common_enable_log_warning(void)
1469 return prefs_common.enable_log_warning;
1471 gboolean prefs_common_enable_log_error(void)
1473 return prefs_common.enable_log_error;
1475 gboolean prefs_common_enable_log_status(void)
1477 return prefs_common.enable_log_status;
1481 const gchar *prefs_common_get_data_root(void)
1483 if (prefs_common.data_root && *prefs_common.data_root)
1484 return prefs_common.data_root;
1490 return the translated name of a header, if the translate_header option is
1491 set, otherwise return the untranslated header name (header_name itself).
1492 this function is provided for convenience, it's an interface to
1493 prefs_common.trans_hdr.
1494 works with header names either with or without trailing colon, provided
1495 that gettext found such header name in the sources (they should all be
1496 found in src/gtk/headers.h anyway).
1498 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1500 if (header_name == NULL || *header_name == '\0')
1503 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1506 const gchar *prefs_common_get_uri_cmd(void)
1510 if (!prefs_common.cmds_use_system_default)
1511 return prefs_common.uri_cmd;
1513 tmp = g_find_program_in_path("xdg-open");
1515 return prefs_common.uri_cmd;
1518 return "xdg-open %s";
1521 const gchar *prefs_common_get_ext_editor_cmd(void)
1523 return prefs_common.ext_editor_cmd;
1524 #if 0 /* we should do that, but it detaches the editor and breaks
1525 compose.c's external composition. */
1528 if (!prefs_common.cmds_use_system_default)
1529 return prefs_common.ext_editor_cmd;
1531 tmp = g_find_program_in_path("xdg-open");
1533 return prefs_common.ext_editor_cmd;
1536 return "xdg-open %s";
1540 gboolean prefs_common_get_use_shred(void)
1542 return prefs_common.use_shred;