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