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},
195 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
197 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
199 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
202 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
204 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
207 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
208 P_BOOL, NULL, NULL, NULL},
211 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
213 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
214 P_BOOL, NULL, NULL, NULL},
215 {"redirect_keep_from", "FALSE",
216 &prefs_common.redirect_keep_from, P_BOOL,
218 {"undo_level", "50", &prefs_common.undolevels, P_INT,
220 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
222 {"compose_subject_format", "",
223 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
224 {"compose_body_format", N_("Hello,\\n"),
225 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
227 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
229 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
231 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
233 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
235 {"autosave", "TRUE", &prefs_common.autosave,
236 P_BOOL, NULL, NULL, NULL},
237 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
240 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
242 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
244 {"dictionary", "", &prefs_common.dictionary, P_STRING,
246 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
248 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
250 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
252 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
254 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
255 P_BOOL, NULL, NULL, NULL},
256 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
258 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
261 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
263 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
266 /* Account autoselection */
267 {"reply_account_autoselect", "TRUE",
268 &prefs_common.reply_account_autosel, P_BOOL,
270 {"forward_account_autoselect", "TRUE",
271 &prefs_common.forward_account_autosel, P_BOOL,
273 {"reedit_account_autoselect", "TRUE",
274 &prefs_common.reedit_account_autosel, P_BOOL,
277 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
281 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
284 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
289 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
291 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q"),
292 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
294 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
296 {"forward_quote_format",
297 N_("\\n\\nBegin forwarded message:\\n\\n"
298 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
299 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
300 &prefs_common.fw_quotefmt, P_STRING, NULL, NULL, NULL},
301 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
305 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
306 {"widget_font", NULL,
307 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
308 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
309 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
310 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
311 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
312 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
313 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
314 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
315 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
319 {"widget_font_gtk2", NULL,
320 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
321 {"message_font_gtk2", "Monospace 9",
322 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
323 {"print_font_gtk2", "Monospace 9",
324 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
325 {"small_font_gtk2", "Sans 9",
326 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
327 {"normal_font_gtk2", "Sans 9",
328 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
329 {"bold_font_gtk2", "Sans Bold 9",
330 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
332 {"widget_font_gtk2", NULL,
333 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
334 {"message_font_gtk2", "Monospace 8",
335 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
336 {"print_font_gtk2", "Monospace 8",
337 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
338 {"small_font_gtk2", "Sans 8",
339 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
340 {"normal_font_gtk2", "Sans 8",
341 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
342 {"bold_font_gtk2", "Sans Bold 8",
343 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
346 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
348 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
352 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
354 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
356 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
358 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
360 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
362 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
364 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
366 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
368 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
370 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
372 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
374 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
376 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
378 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
380 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
382 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
384 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
386 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
388 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
390 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
392 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
394 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
396 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
398 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
400 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
402 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
404 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
406 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
408 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
410 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
414 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
416 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
418 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
421 {"display_folder_unread_num", "0",
422 &prefs_common.display_folder_unread, P_INT,
424 {"newsgroup_abbrev_len", "16",
425 &prefs_common.ng_abbrev_len, P_INT,
428 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
431 /* Display: Summary View */
432 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
434 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
436 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
437 P_STRING, NULL, NULL, NULL},
439 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
442 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
445 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
448 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
451 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
453 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
456 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
458 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
461 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
463 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
467 {"summary_col_show_mark", "TRUE",
468 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
469 {"summary_col_show_unread", "TRUE",
470 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
471 {"summary_col_show_subject", "TRUE",
472 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
473 {"summary_col_show_from", "TRUE",
474 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
475 {"summary_col_show_to", "FALSE",
476 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_date", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_mime", "TRUE",
480 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_size", "TRUE",
482 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_number", "FALSE",
484 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_score", "FALSE",
486 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_locked", "FALSE",
488 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_tags", "FALSE",
490 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
492 {"summary_col_pos_mark", "0",
493 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
494 {"summary_col_pos_unread", "1",
495 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
496 {"summary_col_pos_mime", "2",
497 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
498 {"summary_col_pos_subject", "3",
499 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
500 {"summary_col_pos_from", "4",
501 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_date", "5",
503 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_size", "6",
505 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_number", "7",
507 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_score", "8",
509 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_locked", "9",
511 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_to", "10",
513 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_tags", "11",
515 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
517 {"summary_col_size_mark", "10",
518 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
519 {"summary_col_size_unread", "13",
520 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
521 {"summary_col_size_mime", "10",
522 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
524 {"summary_col_size_subject", "200",
525 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
526 {"summary_col_size_from", "120",
527 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
528 {"summary_col_size_to", "120",
529 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
531 {"summary_col_size_subject", "300",
532 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
533 {"summary_col_size_from", "150",
534 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
535 {"summary_col_size_to", "150",
536 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
539 {"summary_col_size_date", "118",
540 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_size", "45",
542 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_number", "40",
544 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_score", "40",
546 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_locked", "13",
548 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_tags", "150",
550 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
553 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
555 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
557 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
559 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
561 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
564 {"folder_col_show_folder", "TRUE",
565 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
566 {"folder_col_show_new", "TRUE",
567 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
568 {"folder_col_show_unread", "TRUE",
569 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
570 {"folder_col_show_total", "TRUE",
571 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
573 {"folder_col_pos_folder", "0",
574 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
575 {"folder_col_pos_new", "1",
576 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
577 {"folder_col_pos_unread", "2",
578 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
579 {"folder_col_pos_total", "3",
580 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
583 {"folder_col_size_folder", "120",
584 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
585 {"folder_col_size_new", "32",
586 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
587 {"folder_col_size_unread", "32",
588 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
589 {"folder_col_size_total", "32",
590 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
592 {"folder_col_size_folder", "400",
593 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
594 {"folder_col_size_new", "32",
595 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
596 {"folder_col_size_unread", "32",
597 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
598 {"folder_col_size_total", "32",
599 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
601 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
603 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
606 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
608 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
610 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
612 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
614 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
617 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
619 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
621 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
623 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
625 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
627 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
630 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
632 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
634 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
636 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
638 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
640 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
642 {"compose_width", "600", &prefs_common.compose_width, P_INT,
644 {"compose_height", "560", &prefs_common.compose_height, P_INT,
647 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
649 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
651 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
653 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
655 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
657 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
659 {"compose_width", "700", &prefs_common.compose_width, P_INT,
661 {"compose_height", "470", &prefs_common.compose_height, P_INT,
664 {"compose_x", "0", &prefs_common.compose_x, P_INT,
666 {"compose_y", "0", &prefs_common.compose_y, P_INT,
669 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
672 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
674 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
676 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
678 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
680 {"quote_level1_bgcolor", "13421772", &prefs_common.quote_level1_bgcol, P_COLOR,
682 {"quote_level2_bgcolor", "13948116", &prefs_common.quote_level2_bgcol, P_COLOR,
684 {"quote_level3_bgcolor", "14540253", &prefs_common.quote_level3_bgcol, P_COLOR,
686 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
688 {"emphasis_color", "207", &prefs_common.emphasis_col, P_COLOR,
690 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
692 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
694 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
695 P_BOOL, NULL, NULL, NULL},
697 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
698 P_BOOL, NULL, NULL, NULL},
699 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
701 {"display_xface", "TRUE", &prefs_common.display_xface,
702 P_BOOL, NULL, NULL, NULL},
703 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
705 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
707 {"line_space", "2", &prefs_common.line_space, P_INT,
709 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
712 {"enable_smooth_scroll", "FALSE",
713 &prefs_common.enable_smooth_scroll, P_BOOL,
715 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
717 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
719 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
722 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
725 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
727 {"attach_save_directory", NULL,
728 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
729 {"attach_load_directory", NULL,
730 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
733 {"mime_textviewer", NULL,
734 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
735 {"mime_open_command", "gedit '%s'",
736 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
740 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
743 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
746 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
747 NULL, NULL, NULL}, */
748 {"always_show_message_when_selected", "FALSE",
749 &prefs_common.always_show_msg,
750 P_BOOL, NULL, NULL, NULL},
751 {"select_on_entry", "3", &prefs_common.select_on_entry,
752 P_ENUM, NULL, NULL, NULL},
753 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
754 P_BOOL, NULL, NULL, NULL},
756 /* do it SUMMARY_OPEN_ACTIONS-1 times */
757 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
759 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
761 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
763 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
765 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
767 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
769 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
772 {"mark_as_read_on_new_window", "FALSE",
773 &prefs_common.mark_as_read_on_new_window,
774 P_BOOL, NULL, NULL, NULL},
775 {"mark_as_read_delay", "0",
776 &prefs_common.mark_as_read_delay, P_INT,
778 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
780 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
783 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
784 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
787 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
790 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
792 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
796 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
797 P_BOOL, NULL, NULL, NULL},
798 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
799 P_INT, NULL, NULL, NULL},
800 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
801 P_INT, NULL, NULL, NULL},
804 {"uri_open_command", DEFAULT_BROWSER_CMD,
805 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
806 {"print_command", "lpr %s",
807 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
808 {"ext_editor_command", DEFAULT_EDITOR_CMD,
809 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
810 {"cmds_use_system_default", "FALSE",
811 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
812 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
813 P_BOOL, NULL, NULL, NULL},
814 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
816 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
818 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
820 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
821 P_BOOL, NULL, NULL, NULL},
822 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
824 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
827 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
830 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
834 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
835 P_INT, NULL, NULL, NULL},
836 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
838 {"important_score", "1", &prefs_common.important_score, P_INT,
841 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
843 {"log_length", "500", &prefs_common.loglength, P_INT,
846 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
848 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
850 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
852 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
855 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
857 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
859 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
861 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
864 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
866 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
868 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
870 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
872 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
874 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
876 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
878 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
881 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
883 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
885 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
887 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
889 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
891 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
893 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
895 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
897 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
900 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
903 {"color_new", "179", &prefs_common.color_new, P_COLOR,
906 /* Some windows' sizes */
907 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
909 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
912 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
914 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
917 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
919 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
922 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
924 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
927 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
929 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
932 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
934 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
937 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
939 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
942 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
944 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
947 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
949 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
952 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
954 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
957 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
959 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
962 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
964 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
967 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
970 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
972 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
975 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
977 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
980 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
982 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
985 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
987 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
990 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
992 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
995 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
997 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1000 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1002 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1006 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1008 {"utf8_instead_of_locale_for_broken_mail", "0",
1009 &prefs_common.broken_are_utf8, P_INT,
1011 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1013 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1015 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1017 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1019 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1021 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1023 {"folderview_vscrollbar_policy", "0",
1024 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1026 {"textview_cursor_visible", "FALSE",
1027 &prefs_common.textview_cursor_visible, P_BOOL,
1029 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1032 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1034 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1037 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1039 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1042 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1043 P_INT, NULL, NULL, NULL },
1044 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1045 P_STRING, NULL, NULL, NULL },
1046 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1047 P_BOOL, NULL, NULL, NULL },
1048 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1050 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1052 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1054 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1056 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1058 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1060 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1062 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1064 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1066 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1069 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1072 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1076 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1078 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1080 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1082 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1084 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1086 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1088 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1090 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1092 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1095 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1099 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1100 * Fallback to default_list if history file is not found
1102 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1103 GList *default_list)
1107 gchar buf[PREFSBUFSIZE];
1111 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1112 G_DIR_SEPARATOR_S, history,
1115 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1118 if ((fp = g_fopen(path, "rb")) == NULL) {
1119 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1121 /* returns default list if set, otherwise NULL */
1122 return default_list;
1125 while (fgets(buf, sizeof(buf), fp) != NULL) {
1127 if (buf[0] == '\0') continue;
1128 tmp = add_history(tmp, buf);
1132 tmp = g_list_reverse(tmp);
1138 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1140 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1142 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1146 * Read history list from the specified history file
1148 static GList *prefs_common_read_history(const gchar *history)
1150 return prefs_common_read_history_from_dir(NULL, history);
1153 void prefs_common_read_config(void)
1158 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1159 prefs_read_config(param, "Common", rcpath, NULL);
1161 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1166 tmp = g_strdup(gettext(prefs_common.quotefmt));
1167 g_free(prefs_common.quotefmt);
1168 prefs_common.quotefmt = tmp;
1170 tmp = g_strdup(gettext(prefs_common.fw_quotefmt));
1171 g_free(prefs_common.fw_quotefmt);
1172 prefs_common.fw_quotefmt = tmp;
1174 tmp = g_strdup(gettext(prefs_common.date_format));
1175 g_free(prefs_common.date_format);
1176 prefs_common.date_format = tmp;
1178 tmp = g_strdup(gettext(prefs_common.compose_body_format));
1179 g_free(prefs_common.compose_body_format);
1180 prefs_common.compose_body_format = tmp;
1182 prefs_common.mime_open_cmd_history =
1183 prefs_common_read_history(COMMAND_HISTORY);
1184 prefs_common.summary_quicksearch_history =
1185 prefs_common_read_history(QUICKSEARCH_HISTORY);
1186 prefs_common.summary_search_from_history =
1187 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1188 prefs_common.summary_search_to_history =
1189 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1190 prefs_common.summary_search_subject_history =
1191 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1192 prefs_common.summary_search_body_history =
1193 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1194 prefs_common.summary_search_adv_condition_history =
1195 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1196 prefs_common.message_search_history =
1197 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1199 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1201 colorlabel_update_colortable_from_prefs();
1207 g_warning("failed to write\n"); \
1212 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1214 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1218 gchar *path, *tmp_path;
1221 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1222 G_DIR_SEPARATOR_S, history,
1225 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1228 tmp_path = g_strconcat(path, ".tmp", NULL);
1230 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1231 FILE_OP_ERROR(tmp_path, "fopen");
1235 for (cur = list; cur != NULL; cur = cur->next) {
1236 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1237 fputc('\n', fp) != EOF);
1240 if (fclose(fp) == EOF) {
1241 FILE_OP_ERROR(tmp_path, "fclose");
1249 if (g_rename(tmp_path, path) < 0) {
1250 FILE_OP_ERROR(path, "rename");
1262 * Save history list to the specified history file
1264 static void prefs_common_save_history(const gchar *history, GList *list)
1266 prefs_common_save_history_to_dir(NULL, history, list);
1271 void prefs_common_write_config(void)
1273 prefs_write_config(param, "Common", COMMON_RC);
1275 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1278 prefs_common_save_history(COMMAND_HISTORY,
1279 prefs_common.mime_open_cmd_history);
1280 prefs_common_save_history(QUICKSEARCH_HISTORY,
1281 prefs_common.summary_quicksearch_history);
1282 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1283 prefs_common.summary_search_from_history);
1284 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1285 prefs_common.summary_search_to_history);
1286 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1287 prefs_common.summary_search_subject_history);
1288 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1289 prefs_common.summary_search_body_history);
1290 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1291 prefs_common.summary_search_adv_condition_history);
1292 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1293 prefs_common.message_search_history);
1295 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1296 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1297 prefs_common.addressbook_custom_attributes);
1300 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1301 both 'in' and 'out' must be non-NULL.
1302 'out' must be a pointer to a buffer whose size is at least equal
1303 to strlen(txt)+1, this buffer will get cleared. out's contents
1304 will always get set to a valid string, even if it's "".*/
1305 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1312 g_return_if_fail( in != NULL );
1313 g_return_if_fail( out != NULL );
1317 memset(out, 0, strlen(in)+1);
1318 while (*i != '\0') {
1319 if (*i == '\\' && *(i+1) == 'n') {
1322 } else if (*i == '\\' && *(i+1) == 't') {
1325 } else if (*i == '\\' && *(i+1) == '\\') {
1336 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1337 both 'in' and 'out' must be non-NULL.
1338 'out' must be a pointer to a buffer whose size is at least equal
1339 to 2*strlen(txt)+1. out's contents will always get set to a valid
1340 string, even if it's "". */
1341 void pref_get_escaped_pref(gchar *out, const gchar *in)
1348 g_return_if_fail( in != NULL );
1349 g_return_if_fail( out != NULL );
1353 while (*i != '\0') {
1357 } else if (*i == '\t') {
1360 } else if (*i == '\\') {
1371 /* set the contents of a textview widget from the internal \-escaped
1372 representation of a pref string. both txt and textview must be non-NULL. */
1373 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1375 GtkTextBuffer *buffer;
1378 g_return_if_fail( textview != NULL );
1380 buffer = gtk_text_view_get_buffer(textview);
1383 gtk_text_buffer_set_text(buffer, "", -1);
1385 out = malloc(strlen(txt)+1);
1387 pref_get_unescaped_pref(out, txt);
1389 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1394 /* set the contents of a gtkentry widget from the internal \-escaped
1395 representation of a pref string. both txt and entry must be non-NULL. */
1396 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1400 g_return_if_fail( entry != NULL );
1402 gtk_entry_set_text(entry, "");
1404 out = malloc(strlen(txt)+1);
1406 pref_get_unescaped_pref(out, txt);
1408 gtk_entry_set_text(entry, out?out:"");
1413 /* get the \-escaped internal representation of a pref from the contents of
1414 a textview widget. textview must be non-NULL. */
1415 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1417 GtkTextBuffer *buffer;
1418 GtkTextIter start, end;
1421 g_return_val_if_fail( textview != NULL, "" );
1423 buffer = gtk_text_view_get_buffer(textview);
1424 gtk_text_buffer_get_start_iter(buffer, &start);
1425 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1426 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1427 out = malloc(2*strlen(tmp)+1);
1429 pref_get_escaped_pref(out, tmp);
1435 /* get the \-escaped internal representation of a pref from the contents of
1436 a gtkentry widget. entry must be non-NULL. */
1437 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1441 g_return_val_if_fail( entry != NULL, "" );
1443 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1444 out = malloc(2*strlen(tmp)+1);
1446 pref_get_escaped_pref(out, tmp);
1452 /* ugly hack to be able to get this pref from ssl_certificate.c */
1453 gboolean prefs_common_unsafe_ssl_certs(void)
1455 return prefs_common.unsafe_ssl_certs;
1458 gboolean prefs_common_enable_log_standard(void)
1460 return prefs_common.enable_log_standard;
1463 gboolean prefs_common_enable_log_warning(void)
1465 return prefs_common.enable_log_warning;
1467 gboolean prefs_common_enable_log_error(void)
1469 return prefs_common.enable_log_error;
1471 gboolean prefs_common_enable_log_status(void)
1473 return prefs_common.enable_log_status;
1477 const gchar *prefs_common_get_data_root(void)
1479 if (prefs_common.data_root && *prefs_common.data_root)
1480 return prefs_common.data_root;
1486 return the translated name of a header, if the translate_header option is
1487 set, otherwise return the untranslated header name (header_name itself).
1488 this function is provided for convenience, it's an interface to
1489 prefs_common.trans_hdr.
1490 works with header names either with or without trailing colon, provided
1491 that gettext found such header name in the sources (they should all be
1492 found in src/gtk/headers.h anyway).
1494 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1496 if (header_name == NULL || *header_name == '\0')
1499 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1502 const gchar *prefs_common_get_uri_cmd(void)
1506 if (!prefs_common.cmds_use_system_default)
1507 return prefs_common.uri_cmd;
1509 tmp = g_find_program_in_path("xdg-open");
1511 return prefs_common.uri_cmd;
1514 return "xdg-open %s";
1517 const gchar *prefs_common_get_ext_editor_cmd(void)
1519 return prefs_common.ext_editor_cmd;
1520 #if 0 /* we should do that, but it detaches the editor and breaks
1521 compose.c's external composition. */
1524 if (!prefs_common.cmds_use_system_default)
1525 return prefs_common.ext_editor_cmd;
1527 tmp = g_find_program_in_path("xdg-open");
1529 return prefs_common.ext_editor_cmd;
1532 return "xdg-open %s";