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,
629 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
632 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
634 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
636 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
638 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
640 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
642 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
644 {"compose_width", "600", &prefs_common.compose_width, P_INT,
646 {"compose_height", "560", &prefs_common.compose_height, P_INT,
649 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
651 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
653 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
655 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
657 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
659 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
661 {"compose_width", "700", &prefs_common.compose_width, P_INT,
663 {"compose_height", "470", &prefs_common.compose_height, P_INT,
666 {"compose_x", "0", &prefs_common.compose_x, P_INT,
668 {"compose_y", "0", &prefs_common.compose_y, P_INT,
671 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
674 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
676 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
678 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
680 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
682 {"quote_level1_bgcolor", "13421772", &prefs_common.quote_level1_bgcol, P_COLOR,
684 {"quote_level2_bgcolor", "13948116", &prefs_common.quote_level2_bgcol, P_COLOR,
686 {"quote_level3_bgcolor", "14540253", &prefs_common.quote_level3_bgcol, P_COLOR,
688 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
690 {"emphasis_color", "207", &prefs_common.emphasis_col, P_COLOR,
692 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
694 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
696 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
697 P_BOOL, NULL, NULL, NULL},
699 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
700 P_BOOL, NULL, NULL, NULL},
701 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
703 {"display_xface", "TRUE", &prefs_common.display_xface,
704 P_BOOL, NULL, NULL, NULL},
705 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
707 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
709 {"line_space", "2", &prefs_common.line_space, P_INT,
711 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
714 {"enable_smooth_scroll", "FALSE",
715 &prefs_common.enable_smooth_scroll, P_BOOL,
717 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
719 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
721 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
724 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
727 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
729 {"attach_save_directory", NULL,
730 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
731 {"attach_load_directory", NULL,
732 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
735 {"mime_textviewer", NULL,
736 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
737 {"mime_open_command", "gedit '%s'",
738 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
742 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
745 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
748 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
749 NULL, NULL, NULL}, */
750 {"always_show_message_when_selected", "FALSE",
751 &prefs_common.always_show_msg,
752 P_BOOL, NULL, NULL, NULL},
753 {"select_on_entry", "3", &prefs_common.select_on_entry,
754 P_ENUM, NULL, NULL, NULL},
755 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
756 P_BOOL, NULL, NULL, NULL},
758 /* do it SUMMARY_OPEN_ACTIONS-1 times */
759 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
761 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
763 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
765 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
767 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
769 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
771 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
774 {"mark_as_read_on_new_window", "FALSE",
775 &prefs_common.mark_as_read_on_new_window,
776 P_BOOL, NULL, NULL, NULL},
777 {"mark_as_read_delay", "0",
778 &prefs_common.mark_as_read_delay, P_INT,
780 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
782 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
785 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
786 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
789 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
792 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
794 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
798 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
799 P_BOOL, NULL, NULL, NULL},
800 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
801 P_INT, NULL, NULL, NULL},
802 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
803 P_INT, NULL, NULL, NULL},
806 {"uri_open_command", DEFAULT_BROWSER_CMD,
807 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
808 {"print_command", "lpr %s",
809 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
810 {"ext_editor_command", DEFAULT_EDITOR_CMD,
811 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
812 {"cmds_use_system_default", "FALSE",
813 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
814 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
815 P_BOOL, NULL, NULL, NULL},
816 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
818 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
820 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
822 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
823 P_BOOL, NULL, NULL, NULL},
824 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
826 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
829 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
832 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
836 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
837 P_INT, NULL, NULL, NULL},
838 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
840 {"important_score", "1", &prefs_common.important_score, P_INT,
843 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
845 {"log_length", "500", &prefs_common.loglength, P_INT,
848 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
850 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
852 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
854 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
857 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
859 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
861 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
863 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
866 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
868 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
870 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
872 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
874 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
876 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
878 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
880 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
883 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
885 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
887 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
889 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
891 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
893 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
895 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
897 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
899 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
902 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
905 {"color_new", "179", &prefs_common.color_new, P_COLOR,
908 /* Some windows' sizes */
909 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
911 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
914 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
916 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
919 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
921 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
924 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
926 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
929 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
931 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
934 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
936 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
939 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
941 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
944 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
946 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
949 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
951 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
954 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
956 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
959 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
961 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
964 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
966 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
969 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
972 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
974 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
977 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
979 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
982 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
984 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
987 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
989 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
992 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
994 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
997 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
999 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1002 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1004 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1008 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1010 {"utf8_instead_of_locale_for_broken_mail", "0",
1011 &prefs_common.broken_are_utf8, P_INT,
1013 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1015 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1017 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1019 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1021 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1023 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1025 {"folderview_vscrollbar_policy", "0",
1026 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1028 {"textview_cursor_visible", "FALSE",
1029 &prefs_common.textview_cursor_visible, P_BOOL,
1031 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1034 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1036 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1039 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1041 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1044 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1045 P_INT, NULL, NULL, NULL },
1046 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1047 P_STRING, NULL, NULL, NULL },
1048 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1049 P_BOOL, NULL, NULL, NULL },
1050 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1052 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1054 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1056 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1058 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1060 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1062 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1064 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1066 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1068 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1071 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1074 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1078 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1080 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1082 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1084 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1086 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1088 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1090 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1092 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1094 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1097 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1101 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1102 * Fallback to default_list if history file is not found
1104 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1105 GList *default_list)
1109 gchar buf[PREFSBUFSIZE];
1113 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1114 G_DIR_SEPARATOR_S, history,
1117 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1120 if ((fp = g_fopen(path, "rb")) == NULL) {
1121 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1123 /* returns default list if set, otherwise NULL */
1124 return default_list;
1127 while (fgets(buf, sizeof(buf), fp) != NULL) {
1129 if (buf[0] == '\0') continue;
1130 tmp = add_history(tmp, buf);
1134 tmp = g_list_reverse(tmp);
1140 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1142 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1144 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1148 * Read history list from the specified history file
1150 static GList *prefs_common_read_history(const gchar *history)
1152 return prefs_common_read_history_from_dir(NULL, history);
1155 void prefs_common_read_config(void)
1160 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1161 prefs_read_config(param, "Common", rcpath, NULL);
1163 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1168 tmp = g_strdup(gettext(prefs_common.quotefmt));
1169 g_free(prefs_common.quotefmt);
1170 prefs_common.quotefmt = tmp;
1172 tmp = g_strdup(gettext(prefs_common.fw_quotefmt));
1173 g_free(prefs_common.fw_quotefmt);
1174 prefs_common.fw_quotefmt = tmp;
1176 tmp = g_strdup(gettext(prefs_common.date_format));
1177 g_free(prefs_common.date_format);
1178 prefs_common.date_format = tmp;
1180 tmp = g_strdup(gettext(prefs_common.compose_body_format));
1181 g_free(prefs_common.compose_body_format);
1182 prefs_common.compose_body_format = tmp;
1184 prefs_common.mime_open_cmd_history =
1185 prefs_common_read_history(COMMAND_HISTORY);
1186 prefs_common.summary_quicksearch_history =
1187 prefs_common_read_history(QUICKSEARCH_HISTORY);
1188 prefs_common.summary_search_from_history =
1189 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1190 prefs_common.summary_search_to_history =
1191 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1192 prefs_common.summary_search_subject_history =
1193 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1194 prefs_common.summary_search_body_history =
1195 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1196 prefs_common.summary_search_adv_condition_history =
1197 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1198 prefs_common.message_search_history =
1199 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1201 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1203 colorlabel_update_colortable_from_prefs();
1209 g_warning("failed to write\n"); \
1214 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1216 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1220 gchar *path, *tmp_path;
1223 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1224 G_DIR_SEPARATOR_S, history,
1227 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1230 tmp_path = g_strconcat(path, ".tmp", NULL);
1232 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1233 FILE_OP_ERROR(tmp_path, "fopen");
1237 for (cur = list; cur != NULL; cur = cur->next) {
1238 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1239 fputc('\n', fp) != EOF);
1242 if (fclose(fp) == EOF) {
1243 FILE_OP_ERROR(tmp_path, "fclose");
1251 if (g_rename(tmp_path, path) < 0) {
1252 FILE_OP_ERROR(path, "rename");
1264 * Save history list to the specified history file
1266 static void prefs_common_save_history(const gchar *history, GList *list)
1268 prefs_common_save_history_to_dir(NULL, history, list);
1273 void prefs_common_write_config(void)
1275 prefs_write_config(param, "Common", COMMON_RC);
1277 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1280 prefs_common_save_history(COMMAND_HISTORY,
1281 prefs_common.mime_open_cmd_history);
1282 prefs_common_save_history(QUICKSEARCH_HISTORY,
1283 prefs_common.summary_quicksearch_history);
1284 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1285 prefs_common.summary_search_from_history);
1286 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1287 prefs_common.summary_search_to_history);
1288 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1289 prefs_common.summary_search_subject_history);
1290 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1291 prefs_common.summary_search_body_history);
1292 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1293 prefs_common.summary_search_adv_condition_history);
1294 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1295 prefs_common.message_search_history);
1297 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1298 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1299 prefs_common.addressbook_custom_attributes);
1302 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1303 both 'in' and 'out' must be non-NULL.
1304 'out' must be a pointer to a buffer whose size is at least equal
1305 to strlen(txt)+1, this buffer will get cleared. out's contents
1306 will always get set to a valid string, even if it's "".*/
1307 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1314 g_return_if_fail( in != NULL );
1315 g_return_if_fail( out != NULL );
1319 memset(out, 0, strlen(in)+1);
1320 while (*i != '\0') {
1321 if (*i == '\\' && *(i+1) == 'n') {
1324 } else if (*i == '\\' && *(i+1) == 't') {
1327 } else if (*i == '\\' && *(i+1) == '\\') {
1338 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1339 both 'in' and 'out' must be non-NULL.
1340 'out' must be a pointer to a buffer whose size is at least equal
1341 to 2*strlen(txt)+1. out's contents will always get set to a valid
1342 string, even if it's "". */
1343 void pref_get_escaped_pref(gchar *out, const gchar *in)
1350 g_return_if_fail( in != NULL );
1351 g_return_if_fail( out != NULL );
1355 while (*i != '\0') {
1359 } else if (*i == '\t') {
1362 } else if (*i == '\\') {
1373 /* set the contents of a textview widget from the internal \-escaped
1374 representation of a pref string. both txt and textview must be non-NULL. */
1375 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1377 GtkTextBuffer *buffer;
1380 g_return_if_fail( textview != NULL );
1382 buffer = gtk_text_view_get_buffer(textview);
1385 gtk_text_buffer_set_text(buffer, "", -1);
1387 out = malloc(strlen(txt)+1);
1389 pref_get_unescaped_pref(out, txt);
1391 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1396 /* set the contents of a gtkentry widget from the internal \-escaped
1397 representation of a pref string. both txt and entry must be non-NULL. */
1398 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1402 g_return_if_fail( entry != NULL );
1404 gtk_entry_set_text(entry, "");
1406 out = malloc(strlen(txt)+1);
1408 pref_get_unescaped_pref(out, txt);
1410 gtk_entry_set_text(entry, out?out:"");
1415 /* get the \-escaped internal representation of a pref from the contents of
1416 a textview widget. textview must be non-NULL. */
1417 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1419 GtkTextBuffer *buffer;
1420 GtkTextIter start, end;
1423 g_return_val_if_fail( textview != NULL, "" );
1425 buffer = gtk_text_view_get_buffer(textview);
1426 gtk_text_buffer_get_start_iter(buffer, &start);
1427 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1428 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1429 out = malloc(2*strlen(tmp)+1);
1431 pref_get_escaped_pref(out, tmp);
1437 /* get the \-escaped internal representation of a pref from the contents of
1438 a gtkentry widget. entry must be non-NULL. */
1439 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1443 g_return_val_if_fail( entry != NULL, "" );
1445 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1446 out = malloc(2*strlen(tmp)+1);
1448 pref_get_escaped_pref(out, tmp);
1454 /* ugly hack to be able to get this pref from ssl_certificate.c */
1455 gboolean prefs_common_unsafe_ssl_certs(void)
1457 return prefs_common.unsafe_ssl_certs;
1460 gboolean prefs_common_enable_log_standard(void)
1462 return prefs_common.enable_log_standard;
1465 gboolean prefs_common_enable_log_warning(void)
1467 return prefs_common.enable_log_warning;
1469 gboolean prefs_common_enable_log_error(void)
1471 return prefs_common.enable_log_error;
1473 gboolean prefs_common_enable_log_status(void)
1475 return prefs_common.enable_log_status;
1479 const gchar *prefs_common_get_data_root(void)
1481 if (prefs_common.data_root && *prefs_common.data_root)
1482 return prefs_common.data_root;
1488 return the translated name of a header, if the translate_header option is
1489 set, otherwise return the untranslated header name (header_name itself).
1490 this function is provided for convenience, it's an interface to
1491 prefs_common.trans_hdr.
1492 works with header names either with or without trailing colon, provided
1493 that gettext found such header name in the sources (they should all be
1494 found in src/gtk/headers.h anyway).
1496 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1498 if (header_name == NULL || *header_name == '\0')
1501 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1504 const gchar *prefs_common_get_uri_cmd(void)
1508 if (!prefs_common.cmds_use_system_default)
1509 return prefs_common.uri_cmd;
1511 tmp = g_find_program_in_path("xdg-open");
1513 return prefs_common.uri_cmd;
1516 return "xdg-open %s";
1519 const gchar *prefs_common_get_ext_editor_cmd(void)
1521 return prefs_common.ext_editor_cmd;
1522 #if 0 /* we should do that, but it detaches the editor and breaks
1523 compose.c's external composition. */
1526 if (!prefs_common.cmds_use_system_default)
1527 return prefs_common.ext_editor_cmd;
1529 tmp = g_find_program_in_path("xdg-open");
1531 return prefs_common.ext_editor_cmd;
1534 return "xdg-open %s";