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", N_("Hello,\\n"),
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", N_("On %d\\n%f wrote:\\n\\n%q"),
297 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
299 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
301 {"forward_quote_format",
302 N_("\\n\\nBegin forwarded message:\\n\\n"
303 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
304 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
305 &prefs_common.fw_quotefmt, P_STRING,
307 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
311 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
312 {"widget_font", NULL,
313 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
314 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
315 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
317 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
318 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
319 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
320 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
321 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
325 {"widget_font_gtk2", NULL,
326 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
327 {"message_font_gtk2", "Monospace 9",
328 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
329 {"print_font_gtk2", "Monospace 9",
330 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
331 {"small_font_gtk2", "Sans 9",
332 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
333 {"normal_font_gtk2", "Sans 9",
334 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
335 {"bold_font_gtk2", "Sans Bold 9",
336 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
338 {"widget_font_gtk2", NULL,
339 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
340 {"message_font_gtk2", "Monospace 8",
341 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
342 {"print_font_gtk2", "Monospace 8",
343 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
344 {"small_font_gtk2", "Sans 8",
345 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
346 {"normal_font_gtk2", "Sans 8",
347 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
348 {"bold_font_gtk2", "Sans Bold 8",
349 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
352 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
354 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
358 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
360 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
362 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
364 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
366 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
368 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
370 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
372 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
374 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
376 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
378 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
380 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
382 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
384 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
386 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
388 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
390 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
392 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
394 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
396 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
398 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
400 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
402 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
404 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
406 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
408 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
410 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
412 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
414 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
416 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
420 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
422 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
424 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
427 {"display_folder_unread_num", "0",
428 &prefs_common.display_folder_unread, P_INT,
430 {"newsgroup_abbrev_len", "16",
431 &prefs_common.ng_abbrev_len, P_INT,
434 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
437 /* Display: Summary View */
438 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
440 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
442 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
443 P_STRING, NULL, NULL, NULL},
445 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
448 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
451 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
454 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
457 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
459 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
462 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
464 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
467 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
469 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
473 {"summary_col_show_mark", "TRUE",
474 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
475 {"summary_col_show_unread", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_subject", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_from", "TRUE",
480 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_to", "FALSE",
482 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_date", "TRUE",
484 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_mime", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_size", "TRUE",
488 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_number", "FALSE",
490 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_score", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_locked", "FALSE",
494 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_tags", "FALSE",
496 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
498 {"summary_col_pos_mark", "0",
499 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
500 {"summary_col_pos_unread", "1",
501 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_mime", "2",
503 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_subject", "3",
505 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_from", "4",
507 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_date", "5",
509 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_size", "6",
511 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_number", "7",
513 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_score", "8",
515 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_locked", "9",
517 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
518 {"summary_col_pos_to", "10",
519 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_tags", "11",
521 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
523 {"summary_col_size_mark", "10",
524 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
525 {"summary_col_size_unread", "13",
526 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
527 {"summary_col_size_mime", "10",
528 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_subject", "200",
531 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_from", "120",
533 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_to", "120",
535 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_subject", "300",
538 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_from", "150",
540 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_to", "150",
542 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_date", "118",
546 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_size", "45",
548 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_number", "40",
550 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_score", "40",
552 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_locked", "13",
554 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
555 {"summary_col_size_tags", "150",
556 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
559 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
561 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
563 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
565 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
567 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
570 {"folder_col_show_folder", "TRUE",
571 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
572 {"folder_col_show_new", "TRUE",
573 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
574 {"folder_col_show_unread", "TRUE",
575 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
576 {"folder_col_show_total", "TRUE",
577 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
579 {"folder_col_pos_folder", "0",
580 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
581 {"folder_col_pos_new", "1",
582 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
583 {"folder_col_pos_unread", "2",
584 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
585 {"folder_col_pos_total", "3",
586 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
589 {"folder_col_size_folder", "120",
590 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
591 {"folder_col_size_new", "32",
592 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
593 {"folder_col_size_unread", "32",
594 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
595 {"folder_col_size_total", "32",
596 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
598 {"folder_col_size_folder", "400",
599 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_new", "32",
601 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
602 {"folder_col_size_unread", "32",
603 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
604 {"folder_col_size_total", "32",
605 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
607 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
609 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
612 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
614 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
616 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
618 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
620 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
623 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
625 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
627 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
629 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
631 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
633 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
635 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
638 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
640 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
642 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
644 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
646 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
648 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
650 {"compose_width", "600", &prefs_common.compose_width, P_INT,
652 {"compose_height", "560", &prefs_common.compose_height, P_INT,
655 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
657 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
659 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
661 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
663 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
665 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
667 {"compose_width", "700", &prefs_common.compose_width, P_INT,
669 {"compose_height", "470", &prefs_common.compose_height, P_INT,
672 {"compose_x", "0", &prefs_common.compose_x, P_INT,
674 {"compose_y", "0", &prefs_common.compose_y, P_INT,
677 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
680 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
682 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
684 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
686 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
688 {"quote_level1_bgcolor", "13421772", &prefs_common.quote_level1_bgcol, P_COLOR,
690 {"quote_level2_bgcolor", "13948116", &prefs_common.quote_level2_bgcol, P_COLOR,
692 {"quote_level3_bgcolor", "14540253", &prefs_common.quote_level3_bgcol, P_COLOR,
694 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
696 {"emphasis_color", "207", &prefs_common.emphasis_col, P_COLOR,
698 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
700 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
702 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
703 P_BOOL, NULL, NULL, NULL},
705 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
706 P_BOOL, NULL, NULL, NULL},
707 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
709 {"display_xface", "TRUE", &prefs_common.display_xface,
710 P_BOOL, NULL, NULL, NULL},
711 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
713 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
715 {"line_space", "2", &prefs_common.line_space, P_INT,
717 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
720 {"enable_smooth_scroll", "FALSE",
721 &prefs_common.enable_smooth_scroll, P_BOOL,
723 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
725 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
727 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
730 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
733 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
735 {"attach_save_directory", NULL,
736 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
737 {"attach_load_directory", NULL,
738 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
741 {"mime_textviewer", NULL,
742 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
743 {"mime_open_command", "gedit '%s'",
744 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
748 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
751 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
754 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
755 NULL, NULL, NULL}, */
756 {"always_show_message_when_selected", "FALSE",
757 &prefs_common.always_show_msg,
758 P_BOOL, NULL, NULL, NULL},
759 {"select_on_entry", "3", &prefs_common.select_on_entry,
760 P_ENUM, NULL, NULL, NULL},
761 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
762 P_BOOL, NULL, NULL, NULL},
764 /* do it SUMMARY_OPEN_ACTIONS-1 times */
765 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
767 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
769 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
771 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
773 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
775 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
777 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
780 {"mark_as_read_on_new_window", "FALSE",
781 &prefs_common.mark_as_read_on_new_window,
782 P_BOOL, NULL, NULL, NULL},
783 {"mark_as_read_delay", "0",
784 &prefs_common.mark_as_read_delay, P_INT,
786 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
788 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
791 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
792 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
795 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
798 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
800 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
804 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
805 P_BOOL, NULL, NULL, NULL},
806 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
807 P_INT, NULL, NULL, NULL},
808 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
809 P_INT, NULL, NULL, NULL},
812 {"uri_open_command", DEFAULT_BROWSER_CMD,
813 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
814 {"print_command", "lpr %s",
815 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
816 {"ext_editor_command", DEFAULT_EDITOR_CMD,
817 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
818 {"cmds_use_system_default", "FALSE",
819 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
820 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
821 P_BOOL, NULL, NULL, NULL},
822 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
824 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
826 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
828 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
829 P_BOOL, NULL, NULL, NULL},
830 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
832 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
835 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
838 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
842 #if defined(__OpenBSD__)
843 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
844 P_INT, NULL, NULL, NULL},
846 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
847 P_INT, NULL, NULL, NULL},
849 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
851 {"important_score", "1", &prefs_common.important_score, P_INT,
854 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
856 {"log_length", "500", &prefs_common.loglength, P_INT,
859 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
861 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
863 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
865 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
868 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
870 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
872 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
874 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
877 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
879 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
881 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
883 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
885 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
887 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
889 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
891 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
894 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
896 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
898 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
900 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
902 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
904 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
906 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
908 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
910 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
913 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
916 {"color_new", "179", &prefs_common.color_new, P_COLOR,
919 /* Some windows' sizes */
920 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
922 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
925 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
927 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
930 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
932 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
935 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
937 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
940 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
942 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
945 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
947 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
950 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
952 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
955 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
957 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
960 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
962 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
965 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
967 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
970 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
972 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
975 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
977 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
980 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
983 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
985 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
988 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
990 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
993 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
995 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
998 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1000 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1003 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1005 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1008 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1010 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1013 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1015 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1019 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1021 {"utf8_instead_of_locale_for_broken_mail", "0",
1022 &prefs_common.broken_are_utf8, P_INT,
1024 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1026 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1028 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1030 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1032 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1034 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1036 {"folderview_vscrollbar_policy", "0",
1037 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1039 {"textview_cursor_visible", "FALSE",
1040 &prefs_common.textview_cursor_visible, P_BOOL,
1042 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1045 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1047 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1050 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1052 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1055 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1056 P_INT, NULL, NULL, NULL },
1057 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1058 P_STRING, NULL, NULL, NULL },
1059 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1060 P_BOOL, NULL, NULL, NULL },
1061 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1063 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1065 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1067 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1069 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1071 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1073 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1075 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1077 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1079 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1082 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1085 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1089 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1091 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1093 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1095 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1097 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1099 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1101 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1103 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1105 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1107 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1109 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1112 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1113 P_BOOL, NULL, NULL, NULL },
1115 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1119 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1120 * Fallback to default_list if history file is not found
1122 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1123 GList *default_list)
1127 gchar buf[PREFSBUFSIZE];
1131 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1132 G_DIR_SEPARATOR_S, history,
1135 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1138 if ((fp = g_fopen(path, "rb")) == NULL) {
1139 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1141 /* returns default list if set, otherwise NULL */
1142 return default_list;
1145 while (fgets(buf, sizeof(buf), fp) != NULL) {
1147 if (buf[0] == '\0') continue;
1148 tmp = add_history(tmp, buf);
1152 tmp = g_list_reverse(tmp);
1158 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1160 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1162 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1166 * Read history list from the specified history file
1168 static GList *prefs_common_read_history(const gchar *history)
1170 return prefs_common_read_history_from_dir(NULL, history);
1173 void prefs_common_read_config(void)
1178 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1179 prefs_read_config(param, "Common", rcpath, NULL);
1181 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1186 tmp = g_strdup(gettext(prefs_common.date_format));
1187 g_free(prefs_common.date_format);
1188 prefs_common.date_format = tmp;
1190 prefs_common.mime_open_cmd_history =
1191 prefs_common_read_history(COMMAND_HISTORY);
1192 prefs_common.summary_quicksearch_history =
1193 prefs_common_read_history(QUICKSEARCH_HISTORY);
1194 prefs_common.summary_search_from_history =
1195 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1196 prefs_common.summary_search_to_history =
1197 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1198 prefs_common.summary_search_subject_history =
1199 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1200 prefs_common.summary_search_body_history =
1201 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1202 prefs_common.summary_search_adv_condition_history =
1203 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1204 prefs_common.message_search_history =
1205 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1207 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1209 colorlabel_update_colortable_from_prefs();
1215 g_warning("failed to write\n"); \
1220 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1222 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1226 gchar *path, *tmp_path;
1229 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1230 G_DIR_SEPARATOR_S, history,
1233 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1236 tmp_path = g_strconcat(path, ".tmp", NULL);
1238 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1239 FILE_OP_ERROR(tmp_path, "fopen");
1243 for (cur = list; cur != NULL; cur = cur->next) {
1244 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1245 fputc('\n', fp) != EOF);
1248 if (fclose(fp) == EOF) {
1249 FILE_OP_ERROR(tmp_path, "fclose");
1257 if (g_rename(tmp_path, path) < 0) {
1258 FILE_OP_ERROR(path, "rename");
1270 * Save history list to the specified history file
1272 static void prefs_common_save_history(const gchar *history, GList *list)
1274 prefs_common_save_history_to_dir(NULL, history, list);
1279 void prefs_common_write_config(void)
1281 prefs_write_config(param, "Common", COMMON_RC);
1283 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1286 prefs_common_save_history(COMMAND_HISTORY,
1287 prefs_common.mime_open_cmd_history);
1288 prefs_common_save_history(QUICKSEARCH_HISTORY,
1289 prefs_common.summary_quicksearch_history);
1290 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1291 prefs_common.summary_search_from_history);
1292 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1293 prefs_common.summary_search_to_history);
1294 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1295 prefs_common.summary_search_subject_history);
1296 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1297 prefs_common.summary_search_body_history);
1298 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1299 prefs_common.summary_search_adv_condition_history);
1300 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1301 prefs_common.message_search_history);
1303 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1304 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1305 prefs_common.addressbook_custom_attributes);
1308 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1309 both 'in' and 'out' must be non-NULL.
1310 'out' must be a pointer to a buffer whose size is at least equal
1311 to strlen(txt)+1, this buffer will get cleared. out's contents
1312 will always get set to a valid string, even if it's "".*/
1313 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1320 g_return_if_fail( in != NULL );
1321 g_return_if_fail( out != NULL );
1325 memset(out, 0, strlen(in)+1);
1326 while (*i != '\0') {
1327 if (*i == '\\' && *(i+1) == 'n') {
1330 } else if (*i == '\\' && *(i+1) == 't') {
1333 } else if (*i == '\\' && *(i+1) == '\\') {
1344 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1345 both 'in' and 'out' must be non-NULL.
1346 'out' must be a pointer to a buffer whose size is at least equal
1347 to 2*strlen(txt)+1. out's contents will always get set to a valid
1348 string, even if it's "". */
1349 void pref_get_escaped_pref(gchar *out, const gchar *in)
1356 g_return_if_fail( in != NULL );
1357 g_return_if_fail( out != NULL );
1361 while (*i != '\0') {
1365 } else if (*i == '\t') {
1368 } else if (*i == '\\') {
1379 /* set the contents of a textview widget from the internal \-escaped
1380 representation of a pref string. both txt and textview must be non-NULL. */
1381 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1383 GtkTextBuffer *buffer;
1386 g_return_if_fail( textview != NULL );
1388 buffer = gtk_text_view_get_buffer(textview);
1391 gtk_text_buffer_set_text(buffer, "", -1);
1393 out = malloc(strlen(txt)+1);
1395 pref_get_unescaped_pref(out, txt);
1397 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1402 /* set the contents of a gtkentry widget from the internal \-escaped
1403 representation of a pref string. both txt and entry must be non-NULL. */
1404 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1408 g_return_if_fail( entry != NULL );
1410 gtk_entry_set_text(entry, "");
1412 out = malloc(strlen(txt)+1);
1414 pref_get_unescaped_pref(out, txt);
1416 gtk_entry_set_text(entry, out?out:"");
1421 /* get the \-escaped internal representation of a pref from the contents of
1422 a textview widget. textview must be non-NULL. */
1423 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1425 GtkTextBuffer *buffer;
1426 GtkTextIter start, end;
1429 g_return_val_if_fail( textview != NULL, "" );
1431 buffer = gtk_text_view_get_buffer(textview);
1432 gtk_text_buffer_get_start_iter(buffer, &start);
1433 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1434 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1435 out = malloc(2*strlen(tmp)+1);
1437 pref_get_escaped_pref(out, tmp);
1443 /* get the \-escaped internal representation of a pref from the contents of
1444 a gtkentry widget. entry must be non-NULL. */
1445 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1449 g_return_val_if_fail( entry != NULL, "" );
1451 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1452 out = malloc(2*strlen(tmp)+1);
1454 pref_get_escaped_pref(out, tmp);
1460 /* ugly hack to be able to get this pref from ssl_certificate.c */
1461 gboolean prefs_common_unsafe_ssl_certs(void)
1463 return prefs_common.unsafe_ssl_certs;
1466 gboolean prefs_common_enable_log_standard(void)
1468 return prefs_common.enable_log_standard;
1471 gboolean prefs_common_enable_log_warning(void)
1473 return prefs_common.enable_log_warning;
1475 gboolean prefs_common_enable_log_error(void)
1477 return prefs_common.enable_log_error;
1479 gboolean prefs_common_enable_log_status(void)
1481 return prefs_common.enable_log_status;
1485 const gchar *prefs_common_get_data_root(void)
1487 if (prefs_common.data_root && *prefs_common.data_root)
1488 return prefs_common.data_root;
1494 return the translated name of a header, if the translate_header option is
1495 set, otherwise return the untranslated header name (header_name itself).
1496 this function is provided for convenience, it's an interface to
1497 prefs_common.trans_hdr.
1498 works with header names either with or without trailing colon, provided
1499 that gettext found such header name in the sources (they should all be
1500 found in src/gtk/headers.h anyway).
1502 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1504 if (header_name == NULL || *header_name == '\0')
1507 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1510 const gchar *prefs_common_get_uri_cmd(void)
1514 if (!prefs_common.cmds_use_system_default)
1515 return prefs_common.uri_cmd;
1517 tmp = g_find_program_in_path("xdg-open");
1519 return prefs_common.uri_cmd;
1522 return "xdg-open %s";
1525 const gchar *prefs_common_get_ext_editor_cmd(void)
1527 return prefs_common.ext_editor_cmd;
1528 #if 0 /* we should do that, but it detaches the editor and breaks
1529 compose.c's external composition. */
1532 if (!prefs_common.cmds_use_system_default)
1533 return prefs_common.ext_editor_cmd;
1535 tmp = g_find_program_in_path("xdg-open");
1537 return prefs_common.ext_editor_cmd;
1540 return "xdg-open %s";
1544 gboolean prefs_common_get_use_shred(void)
1546 return prefs_common.use_shred;