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