the final (?) modification to this debug_print()
[claws.git] / src / prefs_common.c
blob75dbe6c025eb761cbe1c980a8e923e14305caabe
1 /*
2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2020 the Claws Mail team and Hiroyuki Yamamoto
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 #ifdef HAVE_CONFIG_H
20 #include "config.h"
21 #include "claws-features.h"
22 #endif
24 #include "defs.h"
26 #include <glib.h>
27 #include <glib/gi18n.h>
28 #include <gtk/gtk.h>
29 #include <gdk/gdkkeysyms.h>
30 #include <stdio.h>
31 #include <stdlib.h>
32 #include <string.h>
33 #include <unistd.h>
34 #include <sys/types.h>
35 #include <sys/stat.h>
36 #include <errno.h>
38 #include "main.h"
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "prefs_migration.h"
45 #include "mainwindow.h"
46 #include "summaryview.h"
47 #include "folderview.h"
48 #include "messageview.h"
49 #include "manage_window.h"
50 #include "inc.h"
51 #include "menu.h"
52 #include "codeconv.h"
53 #include "utils.h"
54 #include "gtkutils.h"
55 #include "alertpanel.h"
56 #include "folder.h"
57 #include "socket.h"
58 #include "filesel.h"
59 #include "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},
468 #ifndef GENERIC_UMPC
469 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
470 NULL, NULL, NULL},
471 #else
472 {"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
473 NULL, NULL, NULL},
474 #endif
475 {"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
476 NULL, NULL, NULL},
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_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
1029 NULL, NULL, NULL},
1030 {"gtk_enable_accels", "TRUE", &prefs_common.gtk_enable_accels, P_BOOL,
1031 NULL, NULL, NULL},
1033 {"color_new", "#0000b3", &prefs_common.color[COL_NEW],
1034 P_COLOR, NULL, NULL, NULL},
1036 /* Some windows' sizes */
1037 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
1038 NULL, NULL, NULL},
1039 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
1040 NULL, NULL, NULL},
1042 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
1043 NULL, NULL, NULL},
1044 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
1045 NULL, NULL, NULL},
1047 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
1048 NULL, NULL, NULL},
1049 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
1050 NULL, NULL, NULL},
1052 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
1053 NULL, NULL, NULL},
1054 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
1055 NULL, NULL, NULL},
1057 {"actionsiodialog_width", "582", &prefs_common.actionsiodialog_width, P_INT,
1058 NULL, NULL, NULL},
1059 {"actionsiodialog_height", "310", &prefs_common.actionsiodialog_height, P_INT,
1060 NULL, NULL, NULL},
1062 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
1063 NULL, NULL, NULL},
1064 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
1065 NULL, NULL, NULL},
1067 {"tagswin_width", "586", &prefs_common.tagswin_width, P_INT,
1068 NULL, NULL, NULL},
1069 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1070 NULL, NULL, NULL},
1072 {"sslmanwin_width", "486", &prefs_common.sslmanwin_width, P_INT,
1073 NULL, NULL, NULL},
1074 {"sslmanwin_height", "-1", &prefs_common.sslmanwin_height, P_INT,
1075 NULL, NULL, NULL},
1077 {"uriopenerwin_width", "-1", &prefs_common.uriopenerwin_width, P_INT,
1078 NULL, NULL, NULL},
1079 {"uriopenerwin_height", "-1", &prefs_common.uriopenerwin_height, P_INT,
1080 NULL, NULL, NULL},
1082 {"foldersortwin_width", "400", &prefs_common.foldersortwin_width, P_INT,
1083 NULL, NULL, NULL},
1084 {"foldersortwin_height", "300", &prefs_common.foldersortwin_height, P_INT,
1085 NULL, NULL, NULL},
1087 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1088 NULL, NULL, NULL},
1089 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1090 NULL, NULL, NULL},
1092 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1093 NULL, NULL, NULL},
1094 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1095 NULL, NULL, NULL},
1097 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1098 NULL, NULL, NULL},
1099 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1100 NULL, NULL, NULL},
1102 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1103 NULL, NULL, NULL},
1104 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1105 NULL, NULL, NULL},
1107 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1108 NULL, NULL, NULL},
1109 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1110 NULL, NULL, NULL},
1112 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1113 NULL, NULL, NULL},
1114 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1115 NULL, NULL, NULL},
1117 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1118 NULL, NULL, NULL},
1120 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1121 NULL, NULL, NULL},
1122 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1123 NULL, NULL, NULL},
1125 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1126 NULL, NULL, NULL},
1127 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1128 NULL, NULL, NULL},
1130 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1131 NULL, NULL, NULL},
1132 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1133 NULL, NULL, NULL},
1135 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1136 NULL, NULL, NULL},
1137 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1138 NULL, NULL, NULL},
1140 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1141 NULL, NULL, NULL},
1142 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1143 NULL, NULL, NULL},
1145 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1146 NULL, NULL, NULL},
1147 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1148 NULL, NULL, NULL},
1150 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1151 NULL, NULL, NULL},
1152 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1153 NULL, NULL, NULL},
1155 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1156 NULL, NULL, NULL},
1157 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1158 NULL, NULL, NULL},
1160 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1161 NULL, NULL, NULL},
1162 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1163 NULL, NULL, NULL},
1165 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1166 NULL, NULL, NULL},
1167 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1168 NULL, NULL, NULL},
1170 /* Hidden */
1171 {"imap_scan_tree_recurs_limit", "64", &prefs_common.imap_scan_tree_recurs_limit, P_INT,
1172 NULL, NULL, NULL},
1173 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1174 NULL, NULL, NULL},
1175 {"utf8_instead_of_locale_for_broken_mail", "0",
1176 &prefs_common.broken_are_utf8, P_INT,
1177 NULL, NULL, NULL},
1178 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1179 NULL, NULL, NULL},
1180 {"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1181 NULL, NULL, NULL},
1182 {"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1183 NULL, NULL, NULL},
1184 {"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1185 NULL, NULL, NULL},
1186 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1187 NULL, NULL, NULL},
1188 {"folderview_vscrollbar_policy", "0",
1189 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1190 NULL, NULL, NULL},
1191 {"textview_cursor_visible", "FALSE",
1192 &prefs_common.textview_cursor_visible, P_BOOL,
1193 NULL, NULL, NULL},
1194 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1195 NULL, NULL, NULL},
1196 #ifndef GENERIC_UMPC
1197 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1198 NULL, NULL, NULL},
1199 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1200 NULL, NULL, NULL},
1201 #else
1202 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1203 NULL, NULL, NULL},
1204 {"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1205 NULL, NULL, NULL},
1206 #endif
1207 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1208 P_INT, NULL, NULL, NULL },
1209 {"last_opened_folder", "", &prefs_common.last_opened_folder,
1210 P_STRING, NULL, NULL, NULL },
1211 {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1212 P_BOOL, NULL, NULL, NULL },
1213 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1214 NULL, NULL, NULL},
1215 {"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1216 NULL, NULL, NULL},
1217 {"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1218 NULL, NULL, NULL},
1219 {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1220 NULL, NULL, NULL},
1221 {"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1222 NULL, NULL, NULL},
1223 {"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1224 NULL, NULL, NULL},
1225 {"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1226 NULL, NULL, NULL},
1227 {"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1228 NULL, NULL, NULL},
1229 {"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1230 NULL, NULL, NULL},
1231 {"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1232 NULL, NULL, NULL},
1233 #ifndef GENERIC_UMPC
1234 {"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1235 NULL, NULL, NULL},
1236 #else
1237 {"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1238 NULL, NULL, NULL},
1239 #endif
1241 {"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1242 NULL, NULL, NULL},
1243 {"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1244 NULL, NULL, NULL},
1245 {"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1246 NULL, NULL, NULL},
1247 {"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1248 NULL, NULL, NULL},
1249 {"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1250 NULL, NULL, NULL},
1251 {"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1252 NULL, NULL, NULL},
1253 {"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1254 NULL, NULL, NULL},
1255 {"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1256 NULL, NULL, NULL},
1257 {"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1258 NULL, NULL, NULL},
1259 {"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1260 NULL, NULL, NULL},
1261 {"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1262 NULL, NULL, NULL},
1263 {"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1264 NULL, NULL, NULL},
1265 {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1266 NULL, NULL, NULL},
1267 {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1268 NULL, NULL, NULL},
1269 {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1270 NULL, NULL, NULL},
1272 {"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1273 P_BOOL, NULL, NULL, NULL },
1275 {"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1276 NULL, NULL, NULL},
1278 {"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1279 NULL, NULL, NULL},
1281 {"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1282 NULL, NULL, NULL},
1284 {"diff_added_color", "#008b8b", &prefs_common.color[COL_DIFF_ADDED],
1285 P_COLOR, NULL, NULL, NULL},
1286 {"diff_deleted_color", "#6a5acd", &prefs_common.color[COL_DIFF_DELETED],
1287 P_COLOR, NULL, NULL, NULL},
1288 {"diff_hunk_color", "#a52a2a", &prefs_common.color[COL_DIFF_HUNK],
1289 P_COLOR, NULL, NULL, NULL},
1291 {"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1292 NULL, NULL, NULL},
1293 {"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1294 NULL, NULL, NULL},
1295 {"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1296 #ifndef PASSWORD_CRYPTO_OLD
1297 {"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1298 {"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1299 {"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1300 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1301 #endif
1303 {"use_proxy", "FALSE", &prefs_common.use_proxy, P_BOOL, NULL, NULL, NULL},
1304 {"proxy_type", "1", &prefs_common.proxy_info.proxy_type, P_ENUM, NULL, NULL, NULL},
1305 {"proxy_host", "localhost", &prefs_common.proxy_info.proxy_host, P_STRING, NULL, NULL, NULL},
1306 {"proxy_port", "1080", &prefs_common.proxy_info.proxy_port, P_USHORT, NULL, NULL, NULL},
1307 {"use_proxy_auth", "FALSE", &prefs_common.proxy_info.use_proxy_auth, P_BOOL, NULL, NULL, NULL},
1308 {"proxy_name", "", &prefs_common.proxy_info.proxy_name, P_STRING, NULL, NULL, NULL},
1309 {"proxy_pass", NULL, &prefs_common.proxy_info.proxy_pass, P_STRING, NULL, NULL, NULL},
1311 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1315 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1316 * Fallback to default_list if history file is not found
1318 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1319 GList *default_list)
1321 FILE *fp;
1322 gchar *path;
1323 gchar buf[PREFSBUFSIZE];
1324 GList *tmp = NULL;
1326 if (dirname) {
1327 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1328 G_DIR_SEPARATOR_S, history,
1329 NULL);
1330 } else {
1331 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1332 NULL);
1334 if ((fp = claws_fopen(path, "rb")) == NULL) {
1335 if (ENOENT != errno) FILE_OP_ERROR(path, "claws_fopen");
1336 g_free(path);
1337 /* returns default list if set, otherwise NULL */
1338 return default_list;
1340 g_free(path);
1341 while (claws_fgets(buf, sizeof(buf), fp) != NULL) {
1342 g_strstrip(buf);
1343 if (buf[0] == '\0') continue;
1344 tmp = add_history(tmp, buf);
1346 claws_fclose(fp);
1348 tmp = g_list_reverse(tmp);
1350 return tmp;
1354 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1356 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1358 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1362 * Read history list from the specified history file
1364 static GList *prefs_common_read_history(const gchar *history)
1366 return prefs_common_read_history_from_dir(NULL, history);
1369 void prefs_common_read_config(void)
1371 gchar *rcpath;
1372 gchar *tmp;
1374 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1375 prefs_read_config(param, "Common", rcpath, NULL);
1376 #ifdef G_OS_WIN32
1377 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1378 #endif
1380 g_free(rcpath);
1382 tmp = g_strdup(gettext(prefs_common.date_format));
1383 g_free(prefs_common.date_format);
1384 prefs_common.date_format = tmp;
1386 prefs_common.mime_open_cmd_history =
1387 prefs_common_read_history(COMMAND_HISTORY);
1388 prefs_common.summary_quicksearch_history =
1389 prefs_common_read_history(QUICKSEARCH_HISTORY);
1390 prefs_common.summary_search_from_history =
1391 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1392 prefs_common.summary_search_to_history =
1393 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1394 prefs_common.summary_search_subject_history =
1395 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1396 prefs_common.summary_search_body_history =
1397 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1398 prefs_common.summary_search_adv_condition_history =
1399 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1400 prefs_common.message_search_history =
1401 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1402 prefs_common.compose_save_to_history =
1403 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1404 #ifndef USE_ALT_ADDRBOOK
1405 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1406 #endif
1407 colorlabel_update_colortable_from_prefs();
1410 #define TRY(func) \
1411 if (!(func)) \
1413 g_warning("failed to write"); \
1414 goto out; \
1418 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1420 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1422 GList *cur;
1423 FILE *fp;
1424 gchar *path, *tmp_path;
1426 if (dirname) {
1427 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1428 G_DIR_SEPARATOR_S, history,
1429 NULL);
1430 } else {
1431 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1432 NULL);
1434 tmp_path = g_strconcat(path, ".tmp", NULL);
1436 if ((fp = claws_fopen(tmp_path, "wb")) == NULL) {
1437 FILE_OP_ERROR(tmp_path, "claws_fopen");
1438 goto out;
1441 for (cur = list; cur != NULL; cur = cur->next) {
1442 TRY(claws_fputs((gchar *)cur->data, fp) != EOF &&
1443 claws_fputc('\n', fp) != EOF);
1446 if (claws_safe_fclose(fp) == EOF) {
1447 FILE_OP_ERROR(tmp_path, "claws_fclose");
1448 fp = NULL;
1449 goto out;
1451 fp = NULL;
1452 #ifdef G_OS_WIN32
1453 claws_unlink(path);
1454 #endif
1455 if (g_rename(tmp_path, path) < 0) {
1456 FILE_OP_ERROR(path, "rename");
1457 goto out;
1460 out:
1461 if (fp)
1462 claws_safe_fclose(fp);
1463 g_free(tmp_path);
1464 g_free(path);
1468 * Save history list to the specified history file
1470 static void prefs_common_save_history(const gchar *history, GList *list)
1472 prefs_common_save_history_to_dir(NULL, history, list);
1475 #undef TRY
1477 void prefs_common_write_config(void)
1479 prefs_write_config(param, "Common", COMMON_RC);
1480 #ifdef G_OS_WIN32
1481 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1482 #endif
1484 prefs_common_save_history(COMMAND_HISTORY,
1485 prefs_common.mime_open_cmd_history);
1486 prefs_common_save_history(QUICKSEARCH_HISTORY,
1487 prefs_common.summary_quicksearch_history);
1488 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1489 prefs_common.summary_search_from_history);
1490 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1491 prefs_common.summary_search_to_history);
1492 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1493 prefs_common.summary_search_subject_history);
1494 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1495 prefs_common.summary_search_body_history);
1496 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1497 prefs_common.summary_search_adv_condition_history);
1498 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1499 prefs_common.message_search_history);
1500 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1501 prefs_common.compose_save_to_history);
1503 #ifndef USE_ALT_ADDRBOOK
1504 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1505 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1506 prefs_common.addressbook_custom_attributes);
1507 #endif
1510 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1511 both 'in' and 'out' must be non-NULL.
1512 'out' must be a pointer to a buffer whose size is at least equal
1513 to strlen(txt)+1, this buffer will get cleared. out's contents
1514 will always get set to a valid string, even if it's "".*/
1515 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1517 const gchar *i;
1518 gchar *o;
1520 *out = '\0';
1522 cm_return_if_fail( in != NULL );
1523 cm_return_if_fail( out != NULL );
1525 i = in;
1526 o = out;
1527 memset(out, 0, strlen(in)+1);
1528 while (*i != '\0') {
1529 if (*i == '\\' && *(i+1) == 'n') {
1530 *o++ = '\n';
1531 i++;
1532 } else if (*i == '\\' && *(i+1) == 't') {
1533 *o++ = '\t';
1534 i++;
1535 } else if (*i == '\\' && *(i+1) == '\\') {
1536 *o++ = '\\';
1537 i++;
1538 } else {
1539 *o++ = *i;
1541 i++;
1543 *o='\0';
1546 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1547 both 'in' and 'out' must be non-NULL.
1548 'out' must be a pointer to a buffer whose size is at least equal
1549 to 2*strlen(txt)+1. out's contents will always get set to a valid
1550 string, even if it's "". */
1551 void pref_get_escaped_pref(gchar *out, const gchar *in)
1553 const gchar *i;
1554 gchar *o;
1556 *out = '\0';
1558 cm_return_if_fail( in != NULL );
1559 cm_return_if_fail( out != NULL );
1561 i = in;
1562 o = out;
1563 while (*i != '\0') {
1564 if (*i == '\n') {
1565 *o++ = '\\';
1566 *o++ = 'n';
1567 } else if (*i == '\t') {
1568 *o++ = '\\';
1569 *o++ = 't';
1570 } else if (*i == '\\') {
1571 *o++ = '\\';
1572 *o++ = '\\';
1573 } else {
1574 *o++ = *i;
1576 i++;
1578 *o = '\0';
1581 /* set the contents of a textview widget from the internal \-escaped
1582 representation of a pref string. both txt and textview must be non-NULL. */
1583 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1585 GtkTextBuffer *buffer;
1586 gchar *out = NULL;
1588 cm_return_if_fail( textview != NULL );
1590 buffer = gtk_text_view_get_buffer(textview);
1592 if (!txt) {
1593 gtk_text_buffer_set_text(buffer, "", -1);
1594 } else {
1595 out = g_malloc(strlen(txt)+1);
1597 pref_get_unescaped_pref(out, txt);
1599 gtk_text_buffer_set_text(buffer, out, -1);
1600 g_free(out);
1604 /* set the contents of a gtkentry widget from the internal \-escaped
1605 representation of a pref string. both txt and entry must be non-NULL. */
1606 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1608 gchar *out = NULL;
1610 cm_return_if_fail( entry != NULL );
1611 if (!txt) {
1612 gtk_entry_set_text(entry, "");
1613 } else {
1614 out = g_malloc(strlen(txt)+1);
1616 pref_get_unescaped_pref(out, txt);
1618 gtk_entry_set_text(entry, out);
1619 g_free(out);
1623 /* get the \-escaped internal representation of a pref from the contents of
1624 a textview widget. textview must be non-NULL. */
1625 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1627 GtkTextBuffer *buffer;
1628 GtkTextIter start, end;
1629 gchar *out, *tmp;
1631 cm_return_val_if_fail( textview != NULL, "" );
1633 buffer = gtk_text_view_get_buffer(textview);
1634 gtk_text_buffer_get_start_iter(buffer, &start);
1635 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1636 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1637 out = malloc(2*strlen(tmp)+1);
1638 if (out)
1639 pref_get_escaped_pref(out, tmp);
1640 g_free(tmp);
1642 return out?out:"";
1645 /* get the \-escaped internal representation of a pref from the contents of
1646 a gtkentry widget. entry must be non-NULL. */
1647 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1649 gchar *out, *tmp;
1651 cm_return_val_if_fail( entry != NULL, "" );
1653 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1654 out = malloc(2*strlen(tmp)+1);
1656 if (out)
1657 pref_get_escaped_pref(out, tmp);
1658 g_free(tmp);
1660 return out?out:"";
1663 /* ugly hack to be able to get this pref from ssl_certificate.c */
1664 gboolean prefs_common_unsafe_ssl_certs(void)
1666 return prefs_common.unsafe_ssl_certs;
1669 gboolean prefs_common_enable_log_standard(void)
1671 return prefs_common.enable_log_standard;
1674 gboolean prefs_common_enable_log_warning(void)
1676 return prefs_common.enable_log_warning;
1678 gboolean prefs_common_enable_log_error(void)
1680 return prefs_common.enable_log_error;
1682 gboolean prefs_common_enable_log_status(void)
1684 return prefs_common.enable_log_status;
1688 return the translated name of a header, if the translate_header option is
1689 set, otherwise return the untranslated header name (header_name itself).
1690 this function is provided for convenience, it's an interface to
1691 prefs_common.trans_hdr.
1692 works with header names either with or without trailing colon, provided
1693 that gettext found such header name in the sources (they should all be
1694 found in src/gtk/headers.h anyway).
1696 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1698 if (header_name == NULL || *header_name == '\0')
1699 return header_name;
1701 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1704 const gchar *prefs_common_get_uri_cmd(void)
1706 #ifdef G_OS_WIN32
1707 return NULL;
1708 #else
1709 gchar *tmp = NULL;
1711 if (!prefs_common.cmds_use_system_default)
1712 return prefs_common.uri_cmd;
1714 tmp = g_find_program_in_path("xdg-open");
1715 if (!tmp)
1716 return prefs_common.uri_cmd;
1718 g_free(tmp);
1719 return "xdg-open %s";
1720 #endif
1723 const gchar *prefs_common_get_ext_editor_cmd(void)
1725 return prefs_common.ext_editor_cmd;
1726 #if 0 /* we should do that, but it detaches the editor and breaks
1727 compose.c's external composition. */
1728 gchar *tmp = NULL;
1730 if (!prefs_common.cmds_use_system_default)
1731 return prefs_common.ext_editor_cmd;
1733 tmp = g_find_program_in_path("xdg-open");
1734 if (!tmp)
1735 return prefs_common.ext_editor_cmd;
1737 g_free(tmp);
1738 return "xdg-open %s";
1739 #endif
1742 gboolean prefs_common_get_use_shred(void)
1744 return prefs_common.use_shred;
1747 gboolean prefs_common_get_flush_metadata (void)
1749 return prefs_common.flush_metadata;
1752 PrefsCommon *prefs_common_get_prefs(void)
1754 return &prefs_common;