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,
1101 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1104 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1108 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1109 * Fallback to default_list if history file is not found
1111 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1112 GList *default_list)
1116 gchar buf[PREFSBUFSIZE];
1120 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1121 G_DIR_SEPARATOR_S, history,
1124 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1127 if ((fp = g_fopen(path, "rb")) == NULL) {
1128 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1130 /* returns default list if set, otherwise NULL */
1131 return default_list;
1134 while (fgets(buf, sizeof(buf), fp) != NULL) {
1136 if (buf[0] == '\0') continue;
1137 tmp = add_history(tmp, buf);
1141 tmp = g_list_reverse(tmp);
1147 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1149 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1151 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1155 * Read history list from the specified history file
1157 static GList *prefs_common_read_history(const gchar *history)
1159 return prefs_common_read_history_from_dir(NULL, history);
1162 void prefs_common_read_config(void)
1167 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1168 prefs_read_config(param, "Common", rcpath, NULL);
1170 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1175 tmp = g_strdup(gettext(prefs_common.quotefmt));
1176 g_free(prefs_common.quotefmt);
1177 prefs_common.quotefmt = tmp;
1179 tmp = g_strdup(gettext(prefs_common.fw_quotefmt));
1180 g_free(prefs_common.fw_quotefmt);
1181 prefs_common.fw_quotefmt = tmp;
1183 tmp = g_strdup(gettext(prefs_common.date_format));
1184 g_free(prefs_common.date_format);
1185 prefs_common.date_format = tmp;
1187 tmp = g_strdup(gettext(prefs_common.compose_body_format));
1188 g_free(prefs_common.compose_body_format);
1189 prefs_common.compose_body_format = tmp;
1191 prefs_common.mime_open_cmd_history =
1192 prefs_common_read_history(COMMAND_HISTORY);
1193 prefs_common.summary_quicksearch_history =
1194 prefs_common_read_history(QUICKSEARCH_HISTORY);
1195 prefs_common.summary_search_from_history =
1196 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1197 prefs_common.summary_search_to_history =
1198 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1199 prefs_common.summary_search_subject_history =
1200 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1201 prefs_common.summary_search_body_history =
1202 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1203 prefs_common.summary_search_adv_condition_history =
1204 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1205 prefs_common.message_search_history =
1206 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1208 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1210 colorlabel_update_colortable_from_prefs();
1216 g_warning("failed to write\n"); \
1221 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1223 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1227 gchar *path, *tmp_path;
1230 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1231 G_DIR_SEPARATOR_S, history,
1234 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1237 tmp_path = g_strconcat(path, ".tmp", NULL);
1239 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1240 FILE_OP_ERROR(tmp_path, "fopen");
1244 for (cur = list; cur != NULL; cur = cur->next) {
1245 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1246 fputc('\n', fp) != EOF);
1249 if (fclose(fp) == EOF) {
1250 FILE_OP_ERROR(tmp_path, "fclose");
1258 if (g_rename(tmp_path, path) < 0) {
1259 FILE_OP_ERROR(path, "rename");
1271 * Save history list to the specified history file
1273 static void prefs_common_save_history(const gchar *history, GList *list)
1275 prefs_common_save_history_to_dir(NULL, history, list);
1280 void prefs_common_write_config(void)
1282 prefs_write_config(param, "Common", COMMON_RC);
1284 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1287 prefs_common_save_history(COMMAND_HISTORY,
1288 prefs_common.mime_open_cmd_history);
1289 prefs_common_save_history(QUICKSEARCH_HISTORY,
1290 prefs_common.summary_quicksearch_history);
1291 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1292 prefs_common.summary_search_from_history);
1293 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1294 prefs_common.summary_search_to_history);
1295 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1296 prefs_common.summary_search_subject_history);
1297 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1298 prefs_common.summary_search_body_history);
1299 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1300 prefs_common.summary_search_adv_condition_history);
1301 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1302 prefs_common.message_search_history);
1304 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1305 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1306 prefs_common.addressbook_custom_attributes);
1309 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1310 both 'in' and 'out' must be non-NULL.
1311 'out' must be a pointer to a buffer whose size is at least equal
1312 to strlen(txt)+1, this buffer will get cleared. out's contents
1313 will always get set to a valid string, even if it's "".*/
1314 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1321 g_return_if_fail( in != NULL );
1322 g_return_if_fail( out != NULL );
1326 memset(out, 0, strlen(in)+1);
1327 while (*i != '\0') {
1328 if (*i == '\\' && *(i+1) == 'n') {
1331 } else if (*i == '\\' && *(i+1) == 't') {
1334 } else if (*i == '\\' && *(i+1) == '\\') {
1345 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1346 both 'in' and 'out' must be non-NULL.
1347 'out' must be a pointer to a buffer whose size is at least equal
1348 to 2*strlen(txt)+1. out's contents will always get set to a valid
1349 string, even if it's "". */
1350 void pref_get_escaped_pref(gchar *out, const gchar *in)
1357 g_return_if_fail( in != NULL );
1358 g_return_if_fail( out != NULL );
1362 while (*i != '\0') {
1366 } else if (*i == '\t') {
1369 } else if (*i == '\\') {
1380 /* set the contents of a textview widget from the internal \-escaped
1381 representation of a pref string. both txt and textview must be non-NULL. */
1382 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1384 GtkTextBuffer *buffer;
1387 g_return_if_fail( textview != NULL );
1389 buffer = gtk_text_view_get_buffer(textview);
1392 gtk_text_buffer_set_text(buffer, "", -1);
1394 out = malloc(strlen(txt)+1);
1396 pref_get_unescaped_pref(out, txt);
1398 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1403 /* set the contents of a gtkentry widget from the internal \-escaped
1404 representation of a pref string. both txt and entry must be non-NULL. */
1405 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1409 g_return_if_fail( entry != NULL );
1411 gtk_entry_set_text(entry, "");
1413 out = malloc(strlen(txt)+1);
1415 pref_get_unescaped_pref(out, txt);
1417 gtk_entry_set_text(entry, out?out:"");
1422 /* get the \-escaped internal representation of a pref from the contents of
1423 a textview widget. textview must be non-NULL. */
1424 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1426 GtkTextBuffer *buffer;
1427 GtkTextIter start, end;
1430 g_return_val_if_fail( textview != NULL, "" );
1432 buffer = gtk_text_view_get_buffer(textview);
1433 gtk_text_buffer_get_start_iter(buffer, &start);
1434 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1435 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1436 out = malloc(2*strlen(tmp)+1);
1438 pref_get_escaped_pref(out, tmp);
1444 /* get the \-escaped internal representation of a pref from the contents of
1445 a gtkentry widget. entry must be non-NULL. */
1446 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1450 g_return_val_if_fail( entry != NULL, "" );
1452 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1453 out = malloc(2*strlen(tmp)+1);
1455 pref_get_escaped_pref(out, tmp);
1461 /* ugly hack to be able to get this pref from ssl_certificate.c */
1462 gboolean prefs_common_unsafe_ssl_certs(void)
1464 return prefs_common.unsafe_ssl_certs;
1467 gboolean prefs_common_enable_log_standard(void)
1469 return prefs_common.enable_log_standard;
1472 gboolean prefs_common_enable_log_warning(void)
1474 return prefs_common.enable_log_warning;
1476 gboolean prefs_common_enable_log_error(void)
1478 return prefs_common.enable_log_error;
1480 gboolean prefs_common_enable_log_status(void)
1482 return prefs_common.enable_log_status;
1486 const gchar *prefs_common_get_data_root(void)
1488 if (prefs_common.data_root && *prefs_common.data_root)
1489 return prefs_common.data_root;
1495 return the translated name of a header, if the translate_header option is
1496 set, otherwise return the untranslated header name (header_name itself).
1497 this function is provided for convenience, it's an interface to
1498 prefs_common.trans_hdr.
1499 works with header names either with or without trailing colon, provided
1500 that gettext found such header name in the sources (they should all be
1501 found in src/gtk/headers.h anyway).
1503 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1505 if (header_name == NULL || *header_name == '\0')
1508 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1511 const gchar *prefs_common_get_uri_cmd(void)
1515 if (!prefs_common.cmds_use_system_default)
1516 return prefs_common.uri_cmd;
1518 tmp = g_find_program_in_path("xdg-open");
1520 return prefs_common.uri_cmd;
1523 return "xdg-open %s";
1526 const gchar *prefs_common_get_ext_editor_cmd(void)
1528 return prefs_common.ext_editor_cmd;
1529 #if 0 /* we should do that, but it detaches the editor and breaks
1530 compose.c's external composition. */
1533 if (!prefs_common.cmds_use_system_default)
1534 return prefs_common.ext_editor_cmd;
1536 tmp = g_find_program_in_path("xdg-open");
1538 return prefs_common.ext_editor_cmd;
1541 return "xdg-open %s";