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