2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
27 #include <glib/gi18n.h>
29 #include <gdk/gdkkeysyms.h>
34 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "mainwindow.h"
45 #include "summaryview.h"
46 #include "folderview.h"
47 #include "messageview.h"
48 #include "manage_window.h"
54 #include "alertpanel.h"
58 #include "folderview.h"
59 #include "stock_pixmap.h"
60 #include "prefswindow.h"
61 #include "colorlabel.h"
62 #include "addrcustomattr.h"
70 PrefsCommon prefs_common;
76 * In the Windows version prefs_common contains
77 * - the non-OS-specific settings of the "Common" section and
78 * - the OS-specific settings of the "CommonWin32" section
79 * The OS-specific settings of the "Common" section are not used
80 * but saved in prefs_unix.
83 # define SPECIFIC_PREFS prefs_unix
85 static PrefsCommon prefs_unix;
87 static PrefParam param_os_specific[] = {
90 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
91 {"newmail_notify_cmd", "",
92 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
95 {"widget_font_gtk2", NULL,
96 &prefs_common.widgetfont, P_STRING, NULL, NULL, NULL},
97 {"message_font_gtk2", "Monospace 9",
98 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
99 {"print_font_gtk2", "Monospace 9",
100 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
101 {"small_font_gtk2", "Sans 9",
102 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
103 {"normal_font_gtk2", "Sans 9",
104 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
105 {"bold_font_gtk2", "Sans 9 Bold",
106 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
108 {"attach_save_directory", NULL,
109 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
110 {"attach_load_directory", NULL,
111 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
114 {"mime_textviewer", NULL,
115 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
116 {"mime_open_command", "notepad '%s'",
117 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
120 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
121 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
124 {"uri_open_command", NULL,
125 &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
126 {"print_command", "notepad /p %s",
127 &prefs_common.print_cmd, P_STRING, NULL, NULL, NULL},
128 {"ext_editor_command", "notepad %s",
129 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
131 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
134 # define SPECIFIC_PREFS prefs_common
138 parameter name, default value, pointer to the prefs variable, data type,
139 pointer to the widget pointer,
140 pointer to the function for data setting,
141 pointer to the function for widget setting
144 static PrefParam param[] = {
146 {"data_root", "", &prefs_common.data_root, P_STRING,
150 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
152 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
155 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
157 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
159 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
161 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
162 P_BOOL, NULL, NULL, NULL},
163 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
164 P_BOOL, NULL, NULL, NULL},
165 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
166 P_BOOL, NULL, NULL, NULL},
167 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
168 P_BOOL, NULL, NULL, NULL},
169 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
172 {"maemo_show_led", "TRUE", &prefs_common.maemo_show_led, P_BOOL,
174 {"maemo_play_sound", "FALSE", &prefs_common.maemo_play_sound, P_BOOL,
176 {"maemo_show_banner", "FALSE", &prefs_common.maemo_show_banner, P_BOOL,
179 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
181 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
183 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
185 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
186 P_BOOL, NULL, NULL, NULL},
187 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
188 P_BOOL, NULL, NULL, NULL},
191 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
193 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
194 P_BOOL, NULL, NULL, NULL},
196 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
199 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
202 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
204 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
207 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
209 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
212 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
213 P_BOOL, NULL, NULL, NULL},
216 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
218 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
219 P_BOOL, NULL, NULL, NULL},
220 {"redirect_keep_from", "FALSE",
221 &prefs_common.redirect_keep_from, P_BOOL,
223 {"undo_level", "50", &prefs_common.undolevels, P_INT,
225 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
227 {"compose_subject_format", "",
228 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
229 {"compose_body_format", NULL,
230 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
232 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
234 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
236 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
238 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
240 {"autosave", "TRUE", &prefs_common.autosave,
241 P_BOOL, NULL, NULL, NULL},
242 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
245 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
247 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
249 {"dictionary", "", &prefs_common.dictionary, P_STRING,
251 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
253 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
255 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
257 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
259 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
260 P_BOOL, NULL, NULL, NULL},
261 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
263 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
266 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
268 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
271 /* Account autoselection */
272 {"reply_account_autoselect", "TRUE",
273 &prefs_common.reply_account_autosel, P_BOOL,
275 {"forward_account_autoselect", "TRUE",
276 &prefs_common.forward_account_autosel, P_BOOL,
278 {"reedit_account_autoselect", "TRUE",
279 &prefs_common.reedit_account_autosel, P_BOOL,
282 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
286 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
289 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
294 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
296 {"reply_quote_format", NULL,
297 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
299 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
301 {"forward_quote_format", NULL, &prefs_common.fw_quotefmt, P_STRING,
303 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
307 /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
308 {"widget_font", NULL,
309 &prefs_common.widgetfont_gtk1, P_STRING, NULL, NULL, NULL},
310 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
311 &prefs_common.textfont_gtk1, P_STRING, NULL, NULL, NULL},
312 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
313 &prefs_common.smallfont_gtk1, P_STRING, NULL, NULL, NULL},
314 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
315 &prefs_common.boldfont_gtk1, P_STRING, NULL, NULL, NULL},
316 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
317 &prefs_common.normalfont_gtk1, P_STRING, NULL, NULL, NULL},
321 {"widget_font_gtk2", NULL,
322 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
323 {"message_font_gtk2", "Monospace 9",
324 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
325 {"print_font_gtk2", "Monospace 9",
326 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
327 {"small_font_gtk2", "Sans 9",
328 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
329 {"normal_font_gtk2", "Sans 9",
330 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
331 {"bold_font_gtk2", "Sans Bold 9",
332 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
334 {"widget_font_gtk2", NULL,
335 &SPECIFIC_PREFS.widgetfont, P_STRING, NULL, NULL, NULL},
336 {"message_font_gtk2", "Monospace 8",
337 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
338 {"print_font_gtk2", "Monospace 8",
339 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
340 {"small_font_gtk2", "Sans 8",
341 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
342 {"normal_font_gtk2", "Sans 8",
343 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
344 {"bold_font_gtk2", "Sans Bold 8",
345 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
348 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
350 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
354 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
356 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
358 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
360 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
362 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
364 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
366 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
368 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
370 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
372 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
374 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
376 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
378 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
380 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
382 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
384 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
386 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
388 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
390 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
392 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
394 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
396 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
398 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
400 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
402 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
404 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
406 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
408 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
410 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
412 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
416 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
418 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
420 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
423 {"display_folder_unread_num", "0",
424 &prefs_common.display_folder_unread, P_INT,
426 {"newsgroup_abbrev_len", "16",
427 &prefs_common.ng_abbrev_len, P_INT,
430 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
433 /* Display: Summary View */
434 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
436 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
438 {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
439 P_STRING, NULL, NULL, NULL},
441 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
444 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
447 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
450 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
453 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
455 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
458 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
460 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
463 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
465 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
469 {"summary_col_show_mark", "TRUE",
470 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
471 {"summary_col_show_unread", "TRUE",
472 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
473 {"summary_col_show_subject", "TRUE",
474 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
475 {"summary_col_show_from", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_to", "FALSE",
478 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_date", "TRUE",
480 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_mime", "TRUE",
482 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_size", "TRUE",
484 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_number", "FALSE",
486 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_score", "FALSE",
488 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_locked", "FALSE",
490 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_tags", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
494 {"summary_col_pos_mark", "0",
495 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
496 {"summary_col_pos_unread", "1",
497 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
498 {"summary_col_pos_mime", "2",
499 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
500 {"summary_col_pos_subject", "3",
501 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_from", "4",
503 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_date", "5",
505 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_size", "6",
507 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_number", "7",
509 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_score", "8",
511 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_locked", "9",
513 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
514 {"summary_col_pos_to", "10",
515 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
516 {"summary_col_pos_tags", "11",
517 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
519 {"summary_col_size_mark", "10",
520 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
521 {"summary_col_size_unread", "13",
522 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
523 {"summary_col_size_mime", "10",
524 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
526 {"summary_col_size_subject", "200",
527 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
528 {"summary_col_size_from", "120",
529 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
530 {"summary_col_size_to", "120",
531 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
533 {"summary_col_size_subject", "300",
534 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
535 {"summary_col_size_from", "150",
536 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
537 {"summary_col_size_to", "150",
538 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
541 {"summary_col_size_date", "118",
542 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_size", "45",
544 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_number", "40",
546 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_score", "40",
548 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
549 {"summary_col_size_locked", "13",
550 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_tags", "150",
552 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
555 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
557 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
559 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
561 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
563 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
566 {"folder_col_show_folder", "TRUE",
567 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
568 {"folder_col_show_new", "TRUE",
569 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
570 {"folder_col_show_unread", "TRUE",
571 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
572 {"folder_col_show_total", "TRUE",
573 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
575 {"folder_col_pos_folder", "0",
576 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
577 {"folder_col_pos_new", "1",
578 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
579 {"folder_col_pos_unread", "2",
580 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
581 {"folder_col_pos_total", "3",
582 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
585 {"folder_col_size_folder", "120",
586 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
587 {"folder_col_size_new", "32",
588 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
589 {"folder_col_size_unread", "32",
590 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
591 {"folder_col_size_total", "32",
592 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
594 {"folder_col_size_folder", "400",
595 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
596 {"folder_col_size_new", "32",
597 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
598 {"folder_col_size_unread", "32",
599 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
600 {"folder_col_size_total", "32",
601 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
603 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
605 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
608 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
610 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
612 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
614 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
616 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
619 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
621 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
623 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
625 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
627 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
629 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
631 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
634 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
636 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
638 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
640 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
642 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
644 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
646 {"compose_width", "600", &prefs_common.compose_width, P_INT,
648 {"compose_height", "560", &prefs_common.compose_height, P_INT,
651 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
653 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
655 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
657 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
659 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
661 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
663 {"compose_width", "700", &prefs_common.compose_width, P_INT,
665 {"compose_height", "470", &prefs_common.compose_height, P_INT,
668 {"compose_x", "0", &prefs_common.compose_x, P_INT,
670 {"compose_y", "0", &prefs_common.compose_y, P_INT,
673 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
676 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
678 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
680 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
682 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
684 {"quote_level1_bgcolor", "13421772", &prefs_common.quote_level1_bgcol, P_COLOR,
686 {"quote_level2_bgcolor", "13948116", &prefs_common.quote_level2_bgcol, P_COLOR,
688 {"quote_level3_bgcolor", "14540253", &prefs_common.quote_level3_bgcol, P_COLOR,
690 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
692 {"emphasis_color", "207", &prefs_common.emphasis_col, P_COLOR,
694 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
696 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
698 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
699 P_BOOL, NULL, NULL, NULL},
701 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
702 P_BOOL, NULL, NULL, NULL},
703 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
705 {"display_xface", "TRUE", &prefs_common.display_xface,
706 P_BOOL, NULL, NULL, NULL},
707 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
709 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
711 {"line_space", "2", &prefs_common.line_space, P_INT,
713 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
716 {"enable_smooth_scroll", "FALSE",
717 &prefs_common.enable_smooth_scroll, P_BOOL,
719 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
721 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
723 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
726 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
729 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
731 {"attach_save_directory", NULL,
732 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
733 {"attach_load_directory", NULL,
734 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
737 {"mime_textviewer", NULL,
738 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
739 {"mime_open_command", "gedit '%s'",
740 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
744 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
747 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
750 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
751 NULL, NULL, NULL}, */
752 {"always_show_message_when_selected", "FALSE",
753 &prefs_common.always_show_msg,
754 P_BOOL, NULL, NULL, NULL},
755 {"select_on_entry", "3", &prefs_common.select_on_entry,
756 P_ENUM, NULL, NULL, NULL},
757 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
758 P_BOOL, NULL, NULL, NULL},
760 /* do it SUMMARY_OPEN_ACTIONS-1 times */
761 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
763 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
765 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
767 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
769 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
771 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
773 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
776 {"mark_as_read_on_new_window", "FALSE",
777 &prefs_common.mark_as_read_on_new_window,
778 P_BOOL, NULL, NULL, NULL},
779 {"mark_as_read_delay", "0",
780 &prefs_common.mark_as_read_delay, P_INT,
782 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
784 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
787 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
788 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
791 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
794 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
796 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
800 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
801 P_BOOL, NULL, NULL, NULL},
802 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
803 P_INT, NULL, NULL, NULL},
804 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
805 P_INT, NULL, NULL, NULL},
808 {"uri_open_command", DEFAULT_BROWSER_CMD,
809 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
810 {"print_command", "lpr %s",
811 &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
812 {"ext_editor_command", DEFAULT_EDITOR_CMD,
813 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
814 {"cmds_use_system_default", "FALSE",
815 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
816 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
817 P_BOOL, NULL, NULL, NULL},
818 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
820 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
822 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
824 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
825 P_BOOL, NULL, NULL, NULL},
826 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
828 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
831 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
834 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
838 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
839 P_INT, NULL, NULL, NULL},
840 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
842 {"important_score", "1", &prefs_common.important_score, P_INT,
845 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
847 {"log_length", "500", &prefs_common.loglength, P_INT,
850 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
852 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
854 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
856 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
859 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
861 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
863 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
865 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
868 {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
870 {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
872 {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
874 {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
876 {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
878 {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
880 {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
882 {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
885 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
887 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
889 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
891 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
893 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
895 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
897 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
899 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
901 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
904 {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
907 {"color_new", "179", &prefs_common.color_new, P_COLOR,
910 /* Some windows' sizes */
911 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
913 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
916 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
918 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
921 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
923 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
926 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
928 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
931 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
933 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
936 {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
938 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
941 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
943 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
946 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
948 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
951 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
953 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
956 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
958 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
961 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
963 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
966 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
968 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
971 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
974 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
976 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
979 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
981 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
984 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
986 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
989 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
991 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
994 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
996 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
999 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1001 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1004 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1006 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1010 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1012 {"utf8_instead_of_locale_for_broken_mail", "0",
1013 &prefs_common.broken_are_utf8, P_INT,
1015 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1017 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1019 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1021 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1023 {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1025 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1027 {"folderview_vscrollbar_policy", "0",
1028 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1030 {"textview_cursor_visible", "FALSE",
1031 &prefs_common.textview_cursor_visible, P_BOOL,
1033 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1036 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1038 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1041 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1043 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1046 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1047 P_INT, NULL, NULL, NULL },
1048 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1049 P_STRING, NULL, NULL, NULL },
1050 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1051 P_BOOL, NULL, NULL, NULL },
1052 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1054 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1056 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1058 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1060 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1062 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1064 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1066 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1068 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1070 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1073 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1076 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1080 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1082 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1084 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1086 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1088 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1090 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1092 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1094 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1096 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1098 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1100 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1103 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1107 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1108 * Fallback to default_list if history file is not found
1110 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1111 GList *default_list)
1115 gchar buf[PREFSBUFSIZE];
1119 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1120 G_DIR_SEPARATOR_S, history,
1123 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1126 if ((fp = g_fopen(path, "rb")) == NULL) {
1127 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1129 /* returns default list if set, otherwise NULL */
1130 return default_list;
1133 while (fgets(buf, sizeof(buf), fp) != NULL) {
1135 if (buf[0] == '\0') continue;
1136 tmp = add_history(tmp, buf);
1140 tmp = g_list_reverse(tmp);
1146 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1148 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1150 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1154 * Read history list from the specified history file
1156 static GList *prefs_common_read_history(const gchar *history)
1158 return prefs_common_read_history_from_dir(NULL, history);
1161 void prefs_common_read_config(void)
1166 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1167 prefs_read_config(param, "Common", rcpath, NULL);
1169 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1174 tmp = g_strdup(gettext(prefs_common.date_format));
1175 g_free(prefs_common.date_format);
1176 prefs_common.date_format = tmp;
1178 prefs_common.mime_open_cmd_history =
1179 prefs_common_read_history(COMMAND_HISTORY);
1180 prefs_common.summary_quicksearch_history =
1181 prefs_common_read_history(QUICKSEARCH_HISTORY);
1182 prefs_common.summary_search_from_history =
1183 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1184 prefs_common.summary_search_to_history =
1185 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1186 prefs_common.summary_search_subject_history =
1187 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1188 prefs_common.summary_search_body_history =
1189 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1190 prefs_common.summary_search_adv_condition_history =
1191 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1192 prefs_common.message_search_history =
1193 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1195 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1197 colorlabel_update_colortable_from_prefs();
1203 g_warning("failed to write\n"); \
1208 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1210 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1214 gchar *path, *tmp_path;
1217 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1218 G_DIR_SEPARATOR_S, history,
1221 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1224 tmp_path = g_strconcat(path, ".tmp", NULL);
1226 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1227 FILE_OP_ERROR(tmp_path, "fopen");
1231 for (cur = list; cur != NULL; cur = cur->next) {
1232 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1233 fputc('\n', fp) != EOF);
1236 if (fclose(fp) == EOF) {
1237 FILE_OP_ERROR(tmp_path, "fclose");
1245 if (g_rename(tmp_path, path) < 0) {
1246 FILE_OP_ERROR(path, "rename");
1258 * Save history list to the specified history file
1260 static void prefs_common_save_history(const gchar *history, GList *list)
1262 prefs_common_save_history_to_dir(NULL, history, list);
1267 void prefs_common_write_config(void)
1269 prefs_write_config(param, "Common", COMMON_RC);
1271 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1274 prefs_common_save_history(COMMAND_HISTORY,
1275 prefs_common.mime_open_cmd_history);
1276 prefs_common_save_history(QUICKSEARCH_HISTORY,
1277 prefs_common.summary_quicksearch_history);
1278 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1279 prefs_common.summary_search_from_history);
1280 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1281 prefs_common.summary_search_to_history);
1282 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1283 prefs_common.summary_search_subject_history);
1284 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1285 prefs_common.summary_search_body_history);
1286 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1287 prefs_common.summary_search_adv_condition_history);
1288 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1289 prefs_common.message_search_history);
1291 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1292 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1293 prefs_common.addressbook_custom_attributes);
1296 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1297 both 'in' and 'out' must be non-NULL.
1298 'out' must be a pointer to a buffer whose size is at least equal
1299 to strlen(txt)+1, this buffer will get cleared. out's contents
1300 will always get set to a valid string, even if it's "".*/
1301 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1308 g_return_if_fail( in != NULL );
1309 g_return_if_fail( out != NULL );
1313 memset(out, 0, strlen(in)+1);
1314 while (*i != '\0') {
1315 if (*i == '\\' && *(i+1) == 'n') {
1318 } else if (*i == '\\' && *(i+1) == 't') {
1321 } else if (*i == '\\' && *(i+1) == '\\') {
1332 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1333 both 'in' and 'out' must be non-NULL.
1334 'out' must be a pointer to a buffer whose size is at least equal
1335 to 2*strlen(txt)+1. out's contents will always get set to a valid
1336 string, even if it's "". */
1337 void pref_get_escaped_pref(gchar *out, const gchar *in)
1344 g_return_if_fail( in != NULL );
1345 g_return_if_fail( out != NULL );
1349 while (*i != '\0') {
1353 } else if (*i == '\t') {
1356 } else if (*i == '\\') {
1367 /* set the contents of a textview widget from the internal \-escaped
1368 representation of a pref string. both txt and textview must be non-NULL. */
1369 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1371 GtkTextBuffer *buffer;
1374 g_return_if_fail( textview != NULL );
1376 buffer = gtk_text_view_get_buffer(textview);
1379 gtk_text_buffer_set_text(buffer, "", -1);
1381 out = malloc(strlen(txt)+1);
1383 pref_get_unescaped_pref(out, txt);
1385 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1390 /* set the contents of a gtkentry widget from the internal \-escaped
1391 representation of a pref string. both txt and entry must be non-NULL. */
1392 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1396 g_return_if_fail( entry != NULL );
1398 gtk_entry_set_text(entry, "");
1400 out = malloc(strlen(txt)+1);
1402 pref_get_unescaped_pref(out, txt);
1404 gtk_entry_set_text(entry, out?out:"");
1409 /* get the \-escaped internal representation of a pref from the contents of
1410 a textview widget. textview must be non-NULL. */
1411 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1413 GtkTextBuffer *buffer;
1414 GtkTextIter start, end;
1417 g_return_val_if_fail( textview != NULL, "" );
1419 buffer = gtk_text_view_get_buffer(textview);
1420 gtk_text_buffer_get_start_iter(buffer, &start);
1421 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1422 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1423 out = malloc(2*strlen(tmp)+1);
1425 pref_get_escaped_pref(out, tmp);
1431 /* get the \-escaped internal representation of a pref from the contents of
1432 a gtkentry widget. entry must be non-NULL. */
1433 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1437 g_return_val_if_fail( entry != NULL, "" );
1439 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1440 out = malloc(2*strlen(tmp)+1);
1442 pref_get_escaped_pref(out, tmp);
1448 /* ugly hack to be able to get this pref from ssl_certificate.c */
1449 gboolean prefs_common_unsafe_ssl_certs(void)
1451 return prefs_common.unsafe_ssl_certs;
1454 gboolean prefs_common_enable_log_standard(void)
1456 return prefs_common.enable_log_standard;
1459 gboolean prefs_common_enable_log_warning(void)
1461 return prefs_common.enable_log_warning;
1463 gboolean prefs_common_enable_log_error(void)
1465 return prefs_common.enable_log_error;
1467 gboolean prefs_common_enable_log_status(void)
1469 return prefs_common.enable_log_status;
1473 const gchar *prefs_common_get_data_root(void)
1475 if (prefs_common.data_root && *prefs_common.data_root)
1476 return prefs_common.data_root;
1482 return the translated name of a header, if the translate_header option is
1483 set, otherwise return the untranslated header name (header_name itself).
1484 this function is provided for convenience, it's an interface to
1485 prefs_common.trans_hdr.
1486 works with header names either with or without trailing colon, provided
1487 that gettext found such header name in the sources (they should all be
1488 found in src/gtk/headers.h anyway).
1490 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1492 if (header_name == NULL || *header_name == '\0')
1495 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1498 const gchar *prefs_common_get_uri_cmd(void)
1502 if (!prefs_common.cmds_use_system_default)
1503 return prefs_common.uri_cmd;
1505 tmp = g_find_program_in_path("xdg-open");
1507 return prefs_common.uri_cmd;
1510 return "xdg-open %s";
1513 const gchar *prefs_common_get_ext_editor_cmd(void)
1515 return prefs_common.ext_editor_cmd;
1516 #if 0 /* we should do that, but it detaches the editor and breaks
1517 compose.c's external composition. */
1520 if (!prefs_common.cmds_use_system_default)
1521 return prefs_common.ext_editor_cmd;
1523 tmp = g_find_program_in_path("xdg-open");
1525 return prefs_common.ext_editor_cmd;
1528 return "xdg-open %s";
1532 gboolean prefs_common_get_use_shred(void)
1534 return prefs_common.use_shred;