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, NULL, NULL, NULL},
306 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
310 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
311 {"widget_font", NULL,
312 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
313 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
314 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
315 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
316 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
317 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
318 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
319 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
320 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
324 {"widget_font_gtk2", NULL,
325 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
326 {"message_font_gtk2", "Monospace 9",
327 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
328 {"print_font_gtk2", "Monospace 9",
329 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
330 {"small_font_gtk2", "Sans 9",
331 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
332 {"normal_font_gtk2", "Sans 9",
333 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
334 {"bold_font_gtk2", "Sans Bold 9",
335 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
337 {"widget_font_gtk2", NULL,
338 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
339 {"message_font_gtk2", "Monospace 8",
340 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
341 {"print_font_gtk2", "Monospace 8",
342 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
343 {"small_font_gtk2", "Sans 8",
344 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
345 {"normal_font_gtk2", "Sans 8",
346 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
347 {"bold_font_gtk2", "Sans Bold 8",
348 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
351 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
353 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
357 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
359 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
361 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
363 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
365 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
367 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
369 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
371 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
373 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
375 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
377 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
379 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
381 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
383 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
385 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
387 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
389 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
391 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
393 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
395 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
397 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
399 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
401 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
403 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
405 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
407 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
409 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
411 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
413 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
415 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
419 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
421 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
423 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
426 {"display_folder_unread_num", "0",
427 &prefs_common.display_folder_unread, P_INT,
429 {"newsgroup_abbrev_len", "16",
430 &prefs_common.ng_abbrev_len, P_INT,
433 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
436 /* Display: Summary View */
437 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
439 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
441 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
442 P_STRING, NULL, NULL, NULL},
444 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
447 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
450 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
453 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
456 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
458 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
461 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
463 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
466 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
468 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
472 {"summary_col_show_mark", "TRUE",
473 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
474 {"summary_col_show_unread", "TRUE",
475 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
476 {"summary_col_show_subject", "TRUE",
477 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
478 {"summary_col_show_from", "TRUE",
479 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
480 {"summary_col_show_to", "FALSE",
481 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
482 {"summary_col_show_date", "TRUE",
483 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
484 {"summary_col_show_mime", "TRUE",
485 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
486 {"summary_col_show_size", "TRUE",
487 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
488 {"summary_col_show_number", "FALSE",
489 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
490 {"summary_col_show_score", "FALSE",
491 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
492 {"summary_col_show_locked", "FALSE",
493 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
494 {"summary_col_show_tags", "FALSE",
495 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_pos_mark", "0",
498 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
499 {"summary_col_pos_unread", "1",
500 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
501 {"summary_col_pos_mime", "2",
502 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
503 {"summary_col_pos_subject", "3",
504 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
505 {"summary_col_pos_from", "4",
506 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
507 {"summary_col_pos_date", "5",
508 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
509 {"summary_col_pos_size", "6",
510 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
511 {"summary_col_pos_number", "7",
512 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
513 {"summary_col_pos_score", "8",
514 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
515 {"summary_col_pos_locked", "9",
516 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
517 {"summary_col_pos_to", "10",
518 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
519 {"summary_col_pos_tags", "11",
520 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
522 {"summary_col_size_mark", "10",
523 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
524 {"summary_col_size_unread", "13",
525 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
526 {"summary_col_size_mime", "10",
527 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
529 {"summary_col_size_subject", "200",
530 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
531 {"summary_col_size_from", "120",
532 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
533 {"summary_col_size_to", "120",
534 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
536 {"summary_col_size_subject", "300",
537 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
538 {"summary_col_size_from", "150",
539 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
540 {"summary_col_size_to", "150",
541 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
544 {"summary_col_size_date", "118",
545 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_size", "45",
547 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
548 {"summary_col_size_number", "40",
549 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
550 {"summary_col_size_score", "40",
551 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
552 {"summary_col_size_locked", "13",
553 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
554 {"summary_col_size_tags", "150",
555 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
558 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
560 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
562 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
564 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
566 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
569 {"folder_col_show_folder", "TRUE",
570 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
571 {"folder_col_show_new", "TRUE",
572 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
573 {"folder_col_show_unread", "TRUE",
574 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
575 {"folder_col_show_total", "TRUE",
576 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
578 {"folder_col_pos_folder", "0",
579 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
580 {"folder_col_pos_new", "1",
581 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
582 {"folder_col_pos_unread", "2",
583 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
584 {"folder_col_pos_total", "3",
585 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
588 {"folder_col_size_folder", "120",
589 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
590 {"folder_col_size_new", "32",
591 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
592 {"folder_col_size_unread", "32",
593 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
594 {"folder_col_size_total", "32",
595 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
597 {"folder_col_size_folder", "400",
598 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
599 {"folder_col_size_new", "32",
600 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
601 {"folder_col_size_unread", "32",
602 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
603 {"folder_col_size_total", "32",
604 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
606 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
608 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
611 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
613 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
615 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
617 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
619 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
622 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
624 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
626 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
628 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
630 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
632 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
634 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
637 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
639 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
641 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
643 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
645 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
647 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
649 {"compose_width", "600", &prefs_common.compose_width, P_INT,
651 {"compose_height", "560", &prefs_common.compose_height, P_INT,
654 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
656 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
658 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
660 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
662 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
664 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
666 {"compose_width", "700", &prefs_common.compose_width, P_INT,
668 {"compose_height", "470", &prefs_common.compose_height, P_INT,
671 {"compose_x", "0", &prefs_common.compose_x, P_INT,
673 {"compose_y", "0", &prefs_common.compose_y, P_INT,
676 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
679 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
681 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
683 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
685 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
687 {"quote_level1_bgcolor", "13421772", &prefs_common.quote_level1_bgcol, P_COLOR,
689 {"quote_level2_bgcolor", "13948116", &prefs_common.quote_level2_bgcol, P_COLOR,
691 {"quote_level3_bgcolor", "14540253", &prefs_common.quote_level3_bgcol, P_COLOR,
693 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
695 {"emphasis_color", "207", &prefs_common.emphasis_col, P_COLOR,
697 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
699 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
701 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
702 P_BOOL, NULL, NULL, NULL},
704 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
705 P_BOOL, NULL, NULL, NULL},
706 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
708 {"display_xface", "TRUE", &prefs_common.display_xface,
709 P_BOOL, NULL, NULL, NULL},
710 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
712 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
714 {"line_space", "2", &prefs_common.line_space, P_INT,
716 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
719 {"enable_smooth_scroll", "FALSE",
720 &prefs_common.enable_smooth_scroll, P_BOOL,
722 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
724 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
726 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
729 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
732 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
734 {"attach_save_directory", NULL,
735 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
736 {"attach_load_directory", NULL,
737 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
740 {"mime_textviewer", NULL,
741 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
742 {"mime_open_command", "gedit '%s'",
743 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
747 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
750 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
753 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
754 NULL, NULL, NULL}, */
755 {"always_show_message_when_selected", "FALSE",
756 &prefs_common.always_show_msg,
757 P_BOOL, NULL, NULL, NULL},
758 {"select_on_entry", "3", &prefs_common.select_on_entry,
759 P_ENUM, NULL, NULL, NULL},
760 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
761 P_BOOL, NULL, NULL, NULL},
763 /* do it SUMMARY_OPEN_ACTIONS-1 times */
764 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
766 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
768 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
770 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
772 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
774 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
776 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
779 {"mark_as_read_on_new_window", "FALSE",
780 &prefs_common.mark_as_read_on_new_window,
781 P_BOOL, NULL, NULL, NULL},
782 {"mark_as_read_delay", "0",
783 &prefs_common.mark_as_read_delay, P_INT,
785 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
787 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
790 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
791 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
794 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
797 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
799 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
803 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
804 P_BOOL, NULL, NULL, NULL},
805 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
806 P_INT, NULL, NULL, NULL},
807 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
808 P_INT, NULL, NULL, NULL},
811 {"uri_open_command", DEFAULT_BROWSER_CMD,
812 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
813 {"print_command", "lpr %s",
814 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
815 {"ext_editor_command", DEFAULT_EDITOR_CMD,
816 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
817 {"cmds_use_system_default", "FALSE",
818 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
819 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
820 P_BOOL, NULL, NULL, NULL},
821 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
823 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
825 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
827 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
828 P_BOOL, NULL, NULL, NULL},
829 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
831 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
834 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
837 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
841 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
842 P_INT, NULL, NULL, NULL},
843 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
845 {"important_score", "1", &prefs_common.important_score, P_INT,
848 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
850 {"log_length", "500", &prefs_common.loglength, P_INT,
853 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
855 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
857 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
859 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
862 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
864 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
866 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
868 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
871 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
873 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
875 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
877 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
879 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
881 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
883 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
885 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
888 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
890 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
892 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
894 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
896 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
898 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
900 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
902 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
904 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
907 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
910 {"color_new", "179", &prefs_common.color_new, P_COLOR,
913 /* Some windows' sizes */
914 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
916 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
919 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
921 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
924 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
926 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
929 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
931 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
934 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
936 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
939 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
941 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
944 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
946 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
949 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
951 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
954 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
956 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
959 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
961 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
964 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
966 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
969 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
971 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
974 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
977 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
979 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
982 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
984 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
987 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
989 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
992 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
994 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
997 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
999 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1002 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1004 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1007 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1009 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1013 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1015 {"utf8_instead_of_locale_for_broken_mail", "0",
1016 &prefs_common.broken_are_utf8, P_INT,
1018 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1020 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1022 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1024 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1026 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1028 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1030 {"folderview_vscrollbar_policy", "0",
1031 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1033 {"textview_cursor_visible", "FALSE",
1034 &prefs_common.textview_cursor_visible, P_BOOL,
1036 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1039 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1041 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1044 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1046 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1049 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1050 P_INT, NULL, NULL, NULL },
1051 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1052 P_STRING, NULL, NULL, NULL },
1053 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1054 P_BOOL, NULL, NULL, NULL },
1055 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1057 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1059 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1061 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1063 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1065 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1067 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1069 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1071 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1073 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1076 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1079 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1083 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1085 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1087 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1089 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1091 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1093 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1095 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1097 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1099 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1102 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1106 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1107 * Fallback to default_list if history file is not found
1109 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1110 GList *default_list)
1114 gchar buf[PREFSBUFSIZE];
1118 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1119 G_DIR_SEPARATOR_S, history,
1122 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1125 if ((fp = g_fopen(path, "rb")) == NULL) {
1126 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1128 /* returns default list if set, otherwise NULL */
1129 return default_list;
1132 while (fgets(buf, sizeof(buf), fp) != NULL) {
1134 if (buf[0] == '\0') continue;
1135 tmp = add_history(tmp, buf);
1139 tmp = g_list_reverse(tmp);
1145 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1147 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1149 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1153 * Read history list from the specified history file
1155 static GList *prefs_common_read_history(const gchar *history)
1157 return prefs_common_read_history_from_dir(NULL, history);
1160 void prefs_common_read_config(void)
1165 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1166 prefs_read_config(param, "Common", rcpath, NULL);
1168 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1173 tmp = g_strdup(gettext(prefs_common.quotefmt));
1174 g_free(prefs_common.quotefmt);
1175 prefs_common.quotefmt = tmp;
1177 tmp = g_strdup(gettext(prefs_common.fw_quotefmt));
1178 g_free(prefs_common.fw_quotefmt);
1179 prefs_common.fw_quotefmt = tmp;
1181 tmp = g_strdup(gettext(prefs_common.date_format));
1182 g_free(prefs_common.date_format);
1183 prefs_common.date_format = tmp;
1185 tmp = g_strdup(gettext(prefs_common.compose_body_format));
1186 g_free(prefs_common.compose_body_format);
1187 prefs_common.compose_body_format = tmp;
1189 prefs_common.mime_open_cmd_history =
1190 prefs_common_read_history(COMMAND_HISTORY);
1191 prefs_common.summary_quicksearch_history =
1192 prefs_common_read_history(QUICKSEARCH_HISTORY);
1193 prefs_common.summary_search_from_history =
1194 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1195 prefs_common.summary_search_to_history =
1196 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1197 prefs_common.summary_search_subject_history =
1198 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1199 prefs_common.summary_search_body_history =
1200 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1201 prefs_common.summary_search_adv_condition_history =
1202 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1203 prefs_common.message_search_history =
1204 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1206 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1208 colorlabel_update_colortable_from_prefs();
1214 g_warning("failed to write\n"); \
1219 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1221 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1225 gchar *path, *tmp_path;
1228 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1229 G_DIR_SEPARATOR_S, history,
1232 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1235 tmp_path = g_strconcat(path, ".tmp", NULL);
1237 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1238 FILE_OP_ERROR(tmp_path, "fopen");
1242 for (cur = list; cur != NULL; cur = cur->next) {
1243 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1244 fputc('\n', fp) != EOF);
1247 if (fclose(fp) == EOF) {
1248 FILE_OP_ERROR(tmp_path, "fclose");
1256 if (g_rename(tmp_path, path) < 0) {
1257 FILE_OP_ERROR(path, "rename");
1269 * Save history list to the specified history file
1271 static void prefs_common_save_history(const gchar *history, GList *list)
1273 prefs_common_save_history_to_dir(NULL, history, list);
1278 void prefs_common_write_config(void)
1280 prefs_write_config(param, "Common", COMMON_RC);
1282 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1285 prefs_common_save_history(COMMAND_HISTORY,
1286 prefs_common.mime_open_cmd_history);
1287 prefs_common_save_history(QUICKSEARCH_HISTORY,
1288 prefs_common.summary_quicksearch_history);
1289 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1290 prefs_common.summary_search_from_history);
1291 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1292 prefs_common.summary_search_to_history);
1293 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1294 prefs_common.summary_search_subject_history);
1295 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1296 prefs_common.summary_search_body_history);
1297 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1298 prefs_common.summary_search_adv_condition_history);
1299 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1300 prefs_common.message_search_history);
1302 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1303 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1304 prefs_common.addressbook_custom_attributes);
1307 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1308 both 'in' and 'out' must be non-NULL.
1309 'out' must be a pointer to a buffer whose size is at least equal
1310 to strlen(txt)+1, this buffer will get cleared. out's contents
1311 will always get set to a valid string, even if it's "".*/
1312 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1319 g_return_if_fail( in != NULL );
1320 g_return_if_fail( out != NULL );
1324 memset(out, 0, strlen(in)+1);
1325 while (*i != '\0') {
1326 if (*i == '\\' && *(i+1) == 'n') {
1329 } else if (*i == '\\' && *(i+1) == 't') {
1332 } else if (*i == '\\' && *(i+1) == '\\') {
1343 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1344 both 'in' and 'out' must be non-NULL.
1345 'out' must be a pointer to a buffer whose size is at least equal
1346 to 2*strlen(txt)+1. out's contents will always get set to a valid
1347 string, even if it's "". */
1348 void pref_get_escaped_pref(gchar *out, const gchar *in)
1355 g_return_if_fail( in != NULL );
1356 g_return_if_fail( out != NULL );
1360 while (*i != '\0') {
1364 } else if (*i == '\t') {
1367 } else if (*i == '\\') {
1378 /* set the contents of a textview widget from the internal \-escaped
1379 representation of a pref string. both txt and textview must be non-NULL. */
1380 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1382 GtkTextBuffer *buffer;
1385 g_return_if_fail( textview != NULL );
1387 buffer = gtk_text_view_get_buffer(textview);
1390 gtk_text_buffer_set_text(buffer, "", -1);
1392 out = malloc(strlen(txt)+1);
1394 pref_get_unescaped_pref(out, txt);
1396 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1401 /* set the contents of a gtkentry widget from the internal \-escaped
1402 representation of a pref string. both txt and entry must be non-NULL. */
1403 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1407 g_return_if_fail( entry != NULL );
1409 gtk_entry_set_text(entry, "");
1411 out = malloc(strlen(txt)+1);
1413 pref_get_unescaped_pref(out, txt);
1415 gtk_entry_set_text(entry, out?out:"");
1420 /* get the \-escaped internal representation of a pref from the contents of
1421 a textview widget. textview must be non-NULL. */
1422 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1424 GtkTextBuffer *buffer;
1425 GtkTextIter start, end;
1428 g_return_val_if_fail( textview != NULL, "" );
1430 buffer = gtk_text_view_get_buffer(textview);
1431 gtk_text_buffer_get_start_iter(buffer, &start);
1432 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1433 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1434 out = malloc(2*strlen(tmp)+1);
1436 pref_get_escaped_pref(out, tmp);
1442 /* get the \-escaped internal representation of a pref from the contents of
1443 a gtkentry widget. entry must be non-NULL. */
1444 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1448 g_return_val_if_fail( entry != NULL, "" );
1450 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1451 out = malloc(2*strlen(tmp)+1);
1453 pref_get_escaped_pref(out, tmp);
1459 /* ugly hack to be able to get this pref from ssl_certificate.c */
1460 gboolean prefs_common_unsafe_ssl_certs(void)
1462 return prefs_common.unsafe_ssl_certs;
1465 gboolean prefs_common_enable_log_standard(void)
1467 return prefs_common.enable_log_standard;
1470 gboolean prefs_common_enable_log_warning(void)
1472 return prefs_common.enable_log_warning;
1474 gboolean prefs_common_enable_log_error(void)
1476 return prefs_common.enable_log_error;
1478 gboolean prefs_common_enable_log_status(void)
1480 return prefs_common.enable_log_status;
1484 const gchar *prefs_common_get_data_root(void)
1486 if (prefs_common.data_root && *prefs_common.data_root)
1487 return prefs_common.data_root;
1493 return the translated name of a header, if the translate_header option is
1494 set, otherwise return the untranslated header name (header_name itself).
1495 this function is provided for convenience, it's an interface to
1496 prefs_common.trans_hdr.
1497 works with header names either with or without trailing colon, provided
1498 that gettext found such header name in the sources (they should all be
1499 found in src/gtk/headers.h anyway).
1501 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1503 if (header_name == NULL || *header_name == '\0')
1506 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1509 const gchar *prefs_common_get_uri_cmd(void)
1513 if (!prefs_common.cmds_use_system_default)
1514 return prefs_common.uri_cmd;
1516 tmp = g_find_program_in_path("xdg-open");
1518 return prefs_common.uri_cmd;
1521 return "xdg-open %s";
1524 const gchar *prefs_common_get_ext_editor_cmd(void)
1526 return prefs_common.ext_editor_cmd;
1527 #if 0 /* we should do that, but it detaches the editor and breaks
1528 compose.c's external composition. */
1531 if (!prefs_common.cmds_use_system_default)
1532 return prefs_common.ext_editor_cmd;
1534 tmp = g_find_program_in_path("xdg-open");
1536 return prefs_common.ext_editor_cmd;
1539 return "xdg-open %s";