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,
1101 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1105 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1106 * Fallback to default_list if history file is not found
1108 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1109 GList *default_list)
1113 gchar buf[PREFSBUFSIZE];
1117 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1118 G_DIR_SEPARATOR_S, history,
1121 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1124 if ((fp = g_fopen(path, "rb")) == NULL) {
1125 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1127 /* returns default list if set, otherwise NULL */
1128 return default_list;
1131 while (fgets(buf, sizeof(buf), fp) != NULL) {
1133 if (buf[0] == '\0') continue;
1134 tmp = add_history(tmp, buf);
1138 tmp = g_list_reverse(tmp);
1144 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1146 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1148 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1152 * Read history list from the specified history file
1154 static GList *prefs_common_read_history(const gchar *history)
1156 return prefs_common_read_history_from_dir(NULL, history);
1159 void prefs_common_read_config(void)
1164 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1165 prefs_read_config(param, "Common", rcpath, NULL);
1167 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1172 tmp = g_strdup(gettext(prefs_common.date_format));
1173 g_free(prefs_common.date_format);
1174 prefs_common.date_format = tmp;
1176 prefs_common.mime_open_cmd_history =
1177 prefs_common_read_history(COMMAND_HISTORY);
1178 prefs_common.summary_quicksearch_history =
1179 prefs_common_read_history(QUICKSEARCH_HISTORY);
1180 prefs_common.summary_search_from_history =
1181 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1182 prefs_common.summary_search_to_history =
1183 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1184 prefs_common.summary_search_subject_history =
1185 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1186 prefs_common.summary_search_body_history =
1187 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1188 prefs_common.summary_search_adv_condition_history =
1189 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1190 prefs_common.message_search_history =
1191 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1193 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1195 colorlabel_update_colortable_from_prefs();
1201 g_warning("failed to write\n"); \
1206 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1208 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1212 gchar *path, *tmp_path;
1215 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1216 G_DIR_SEPARATOR_S, history,
1219 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1222 tmp_path = g_strconcat(path, ".tmp", NULL);
1224 if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1225 FILE_OP_ERROR(tmp_path, "fopen");
1229 for (cur = list; cur != NULL; cur = cur->next) {
1230 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1231 fputc('\n', fp) != EOF);
1234 if (fclose(fp) == EOF) {
1235 FILE_OP_ERROR(tmp_path, "fclose");
1243 if (g_rename(tmp_path, path) < 0) {
1244 FILE_OP_ERROR(path, "rename");
1256 * Save history list to the specified history file
1258 static void prefs_common_save_history(const gchar *history, GList *list)
1260 prefs_common_save_history_to_dir(NULL, history, list);
1265 void prefs_common_write_config(void)
1267 prefs_write_config(param, "Common", COMMON_RC);
1269 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1272 prefs_common_save_history(COMMAND_HISTORY,
1273 prefs_common.mime_open_cmd_history);
1274 prefs_common_save_history(QUICKSEARCH_HISTORY,
1275 prefs_common.summary_quicksearch_history);
1276 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1277 prefs_common.summary_search_from_history);
1278 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1279 prefs_common.summary_search_to_history);
1280 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1281 prefs_common.summary_search_subject_history);
1282 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1283 prefs_common.summary_search_body_history);
1284 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1285 prefs_common.summary_search_adv_condition_history);
1286 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1287 prefs_common.message_search_history);
1289 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1290 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1291 prefs_common.addressbook_custom_attributes);
1294 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1295 both 'in' and 'out' must be non-NULL.
1296 'out' must be a pointer to a buffer whose size is at least equal
1297 to strlen(txt)+1, this buffer will get cleared. out's contents
1298 will always get set to a valid string, even if it's "".*/
1299 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1306 g_return_if_fail( in != NULL );
1307 g_return_if_fail( out != NULL );
1311 memset(out, 0, strlen(in)+1);
1312 while (*i != '\0') {
1313 if (*i == '\\' && *(i+1) == 'n') {
1316 } else if (*i == '\\' && *(i+1) == 't') {
1319 } else if (*i == '\\' && *(i+1) == '\\') {
1330 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1331 both 'in' and 'out' must be non-NULL.
1332 'out' must be a pointer to a buffer whose size is at least equal
1333 to 2*strlen(txt)+1. out's contents will always get set to a valid
1334 string, even if it's "". */
1335 void pref_get_escaped_pref(gchar *out, const gchar *in)
1342 g_return_if_fail( in != NULL );
1343 g_return_if_fail( out != NULL );
1347 while (*i != '\0') {
1351 } else if (*i == '\t') {
1354 } else if (*i == '\\') {
1365 /* set the contents of a textview widget from the internal \-escaped
1366 representation of a pref string. both txt and textview must be non-NULL. */
1367 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1369 GtkTextBuffer *buffer;
1372 g_return_if_fail( textview != NULL );
1374 buffer = gtk_text_view_get_buffer(textview);
1377 gtk_text_buffer_set_text(buffer, "", -1);
1379 out = malloc(strlen(txt)+1);
1381 pref_get_unescaped_pref(out, txt);
1383 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1388 /* set the contents of a gtkentry widget from the internal \-escaped
1389 representation of a pref string. both txt and entry must be non-NULL. */
1390 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1394 g_return_if_fail( entry != NULL );
1396 gtk_entry_set_text(entry, "");
1398 out = malloc(strlen(txt)+1);
1400 pref_get_unescaped_pref(out, txt);
1402 gtk_entry_set_text(entry, out?out:"");
1407 /* get the \-escaped internal representation of a pref from the contents of
1408 a textview widget. textview must be non-NULL. */
1409 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1411 GtkTextBuffer *buffer;
1412 GtkTextIter start, end;
1415 g_return_val_if_fail( textview != NULL, "" );
1417 buffer = gtk_text_view_get_buffer(textview);
1418 gtk_text_buffer_get_start_iter(buffer, &start);
1419 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1420 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1421 out = malloc(2*strlen(tmp)+1);
1423 pref_get_escaped_pref(out, tmp);
1429 /* get the \-escaped internal representation of a pref from the contents of
1430 a gtkentry widget. entry must be non-NULL. */
1431 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1435 g_return_val_if_fail( entry != NULL, "" );
1437 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1438 out = malloc(2*strlen(tmp)+1);
1440 pref_get_escaped_pref(out, tmp);
1446 /* ugly hack to be able to get this pref from ssl_certificate.c */
1447 gboolean prefs_common_unsafe_ssl_certs(void)
1449 return prefs_common.unsafe_ssl_certs;
1452 gboolean prefs_common_enable_log_standard(void)
1454 return prefs_common.enable_log_standard;
1457 gboolean prefs_common_enable_log_warning(void)
1459 return prefs_common.enable_log_warning;
1461 gboolean prefs_common_enable_log_error(void)
1463 return prefs_common.enable_log_error;
1465 gboolean prefs_common_enable_log_status(void)
1467 return prefs_common.enable_log_status;
1471 const gchar *prefs_common_get_data_root(void)
1473 if (prefs_common.data_root && *prefs_common.data_root)
1474 return prefs_common.data_root;
1480 return the translated name of a header, if the translate_header option is
1481 set, otherwise return the untranslated header name (header_name itself).
1482 this function is provided for convenience, it's an interface to
1483 prefs_common.trans_hdr.
1484 works with header names either with or without trailing colon, provided
1485 that gettext found such header name in the sources (they should all be
1486 found in src/gtk/headers.h anyway).
1488 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1490 if (header_name == NULL || *header_name == '\0')
1493 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1496 const gchar *prefs_common_get_uri_cmd(void)
1500 if (!prefs_common.cmds_use_system_default)
1501 return prefs_common.uri_cmd;
1503 tmp = g_find_program_in_path("xdg-open");
1505 return prefs_common.uri_cmd;
1508 return "xdg-open %s";
1511 const gchar *prefs_common_get_ext_editor_cmd(void)
1513 return prefs_common.ext_editor_cmd;
1514 #if 0 /* we should do that, but it detaches the editor and breaks
1515 compose.c's external composition. */
1518 if (!prefs_common.cmds_use_system_default)
1519 return prefs_common.ext_editor_cmd;
1521 tmp = g_find_program_in_path("xdg-open");
1523 return prefs_common.ext_editor_cmd;
1526 return "xdg-open %s";