remove unnecessary cm_return_val_if_fail()
[claws.git] / src / prefs_common.c
blob0d4f6f08049b27718bb4d95c3fab8d7d5ae8eaaa
1 /*
2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2020 the Claws Mail team and Hiroyuki Yamamoto
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/>.
19 #ifdef HAVE_CONFIG_H
20 #include "config.h"
21 #include "claws-features.h"
22 #endif
24 #include "defs.h"
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>
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 "prefs_migration.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 #include "passwordstore.h"
64 #include "file-utils.h"
66 #ifndef USE_ALT_ADDRBOOK
67 #include "addrcustomattr.h"
68 #endif
70 enum {
71 DATEFMT_FMT,
72 DATEFMT_TXT,
73 N_DATEFMT_COLUMNS
76 PrefsCommon prefs_common;
78 GtkWidget *notebook;
80 #ifdef G_OS_WIN32
82 * In the Windows version prefs_common contains
83 * - the non-OS-specific settings of the "Common" section and
84 * - the OS-specific settings of the "CommonWin32" section
85 * The OS-specific settings of the "Common" section are not used
86 * but saved in prefs_unix.
89 # define SPECIFIC_PREFS prefs_unix
91 static PrefsCommon prefs_unix;
93 static PrefParam param_os_specific[] = {
94 /* Receive */
95 {"ext_inc_path", "",
96 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
97 {"newmail_notify_cmd", "",
98 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
100 /* new fonts */
101 {"message_font_gtk2", "Monospace 9",
102 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
103 {"print_font_gtk2", "Monospace 9",
104 &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
105 {"small_font_gtk2", "Sans 9",
106 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
107 {"normal_font_gtk2", "Sans 9",
108 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
109 {"bold_font_gtk2", "Sans 9 Bold",
110 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
111 /* Message */
112 {"attach_save_directory", NULL,
113 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
114 {"attach_load_directory", NULL,
115 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
117 /* MIME viewer */
118 {"mime_textviewer", NULL,
119 &prefs_common.mime_textviewer, P_STRING, NULL, NULL, NULL},
120 {"mime_open_command", "notepad '%s'",
121 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
123 /* Interface */
124 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
125 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
126 #ifdef HAVE_SVG
127 {"enable_alpha_svg", "TRUE",
128 &prefs_common.enable_alpha_svg, P_BOOL, NULL, NULL, NULL},
129 {"enable_pixmap_scaling", "TRUE",
130 &prefs_common.enable_pixmap_scaling, P_BOOL, NULL, NULL, NULL},
131 {"pixmap_scaling_auto", "TRUE",
132 &prefs_common.pixmap_scaling_auto, P_BOOL, NULL, NULL, NULL},
133 {"pixmap_scaling_ppi", "96",
134 &prefs_common.pixmap_scaling_ppi, P_INT, NULL, NULL, NULL},
135 #endif
137 /* Other */
138 {"ext_editor_command", "notepad %s",
139 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
141 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
143 #else
144 # define SPECIFIC_PREFS prefs_common
145 #endif
148 parameter name, default value, pointer to the prefs variable, data type,
149 pointer to the widget pointer,
150 pointer to the function for data setting,
151 pointer to the function for widget setting
154 static PrefParam param[] = {
155 {"config_version", "0",
156 &prefs_common.config_version, P_INT, NULL, NULL, NULL},
158 /* Receive */
159 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
160 NULL, NULL, NULL},
161 {"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
162 NULL, NULL, NULL},
164 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
165 NULL, NULL, NULL},
166 {"autochk_interval", "600", &prefs_common.autochk_itv, P_INT,
167 NULL, NULL, NULL},
168 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
169 NULL, NULL, NULL},
170 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
171 P_BOOL, NULL, NULL, NULL},
172 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
173 P_BOOL, NULL, NULL, NULL},
174 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
175 P_BOOL, NULL, NULL, NULL},
176 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
177 P_BOOL, NULL, NULL, NULL},
178 {"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
179 NULL, NULL, NULL},
180 {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
181 NULL, NULL, NULL},
182 {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
183 NULL, NULL, NULL},
184 {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
185 NULL, NULL, NULL},
186 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
187 P_BOOL, NULL, NULL, NULL},
188 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
189 P_BOOL, NULL, NULL, NULL},
191 /* Send */
192 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
193 NULL, NULL, NULL},
194 {"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
195 P_BOOL, NULL, NULL, NULL},
196 #ifndef GENERIC_UMPC
197 {"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
198 NULL, NULL, NULL},
199 #else
200 {"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
201 NULL, NULL, NULL},
202 #endif
203 {"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
204 NULL, NULL, NULL},
205 {"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
206 NULL, NULL, NULL},
208 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
209 NULL, NULL, NULL},
210 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
211 NULL, NULL, NULL},
212 {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
213 NULL, NULL, NULL},
214 {"rewrite_first_from", "TRUE", &prefs_common.rewrite_first_from,
215 P_BOOL, NULL, NULL, NULL},
216 {"warn_empty_subj", "TRUE", &prefs_common.warn_empty_subj,
217 P_BOOL, NULL, NULL, NULL},
218 {"warn_sending_many_recipients_num", "0", &prefs_common.warn_sending_many_recipients_num, P_INT,
219 NULL, NULL, NULL},
220 {"hide_timezone", "FALSE", &prefs_common.hide_timezone,
221 P_BOOL, NULL, NULL, NULL},
222 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
223 P_BOOL, NULL, NULL, NULL},
225 /* Compose */
226 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
227 NULL, NULL, NULL},
228 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
229 P_BOOL, NULL, NULL, NULL},
230 {"redirect_keep_from", "FALSE",
231 &prefs_common.redirect_keep_from, P_BOOL,
232 NULL, NULL, NULL},
233 {"undo_level", "50", &prefs_common.undolevels, P_INT,
234 NULL, NULL, NULL},
235 {"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
236 NULL, NULL, NULL},
237 {"compose_subject_format", "",
238 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
239 {"compose_body_format", N_("Hello,\\n"),
240 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
241 {"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
242 NULL, NULL, NULL},
243 {"type_any_header", "FALSE", &prefs_common.type_any_header, P_BOOL,
244 NULL, NULL, NULL},
247 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
248 NULL, NULL, NULL},
249 {"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
250 NULL, NULL, NULL},
251 {"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
252 NULL, NULL, NULL},
253 {"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
254 NULL, NULL, NULL},
255 {"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
256 NULL, NULL, NULL},
257 {"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
258 NULL, NULL, NULL},
259 {"autosave", "TRUE", &prefs_common.autosave,
260 P_BOOL, NULL, NULL, NULL},
261 {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
262 NULL, NULL, NULL},
263 {"autosave_encrypted", "FALSE", &prefs_common.autosave_encrypted,
264 P_BOOL, NULL, NULL, NULL},
265 {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
266 P_BOOL, NULL, NULL, NULL},
267 {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
268 P_INT, NULL, NULL, NULL},
270 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
271 NULL, NULL, NULL},
272 {"dictionary", "", &prefs_common.dictionary, P_STRING,
273 NULL, NULL, NULL},
274 {"alt_dictionary", "", &prefs_common.alt_dictionary, P_STRING,
275 NULL, NULL, NULL},
276 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
277 NULL, NULL, NULL},
278 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
279 NULL, NULL, NULL},
280 {"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
281 P_BOOL, NULL, NULL, NULL},
282 {"misspelled_color", "#ff0000", &prefs_common.color[COL_MISSPELLED],
283 P_COLOR, NULL, NULL, NULL},
284 {"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
285 NULL, NULL, NULL},
287 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
288 NULL, NULL, NULL},
289 {"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
290 NULL, NULL, NULL},
292 /* Account autoselection */
293 {"reply_account_autoselect", "TRUE",
294 &prefs_common.reply_account_autosel, P_BOOL,
295 NULL, NULL, NULL},
296 {"forward_account_autoselect", "TRUE",
297 &prefs_common.forward_account_autosel, P_BOOL,
298 NULL, NULL, NULL},
299 {"reedit_account_autoselect", "TRUE",
300 &prefs_common.reedit_account_autosel, P_BOOL,
301 NULL, NULL, NULL},
303 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
304 NULL, NULL, NULL},
306 #ifndef GENERIC_UMPC
307 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
308 NULL, NULL, NULL},
309 #else
310 {"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
311 NULL, NULL, NULL},
312 #endif
314 /* Quote */
315 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
316 NULL, NULL, NULL},
317 {"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
318 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
320 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
321 NULL, NULL, NULL},
322 {"forward_quote_format",
323 N_("\\n\\nBegin forwarded message:\\n\\n"
324 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
325 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
326 &prefs_common.fw_quotefmt, P_STRING,
327 NULL, NULL, NULL},
328 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
329 NULL, NULL, NULL},
331 /* Display */
332 /* fonts */
333 #ifndef GENERIC_UMPC
334 {"message_font_gtk2", "Monospace 9",
335 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
336 {"print_font_gtk2", "Monospace 9",
337 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
338 {"small_font_gtk2", "Sans 9",
339 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
340 {"normal_font_gtk2", "Sans 9",
341 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
342 {"bold_font_gtk2", "Sans Bold 9",
343 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
344 #else
345 {"message_font_gtk2", "Monospace 8",
346 &SPECIFIC_PREFS.textfont, P_STRING, NULL, NULL, NULL},
347 {"print_font_gtk2", "Monospace 8",
348 &SPECIFIC_PREFS.printfont, P_STRING, NULL, NULL, NULL},
349 {"small_font_gtk2", "Sans 8",
350 &SPECIFIC_PREFS.smallfont, P_STRING, NULL, NULL, NULL},
351 {"normal_font_gtk2", "Sans 8",
352 &SPECIFIC_PREFS.normalfont, P_STRING, NULL, NULL, NULL},
353 {"bold_font_gtk2", "Sans Bold 8",
354 &SPECIFIC_PREFS.boldfont, P_STRING, NULL, NULL, NULL},
355 #endif
357 {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
358 NULL, NULL, NULL},
359 {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
360 NULL, NULL, NULL},
362 /* custom colors */
363 {"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
364 NULL, NULL, NULL},
365 {"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
366 NULL, NULL, NULL},
367 {"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
368 NULL, NULL, NULL},
369 {"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
370 NULL, NULL, NULL},
371 {"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
372 NULL, NULL, NULL},
373 {"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
374 NULL, NULL, NULL},
375 {"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
376 NULL, NULL, NULL},
377 {"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
378 NULL, NULL, NULL},
379 {"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
380 NULL, NULL, NULL},
381 {"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
382 NULL, NULL, NULL},
383 {"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
384 NULL, NULL, NULL},
385 {"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
386 NULL, NULL, NULL},
387 {"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
388 NULL, NULL, NULL},
389 {"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
390 NULL, NULL, NULL},
391 {"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
392 NULL, NULL, NULL},
393 {"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
394 NULL, NULL, NULL},
395 {"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
396 NULL, NULL, NULL},
397 {"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
398 NULL, NULL, NULL},
399 {"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
400 NULL, NULL, NULL},
401 {"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
402 NULL, NULL, NULL},
403 {"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
404 NULL, NULL, NULL},
405 {"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
406 NULL, NULL, NULL},
407 {"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
408 NULL, NULL, NULL},
409 {"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
410 NULL, NULL, NULL},
411 {"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
412 NULL, NULL, NULL},
413 {"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
414 NULL, NULL, NULL},
415 {"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
416 NULL, NULL, NULL},
417 {"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
418 NULL, NULL, NULL},
419 {"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
420 NULL, NULL, NULL},
421 {"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
422 NULL, NULL, NULL},
424 /* image viewer */
425 {"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
426 NULL, NULL, NULL},
427 {"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
428 NULL, NULL, NULL},
429 {"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
430 NULL, NULL, NULL},
432 {"display_folder_unread_num", "0",
433 &prefs_common.display_folder_unread, P_INT,
434 NULL, NULL, NULL},
435 {"newsgroup_abbrev_len", "16",
436 &prefs_common.ng_abbrev_len, P_INT,
437 NULL, NULL, NULL},
439 #ifdef ENABLE_NLS
440 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
441 NULL, NULL, NULL},
442 #else
443 {"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
444 NULL, NULL, NULL},
445 #endif
447 /* Display: Summary View */
448 {"default_sort_key", "3", &prefs_common.default_sort_key, P_ENUM,
449 NULL, NULL, NULL},
450 {"default_sort_type", "1", &prefs_common.default_sort_type, P_ENUM,
451 NULL, NULL, NULL},
452 {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
453 NULL, NULL, NULL},
454 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
455 NULL, NULL, NULL},
456 {"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
457 P_STRING, NULL, NULL, NULL},
458 {"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
459 NULL, NULL, NULL},
461 {"next_on_delete", "FALSE", &prefs_common.next_on_delete, P_BOOL,
462 NULL, NULL, NULL},
464 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
465 NULL, NULL, NULL},
467 #ifndef GENERIC_UMPC
468 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
469 NULL, NULL, NULL},
470 #else
471 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
472 NULL, NULL, NULL},
473 #endif
474 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
475 NULL, NULL, NULL},
476 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
477 NULL, NULL, NULL},
478 #ifndef GENERIC_UMPC
479 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
480 NULL, NULL, NULL},
481 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
482 NULL, NULL, NULL},
483 #else
484 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
485 NULL, NULL, NULL},
486 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
487 NULL, NULL, NULL},
488 #endif
490 {"summary_col_show_mark", "TRUE",
491 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
492 {"summary_col_show_unread", "TRUE",
493 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
494 {"summary_col_show_subject", "TRUE",
495 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
496 {"summary_col_show_from", "TRUE",
497 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
498 {"summary_col_show_to", "FALSE",
499 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
500 {"summary_col_show_date", "TRUE",
501 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
502 {"summary_col_show_mime", "TRUE",
503 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
504 {"summary_col_show_size", "TRUE",
505 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
506 {"summary_col_show_number", "FALSE",
507 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
508 {"summary_col_show_score", "FALSE",
509 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
510 {"summary_col_show_locked", "FALSE",
511 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
512 {"summary_col_show_tags", "FALSE",
513 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
515 {"summary_col_lock", "FALSE", &prefs_common.summary_col_lock, P_BOOL,
516 NULL, NULL, NULL},
518 {"summary_col_pos_mark", "0",
519 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
520 {"summary_col_pos_unread", "1",
521 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
522 {"summary_col_pos_mime", "2",
523 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
524 {"summary_col_pos_subject", "3",
525 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
526 {"summary_col_pos_from", "4",
527 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
528 {"summary_col_pos_date", "5",
529 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
530 {"summary_col_pos_size", "6",
531 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
532 {"summary_col_pos_number", "7",
533 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
534 {"summary_col_pos_score", "8",
535 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
536 {"summary_col_pos_locked", "9",
537 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
538 {"summary_col_pos_to", "10",
539 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
540 {"summary_col_pos_tags", "11",
541 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
543 {"summary_col_size_mark", "10",
544 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
545 {"summary_col_size_unread", "13",
546 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
547 {"summary_col_size_mime", "10",
548 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
549 #ifndef GENERIC_UMPC
550 {"summary_col_size_subject", "200",
551 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
552 {"summary_col_size_from", "120",
553 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
554 {"summary_col_size_to", "120",
555 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
556 #else
557 {"summary_col_size_subject", "300",
558 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
559 {"summary_col_size_from", "150",
560 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
561 {"summary_col_size_to", "150",
562 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
564 #endif
565 {"summary_col_size_date", "118",
566 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
567 {"summary_col_size_size", "45",
568 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
569 {"summary_col_size_number", "40",
570 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
571 {"summary_col_size_score", "40",
572 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
573 {"summary_col_size_locked", "13",
574 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
575 {"summary_col_size_tags", "150",
576 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
578 /* Widget size */
579 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
580 NULL, NULL, NULL},
581 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
582 NULL, NULL, NULL},
583 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
584 NULL, NULL, NULL},
585 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
586 NULL, NULL, NULL},
587 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
588 NULL, NULL, NULL},
590 {"folder_col_show_folder", "TRUE",
591 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
592 {"folder_col_show_new", "TRUE",
593 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
594 {"folder_col_show_unread", "TRUE",
595 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
596 {"folder_col_show_total", "TRUE",
597 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
599 {"folder_col_pos_folder", "0",
600 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
601 {"folder_col_pos_new", "1",
602 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
603 {"folder_col_pos_unread", "2",
604 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
605 {"folder_col_pos_total", "3",
606 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
608 #ifndef GENERIC_UMPC
609 {"folder_col_size_folder", "120",
610 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
611 {"folder_col_size_new", "32",
612 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
613 {"folder_col_size_unread", "32",
614 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
615 {"folder_col_size_total", "32",
616 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
617 #else
618 {"folder_col_size_folder", "400",
619 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
620 {"folder_col_size_new", "32",
621 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
622 {"folder_col_size_unread", "32",
623 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
624 {"folder_col_size_total", "32",
625 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
626 #endif
628 {"folder_default_thread", "TRUE", &prefs_common.folder_default_thread, P_BOOL,
629 NULL, NULL, NULL},
630 {"folder_default_thread_collapsed", "FALSE", &prefs_common.folder_default_thread_collapsed, P_BOOL,
631 NULL, NULL, NULL},
632 {"folder_default_hide_read_threads", "FALSE", &prefs_common.folder_default_hide_read_threads, P_BOOL,
633 NULL, NULL, NULL},
634 {"folder_default_hide_read_msgs", "FALSE", &prefs_common.folder_default_hide_read_msgs, P_BOOL,
635 NULL, NULL, NULL},
636 {"folder_default_hide_del_msgs", "FALSE", &prefs_common.folder_default_hide_del_msgs, P_BOOL,
637 NULL, NULL, NULL},
639 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
640 NULL, NULL, NULL},
641 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
642 NULL, NULL, NULL},
644 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
645 NULL, NULL, NULL},
646 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
647 NULL, NULL, NULL},
648 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
649 NULL, NULL, NULL},
650 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
651 NULL, NULL, NULL},
652 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
653 NULL, NULL, NULL},
655 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
656 NULL, NULL, NULL},
657 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
658 NULL, NULL, NULL},
659 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
660 NULL, NULL, NULL},
661 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
662 NULL, NULL, NULL},
663 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
664 NULL, NULL, NULL},
665 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
666 NULL, NULL, NULL},
667 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
668 NULL, NULL, NULL},
669 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
670 NULL, NULL, NULL},
671 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
672 NULL, NULL, NULL},
673 #ifndef GENERIC_UMPC
674 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
675 NULL, NULL, NULL},
676 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
677 NULL, NULL, NULL},
678 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
679 NULL, NULL, NULL},
680 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
681 NULL, NULL, NULL},
682 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
683 NULL, NULL, NULL},
684 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
685 NULL, NULL, NULL},
686 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
687 NULL, NULL, NULL},
688 {"compose_width", "600", &prefs_common.compose_width, P_INT,
689 NULL, NULL, NULL},
690 {"compose_height", "560", &prefs_common.compose_height, P_INT,
691 NULL, NULL, NULL},
692 #else
693 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
694 NULL, NULL, NULL},
695 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
696 NULL, NULL, NULL},
697 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
698 NULL, NULL, NULL},
699 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
700 NULL, NULL, NULL},
701 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
702 NULL, NULL, NULL},
703 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
704 NULL, NULL, NULL},
705 {"compose_width", "700", &prefs_common.compose_width, P_INT,
706 NULL, NULL, NULL},
707 {"compose_height", "470", &prefs_common.compose_height, P_INT,
708 NULL, NULL, NULL},
709 #endif
710 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
711 NULL, NULL, NULL},
712 {"compose_x", "0", &prefs_common.compose_x, P_INT,
713 NULL, NULL, NULL},
714 {"compose_y", "0", &prefs_common.compose_y, P_INT,
715 NULL, NULL, NULL},
716 /* Message */
717 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
718 NULL, NULL, NULL},
720 {"quote_level1_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL1],
721 P_COLOR, NULL, NULL, NULL},
722 {"quote_level2_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL2],
723 P_COLOR, NULL, NULL, NULL},
724 {"quote_level3_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL3],
725 P_COLOR, NULL, NULL, NULL},
726 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
727 NULL, NULL, NULL},
728 {"quote_level1_bgcolor", "#cccccc", &prefs_common.color[COL_QUOTE_LEVEL1_BG],
729 P_COLOR, NULL, NULL, NULL},
730 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.color[COL_QUOTE_LEVEL2_BG],
731 P_COLOR, NULL, NULL, NULL},
732 {"quote_level3_bgcolor", "#dddddd", &prefs_common.color[COL_QUOTE_LEVEL3_BG],
733 P_COLOR, NULL, NULL, NULL},
734 {"uri_color", "#007f00", &prefs_common.color[COL_URI],
735 P_COLOR, NULL, NULL, NULL},
736 {"emphasis_color", "#0000cf", &prefs_common.color[COL_EMPHASIS],
737 P_COLOR, NULL, NULL, NULL},
738 {"target_folder_color", "#da1cca", &prefs_common.color[COL_TGT_FOLDER],
739 P_COLOR, NULL, NULL, NULL},
740 {"signature_color", "#797979", &prefs_common.color[COL_SIGNATURE],
741 P_COLOR, NULL, NULL, NULL},
742 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
743 P_BOOL, NULL, NULL, NULL},
745 {"default_header_color", "#000000", &prefs_common.color[COL_DEFAULT_HEADER],
746 P_COLOR, NULL, NULL, NULL},
747 {"default_header_bgcolor", "#f5f6be", &prefs_common.color[COL_DEFAULT_HEADER_BG],
748 P_COLOR, NULL, NULL, NULL},
749 {"tags_color", "#000000", &prefs_common.color[COL_TAGS],
750 P_COLOR, NULL, NULL, NULL},
751 {"tags_bgcolor", "#f5f6be", &prefs_common.color[COL_TAGS_BG],
752 P_COLOR, NULL, NULL, NULL},
753 {"qs_active_color", "#000000", &prefs_common.color[COL_QS_ACTIVE],
754 P_COLOR, NULL, NULL, NULL},
755 {"qs_active_bgcolor", "#f5f6be", &prefs_common.color[COL_QS_ACTIVE_BG],
756 P_COLOR, NULL, NULL, NULL},
757 {"qs_error_color", "#000000", &prefs_common.color[COL_QS_ERROR],
758 P_COLOR, NULL, NULL, NULL},
759 {"qs_error_bgcolor", "#ff7070", &prefs_common.color[COL_QS_ERROR_BG],
760 P_COLOR, NULL, NULL, NULL},
762 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
763 P_BOOL, NULL, NULL, NULL},
764 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
765 NULL, NULL, NULL},
766 {"display_xface", "TRUE", &prefs_common.display_xface,
767 P_BOOL, NULL, NULL, NULL},
768 {"save_xface", "TRUE", &prefs_common.save_xface,
769 P_BOOL, NULL, NULL, NULL},
770 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
771 NULL, NULL, NULL},
772 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
773 NULL, NULL, NULL},
774 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
775 NULL, NULL, NULL},
776 {"line_space", "2", &prefs_common.line_space, P_INT,
777 NULL, NULL, NULL},
778 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
779 NULL, NULL, NULL},
781 {"enable_smooth_scroll", "FALSE",
782 &prefs_common.enable_smooth_scroll, P_BOOL,
783 NULL, NULL, NULL},
784 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
785 NULL, NULL, NULL},
786 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
787 NULL, NULL, NULL},
788 {"hide_quoted", "TRUE",
789 &prefs_common.hide_quoted, P_BOOL,
790 NULL, NULL, NULL},
791 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
792 NULL, NULL, NULL},
793 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
794 NULL, NULL, NULL},
796 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
797 NULL, NULL, NULL},
799 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
800 NULL, NULL, NULL},
801 {"attach_save_directory", NULL,
802 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
803 {"attach_load_directory", NULL,
804 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
806 /* MIME viewer */
807 {"mime_textviewer", NULL,
808 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
809 {"mime_open_command", "xdg-open '%s'",
810 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
811 {"show_inline_attachments", "TRUE",
812 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
814 /* Interface */
815 #ifndef GENERIC_UMPC
816 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
817 NULL, NULL, NULL},
818 #else
819 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
820 NULL, NULL, NULL},
821 #endif
822 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
823 NULL, NULL, NULL}, */
824 {"open_selected_message_on_folder_open", "FALSE",
825 &prefs_common.open_selected_on_folder_open,
826 P_BOOL, NULL, NULL, NULL},
827 {"open_selected_message_on_search_results", "FALSE",
828 &prefs_common.open_selected_on_search_results,
829 P_BOOL, NULL, NULL, NULL},
830 {"open_selected_message_on_prevnext", "FALSE",
831 &prefs_common.open_selected_on_prevnext,
832 P_BOOL, NULL, NULL, NULL},
833 {"open_selected_message_on_deletemove", "FALSE",
834 &prefs_common.open_selected_on_deletemove,
835 P_BOOL, NULL, NULL, NULL},
836 {"open_selected_message_on_directional", "FALSE",
837 &prefs_common.open_selected_on_directional,
838 P_BOOL, NULL, NULL, NULL},
839 {"always_show_message_when_selected", "FALSE",
840 &prefs_common.always_show_msg,
841 P_BOOL, NULL, NULL, NULL},
842 {"select_on_entry", "3", &prefs_common.select_on_entry,
843 P_ENUM, NULL, NULL, NULL},
844 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
845 P_BOOL, NULL, NULL, NULL},
847 /* do it SUMMARY_OPEN_ACTIONS-1 times */
848 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
849 NULL, NULL, NULL},
850 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
851 NULL, NULL, NULL},
852 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
853 NULL, NULL, NULL},
854 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
855 NULL, NULL, NULL},
856 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
857 NULL, NULL, NULL},
858 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
859 NULL, NULL, NULL},
860 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
861 NULL, NULL, NULL},
862 {"summary_select_prio8", "0", &prefs_common.summary_select_prio[7], P_ENUM,
863 NULL, NULL, NULL},
864 {"summary_select_prio9", "0", &prefs_common.summary_select_prio[8], P_ENUM,
865 NULL, NULL, NULL},
866 {"summary_select_prio10", "0", &prefs_common.summary_select_prio[9], P_ENUM,
867 NULL, NULL, NULL},
869 {"mark_as_read_on_new_window", "FALSE",
870 &prefs_common.mark_as_read_on_new_window,
871 P_BOOL, NULL, NULL, NULL},
872 {"mark_as_read_delay", "0",
873 &prefs_common.mark_as_read_delay, P_INT,
874 NULL, NULL, NULL},
875 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
876 NULL, NULL, NULL},
877 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
878 NULL, NULL, NULL},
879 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
880 NULL, NULL, NULL},
882 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
883 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
884 NULL, NULL, NULL},
885 #ifdef HAVE_SVG
886 {"enable_alpha_svg", "TRUE",
887 &SPECIFIC_PREFS.enable_alpha_svg, P_BOOL,
888 NULL, NULL, NULL},
889 {"enable_pixmap_scaling", "TRUE",
890 &SPECIFIC_PREFS.enable_pixmap_scaling, P_BOOL,
891 NULL, NULL, NULL},
892 {"pixmap_scaling_auto", "TRUE",
893 &SPECIFIC_PREFS.pixmap_scaling_auto, P_BOOL,
894 NULL, NULL, NULL},
895 {"pixmap_scaling_ppi", "96",
896 &SPECIFIC_PREFS.pixmap_scaling_ppi, P_INT,
897 NULL, NULL, NULL},
898 #endif
900 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
901 NULL, NULL, NULL},
902 {"ask_override_colorlabel", "TRUE", &prefs_common.ask_override_colorlabel, P_BOOL,
903 NULL, NULL, NULL},
905 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
906 NULL, NULL, NULL},
907 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
908 NULL, NULL, NULL},
910 /* Addressbook */
911 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
912 P_BOOL, NULL, NULL, NULL},
913 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
914 P_INT, NULL, NULL, NULL},
915 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
916 P_INT, NULL, NULL, NULL},
918 /* Other */
919 #ifndef G_OS_WIN32
920 {"uri_open_command", DEFAULT_BROWSER_CMD,
921 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
922 #else
923 {"gtk_theme", DEFAULT_W32_GTK_THEME,
924 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
925 #endif
926 {"ext_editor_command", DEFAULT_EDITOR_CMD,
927 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
928 {"cmds_use_system_default", "TRUE",
929 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
930 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
931 P_BOOL, NULL, NULL, NULL},
932 {"session_passwords", "FALSE", &prefs_common.session_passwords,
933 P_BOOL, NULL, NULL, NULL},
934 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
935 NULL, NULL, NULL},
936 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
937 NULL, NULL, NULL},
938 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
939 NULL, NULL, NULL},
940 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
941 P_BOOL, NULL, NULL, NULL},
942 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
943 NULL, NULL, NULL},
944 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
945 NULL, NULL, NULL},
946 #ifndef GENERIC_UMPC
947 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
948 NULL, NULL, NULL},
949 #else
950 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
951 NULL, NULL, NULL},
952 #endif
954 #if defined(__OpenBSD__)
955 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
956 P_INT, NULL, NULL, NULL},
957 #else
958 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
959 P_INT, NULL, NULL, NULL},
960 #endif
961 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
962 NULL, NULL, NULL},
963 {"important_score", "1", &prefs_common.important_score, P_INT,
964 NULL, NULL, NULL},
966 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
967 NULL, NULL, NULL},
968 {"log_length", "500", &prefs_common.loglength, P_INT,
969 NULL, NULL, NULL},
970 #ifndef GENERIC_UMPC
971 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
972 NULL, NULL, NULL},
973 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
974 NULL, NULL, NULL},
975 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
976 NULL, NULL, NULL},
977 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
978 NULL, NULL, NULL},
979 #else
980 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
981 NULL, NULL, NULL},
982 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
983 NULL, NULL, NULL},
984 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
985 NULL, NULL, NULL},
986 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
987 NULL, NULL, NULL},
988 #endif
989 {"log_msg_color", "#00af00", &prefs_common.color[COL_LOG_MSG],
990 P_COLOR, NULL, NULL, NULL},
991 {"log_warn_color", "#af0000", &prefs_common.color[COL_LOG_WARN],
992 P_COLOR, NULL, NULL, NULL},
993 {"log_error_color", "#af0000", &prefs_common.color[COL_LOG_ERROR],
994 P_COLOR, NULL, NULL, NULL},
995 {"log_in_color", "#000000", &prefs_common.color[COL_LOG_IN],
996 P_COLOR, NULL, NULL, NULL},
997 {"log_out_color", "#0000ef", &prefs_common.color[COL_LOG_OUT],
998 P_COLOR, NULL, NULL, NULL},
999 {"log_status_ok_color", "#00af00", &prefs_common.color[COL_LOG_STATUS_OK],
1000 P_COLOR, NULL, NULL, NULL},
1001 {"log_status_nok_color", "#0000af", &prefs_common.color[COL_LOG_STATUS_NOK],
1002 P_COLOR, NULL, NULL, NULL},
1003 {"log_status_skip_color", "#aa00aa", &prefs_common.color[COL_LOG_STATUS_SKIP],
1004 P_COLOR, NULL, NULL, NULL},
1006 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
1007 NULL, NULL, NULL},
1008 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
1009 NULL, NULL, NULL},
1010 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
1011 NULL, NULL, NULL},
1012 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
1013 NULL, NULL, NULL},
1014 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
1015 NULL, NULL, NULL},
1016 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
1017 NULL, NULL, NULL},
1018 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
1019 NULL, NULL, NULL},
1020 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
1021 NULL, NULL, NULL},
1022 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
1023 NULL, NULL, NULL},
1025 {"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
1026 NULL, NULL, NULL},
1027 {"gtk_enable_accels", "TRUE", &prefs_common.gtk_enable_accels, P_BOOL,
1028 NULL, NULL, NULL},
1030 {"color_new", "#0000b3", &prefs_common.color[COL_NEW],
1031 P_COLOR, NULL, NULL, NULL},
1033 /* Some windows' sizes */
1034 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
1035 NULL, NULL, NULL},
1036 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
1037 NULL, NULL, NULL},
1039 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
1040 NULL, NULL, NULL},
1041 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
1042 NULL, NULL, NULL},
1044 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
1045 NULL, NULL, NULL},
1046 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
1047 NULL, NULL, NULL},
1049 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
1050 NULL, NULL, NULL},
1051 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
1052 NULL, NULL, NULL},
1054 {"actionsiodialog_width", "582", &prefs_common.actionsiodialog_width, P_INT,
1055 NULL, NULL, NULL},
1056 {"actionsiodialog_height", "310", &prefs_common.actionsiodialog_height, P_INT,
1057 NULL, NULL, NULL},
1059 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
1060 NULL, NULL, NULL},
1061 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
1062 NULL, NULL, NULL},
1064 {"tagswin_width", "586", &prefs_common.tagswin_width, P_INT,
1065 NULL, NULL, NULL},
1066 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1067 NULL, NULL, NULL},
1069 {"sslmanwin_width", "486", &prefs_common.sslmanwin_width, P_INT,
1070 NULL, NULL, NULL},
1071 {"sslmanwin_height", "-1", &prefs_common.sslmanwin_height, P_INT,
1072 NULL, NULL, NULL},
1074 {"uriopenerwin_width", "-1", &prefs_common.uriopenerwin_width, P_INT,
1075 NULL, NULL, NULL},
1076 {"uriopenerwin_height", "-1", &prefs_common.uriopenerwin_height, P_INT,
1077 NULL, NULL, NULL},
1079 {"foldersortwin_width", "400", &prefs_common.foldersortwin_width, P_INT,
1080 NULL, NULL, NULL},
1081 {"foldersortwin_height", "300", &prefs_common.foldersortwin_height, P_INT,
1082 NULL, NULL, NULL},
1084 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1085 NULL, NULL, NULL},
1086 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1087 NULL, NULL, NULL},
1089 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1090 NULL, NULL, NULL},
1091 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1092 NULL, NULL, NULL},
1094 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1095 NULL, NULL, NULL},
1096 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1097 NULL, NULL, NULL},
1099 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1100 NULL, NULL, NULL},
1101 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1102 NULL, NULL, NULL},
1104 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1105 NULL, NULL, NULL},
1106 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1107 NULL, NULL, NULL},
1109 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1110 NULL, NULL, NULL},
1111 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1112 NULL, NULL, NULL},
1114 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1115 NULL, NULL, NULL},
1117 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1118 NULL, NULL, NULL},
1119 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1120 NULL, NULL, NULL},
1122 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1123 NULL, NULL, NULL},
1124 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1125 NULL, NULL, NULL},
1127 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1128 NULL, NULL, NULL},
1129 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1130 NULL, NULL, NULL},
1132 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1133 NULL, NULL, NULL},
1134 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1135 NULL, NULL, NULL},
1137 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1138 NULL, NULL, NULL},
1139 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1140 NULL, NULL, NULL},
1142 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1143 NULL, NULL, NULL},
1144 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1145 NULL, NULL, NULL},
1147 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1148 NULL, NULL, NULL},
1149 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1150 NULL, NULL, NULL},
1152 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1153 NULL, NULL, NULL},
1154 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1155 NULL, NULL, NULL},
1157 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1158 NULL, NULL, NULL},
1159 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1160 NULL, NULL, NULL},
1162 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1163 NULL, NULL, NULL},
1164 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1165 NULL, NULL, NULL},
1167 /* Hidden */
1168 {"imap_scan_tree_recurs_limit", "64", &prefs_common.imap_scan_tree_recurs_limit, P_INT,
1169 NULL, NULL, NULL},
1170 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1171 NULL, NULL, NULL},
1172 {"utf8_instead_of_locale_for_broken_mail", "0",
1173 &prefs_common.broken_are_utf8, P_INT,
1174 NULL, NULL, NULL},
1175 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1176 NULL, NULL, NULL},
1177 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1178 NULL, NULL, NULL},
1179 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1180 NULL, NULL, NULL},
1181 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1182 NULL, NULL, NULL},
1183 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1184 NULL, NULL, NULL},
1185 {"folderview_vscrollbar_policy", "0",
1186 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1187 NULL, NULL, NULL},
1188 {"textview_cursor_visible", "FALSE",
1189 &prefs_common.textview_cursor_visible, P_BOOL,
1190 NULL, NULL, NULL},
1191 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1192 NULL, NULL, NULL},
1193 #ifndef GENERIC_UMPC
1194 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1195 NULL, NULL, NULL},
1196 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1197 NULL, NULL, NULL},
1198 #else
1199 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1200 NULL, NULL, NULL},
1201 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1202 NULL, NULL, NULL},
1203 #endif
1204 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1205 P_INT, NULL, NULL, NULL },
1206 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1207 P_STRING, NULL, NULL, NULL },
1208 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1209 P_BOOL, NULL, NULL, NULL },
1210 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1211 NULL, NULL, NULL},
1212 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1213 NULL, NULL, NULL},
1214 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1215 NULL, NULL, NULL},
1216 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1217 NULL, NULL, NULL},
1218 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1219 NULL, NULL, NULL},
1220 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1221 NULL, NULL, NULL},
1222 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1223 NULL, NULL, NULL},
1224 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1225 NULL, NULL, NULL},
1226 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1227 NULL, NULL, NULL},
1228 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1229 NULL, NULL, NULL},
1230 #ifndef GENERIC_UMPC
1231 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1232 NULL, NULL, NULL},
1233 #else
1234 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1235 NULL, NULL, NULL},
1236 #endif
1238 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1239 NULL, NULL, NULL},
1240 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1241 NULL, NULL, NULL},
1242 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1243 NULL, NULL, NULL},
1244 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1245 NULL, NULL, NULL},
1246 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1247 NULL, NULL, NULL},
1248 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1249 NULL, NULL, NULL},
1250 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1251 NULL, NULL, NULL},
1252 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1253 NULL, NULL, NULL},
1254 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1255 NULL, NULL, NULL},
1256 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1257 NULL, NULL, NULL},
1258 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1259 NULL, NULL, NULL},
1260 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1261 NULL, NULL, NULL},
1262 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1263 NULL, NULL, NULL},
1264 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1265 NULL, NULL, NULL},
1266 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1267 NULL, NULL, NULL},
1269 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1270 P_BOOL, NULL, NULL, NULL },
1272 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1273 NULL, NULL, NULL},
1275 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1276 NULL, NULL, NULL},
1278 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1279 NULL, NULL, NULL},
1281 {"diff_added_color", "#008b8b", &prefs_common.color[COL_DIFF_ADDED],
1282 P_COLOR, NULL, NULL, NULL},
1283 {"diff_deleted_color", "#6a5acd", &prefs_common.color[COL_DIFF_DELETED],
1284 P_COLOR, NULL, NULL, NULL},
1285 {"diff_hunk_color", "#a52a2a", &prefs_common.color[COL_DIFF_HUNK],
1286 P_COLOR, NULL, NULL, NULL},
1288 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1289 NULL, NULL, NULL},
1290 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1291 NULL, NULL, NULL},
1292 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1293 #ifndef PASSWORD_CRYPTO_OLD
1294 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1295 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1296 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1297 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1298 #endif
1300 {"use_proxy", "FALSE", &prefs_common.use_proxy, P_BOOL, NULL, NULL, NULL},
1301 {"proxy_type", "1", &prefs_common.proxy_info.proxy_type, P_ENUM, NULL, NULL, NULL},
1302 {"proxy_host", "localhost", &prefs_common.proxy_info.proxy_host, P_STRING, NULL, NULL, NULL},
1303 {"proxy_port", "1080", &prefs_common.proxy_info.proxy_port, P_USHORT, NULL, NULL, NULL},
1304 {"use_proxy_auth", "FALSE", &prefs_common.proxy_info.use_proxy_auth, P_BOOL, NULL, NULL, NULL},
1305 {"proxy_name", "", &prefs_common.proxy_info.proxy_name, P_STRING, NULL, NULL, NULL},
1306 {"proxy_pass", NULL, &prefs_common.proxy_info.proxy_pass, P_STRING, NULL, NULL, NULL},
1308 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1312 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1313 * Fallback to default_list if history file is not found
1315 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1316 GList *default_list)
1318 FILE *fp;
1319 gchar *path;
1320 gchar buf[PREFSBUFSIZE];
1321 GList *tmp = NULL;
1323 if (dirname) {
1324 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1325 G_DIR_SEPARATOR_S, history,
1326 NULL);
1327 } else {
1328 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1329 NULL);
1331 if ((fp = claws_fopen(path, "rb")) == NULL) {
1332 if (ENOENT != errno) FILE_OP_ERROR(path, "claws_fopen");
1333 g_free(path);
1334 /* returns default list if set, otherwise NULL */
1335 return default_list;
1337 g_free(path);
1338 while (claws_fgets(buf, sizeof(buf), fp) != NULL) {
1339 g_strstrip(buf);
1340 if (buf[0] == '\0') continue;
1341 tmp = add_history(tmp, buf);
1343 claws_fclose(fp);
1345 tmp = g_list_reverse(tmp);
1347 return tmp;
1351 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1353 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1355 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1359 * Read history list from the specified history file
1361 static GList *prefs_common_read_history(const gchar *history)
1363 return prefs_common_read_history_from_dir(NULL, history);
1366 void prefs_common_read_config(void)
1368 gchar *rcpath;
1369 gchar *tmp;
1371 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1372 prefs_read_config(param, "Common", rcpath, NULL);
1373 #ifdef G_OS_WIN32
1374 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1375 #endif
1377 g_free(rcpath);
1379 tmp = g_strdup(gettext(prefs_common.date_format));
1380 g_free(prefs_common.date_format);
1381 prefs_common.date_format = tmp;
1383 prefs_common.mime_open_cmd_history =
1384 prefs_common_read_history(COMMAND_HISTORY);
1385 prefs_common.summary_quicksearch_history =
1386 prefs_common_read_history(QUICKSEARCH_HISTORY);
1387 prefs_common.summary_search_from_history =
1388 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1389 prefs_common.summary_search_to_history =
1390 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1391 prefs_common.summary_search_subject_history =
1392 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1393 prefs_common.summary_search_body_history =
1394 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1395 prefs_common.summary_search_adv_condition_history =
1396 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1397 prefs_common.message_search_history =
1398 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1399 prefs_common.compose_save_to_history =
1400 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1401 #ifndef USE_ALT_ADDRBOOK
1402 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1403 #endif
1404 colorlabel_update_colortable_from_prefs();
1407 #define TRY(func) \
1408 if (!(func)) \
1410 g_warning("failed to write"); \
1411 goto out; \
1415 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1417 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1419 GList *cur;
1420 FILE *fp;
1421 gchar *path, *tmp_path;
1423 if (dirname) {
1424 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1425 G_DIR_SEPARATOR_S, history,
1426 NULL);
1427 } else {
1428 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1429 NULL);
1431 tmp_path = g_strconcat(path, ".tmp", NULL);
1433 if ((fp = claws_fopen(tmp_path, "wb")) == NULL) {
1434 FILE_OP_ERROR(tmp_path, "claws_fopen");
1435 goto out;
1438 for (cur = list; cur != NULL; cur = cur->next) {
1439 TRY(claws_fputs((gchar *)cur->data, fp) != EOF &&
1440 claws_fputc('\n', fp) != EOF);
1443 if (claws_safe_fclose(fp) == EOF) {
1444 FILE_OP_ERROR(tmp_path, "claws_fclose");
1445 fp = NULL;
1446 goto out;
1448 fp = NULL;
1449 #ifdef G_OS_WIN32
1450 claws_unlink(path);
1451 #endif
1452 if (g_rename(tmp_path, path) < 0) {
1453 FILE_OP_ERROR(path, "rename");
1454 goto out;
1457 out:
1458 if (fp)
1459 claws_safe_fclose(fp);
1460 g_free(tmp_path);
1461 g_free(path);
1465 * Save history list to the specified history file
1467 static void prefs_common_save_history(const gchar *history, GList *list)
1469 prefs_common_save_history_to_dir(NULL, history, list);
1472 #undef TRY
1474 void prefs_common_write_config(void)
1476 prefs_write_config(param, "Common", COMMON_RC);
1477 #ifdef G_OS_WIN32
1478 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1479 #endif
1481 prefs_common_save_history(COMMAND_HISTORY,
1482 prefs_common.mime_open_cmd_history);
1483 prefs_common_save_history(QUICKSEARCH_HISTORY,
1484 prefs_common.summary_quicksearch_history);
1485 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1486 prefs_common.summary_search_from_history);
1487 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1488 prefs_common.summary_search_to_history);
1489 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1490 prefs_common.summary_search_subject_history);
1491 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1492 prefs_common.summary_search_body_history);
1493 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1494 prefs_common.summary_search_adv_condition_history);
1495 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1496 prefs_common.message_search_history);
1497 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1498 prefs_common.compose_save_to_history);
1500 #ifndef USE_ALT_ADDRBOOK
1501 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1502 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1503 prefs_common.addressbook_custom_attributes);
1504 #endif
1507 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1508 both 'in' and 'out' must be non-NULL.
1509 'out' must be a pointer to a buffer whose size is at least equal
1510 to strlen(txt)+1, this buffer will get cleared. out's contents
1511 will always get set to a valid string, even if it's "".*/
1512 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1514 const gchar *i;
1515 gchar *o;
1517 *out = '\0';
1519 cm_return_if_fail( in != NULL );
1520 cm_return_if_fail( out != NULL );
1522 i = in;
1523 o = out;
1524 memset(out, 0, strlen(in)+1);
1525 while (*i != '\0') {
1526 if (*i == '\\' && *(i+1) == 'n') {
1527 *o++ = '\n';
1528 i++;
1529 } else if (*i == '\\' && *(i+1) == 't') {
1530 *o++ = '\t';
1531 i++;
1532 } else if (*i == '\\' && *(i+1) == '\\') {
1533 *o++ = '\\';
1534 i++;
1535 } else {
1536 *o++ = *i;
1538 i++;
1540 *o='\0';
1543 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1544 both 'in' and 'out' must be non-NULL.
1545 'out' must be a pointer to a buffer whose size is at least equal
1546 to 2*strlen(txt)+1. out's contents will always get set to a valid
1547 string, even if it's "". */
1548 void pref_get_escaped_pref(gchar *out, const gchar *in)
1550 const gchar *i;
1551 gchar *o;
1553 *out = '\0';
1555 cm_return_if_fail( in != NULL );
1556 cm_return_if_fail( out != NULL );
1558 i = in;
1559 o = out;
1560 while (*i != '\0') {
1561 if (*i == '\n') {
1562 *o++ = '\\';
1563 *o++ = 'n';
1564 } else if (*i == '\t') {
1565 *o++ = '\\';
1566 *o++ = 't';
1567 } else if (*i == '\\') {
1568 *o++ = '\\';
1569 *o++ = '\\';
1570 } else {
1571 *o++ = *i;
1573 i++;
1575 *o = '\0';
1578 /* set the contents of a textview widget from the internal \-escaped
1579 representation of a pref string. both txt and textview must be non-NULL. */
1580 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1582 GtkTextBuffer *buffer;
1583 gchar *out = NULL;
1585 cm_return_if_fail( textview != NULL );
1587 buffer = gtk_text_view_get_buffer(textview);
1589 if (!txt) {
1590 gtk_text_buffer_set_text(buffer, "", -1);
1591 } else {
1592 out = g_malloc(strlen(txt)+1);
1594 pref_get_unescaped_pref(out, txt);
1596 gtk_text_buffer_set_text(buffer, out, -1);
1597 g_free(out);
1601 /* set the contents of a gtkentry widget from the internal \-escaped
1602 representation of a pref string. both txt and entry must be non-NULL. */
1603 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1605 gchar *out = NULL;
1607 cm_return_if_fail( entry != NULL );
1608 if (!txt) {
1609 gtk_entry_set_text(entry, "");
1610 } else {
1611 out = g_malloc(strlen(txt)+1);
1613 pref_get_unescaped_pref(out, txt);
1615 gtk_entry_set_text(entry, out);
1616 g_free(out);
1620 /* get the \-escaped internal representation of a pref from the contents of
1621 a textview widget. textview must be non-NULL. */
1622 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1624 GtkTextBuffer *buffer;
1625 GtkTextIter start, end;
1626 gchar *out, *tmp;
1628 cm_return_val_if_fail( textview != NULL, "" );
1630 buffer = gtk_text_view_get_buffer(textview);
1631 gtk_text_buffer_get_start_iter(buffer, &start);
1632 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1633 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1634 out = malloc(2*strlen(tmp)+1);
1635 if (out)
1636 pref_get_escaped_pref(out, tmp);
1637 g_free(tmp);
1639 return out?out:"";
1642 /* get the \-escaped internal representation of a pref from the contents of
1643 a gtkentry widget. entry must be non-NULL. */
1644 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1646 gchar *out, *tmp;
1648 cm_return_val_if_fail( entry != NULL, "" );
1650 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1651 out = malloc(2*strlen(tmp)+1);
1653 if (out)
1654 pref_get_escaped_pref(out, tmp);
1655 g_free(tmp);
1657 return out?out:"";
1660 /* ugly hack to be able to get this pref from ssl_certificate.c */
1661 gboolean prefs_common_unsafe_ssl_certs(void)
1663 return prefs_common.unsafe_ssl_certs;
1666 gboolean prefs_common_enable_log_standard(void)
1668 return prefs_common.enable_log_standard;
1671 gboolean prefs_common_enable_log_warning(void)
1673 return prefs_common.enable_log_warning;
1675 gboolean prefs_common_enable_log_error(void)
1677 return prefs_common.enable_log_error;
1679 gboolean prefs_common_enable_log_status(void)
1681 return prefs_common.enable_log_status;
1685 return the translated name of a header, if the translate_header option is
1686 set, otherwise return the untranslated header name (header_name itself).
1687 this function is provided for convenience, it's an interface to
1688 prefs_common.trans_hdr.
1689 works with header names either with or without trailing colon, provided
1690 that gettext found such header name in the sources (they should all be
1691 found in src/gtk/headers.h anyway).
1693 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1695 if (header_name == NULL || *header_name == '\0')
1696 return header_name;
1698 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1701 const gchar *prefs_common_get_uri_cmd(void)
1703 #ifdef G_OS_WIN32
1704 return NULL;
1705 #else
1706 gchar *tmp = NULL;
1708 if (!prefs_common.cmds_use_system_default)
1709 return prefs_common.uri_cmd;
1711 tmp = g_find_program_in_path("xdg-open");
1712 if (!tmp)
1713 return prefs_common.uri_cmd;
1715 g_free(tmp);
1716 return "xdg-open %s";
1717 #endif
1720 const gchar *prefs_common_get_ext_editor_cmd(void)
1722 return prefs_common.ext_editor_cmd;
1723 #if 0 /* we should do that, but it detaches the editor and breaks
1724 compose.c's external composition. */
1725 gchar *tmp = NULL;
1727 if (!prefs_common.cmds_use_system_default)
1728 return prefs_common.ext_editor_cmd;
1730 tmp = g_find_program_in_path("xdg-open");
1731 if (!tmp)
1732 return prefs_common.ext_editor_cmd;
1734 g_free(tmp);
1735 return "xdg-open %s";
1736 #endif
1739 gboolean prefs_common_get_use_shred(void)
1741 return prefs_common.use_shred;
1744 gboolean prefs_common_get_flush_metadata (void)
1746 return prefs_common.flush_metadata;
1749 PrefsCommon *prefs_common_get_prefs(void)
1751 return &prefs_common;