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