2007-11-07 [colin] 3.0.2cvs124
[claws.git] / src / prefs_common.c
1 /*
2  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3  * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
4  *
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.
9  *
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.
14  *
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/>.
17  * 
18  */
19
20 #ifdef HAVE_CONFIG_H
21 #  include "config.h"
22 #endif
23
24 #include "defs.h"
25
26 #include <glib.h>
27 #include <glib/gi18n.h>
28 #include <gtk/gtk.h>
29 #include <gdk/gdkkeysyms.h>
30 #include <stdio.h>
31 #include <stdlib.h>
32 #include <string.h>
33 #include <unistd.h>
34 #include <sys/types.h>
35 #include <sys/stat.h>
36 #include <errno.h>
37
38 #include "main.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"
49 #include "inc.h"
50 #include "menu.h"
51 #include "codeconv.h"
52 #include "utils.h"
53 #include "gtkutils.h"
54 #include "alertpanel.h"
55 #include "folder.h"
56 #include "socket.h"
57 #include "filesel.h"
58 #include "folderview.h"
59 #include "stock_pixmap.h"
60 #include "prefswindow.h"
61 #include "colorlabel.h"
62
63 enum {
64         DATEFMT_FMT,
65         DATEFMT_TXT,
66         N_DATEFMT_COLUMNS
67 };
68
69 PrefsCommon prefs_common;
70
71 GtkWidget *notebook;
72
73 #ifdef G_OS_WIN32
74 /*
75  * In the Windows version prefs_common contains
76  *   - the non-OS-specific settings of the "Common" section and
77  *   - the OS-specific settings of the "CommonWin32" section
78  * The OS-specific settings of the "Common" section are not used
79  * but saved in prefs_unix.
80  */
81
82 #  define SPECIFIC_PREFS prefs_unix
83
84 static PrefsCommon prefs_unix;
85
86 static PrefParam param_os_specific[] = {
87         /* Receive */
88         {"ext_inc_path", "",
89          &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
90         {"newmail_notify_cmd", "",
91          &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
92
93         /* new fonts */
94         {"widget_font_gtk2",    NULL,
95           &prefs_common.widgetfont,             P_STRING, NULL, NULL, NULL},
96         {"message_font_gtk2",   "Monospace 9",
97          &prefs_common.textfont,                P_STRING, NULL, NULL, NULL},
98         {"print_font_gtk2",     "Monospace 9",
99          &prefs_common.printfont,               P_STRING, NULL, NULL, NULL},
100         {"small_font_gtk2",     "Sans 9",
101           &prefs_common.smallfont,              P_STRING, NULL, NULL, NULL},
102         {"normal_font_gtk2",    "Sans 9",
103           &prefs_common.normalfont,             P_STRING, NULL, NULL, NULL},
104         /* Message */
105         {"attach_save_directory", NULL,
106          &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
107         {"attach_load_directory", NULL,
108          &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
109
110         /* MIME viewer */
111         {"mime_textviewer", NULL,
112          &prefs_common.mime_textviewer,   P_STRING, NULL, NULL, NULL},
113         {"mime_open_command", "notepad '%s'",
114          &prefs_common.mime_open_cmd,     P_STRING, NULL, NULL, NULL},
115
116         /* Interface */
117         {"pixmap_theme_path", DEFAULT_PIXMAP_THEME, 
118          &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
119
120         /* Other */
121         {"uri_open_command", NULL,
122          &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
123         {"print_command", "notepad /p %s",
124          &prefs_common.print_cmd, P_STRING, NULL, NULL, NULL},
125         {"ext_editor_command", "notepad %s",
126          &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
127
128         {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
129 };
130 #else
131 #  define SPECIFIC_PREFS prefs_common
132 #endif
133
134 /*
135    parameter name, default value, pointer to the prefs variable, data type,
136    pointer to the widget pointer,
137    pointer to the function for data setting,
138    pointer to the function for widget setting
139  */
140
141 static PrefParam param[] = {
142 #ifdef MAEMO
143         {"data_root", "", &prefs_common.data_root, P_STRING,
144          NULL, NULL, NULL},
145 #endif
146         /* Receive */
147         {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
148          NULL, NULL, NULL},
149         {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
150          NULL, NULL, NULL},
151
152         {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
153          NULL, NULL, NULL},
154         {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
155          NULL, NULL, NULL},
156         {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
157          NULL, NULL, NULL},
158         {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
159          P_BOOL, NULL, NULL, NULL},
160         {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
161          P_BOOL, NULL, NULL, NULL},
162         {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
163          P_BOOL, NULL, NULL, NULL},
164         {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
165         P_BOOL, NULL, NULL, NULL},
166         {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
167          NULL, NULL, NULL},
168 #ifdef MAEMO
169         {"maemo_play_sound", "FALSE", &prefs_common.maemo_play_sound, P_BOOL,
170          NULL, NULL, NULL},
171         {"maemo_show_banner", "FALSE", &prefs_common.maemo_show_banner, P_BOOL,
172          NULL, NULL, NULL},
173 #endif
174         {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
175          NULL, NULL, NULL},
176         {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
177          NULL, NULL, NULL},
178         {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
179          NULL, NULL, NULL},
180         {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
181          P_BOOL, NULL, NULL, NULL},
182         {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
183          P_BOOL, NULL, NULL, NULL},
184  
185         /* Send */
186         {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
187          NULL, NULL, NULL},
188         {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
189          P_BOOL, NULL, NULL, NULL},
190         {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
191          NULL, NULL, NULL},
192         {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
193          NULL, NULL, NULL},
194         {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
195          NULL, NULL, NULL},
196
197         {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
198          NULL, NULL, NULL},
199         {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
200          NULL, NULL, NULL},
201
202         {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
203          P_BOOL, NULL, NULL, NULL},
204
205         /* Compose */
206         {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
207          NULL, NULL, NULL},
208         {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
209          P_BOOL, NULL, NULL, NULL},
210         {"redirect_keep_from", "FALSE",
211          &prefs_common.redirect_keep_from, P_BOOL,
212          NULL, NULL, NULL},
213         {"undo_level", "50", &prefs_common.undolevels, P_INT,
214          NULL, NULL, NULL},
215         {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
216          NULL, NULL, NULL},
217         {"compose_subject_format", "",
218          &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
219         {"compose_body_format", N_("Hello,\\n"),
220          &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
221
222         {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
223          NULL, NULL, NULL},
224         {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
225          NULL, NULL, NULL},
226         {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
227          NULL, NULL, NULL},
228         {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
229          NULL, NULL, NULL},
230         {"autosave", "TRUE", &prefs_common.autosave,
231          P_BOOL, NULL, NULL, NULL},
232         {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
233          NULL, NULL, NULL},
234 #if USE_ASPELL
235         {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
236          NULL, NULL, NULL},
237         {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
238          NULL, NULL, NULL},
239         {"dictionary",  "", &prefs_common.dictionary, P_STRING,
240          NULL, NULL, NULL},
241         {"alt_dictionary",  "", &prefs_common.alt_dictionary, P_STRING,
242          NULL, NULL, NULL},
243         {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
244          NULL, NULL, NULL},
245         {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
246          NULL, NULL, NULL},
247         {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
248          NULL, NULL, NULL},
249         {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
250          P_BOOL, NULL, NULL, NULL},
251         {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
252          NULL, NULL, NULL},
253         {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
254          NULL, NULL, NULL},
255 #endif
256         {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
257          NULL, NULL, NULL},
258         {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
259          NULL, NULL, NULL},
260
261         /* Account autoselection */
262         {"reply_account_autoselect", "TRUE",
263          &prefs_common.reply_account_autosel, P_BOOL,
264          NULL, NULL, NULL},
265         {"forward_account_autoselect", "TRUE",
266          &prefs_common.forward_account_autosel, P_BOOL,
267          NULL, NULL, NULL},
268         {"reedit_account_autoselect", "TRUE",
269          &prefs_common.reedit_account_autosel, P_BOOL,
270          NULL, NULL, NULL},
271
272         {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
273          NULL, NULL, NULL},
274
275 #ifndef MAEMO
276         {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
277          NULL, NULL, NULL},
278 #else
279         {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
280          NULL, NULL, NULL},
281 #endif
282
283         /* Quote */
284         {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
285          NULL, NULL, NULL},
286         {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q"),
287          &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
288
289         {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
290          NULL, NULL, NULL},
291         {"forward_quote_format",
292          N_("\\n\\nBegin forwarded message:\\n\\n"
293          "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
294          "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
295          &prefs_common.fw_quotefmt, P_STRING, NULL, NULL, NULL},
296         {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
297          NULL, NULL, NULL},
298
299         /* Display */
300         /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
301         {"widget_font",         NULL,
302           &prefs_common.widgetfont_gtk1,        P_STRING, NULL, NULL, NULL},
303         {"message_font",        "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
304          &prefs_common.textfont_gtk1,           P_STRING, NULL, NULL, NULL},
305         {"small_font",          "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
306           &prefs_common.smallfont_gtk1,         P_STRING, NULL, NULL, NULL},
307         {"bold_font",           "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
308           &prefs_common.boldfont_gtk1,          P_STRING, NULL, NULL, NULL},
309         {"normal_font",         "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
310           &prefs_common.normalfont_gtk1,        P_STRING, NULL, NULL, NULL},
311
312         /* new fonts */
313 #ifndef MAEMO
314         {"widget_font_gtk2",    NULL,
315           &SPECIFIC_PREFS.widgetfont,           P_STRING, NULL, NULL, NULL},
316         {"message_font_gtk2",   "Monospace 9",
317          &SPECIFIC_PREFS.textfont,                      P_STRING, NULL, NULL, NULL},
318         {"print_font_gtk2",     "Monospace 9",
319          &SPECIFIC_PREFS.printfont,             P_STRING, NULL, NULL, NULL},
320         {"small_font_gtk2",     "Sans 9",
321           &SPECIFIC_PREFS.smallfont,            P_STRING, NULL, NULL, NULL},
322         {"normal_font_gtk2",    "Sans 9",
323           &SPECIFIC_PREFS.normalfont,           P_STRING, NULL, NULL, NULL},
324 #else
325         {"widget_font_gtk2",    NULL,
326           &SPECIFIC_PREFS.widgetfont,           P_STRING, NULL, NULL, NULL},
327         {"message_font_gtk2",   "Monospace 8",
328          &SPECIFIC_PREFS.textfont,                      P_STRING, NULL, NULL, NULL},
329         {"print_font_gtk2",     "Monospace 8",
330          &SPECIFIC_PREFS.printfont,             P_STRING, NULL, NULL, NULL},
331         {"small_font_gtk2",     "Sans 8",
332           &SPECIFIC_PREFS.smallfont,            P_STRING, NULL, NULL, NULL},
333         {"normal_font_gtk2",    "Sans 8",
334           &SPECIFIC_PREFS.normalfont,           P_STRING, NULL, NULL, NULL},
335 #endif
336         /* custom colors */
337         {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
338          NULL, NULL, NULL},
339         {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
340          NULL, NULL, NULL},
341         {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
342          NULL, NULL, NULL},
343         {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
344          NULL, NULL, NULL},
345         {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
346          NULL, NULL, NULL},
347         {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
348          NULL, NULL, NULL},
349         {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
350          NULL, NULL, NULL},
351         {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
352          NULL, NULL, NULL},
353         {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
354          NULL, NULL, NULL},
355         {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
356          NULL, NULL, NULL},
357         {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
358          NULL, NULL, NULL},
359         {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
360          NULL, NULL, NULL},
361         {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
362          NULL, NULL, NULL},
363         {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
364          NULL, NULL, NULL},
365         {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
366          NULL, NULL, NULL},
367         {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
368          NULL, NULL, NULL},
369         {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
370          NULL, NULL, NULL},
371         {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
372          NULL, NULL, NULL},
373         {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
374          NULL, NULL, NULL},
375         {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
376          NULL, NULL, NULL},
377         {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
378          NULL, NULL, NULL},
379         {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
380          NULL, NULL, NULL},
381         {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
382          NULL, NULL, NULL},
383         {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
384          NULL, NULL, NULL},
385         {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
386          NULL, NULL, NULL},
387         {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
388          NULL, NULL, NULL},
389         {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
390          NULL, NULL, NULL},
391         {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
392          NULL, NULL, NULL},
393         {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
394          NULL, NULL, NULL},
395         {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
396          NULL, NULL, NULL},
397
398         /* image viewer */
399         {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
400          NULL, NULL, NULL},
401         {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
402          NULL, NULL, NULL},
403         {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
404          NULL, NULL, NULL},
405
406         {"display_folder_unread_num", "0",
407          &prefs_common.display_folder_unread, P_INT,
408          NULL, NULL, NULL},
409         {"newsgroup_abbrev_len", "16",
410          &prefs_common.ng_abbrev_len, P_INT,
411          NULL, NULL, NULL},
412
413         {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
414          NULL, NULL, NULL},
415
416         /* Display: Summary View */
417         {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
418          NULL, NULL, NULL},
419         {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
420          NULL, NULL, NULL},
421         {"date_format", N_("%y/%m/%d(%a) %H:%M"), &prefs_common.date_format,
422          P_STRING, NULL, NULL, NULL},
423
424         {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
425          NULL, NULL, NULL},
426
427         {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
428          NULL, NULL, NULL},
429 #ifndef MAEMO
430         {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
431          NULL, NULL, NULL},
432 #else
433         {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
434          NULL, NULL, NULL},
435 #endif
436         {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
437          NULL, NULL, NULL},
438         {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
439          NULL, NULL, NULL},
440 #ifndef MAEMO
441         {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
442          NULL, NULL, NULL},
443         {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
444          NULL, NULL, NULL},
445 #else
446         {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
447          NULL, NULL, NULL},
448         {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
449          NULL, NULL, NULL},
450 #endif
451
452         {"summary_col_show_mark", "TRUE",
453          &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
454         {"summary_col_show_unread", "TRUE",
455          &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
456         {"summary_col_show_subject", "TRUE",
457          &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
458         {"summary_col_show_from", "TRUE",
459          &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
460         {"summary_col_show_to", "FALSE",
461          &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
462         {"summary_col_show_date", "TRUE",
463          &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
464         {"summary_col_show_mime", "TRUE",
465          &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
466         {"summary_col_show_size", "TRUE",
467          &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
468         {"summary_col_show_number", "FALSE",
469          &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
470         {"summary_col_show_score", "FALSE",
471          &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
472         {"summary_col_show_locked", "FALSE",
473          &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
474         {"summary_col_show_tags", "FALSE",
475          &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
476
477         {"summary_col_pos_mark", "0",
478           &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
479         {"summary_col_pos_unread", "1",
480           &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
481         {"summary_col_pos_mime", "2",
482           &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
483         {"summary_col_pos_subject", "3",
484           &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
485         {"summary_col_pos_from", "4",
486           &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
487         {"summary_col_pos_date", "5",
488           &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
489         {"summary_col_pos_size", "6",
490           &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
491         {"summary_col_pos_number", "7",
492           &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
493         {"summary_col_pos_score", "8",
494          &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
495         {"summary_col_pos_locked", "9",
496          &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
497         {"summary_col_pos_to", "10",
498           &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
499         {"summary_col_pos_tags", "11",
500           &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
501
502         {"summary_col_size_mark", "10",
503          &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
504         {"summary_col_size_unread", "13",
505          &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
506         {"summary_col_size_mime", "10",
507          &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
508 #ifndef MAEMO
509         {"summary_col_size_subject", "200",
510          &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
511         {"summary_col_size_from", "120",
512          &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
513         {"summary_col_size_to", "120",
514          &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
515 #else
516         {"summary_col_size_subject", "300",
517          &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
518         {"summary_col_size_from", "150",
519          &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
520         {"summary_col_size_to", "150",
521          &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
522
523 #endif
524         {"summary_col_size_date", "118",
525          &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
526         {"summary_col_size_size", "45",
527          &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
528         {"summary_col_size_number", "40",
529          &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
530         {"summary_col_size_score", "40",
531          &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
532         {"summary_col_size_locked", "13",
533          &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
534         {"summary_col_size_tags", "150",
535          &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
536
537         /* Widget size */
538         {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
539          NULL, NULL, NULL},
540         {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
541          NULL, NULL, NULL},
542         {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
543          NULL, NULL, NULL},
544         {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
545          NULL, NULL, NULL},
546         {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
547          NULL, NULL, NULL},
548
549         {"folder_col_show_folder", "TRUE",
550          &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
551         {"folder_col_show_new", "TRUE",
552          &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
553         {"folder_col_show_unread", "TRUE",
554          &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
555         {"folder_col_show_total", "TRUE",
556          &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
557
558         {"folder_col_pos_folder", "0",
559          &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
560         {"folder_col_pos_new", "1",
561          &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
562         {"folder_col_pos_unread", "2",
563          &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
564         {"folder_col_pos_total", "3",
565          &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
566
567 #ifndef MAEMO
568         {"folder_col_size_folder", "120",
569          &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
570         {"folder_col_size_new", "32",
571          &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
572         {"folder_col_size_unread", "32",
573          &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
574         {"folder_col_size_total", "32",
575          &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
576 #else
577         {"folder_col_size_folder", "400",
578          &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
579         {"folder_col_size_new", "32",
580          &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
581         {"folder_col_size_unread", "32",
582          &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
583         {"folder_col_size_total", "32",
584          &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
585 #endif
586         {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
587          NULL, NULL, NULL},
588         {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
589          NULL, NULL, NULL},
590
591         {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
592          NULL, NULL, NULL},
593         {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
594          NULL, NULL, NULL},
595         {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
596          NULL, NULL, NULL},
597         {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
598          NULL, NULL, NULL},
599         {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
600          NULL, NULL, NULL},
601
602         {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
603          NULL, NULL, NULL},
604         {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
605          NULL, NULL, NULL},
606         {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
607          NULL, NULL, NULL},
608         {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
609          NULL, NULL, NULL},
610         {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
611          NULL, NULL, NULL},
612         {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
613          NULL, NULL, NULL},
614 #ifndef MAEMO
615         {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
616          NULL, NULL, NULL},
617         {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
618          NULL, NULL, NULL},
619         {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
620          NULL, NULL, NULL},
621         {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
622          NULL, NULL, NULL},
623         {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
624          NULL, NULL, NULL},
625         {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
626          NULL, NULL, NULL},
627         {"compose_width", "600", &prefs_common.compose_width, P_INT,
628          NULL, NULL, NULL},
629         {"compose_height", "560", &prefs_common.compose_height, P_INT,
630          NULL, NULL, NULL},
631 #else
632         {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
633          NULL, NULL, NULL},
634         {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
635          NULL, NULL, NULL},
636         {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
637          NULL, NULL, NULL},
638         {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
639          NULL, NULL, NULL},
640         {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
641          NULL, NULL, NULL},
642         {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
643          NULL, NULL, NULL},
644         {"compose_width", "700", &prefs_common.compose_width, P_INT,
645          NULL, NULL, NULL},
646         {"compose_height", "470", &prefs_common.compose_height, P_INT,
647          NULL, NULL, NULL},
648 #endif
649         {"compose_x", "0", &prefs_common.compose_x, P_INT,
650          NULL, NULL, NULL},
651         {"compose_y", "0", &prefs_common.compose_y, P_INT,
652          NULL, NULL, NULL},
653         /* Message */
654         {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
655          NULL, NULL, NULL},
656
657         {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
658          NULL, NULL, NULL},
659         {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
660          NULL, NULL, NULL},
661         {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
662          NULL, NULL, NULL},
663         {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
664          NULL, NULL, NULL},
665         {"quote_level1_bgcolor", "13421772", &prefs_common.quote_level1_bgcol, P_COLOR,
666          NULL, NULL, NULL},
667         {"quote_level2_bgcolor", "13948116", &prefs_common.quote_level2_bgcol, P_COLOR,
668          NULL, NULL, NULL},
669         {"quote_level3_bgcolor", "14540253", &prefs_common.quote_level3_bgcol, P_COLOR,
670          NULL, NULL, NULL},
671         {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
672          NULL, NULL, NULL},
673         {"emphasis_color", "207", &prefs_common.emphasis_col, P_COLOR,
674          NULL, NULL, NULL},
675         {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
676          NULL, NULL, NULL},
677         {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
678          NULL, NULL, NULL},
679         {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
680          P_BOOL, NULL, NULL, NULL},
681
682         {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
683          P_BOOL, NULL, NULL, NULL},
684         {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
685          NULL, NULL, NULL},
686         {"display_xface", "TRUE", &prefs_common.display_xface,
687          P_BOOL, NULL, NULL, NULL},
688         {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
689          NULL, NULL, NULL},
690         {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
691          NULL, NULL, NULL},
692         {"line_space", "2", &prefs_common.line_space, P_INT,
693          NULL, NULL, NULL},
694         {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
695          NULL, NULL, NULL},
696
697         {"enable_smooth_scroll", "FALSE",
698          &prefs_common.enable_smooth_scroll, P_BOOL,
699          NULL, NULL, NULL},
700         {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
701          NULL, NULL, NULL},
702         {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
703          NULL, NULL, NULL},
704         {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
705          NULL, NULL, NULL},
706
707         {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
708          NULL, NULL, NULL},
709
710         {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
711          NULL, NULL, NULL},
712
713         {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
714          NULL, NULL, NULL},
715         {"attach_save_directory", NULL,
716          &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
717         {"attach_load_directory", NULL,
718          &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
719
720         /* MIME viewer */
721         {"mime_textviewer",   NULL,
722          &SPECIFIC_PREFS.mime_textviewer,   P_STRING, NULL, NULL, NULL},
723         {"mime_open_command", "gedit '%s'",
724          &SPECIFIC_PREFS.mime_open_cmd,     P_STRING, NULL, NULL, NULL},
725
726         /* Interface */
727 #ifndef MAEMO
728         {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
729          NULL, NULL, NULL},
730 #else
731         {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
732          NULL, NULL, NULL},
733 #endif
734         /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
735          NULL, NULL, NULL}, */
736         {"always_show_message_when_selected", "FALSE",
737          &prefs_common.always_show_msg,
738          P_BOOL, NULL, NULL, NULL},
739         {"select_on_entry", "3", &prefs_common.select_on_entry,
740          P_ENUM, NULL, NULL, NULL},
741
742         {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
743          NULL, NULL, NULL},
744         {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
745          NULL, NULL, NULL},
746         {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
747          NULL, NULL, NULL},
748         {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
749          NULL, NULL, NULL},
750         {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
751          NULL, NULL, NULL},
752         {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
753          NULL, NULL, NULL},
754
755         {"mark_as_read_on_new_window", "FALSE",
756          &prefs_common.mark_as_read_on_new_window,
757          P_BOOL, NULL, NULL, NULL},
758         {"mark_as_read_delay", "0",
759          &prefs_common.mark_as_read_delay, P_INT, 
760          NULL, NULL, NULL},
761         {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
762          NULL, NULL, NULL},
763         {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
764          NULL, NULL, NULL},
765
766         {"pixmap_theme_path", DEFAULT_PIXMAP_THEME, 
767          &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
768          NULL, NULL, NULL},
769
770         {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
771          NULL, NULL, NULL},
772
773         {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
774          NULL, NULL, NULL},
775         {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
776          NULL, NULL, NULL},
777
778         /* Addressbook */
779         {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
780          P_BOOL, NULL, NULL, NULL},
781         {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
782          P_INT, NULL, NULL, NULL},
783         {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
784          P_INT, NULL, NULL, NULL},
785
786         /* Other */
787         {"uri_open_command", DEFAULT_BROWSER_CMD,
788          &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
789         {"print_command", "lpr %s",
790          &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
791         {"ext_editor_command", DEFAULT_EDITOR_CMD,
792          &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
793         {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
794          P_BOOL, NULL, NULL, NULL},
795         {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
796          NULL, NULL, NULL},
797         {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
798          NULL, NULL, NULL},
799         {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
800          NULL, NULL, NULL},
801         {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
802          P_BOOL, NULL, NULL, NULL},
803         {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
804          NULL, NULL, NULL},
805         {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
806          NULL, NULL, NULL},
807 #ifndef MAEMO
808         {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
809          NULL, NULL, NULL},
810 #else
811         {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
812          NULL, NULL, NULL},
813 #endif
814
815         {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
816          P_INT, NULL, NULL, NULL},
817         {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
818          NULL, NULL, NULL},
819         {"important_score", "1", &prefs_common.important_score, P_INT,
820          NULL, NULL, NULL},
821
822         {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
823          NULL, NULL, NULL},
824         {"log_length", "500", &prefs_common.loglength, P_INT,
825          NULL, NULL, NULL},
826 #ifndef MAEMO
827         {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
828          NULL, NULL, NULL},
829         {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
830          NULL, NULL, NULL},
831         {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
832          NULL, NULL, NULL},
833         {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
834          NULL, NULL, NULL},
835 #else
836         {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
837          NULL, NULL, NULL},
838         {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
839          NULL, NULL, NULL},
840         {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
841          NULL, NULL, NULL},
842         {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
843          NULL, NULL, NULL},
844 #endif
845         {"log_msg_color", "#00af00", &prefs_common.log_msg_color, P_COLOR,
846          NULL, NULL, NULL},
847         {"log_warn_color", "#af0000", &prefs_common.log_warn_color, P_COLOR,
848          NULL, NULL, NULL},
849         {"log_error_color", "#af0000", &prefs_common.log_error_color, P_COLOR,
850          NULL, NULL, NULL},
851         {"log_in_color", "#000000", &prefs_common.log_in_color, P_COLOR,
852          NULL, NULL, NULL},
853         {"log_out_color", "#0000ef", &prefs_common.log_out_color, P_COLOR,
854          NULL, NULL, NULL},
855         {"log_status_ok_color", "#00af00", &prefs_common.log_status_ok_color, P_COLOR,
856          NULL, NULL, NULL},
857         {"log_status_nok_color", "#0000af", &prefs_common.log_status_nok_color, P_COLOR,
858          NULL, NULL, NULL},
859         {"log_status_skip_color", "#aa00aa", &prefs_common.log_status_skip_color, P_COLOR,
860          NULL, NULL, NULL},
861
862     {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
863          NULL, NULL, NULL},
864     {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
865          NULL, NULL, NULL},
866     {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
867          NULL, NULL, NULL},
868     {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
869          NULL, NULL, NULL},
870     {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
871          NULL, NULL, NULL},
872     {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
873          NULL, NULL, NULL},
874     {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
875          NULL, NULL, NULL},
876     {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
877          NULL, NULL, NULL},
878         {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
879          NULL, NULL, NULL},
880
881         {"gtk_can_change_accels", "TRUE", &prefs_common.gtk_can_change_accels, P_BOOL,
882          NULL, NULL, NULL},
883
884         {"color_new", "179", &prefs_common.color_new, P_COLOR,
885          NULL, NULL, NULL},
886
887         /* Some windows' sizes */
888         {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
889          NULL, NULL, NULL},
890         {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
891          NULL, NULL, NULL},
892
893         {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
894          NULL, NULL, NULL},
895         {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
896          NULL, NULL, NULL},
897
898         {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
899          NULL, NULL, NULL},
900         {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
901          NULL, NULL, NULL},
902
903         {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
904          NULL, NULL, NULL},
905         {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
906          NULL, NULL, NULL},
907
908         {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
909          NULL, NULL, NULL},
910         {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
911          NULL, NULL, NULL},
912
913         {"tagswin_width", "486", &prefs_common.tagswin_width, P_INT,
914          NULL, NULL, NULL},
915         {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
916          NULL, NULL, NULL},
917
918         {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
919          NULL, NULL, NULL},
920         {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
921          NULL, NULL, NULL},
922
923         {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
924          NULL, NULL, NULL},
925         {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
926          NULL, NULL, NULL},
927
928         {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
929          NULL, NULL, NULL},
930         {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
931          NULL, NULL, NULL},
932
933         {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
934          NULL, NULL, NULL},
935         {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
936          NULL, NULL, NULL},
937
938         {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
939          NULL, NULL, NULL},
940         {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
941          NULL, NULL, NULL},
942
943         {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
944          NULL, NULL, NULL},
945         {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
946          NULL, NULL, NULL},
947
948         {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
949          NULL, NULL, NULL},
950
951         {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
952          NULL, NULL, NULL},
953         {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
954          NULL, NULL, NULL},
955
956         {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
957          NULL, NULL, NULL},
958         {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
959          NULL, NULL, NULL},
960
961         {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
962          NULL, NULL, NULL},
963         {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
964          NULL, NULL, NULL},
965
966         {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
967          NULL, NULL, NULL},
968         {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
969          NULL, NULL, NULL},
970
971         {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
972          NULL, NULL, NULL},
973         {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
974          NULL, NULL, NULL},
975
976         {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
977          NULL, NULL, NULL},
978         {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
979          NULL, NULL, NULL},
980
981         {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
982          NULL, NULL, NULL},
983         {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
984          NULL, NULL, NULL},
985
986         /* Hidden */
987         {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
988          NULL, NULL, NULL},
989         {"utf8_instead_of_locale_for_broken_mail", "0", 
990          &prefs_common.broken_are_utf8, P_INT,
991          NULL, NULL, NULL},
992         {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
993          NULL, NULL, NULL},
994         {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
995          NULL, NULL, NULL},
996         {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
997          NULL, NULL, NULL},
998         {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
999          NULL, NULL, NULL},
1000         {"enable_dotted_lines", "FALSE", &prefs_common.enable_dotted_lines, P_BOOL,
1001          NULL, NULL, NULL},
1002         {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1003          NULL, NULL, NULL},
1004         {"folderview_vscrollbar_policy", "0",
1005          &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1006          NULL, NULL, NULL},
1007         {"textview_cursor_visible", "FALSE",
1008          &prefs_common.textview_cursor_visible, P_BOOL,
1009          NULL, NULL, NULL},
1010         {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1011          NULL, NULL, NULL},
1012 #ifndef MAEMO
1013         {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1014          NULL, NULL, NULL},
1015         {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1016          NULL, NULL, NULL},
1017 #else
1018         {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1019          NULL, NULL, NULL},
1020         {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1021          NULL, NULL, NULL},
1022 #endif
1023         {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1024         P_INT, NULL, NULL, NULL },
1025         {"last_opened_folder", "", &prefs_common.last_opened_folder,
1026         P_STRING, NULL, NULL, NULL },
1027         {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1028         P_BOOL, NULL, NULL, NULL },
1029         {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1030          NULL, NULL, NULL},
1031         {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1032          NULL, NULL, NULL},
1033         {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1034          NULL, NULL, NULL},
1035         {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1036          NULL, NULL, NULL},
1037         {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1038          NULL, NULL, NULL},
1039         {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1040          NULL, NULL, NULL},
1041         {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1042          NULL, NULL, NULL},
1043         {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1044          NULL, NULL, NULL},
1045         {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1046          NULL, NULL, NULL},
1047         {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1048          NULL, NULL, NULL},
1049 #ifndef MAEMO
1050         {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1051          NULL, NULL, NULL},
1052 #else
1053         {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1054          NULL, NULL, NULL},
1055 #endif
1056
1057         {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1058          NULL, NULL, NULL},
1059         {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1060          NULL, NULL, NULL},
1061         {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1062          NULL, NULL, NULL},
1063         {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1064          NULL, NULL, NULL},
1065         {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1066          NULL, NULL, NULL},
1067         {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1068          NULL, NULL, NULL},
1069         {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1070          NULL, NULL, NULL},
1071         {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1072          NULL, NULL, NULL},
1073         {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1074          NULL, NULL, NULL},
1075
1076         {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1077 };
1078
1079 /*
1080  * Read history list from the specified history file
1081  */
1082 static GList *prefs_common_read_history(const gchar *history) 
1083 {
1084         FILE *fp;
1085         gchar *path;
1086         gchar buf[PREFSBUFSIZE];
1087         GList *tmp = NULL;
1088
1089         path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1090                            NULL);
1091         if ((fp = g_fopen(path, "rb")) == NULL) {
1092                 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
1093                 g_free(path);
1094                 return NULL;
1095         }
1096         g_free(path);
1097         while (fgets(buf, sizeof(buf), fp) != NULL) {
1098                 g_strstrip(buf);
1099                 if (buf[0] == '\0') continue;
1100                 tmp = add_history(tmp, buf);
1101         }
1102         fclose(fp);
1103
1104         tmp = g_list_reverse(tmp);
1105
1106         return tmp;
1107 }
1108
1109 void prefs_common_read_config(void)
1110 {
1111         gchar *rcpath;
1112         gchar *tmp;
1113
1114         rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1115         prefs_read_config(param, "Common", rcpath, NULL);
1116 #ifdef G_OS_WIN32
1117         prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1118 #endif
1119
1120         g_free(rcpath);
1121
1122         tmp = g_strdup(gettext(prefs_common.quotefmt));
1123         g_free(prefs_common.quotefmt);
1124         prefs_common.quotefmt = tmp;
1125
1126         tmp = g_strdup(gettext(prefs_common.fw_quotefmt));
1127         g_free(prefs_common.fw_quotefmt);
1128         prefs_common.fw_quotefmt = tmp;
1129         
1130         tmp = g_strdup(gettext(prefs_common.date_format));
1131         g_free(prefs_common.date_format);
1132         prefs_common.date_format = tmp;
1133
1134         tmp = g_strdup(gettext(prefs_common.compose_body_format));
1135         g_free(prefs_common.compose_body_format);
1136         prefs_common.compose_body_format = tmp;
1137
1138         prefs_common.mime_open_cmd_history =
1139                 prefs_common_read_history(COMMAND_HISTORY);
1140         prefs_common.summary_quicksearch_history =
1141                 prefs_common_read_history(QUICKSEARCH_HISTORY);
1142         prefs_common.summary_search_from_history =
1143                 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1144         prefs_common.summary_search_to_history =
1145                 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1146         prefs_common.summary_search_subject_history =
1147                 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1148         prefs_common.summary_search_body_history =
1149                 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1150         prefs_common.summary_search_adv_condition_history =
1151                 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1152         prefs_common.message_search_history =
1153                 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1154
1155         colorlabel_update_colortable_from_prefs();
1156 }
1157
1158 #define TRY(func) \
1159 if (!(func)) \
1160 { \
1161         g_warning("failed to write\n"); \
1162         goto out;                       \
1163 } \
1164
1165 /*
1166  * Save history list to the specified history file
1167  */
1168 static void prefs_common_save_history(const gchar *history, GList *list)
1169 {
1170         GList *cur;
1171         FILE *fp;
1172         gchar *path, *tmp_path;
1173
1174         path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1175                            NULL);
1176         tmp_path = g_strconcat(path, ".tmp", NULL);
1177
1178         if ((fp = g_fopen(tmp_path, "wb")) == NULL) {
1179                 FILE_OP_ERROR(tmp_path, "fopen");
1180                 goto out;
1181         }
1182
1183         for (cur = list; cur != NULL; cur = cur->next) {
1184                 TRY(fputs((gchar *)cur->data, fp) != EOF &&
1185                     fputc('\n', fp) != EOF);
1186         }
1187
1188         if (fclose(fp) == EOF) {
1189                 FILE_OP_ERROR(tmp_path, "fclose");
1190                 fp = NULL;
1191                 goto out;
1192         }
1193         fp = NULL;
1194 #ifdef G_OS_WIN32
1195         g_unlink(path);
1196 #endif
1197         if (g_rename(tmp_path, path) < 0) {
1198                 FILE_OP_ERROR(path, "rename");
1199                 goto out;
1200         }
1201
1202 out:
1203         if (fp)
1204                 fclose(fp);
1205         g_free(tmp_path);
1206         g_free(path);
1207 }
1208
1209 #undef TRY
1210
1211 void prefs_common_write_config(void)
1212 {
1213         prefs_write_config(param, "Common", COMMON_RC);
1214 #ifdef G_OS_WIN32
1215         prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1216 #endif
1217
1218         prefs_common_save_history(COMMAND_HISTORY, 
1219                 prefs_common.mime_open_cmd_history);
1220         prefs_common_save_history(QUICKSEARCH_HISTORY, 
1221                 prefs_common.summary_quicksearch_history);
1222         prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY, 
1223                 prefs_common.summary_search_from_history);
1224         prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY, 
1225                 prefs_common.summary_search_to_history);
1226         prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY, 
1227                 prefs_common.summary_search_subject_history);
1228         prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY, 
1229                 prefs_common.summary_search_body_history);
1230         prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY, 
1231                 prefs_common.summary_search_adv_condition_history);
1232         prefs_common_save_history(MESSAGE_SEARCH_HISTORY, 
1233                 prefs_common.message_search_history);
1234 }
1235
1236 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1237    both 'in' and 'out' must be non-NULL.
1238    'out' must be a pointer to a buffer whose size is at least equal
1239    to strlen(txt)+1, this buffer will get cleared. out's contents
1240    will always get set to a valid string, even if it's "".*/
1241 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1242 {
1243         const gchar *i;
1244         gchar *o;
1245
1246         *out = '\0';
1247
1248         g_return_if_fail( in != NULL );
1249         g_return_if_fail( out != NULL );
1250
1251         i = in;
1252         o = out;
1253         memset(out, 0, strlen(in)+1);
1254         while (*i != '\0') {
1255                 if (*i == '\\' && *(i+1) == 'n') {
1256                         *o++ = '\n';
1257                         i++;
1258                 } else if (*i == '\\' && *(i+1) == 't') {
1259                         *o++ = '\t';
1260                         i++;
1261                 } else if (*i == '\\' && *(i+1) == '\\') {
1262                         *o++ = '\\';
1263                         i++;
1264                 } else {
1265                         *o++ = *i;
1266                 }
1267                 i++;
1268         }
1269         *o='\0';
1270 }
1271
1272 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1273    both 'in' and 'out' must be non-NULL.
1274    'out' must be a pointer to a buffer whose size is at least equal
1275    to 2*strlen(txt)+1. out's contents will always get set to a valid
1276    string, even if it's "". */
1277 void pref_get_escaped_pref(gchar *out, const gchar *in)
1278 {
1279         const gchar *i;
1280         gchar *o;
1281
1282         *out = '\0';
1283
1284         g_return_if_fail( in != NULL );
1285         g_return_if_fail( out != NULL );
1286
1287         i = in;
1288         o = out;
1289         while (*i != '\0') {
1290                 if (*i == '\n') {
1291                         *o++ = '\\';
1292                         *o++ = 'n';
1293                 } else if (*i == '\t') {
1294                         *o++ = '\\';
1295                         *o++ = 't';
1296                 } else if (*i == '\\') {
1297                         *o++ = '\\';
1298                         *o++ = '\\';
1299                 } else {
1300                         *o++ = *i;
1301                 }
1302                 i++;
1303         }
1304         *o = '\0';
1305 }
1306                 
1307 /* set the contents of a textview widget from the internal \-escaped
1308   representation of a pref string. both txt and textview must be non-NULL. */
1309 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1310 {
1311         GtkTextBuffer *buffer;
1312         gchar *out = NULL;
1313
1314         g_return_if_fail( textview != NULL );
1315
1316         buffer = gtk_text_view_get_buffer(textview);
1317
1318         if (!txt) {
1319                 gtk_text_buffer_set_text(buffer, "", -1);
1320         } else {
1321                 out = malloc(strlen(txt)+1);
1322
1323                 pref_get_unescaped_pref(out, txt);
1324
1325                 gtk_text_buffer_set_text(buffer, out?out:"", -1);
1326                 g_free(out);
1327         }
1328 }
1329
1330 /* set the contents of a gtkentry widget from the internal \-escaped
1331   representation of a pref string. both txt and entry must be non-NULL. */
1332 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1333 {
1334         gchar *out = NULL;
1335
1336         g_return_if_fail( entry != NULL );
1337         if (!txt) {
1338                 gtk_entry_set_text(entry, "");
1339         } else {
1340                 out = malloc(strlen(txt)+1);
1341
1342                 pref_get_unescaped_pref(out, txt);
1343
1344                 gtk_entry_set_text(entry, out?out:"");
1345                 g_free(out);
1346         }
1347 }
1348
1349 /* get the \-escaped internal representation of a pref from the contents of
1350    a textview widget. textview must be non-NULL. */
1351 gchar *pref_get_pref_from_textview(GtkTextView *textview) 
1352 {
1353         GtkTextBuffer *buffer;
1354         GtkTextIter start, end;
1355         gchar *out, *tmp;
1356         
1357         g_return_val_if_fail( textview != NULL, "" );
1358
1359         buffer = gtk_text_view_get_buffer(textview);
1360         gtk_text_buffer_get_start_iter(buffer, &start);
1361         gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1362         tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1363         out = malloc(2*strlen(tmp)+1);
1364         
1365         pref_get_escaped_pref(out, tmp);
1366         g_free(tmp);
1367
1368         return out?out:"";
1369 }
1370
1371 /* get the \-escaped internal representation of a pref from the contents of
1372    a gtkentry widget. entry must be non-NULL. */
1373 gchar *pref_get_pref_from_entry(GtkEntry *entry) 
1374 {
1375         gchar *out, *tmp;
1376
1377         g_return_val_if_fail( entry != NULL, "" );
1378
1379         tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1380         out = malloc(2*strlen(tmp)+1);
1381
1382         pref_get_escaped_pref(out, tmp);
1383         g_free(tmp);
1384
1385         return out?out:"";
1386 }
1387
1388 /* ugly hack to be able to get this pref from ssl_certificate.c */
1389 gboolean prefs_common_unsafe_ssl_certs(void)
1390 {
1391         return prefs_common.unsafe_ssl_certs;
1392 }
1393
1394 gboolean prefs_common_enable_log_standard(void)
1395 {
1396         return prefs_common.enable_log_standard;
1397 }
1398
1399 gboolean prefs_common_enable_log_warning(void)
1400 {
1401         return prefs_common.enable_log_warning;
1402 }
1403 gboolean prefs_common_enable_log_error(void)
1404 {
1405         return prefs_common.enable_log_error;
1406 }
1407 gboolean prefs_common_enable_log_status(void)
1408 {
1409         return prefs_common.enable_log_status;
1410 }
1411
1412 #ifdef MAEMO
1413 const gchar *prefs_common_get_data_root(void)
1414 {
1415         if (prefs_common.data_root && *prefs_common.data_root)
1416                 return prefs_common.data_root;
1417         else
1418                 return NULL;
1419 }
1420 #endif
1421 /**
1422    return the translated name of a header, if the translate_header option is
1423    set, otherwise return the untranslated header name (header_name itself).
1424    this function is provided for convenience, it's an interface to
1425    prefs_common.trans_hdr.
1426    works with header names either with or without trailing colon, provided
1427    that gettext found such header name in the sources (they should all be
1428    found in src/gtk/headers.h anyway).
1429 */
1430 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1431 {
1432         if (header_name == NULL || *header_name == '\0')
1433                 return header_name;
1434
1435         return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1436 }