Improve some sieve-related translations
[claws.git] / src / prefs_common.c
blobfddb5bdd73f800a9cab37a6708ceb93971a20ccd
1 /*
2 * Claws Mail -- a GTK based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2022 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 {"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
476 NULL, NULL, NULL},
477 #ifndef GENERIC_UMPC
478 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
479 NULL, NULL, NULL},
480 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
481 NULL, NULL, NULL},
482 #else
483 {"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
484 NULL, NULL, NULL},
485 {"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
486 NULL, NULL, NULL},
487 #endif
489 {"summary_col_show_mark", "TRUE",
490 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_unread", "TRUE",
492 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
493 {"summary_col_show_subject", "TRUE",
494 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
495 {"summary_col_show_from", "TRUE",
496 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
497 {"summary_col_show_to", "FALSE",
498 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
499 {"summary_col_show_date", "TRUE",
500 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
501 {"summary_col_show_mime", "TRUE",
502 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
503 {"summary_col_show_size", "TRUE",
504 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
505 {"summary_col_show_number", "FALSE",
506 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
507 {"summary_col_show_score", "FALSE",
508 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
509 {"summary_col_show_locked", "FALSE",
510 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
511 {"summary_col_show_tags", "FALSE",
512 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
514 {"summary_col_lock", "FALSE", &prefs_common.summary_col_lock, P_BOOL,
515 NULL, NULL, NULL},
517 {"summary_col_pos_mark", "0",
518 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
519 {"summary_col_pos_unread", "1",
520 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
521 {"summary_col_pos_mime", "2",
522 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
523 {"summary_col_pos_subject", "3",
524 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
525 {"summary_col_pos_from", "4",
526 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
527 {"summary_col_pos_date", "5",
528 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
529 {"summary_col_pos_size", "6",
530 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
531 {"summary_col_pos_number", "7",
532 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
533 {"summary_col_pos_score", "8",
534 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
535 {"summary_col_pos_locked", "9",
536 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
537 {"summary_col_pos_to", "10",
538 &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
539 {"summary_col_pos_tags", "11",
540 &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
542 {"summary_col_size_mark", "10",
543 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
544 {"summary_col_size_unread", "13",
545 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_mime", "10",
547 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
548 #ifndef GENERIC_UMPC
549 {"summary_col_size_subject", "200",
550 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
551 {"summary_col_size_from", "120",
552 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
553 {"summary_col_size_to", "120",
554 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
555 #else
556 {"summary_col_size_subject", "300",
557 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
558 {"summary_col_size_from", "150",
559 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
560 {"summary_col_size_to", "150",
561 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
563 #endif
564 {"summary_col_size_date", "118",
565 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
566 {"summary_col_size_size", "45",
567 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
568 {"summary_col_size_number", "40",
569 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
570 {"summary_col_size_score", "40",
571 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
572 {"summary_col_size_locked", "13",
573 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
574 {"summary_col_size_tags", "150",
575 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
577 /* Widget size */
578 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
579 NULL, NULL, NULL},
580 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
581 NULL, NULL, NULL},
582 {"folderview_width", "270", &prefs_common.folderview_width, P_INT,
583 NULL, NULL, NULL},
584 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
585 NULL, NULL, NULL},
586 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
587 NULL, NULL, NULL},
589 {"folder_col_show_folder", "TRUE",
590 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
591 {"folder_col_show_new", "TRUE",
592 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
593 {"folder_col_show_unread", "TRUE",
594 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
595 {"folder_col_show_total", "TRUE",
596 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
598 {"folder_col_pos_folder", "0",
599 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
600 {"folder_col_pos_new", "1",
601 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
602 {"folder_col_pos_unread", "2",
603 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
604 {"folder_col_pos_total", "3",
605 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
607 #ifndef GENERIC_UMPC
608 {"folder_col_size_folder", "120",
609 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
610 {"folder_col_size_new", "32",
611 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
612 {"folder_col_size_unread", "32",
613 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
614 {"folder_col_size_total", "32",
615 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
616 #else
617 {"folder_col_size_folder", "400",
618 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
619 {"folder_col_size_new", "32",
620 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
621 {"folder_col_size_unread", "32",
622 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
623 {"folder_col_size_total", "32",
624 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
625 #endif
627 {"folder_default_thread", "TRUE", &prefs_common.folder_default_thread, P_BOOL,
628 NULL, NULL, NULL},
629 {"folder_default_thread_collapsed", "FALSE", &prefs_common.folder_default_thread_collapsed, P_BOOL,
630 NULL, NULL, NULL},
631 {"folder_default_hide_read_threads", "FALSE", &prefs_common.folder_default_hide_read_threads, P_BOOL,
632 NULL, NULL, NULL},
633 {"folder_default_hide_read_msgs", "FALSE", &prefs_common.folder_default_hide_read_msgs, P_BOOL,
634 NULL, NULL, NULL},
635 {"folder_default_hide_del_msgs", "FALSE", &prefs_common.folder_default_hide_del_msgs, P_BOOL,
636 NULL, NULL, NULL},
638 {"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
639 NULL, NULL, NULL},
640 {"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
641 NULL, NULL, NULL},
643 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
644 NULL, NULL, NULL},
645 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
646 NULL, NULL, NULL},
647 {"messageview_width", "500", &prefs_common.msgview_width, P_INT,
648 NULL, NULL, NULL},
649 {"messageview_height", "213", &prefs_common.msgview_height, P_INT,
650 NULL, NULL, NULL},
651 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
652 NULL, NULL, NULL},
654 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
655 NULL, NULL, NULL},
656 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
657 NULL, NULL, NULL},
658 {"mainview_width", "500", &prefs_common.mainview_width, P_INT,
659 NULL, NULL, NULL},
660 {"mainview_height", "400", &prefs_common.mainview_height, P_INT,
661 NULL, NULL, NULL},
662 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
663 NULL, NULL, NULL},
664 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
665 NULL, NULL, NULL},
666 {"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
667 NULL, NULL, NULL},
668 {"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
669 NULL, NULL, NULL},
670 {"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
671 NULL, NULL, NULL},
672 #ifndef GENERIC_UMPC
673 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
674 NULL, NULL, NULL},
675 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
676 NULL, NULL, NULL},
677 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
678 NULL, NULL, NULL},
679 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
680 NULL, NULL, NULL},
681 {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
682 NULL, NULL, NULL},
683 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
684 NULL, NULL, NULL},
685 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
686 NULL, NULL, NULL},
687 {"compose_width", "600", &prefs_common.compose_width, P_INT,
688 NULL, NULL, NULL},
689 {"compose_height", "560", &prefs_common.compose_height, P_INT,
690 NULL, NULL, NULL},
691 #else
692 {"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
693 NULL, NULL, NULL},
694 {"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
695 NULL, NULL, NULL},
696 {"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
697 NULL, NULL, NULL},
698 {"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
699 NULL, NULL, NULL},
700 {"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
701 NULL, NULL, NULL},
702 {"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
703 NULL, NULL, NULL},
704 {"compose_width", "700", &prefs_common.compose_width, P_INT,
705 NULL, NULL, NULL},
706 {"compose_height", "470", &prefs_common.compose_height, P_INT,
707 NULL, NULL, NULL},
708 #endif
709 {"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
710 NULL, NULL, NULL},
711 {"compose_x", "0", &prefs_common.compose_x, P_INT,
712 NULL, NULL, NULL},
713 {"compose_y", "0", &prefs_common.compose_y, P_INT,
714 NULL, NULL, NULL},
715 /* Message */
716 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
717 NULL, NULL, NULL},
719 {"quote_level1_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL1],
720 P_COLOR, NULL, NULL, NULL},
721 {"quote_level2_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL2],
722 P_COLOR, NULL, NULL, NULL},
723 {"quote_level3_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL3],
724 P_COLOR, NULL, NULL, NULL},
725 {"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
726 NULL, NULL, NULL},
727 {"quote_level1_bgcolor", "#cccccc", &prefs_common.color[COL_QUOTE_LEVEL1_BG],
728 P_COLOR, NULL, NULL, NULL},
729 {"quote_level2_bgcolor", "#d4d4d4", &prefs_common.color[COL_QUOTE_LEVEL2_BG],
730 P_COLOR, NULL, NULL, NULL},
731 {"quote_level3_bgcolor", "#dddddd", &prefs_common.color[COL_QUOTE_LEVEL3_BG],
732 P_COLOR, NULL, NULL, NULL},
733 {"uri_color", "#007f00", &prefs_common.color[COL_URI],
734 P_COLOR, NULL, NULL, NULL},
735 {"emphasis_color", "#0000cf", &prefs_common.color[COL_EMPHASIS],
736 P_COLOR, NULL, NULL, NULL},
737 {"target_folder_color", "#da1cca", &prefs_common.color[COL_TGT_FOLDER],
738 P_COLOR, NULL, NULL, NULL},
739 {"signature_color", "#797979", &prefs_common.color[COL_SIGNATURE],
740 P_COLOR, NULL, NULL, NULL},
741 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
742 P_BOOL, NULL, NULL, NULL},
744 {"default_header_color", "#000000", &prefs_common.color[COL_DEFAULT_HEADER],
745 P_COLOR, NULL, NULL, NULL},
746 {"default_header_bgcolor", "#f5f6be", &prefs_common.color[COL_DEFAULT_HEADER_BG],
747 P_COLOR, NULL, NULL, NULL},
748 {"tags_color", "#000000", &prefs_common.color[COL_TAGS],
749 P_COLOR, NULL, NULL, NULL},
750 {"tags_bgcolor", "#f5f6be", &prefs_common.color[COL_TAGS_BG],
751 P_COLOR, NULL, NULL, NULL},
752 {"qs_active_color", "#000000", &prefs_common.color[COL_QS_ACTIVE],
753 P_COLOR, NULL, NULL, NULL},
754 {"qs_active_bgcolor", "#f5f6be", &prefs_common.color[COL_QS_ACTIVE_BG],
755 P_COLOR, NULL, NULL, NULL},
756 {"qs_error_color", "#000000", &prefs_common.color[COL_QS_ERROR],
757 P_COLOR, NULL, NULL, NULL},
758 {"qs_error_bgcolor", "#ff7070", &prefs_common.color[COL_QS_ERROR_BG],
759 P_COLOR, NULL, NULL, NULL},
761 {"display_header_pane", "FALSE", &prefs_common.display_header_pane,
762 P_BOOL, NULL, NULL, NULL},
763 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
764 NULL, NULL, NULL},
765 {"display_xface", "TRUE", &prefs_common.display_xface,
766 P_BOOL, NULL, NULL, NULL},
767 {"save_xface", "TRUE", &prefs_common.save_xface,
768 P_BOOL, NULL, NULL, NULL},
769 {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
770 NULL, NULL, NULL},
771 {"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
772 NULL, NULL, NULL},
773 {"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
774 NULL, NULL, NULL},
775 {"line_space", "2", &prefs_common.line_space, P_INT,
776 NULL, NULL, NULL},
777 {"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
778 NULL, NULL, NULL},
780 {"enable_smooth_scroll", "FALSE",
781 &prefs_common.enable_smooth_scroll, P_BOOL,
782 NULL, NULL, NULL},
783 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
784 NULL, NULL, NULL},
785 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
786 NULL, NULL, NULL},
787 {"hide_quoted", "TRUE",
788 &prefs_common.hide_quoted, P_BOOL,
789 NULL, NULL, NULL},
790 {"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
791 NULL, NULL, NULL},
792 {"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
793 NULL, NULL, NULL},
795 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
796 NULL, NULL, NULL},
798 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
799 NULL, NULL, NULL},
800 {"attach_save_directory", NULL,
801 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
802 {"attach_load_directory", NULL,
803 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
805 /* MIME viewer */
806 {"mime_textviewer", NULL,
807 &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL},
808 {"mime_open_command", "xdg-open '%s'",
809 &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL},
810 {"show_inline_attachments", "TRUE",
811 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
813 /* Interface */
814 #ifndef GENERIC_UMPC
815 {"layout_mode", "0", &prefs_common.layout_mode, P_INT,
816 NULL, NULL, NULL},
817 #else
818 {"layout_mode", "5", &prefs_common.layout_mode, P_INT,
819 NULL, NULL, NULL},
820 #endif
821 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
822 NULL, NULL, NULL}, */
823 {"open_selected_message_on_folder_open", "FALSE",
824 &prefs_common.open_selected_on_folder_open,
825 P_BOOL, NULL, NULL, NULL},
826 {"open_selected_message_on_search_results", "FALSE",
827 &prefs_common.open_selected_on_search_results,
828 P_BOOL, NULL, NULL, NULL},
829 {"open_selected_message_on_prevnext", "FALSE",
830 &prefs_common.open_selected_on_prevnext,
831 P_BOOL, NULL, NULL, NULL},
832 {"open_selected_message_on_deletemove", "FALSE",
833 &prefs_common.open_selected_on_deletemove,
834 P_BOOL, NULL, NULL, NULL},
835 {"open_selected_message_on_directional", "FALSE",
836 &prefs_common.open_selected_on_directional,
837 P_BOOL, NULL, NULL, NULL},
838 {"always_show_message_when_selected", "FALSE",
839 &prefs_common.always_show_msg,
840 P_BOOL, NULL, NULL, NULL},
841 {"select_on_entry", "3", &prefs_common.select_on_entry,
842 P_ENUM, NULL, NULL, NULL},
843 {"show_tooltips", "TRUE", &prefs_common.show_tooltips,
844 P_BOOL, NULL, NULL, NULL},
846 /* do it SUMMARY_OPEN_ACTIONS-1 times */
847 {"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
848 NULL, NULL, NULL},
849 {"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
850 NULL, NULL, NULL},
851 {"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
852 NULL, NULL, NULL},
853 {"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
854 NULL, NULL, NULL},
855 {"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
856 NULL, NULL, NULL},
857 {"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
858 NULL, NULL, NULL},
859 {"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
860 NULL, NULL, NULL},
861 {"summary_select_prio8", "0", &prefs_common.summary_select_prio[7], P_ENUM,
862 NULL, NULL, NULL},
863 {"summary_select_prio9", "0", &prefs_common.summary_select_prio[8], P_ENUM,
864 NULL, NULL, NULL},
865 {"summary_select_prio10", "0", &prefs_common.summary_select_prio[9], P_ENUM,
866 NULL, NULL, NULL},
868 {"mark_as_read_on_new_window", "FALSE",
869 &prefs_common.mark_as_read_on_new_window,
870 P_BOOL, NULL, NULL, NULL},
871 {"mark_as_read_delay", "0",
872 &prefs_common.mark_as_read_delay, P_INT,
873 NULL, NULL, NULL},
874 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
875 NULL, NULL, NULL},
876 {"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
877 NULL, NULL, NULL},
878 {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
879 NULL, NULL, NULL},
881 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
882 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
883 NULL, NULL, NULL},
884 #ifdef HAVE_SVG
885 {"enable_alpha_svg", "TRUE",
886 &SPECIFIC_PREFS.enable_alpha_svg, P_BOOL,
887 NULL, NULL, NULL},
888 {"enable_pixmap_scaling", "TRUE",
889 &SPECIFIC_PREFS.enable_pixmap_scaling, P_BOOL,
890 NULL, NULL, NULL},
891 {"pixmap_scaling_auto", "TRUE",
892 &SPECIFIC_PREFS.pixmap_scaling_auto, P_BOOL,
893 NULL, NULL, NULL},
894 {"pixmap_scaling_ppi", "96",
895 &SPECIFIC_PREFS.pixmap_scaling_ppi, P_INT,
896 NULL, NULL, NULL},
897 #endif
899 {"run_processingrules_before_mark_all", "FALSE", &prefs_common.run_processingrules_before_mark_all, P_BOOL,
900 NULL, NULL, NULL},
901 {"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
902 NULL, NULL, NULL},
903 {"ask_override_colorlabel", "TRUE", &prefs_common.ask_override_colorlabel, P_BOOL,
904 NULL, NULL, NULL},
906 {"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
907 NULL, NULL, NULL},
908 {"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
909 NULL, NULL, NULL},
911 /* Addressbook */
912 {"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
913 P_BOOL, NULL, NULL, NULL},
914 {"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
915 P_INT, NULL, NULL, NULL},
916 {"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
917 P_INT, NULL, NULL, NULL},
919 /* Other */
920 #ifndef G_OS_WIN32
921 {"uri_open_command", DEFAULT_BROWSER_CMD,
922 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
923 #else
924 {"gtk_theme", DEFAULT_W32_GTK_THEME,
925 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
926 #endif
927 {"ext_editor_command", DEFAULT_EDITOR_CMD,
928 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
929 {"cmds_use_system_default", "TRUE",
930 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
931 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
932 P_BOOL, NULL, NULL, NULL},
933 {"session_passwords", "FALSE", &prefs_common.session_passwords,
934 P_BOOL, NULL, NULL, NULL},
935 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
936 NULL, NULL, NULL},
937 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
938 NULL, NULL, NULL},
939 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
940 NULL, NULL, NULL},
941 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
942 P_BOOL, NULL, NULL, NULL},
943 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
944 NULL, NULL, NULL},
945 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
946 NULL, NULL, NULL},
947 #ifndef GENERIC_UMPC
948 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
949 NULL, NULL, NULL},
950 #else
951 {"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
952 NULL, NULL, NULL},
953 #endif
955 #if defined(__OpenBSD__)
956 {"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
957 P_INT, NULL, NULL, NULL},
958 #else
959 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
960 P_INT, NULL, NULL, NULL},
961 #endif
962 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
963 NULL, NULL, NULL},
964 {"important_score", "1", &prefs_common.important_score, P_INT,
965 NULL, NULL, NULL},
967 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
968 NULL, NULL, NULL},
969 {"log_length", "500", &prefs_common.loglength, P_INT,
970 NULL, NULL, NULL},
971 #ifndef GENERIC_UMPC
972 {"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
973 NULL, NULL, NULL},
974 {"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
975 NULL, NULL, NULL},
976 {"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
977 NULL, NULL, NULL},
978 {"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
979 NULL, NULL, NULL},
980 #else
981 {"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
982 NULL, NULL, NULL},
983 {"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
984 NULL, NULL, NULL},
985 {"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
986 NULL, NULL, NULL},
987 {"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
988 NULL, NULL, NULL},
989 #endif
990 {"log_msg_color", "#00af00", &prefs_common.color[COL_LOG_MSG],
991 P_COLOR, NULL, NULL, NULL},
992 {"log_warn_color", "#af0000", &prefs_common.color[COL_LOG_WARN],
993 P_COLOR, NULL, NULL, NULL},
994 {"log_error_color", "#af0000", &prefs_common.color[COL_LOG_ERROR],
995 P_COLOR, NULL, NULL, NULL},
996 {"log_in_color", "#000000", &prefs_common.color[COL_LOG_IN],
997 P_COLOR, NULL, NULL, NULL},
998 {"log_out_color", "#0000ef", &prefs_common.color[COL_LOG_OUT],
999 P_COLOR, NULL, NULL, NULL},
1000 {"log_status_ok_color", "#00af00", &prefs_common.color[COL_LOG_STATUS_OK],
1001 P_COLOR, NULL, NULL, NULL},
1002 {"log_status_nok_color", "#0000af", &prefs_common.color[COL_LOG_STATUS_NOK],
1003 P_COLOR, NULL, NULL, NULL},
1004 {"log_status_skip_color", "#aa00aa", &prefs_common.color[COL_LOG_STATUS_SKIP],
1005 P_COLOR, NULL, NULL, NULL},
1007 {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
1008 NULL, NULL, NULL},
1009 {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
1010 NULL, NULL, NULL},
1011 {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
1012 NULL, NULL, NULL},
1013 {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
1014 NULL, NULL, NULL},
1015 {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
1016 NULL, NULL, NULL},
1017 {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
1018 NULL, NULL, NULL},
1019 {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
1020 NULL, NULL, NULL},
1021 {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
1022 NULL, NULL, NULL},
1023 {"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
1024 NULL, NULL, NULL},
1026 {"gtk_enable_accels", "TRUE", &prefs_common.gtk_enable_accels, P_BOOL,
1027 NULL, NULL, NULL},
1029 {"color_new", "#0000b3", &prefs_common.color[COL_NEW],
1030 P_COLOR, NULL, NULL, NULL},
1032 /* Some windows' sizes */
1033 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
1034 NULL, NULL, NULL},
1035 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
1036 NULL, NULL, NULL},
1038 {"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
1039 NULL, NULL, NULL},
1040 {"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
1041 NULL, NULL, NULL},
1043 {"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
1044 NULL, NULL, NULL},
1045 {"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
1046 NULL, NULL, NULL},
1048 {"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
1049 NULL, NULL, NULL},
1050 {"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
1051 NULL, NULL, NULL},
1053 {"actionsiodialog_width", "582", &prefs_common.actionsiodialog_width, P_INT,
1054 NULL, NULL, NULL},
1055 {"actionsiodialog_height", "310", &prefs_common.actionsiodialog_height, P_INT,
1056 NULL, NULL, NULL},
1058 {"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
1059 NULL, NULL, NULL},
1060 {"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
1061 NULL, NULL, NULL},
1063 {"tagswin_width", "586", &prefs_common.tagswin_width, P_INT,
1064 NULL, NULL, NULL},
1065 {"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1066 NULL, NULL, NULL},
1068 {"sslmanwin_width", "486", &prefs_common.sslmanwin_width, P_INT,
1069 NULL, NULL, NULL},
1070 {"sslmanwin_height", "-1", &prefs_common.sslmanwin_height, P_INT,
1071 NULL, NULL, NULL},
1073 {"uriopenerwin_width", "-1", &prefs_common.uriopenerwin_width, P_INT,
1074 NULL, NULL, NULL},
1075 {"uriopenerwin_height", "-1", &prefs_common.uriopenerwin_height, P_INT,
1076 NULL, NULL, NULL},
1078 {"foldersortwin_width", "400", &prefs_common.foldersortwin_width, P_INT,
1079 NULL, NULL, NULL},
1080 {"foldersortwin_height", "300", &prefs_common.foldersortwin_height, P_INT,
1081 NULL, NULL, NULL},
1083 {"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1084 NULL, NULL, NULL},
1085 {"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1086 NULL, NULL, NULL},
1088 {"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1089 NULL, NULL, NULL},
1090 {"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1091 NULL, NULL, NULL},
1093 {"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1094 NULL, NULL, NULL},
1095 {"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1096 NULL, NULL, NULL},
1098 {"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1099 NULL, NULL, NULL},
1100 {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1101 NULL, NULL, NULL},
1103 {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1104 NULL, NULL, NULL},
1105 {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1106 NULL, NULL, NULL},
1108 {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1109 NULL, NULL, NULL},
1110 {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1111 NULL, NULL, NULL},
1113 {"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1114 NULL, NULL, NULL},
1116 {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1117 NULL, NULL, NULL},
1118 {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1119 NULL, NULL, NULL},
1121 {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1122 NULL, NULL, NULL},
1123 {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1124 NULL, NULL, NULL},
1126 {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1127 NULL, NULL, NULL},
1128 {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1129 NULL, NULL, NULL},
1131 {"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1132 NULL, NULL, NULL},
1133 {"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1134 NULL, NULL, NULL},
1136 {"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1137 NULL, NULL, NULL},
1138 {"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1139 NULL, NULL, NULL},
1141 {"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1142 NULL, NULL, NULL},
1143 {"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1144 NULL, NULL, NULL},
1146 {"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1147 NULL, NULL, NULL},
1148 {"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1149 NULL, NULL, NULL},
1151 {"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1152 NULL, NULL, NULL},
1153 {"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1154 NULL, NULL, NULL},
1156 {"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1157 NULL, NULL, NULL},
1158 {"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1159 NULL, NULL, NULL},
1161 {"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1162 NULL, NULL, NULL},
1163 {"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1164 NULL, NULL, NULL},
1166 /* Hidden */
1167 {"imap_scan_tree_recurs_limit", "64", &prefs_common.imap_scan_tree_recurs_limit, P_INT,
1168 NULL, NULL, NULL},
1169 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1170 NULL, NULL, NULL},
1171 {"show_save_all_success", "1", &prefs_common.show_save_all_success, P_INT,
1172 NULL, NULL, NULL},
1173 {"show_save_all_failure", "1", &prefs_common.show_save_all_failure, 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_primary_passphrase, P_BOOL, NULL, NULL, NULL },
1298 {"master_passphrase", "", &prefs_common.primary_passphrase, P_STRING, NULL, NULL, NULL },
1299 {"master_passphrase_salt", "", &prefs_common.primary_passphrase_salt, P_STRING, NULL, NULL, NULL },
1300 {"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.primary_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 {"qs_press_timeout", "500", &prefs_common.qs_press_timeout, P_INT,
1312 NULL, NULL, NULL},
1314 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1318 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1319 * Fallback to default_list if history file is not found
1321 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1322 GList *default_list)
1324 FILE *fp;
1325 gchar *path;
1326 gchar buf[PREFSBUFSIZE];
1327 GList *tmp = NULL;
1329 if (dirname) {
1330 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1331 G_DIR_SEPARATOR_S, history,
1332 NULL);
1333 } else {
1334 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1335 NULL);
1337 if ((fp = claws_fopen(path, "rb")) == NULL) {
1338 if (ENOENT != errno) FILE_OP_ERROR(path, "claws_fopen");
1339 g_free(path);
1340 /* returns default list if set, otherwise NULL */
1341 return default_list;
1343 g_free(path);
1344 while (claws_fgets(buf, sizeof(buf), fp) != NULL) {
1345 g_strstrip(buf);
1346 if (buf[0] == '\0') continue;
1347 tmp = add_history(tmp, buf);
1349 claws_fclose(fp);
1351 tmp = g_list_reverse(tmp);
1353 return tmp;
1357 * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1359 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1361 return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1365 * Read history list from the specified history file
1367 static GList *prefs_common_read_history(const gchar *history)
1369 return prefs_common_read_history_from_dir(NULL, history);
1372 void prefs_common_read_config(void)
1374 gchar *rcpath;
1375 gchar *tmp;
1377 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1378 prefs_read_config(param, "Common", rcpath, NULL);
1379 #ifdef G_OS_WIN32
1380 prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1381 #endif
1383 g_free(rcpath);
1385 tmp = g_strdup(gettext(prefs_common.date_format));
1386 g_free(prefs_common.date_format);
1387 prefs_common.date_format = tmp;
1389 prefs_common.mime_open_cmd_history =
1390 prefs_common_read_history(COMMAND_HISTORY);
1391 prefs_common.summary_quicksearch_history =
1392 prefs_common_read_history(QUICKSEARCH_HISTORY);
1393 prefs_common.summary_search_from_history =
1394 prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1395 prefs_common.summary_search_to_history =
1396 prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1397 prefs_common.summary_search_subject_history =
1398 prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1399 prefs_common.summary_search_body_history =
1400 prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1401 prefs_common.summary_search_adv_condition_history =
1402 prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1403 prefs_common.message_search_history =
1404 prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1405 prefs_common.compose_save_to_history =
1406 prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1407 #ifndef USE_ALT_ADDRBOOK
1408 prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1409 #endif
1410 colorlabel_update_colortable_from_prefs();
1413 #define TRY(func) \
1414 if (!(func)) \
1416 g_warning("failed to write"); \
1417 goto out; \
1421 * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1423 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1425 GList *cur;
1426 FILE *fp;
1427 gchar *path, *tmp_path;
1429 if (dirname) {
1430 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1431 G_DIR_SEPARATOR_S, history,
1432 NULL);
1433 } else {
1434 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1435 NULL);
1437 tmp_path = g_strconcat(path, ".tmp", NULL);
1439 if ((fp = claws_fopen(tmp_path, "wb")) == NULL) {
1440 FILE_OP_ERROR(tmp_path, "claws_fopen");
1441 goto out;
1444 for (cur = list; cur != NULL; cur = cur->next) {
1445 TRY(claws_fputs((gchar *)cur->data, fp) != EOF &&
1446 claws_fputc('\n', fp) != EOF);
1449 if (claws_safe_fclose(fp) == EOF) {
1450 FILE_OP_ERROR(tmp_path, "claws_fclose");
1451 fp = NULL;
1452 goto out;
1454 fp = NULL;
1455 #ifdef G_OS_WIN32
1456 claws_unlink(path);
1457 #endif
1458 if (g_rename(tmp_path, path) < 0) {
1459 FILE_OP_ERROR(path, "rename");
1460 goto out;
1463 out:
1464 if (fp)
1465 claws_safe_fclose(fp);
1466 g_free(tmp_path);
1467 g_free(path);
1471 * Save history list to the specified history file
1473 static void prefs_common_save_history(const gchar *history, GList *list)
1475 prefs_common_save_history_to_dir(NULL, history, list);
1478 #undef TRY
1480 void prefs_common_write_config(void)
1482 prefs_write_config(param, "Common", COMMON_RC);
1483 #ifdef G_OS_WIN32
1484 prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1485 #endif
1487 prefs_common_save_history(COMMAND_HISTORY,
1488 prefs_common.mime_open_cmd_history);
1489 prefs_common_save_history(QUICKSEARCH_HISTORY,
1490 prefs_common.summary_quicksearch_history);
1491 prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1492 prefs_common.summary_search_from_history);
1493 prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1494 prefs_common.summary_search_to_history);
1495 prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1496 prefs_common.summary_search_subject_history);
1497 prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1498 prefs_common.summary_search_body_history);
1499 prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1500 prefs_common.summary_search_adv_condition_history);
1501 prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1502 prefs_common.message_search_history);
1503 prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1504 prefs_common.compose_save_to_history);
1506 #ifndef USE_ALT_ADDRBOOK
1507 prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1508 ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1509 prefs_common.addressbook_custom_attributes);
1510 #endif
1513 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1514 both 'in' and 'out' must be non-NULL.
1515 'out' must be a pointer to a buffer whose size is at least equal
1516 to strlen(txt)+1, this buffer will get cleared. out's contents
1517 will always get set to a valid string, even if it's "".*/
1518 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1520 const gchar *i;
1521 gchar *o;
1523 *out = '\0';
1525 cm_return_if_fail( in != NULL );
1526 cm_return_if_fail( out != NULL );
1528 i = in;
1529 o = out;
1530 memset(out, 0, strlen(in)+1);
1531 while (*i != '\0') {
1532 if (*i == '\\' && *(i+1) == 'n') {
1533 *o++ = '\n';
1534 i++;
1535 } else if (*i == '\\' && *(i+1) == 't') {
1536 *o++ = '\t';
1537 i++;
1538 } else if (*i == '\\' && *(i+1) == '\\') {
1539 *o++ = '\\';
1540 i++;
1541 } else {
1542 *o++ = *i;
1544 i++;
1546 *o='\0';
1549 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1550 both 'in' and 'out' must be non-NULL.
1551 'out' must be a pointer to a buffer whose size is at least equal
1552 to 2*strlen(txt)+1. out's contents will always get set to a valid
1553 string, even if it's "". */
1554 void pref_get_escaped_pref(gchar *out, const gchar *in)
1556 const gchar *i;
1557 gchar *o;
1559 *out = '\0';
1561 cm_return_if_fail( in != NULL );
1562 cm_return_if_fail( out != NULL );
1564 i = in;
1565 o = out;
1566 while (*i != '\0') {
1567 if (*i == '\n') {
1568 *o++ = '\\';
1569 *o++ = 'n';
1570 } else if (*i == '\t') {
1571 *o++ = '\\';
1572 *o++ = 't';
1573 } else if (*i == '\\') {
1574 *o++ = '\\';
1575 *o++ = '\\';
1576 } else {
1577 *o++ = *i;
1579 i++;
1581 *o = '\0';
1584 /* set the contents of a textview widget from the internal \-escaped
1585 representation of a pref string. both txt and textview must be non-NULL. */
1586 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1588 GtkTextBuffer *buffer;
1589 gchar *out = NULL;
1591 cm_return_if_fail( textview != NULL );
1593 buffer = gtk_text_view_get_buffer(textview);
1595 if (!txt) {
1596 gtk_text_buffer_set_text(buffer, "", -1);
1597 } else {
1598 out = g_malloc(strlen(txt)+1);
1600 pref_get_unescaped_pref(out, txt);
1602 gtk_text_buffer_set_text(buffer, out, -1);
1603 g_free(out);
1607 /* set the contents of a gtkentry widget from the internal \-escaped
1608 representation of a pref string. both txt and entry must be non-NULL. */
1609 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1611 gchar *out = NULL;
1613 cm_return_if_fail( entry != NULL );
1614 if (!txt) {
1615 gtk_entry_set_text(entry, "");
1616 } else {
1617 out = g_malloc(strlen(txt)+1);
1619 pref_get_unescaped_pref(out, txt);
1621 gtk_entry_set_text(entry, out);
1622 g_free(out);
1626 /* get the \-escaped internal representation of a pref from the contents of
1627 a textview widget. textview must be non-NULL. */
1628 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1630 GtkTextBuffer *buffer;
1631 GtkTextIter start, end;
1632 gchar *out, *tmp;
1634 cm_return_val_if_fail( textview != NULL, "" );
1636 buffer = gtk_text_view_get_buffer(textview);
1637 gtk_text_buffer_get_start_iter(buffer, &start);
1638 gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1639 tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1640 out = malloc(2*strlen(tmp)+1);
1641 if (out)
1642 pref_get_escaped_pref(out, tmp);
1643 g_free(tmp);
1645 return out?out:"";
1648 /* get the \-escaped internal representation of a pref from the contents of
1649 a gtkentry widget. entry must be non-NULL. */
1650 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1652 gchar *out, *tmp;
1654 cm_return_val_if_fail( entry != NULL, "" );
1656 tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1657 out = malloc(2*strlen(tmp)+1);
1659 if (out)
1660 pref_get_escaped_pref(out, tmp);
1661 g_free(tmp);
1663 return out?out:"";
1666 /* ugly hack to be able to get this pref from ssl_certificate.c */
1667 gboolean prefs_common_unsafe_ssl_certs(void)
1669 return prefs_common.unsafe_ssl_certs;
1672 gboolean prefs_common_enable_log_standard(void)
1674 return prefs_common.enable_log_standard;
1677 gboolean prefs_common_enable_log_warning(void)
1679 return prefs_common.enable_log_warning;
1681 gboolean prefs_common_enable_log_error(void)
1683 return prefs_common.enable_log_error;
1685 gboolean prefs_common_enable_log_status(void)
1687 return prefs_common.enable_log_status;
1691 return the translated name of a header, if the translate_header option is
1692 set, otherwise return the untranslated header name (header_name itself).
1693 this function is provided for convenience, it's an interface to
1694 prefs_common.trans_hdr.
1695 works with header names either with or without trailing colon, provided
1696 that gettext found such header name in the sources (they should all be
1697 found in src/gtk/headers.h anyway).
1699 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1701 if (header_name == NULL || *header_name == '\0')
1702 return header_name;
1704 return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1707 const gchar *prefs_common_get_uri_cmd(void)
1709 #ifdef G_OS_WIN32
1710 return NULL;
1711 #else
1712 gchar *tmp = NULL;
1714 if (!prefs_common.cmds_use_system_default)
1715 return prefs_common.uri_cmd;
1717 tmp = g_find_program_in_path("xdg-open");
1718 if (!tmp)
1719 return prefs_common.uri_cmd;
1721 g_free(tmp);
1722 return "xdg-open %s";
1723 #endif
1726 const gchar *prefs_common_get_ext_editor_cmd(void)
1728 return prefs_common.ext_editor_cmd;
1729 #if 0 /* we should do that, but it detaches the editor and breaks
1730 compose.c's external composition. */
1731 gchar *tmp = NULL;
1733 if (!prefs_common.cmds_use_system_default)
1734 return prefs_common.ext_editor_cmd;
1736 tmp = g_find_program_in_path("xdg-open");
1737 if (!tmp)
1738 return prefs_common.ext_editor_cmd;
1740 g_free(tmp);
1741 return "xdg-open %s";
1742 #endif /* 0 */
1745 gboolean prefs_common_get_use_shred(void)
1747 return prefs_common.use_shred;
1750 gboolean prefs_common_get_flush_metadata (void)
1752 return prefs_common.flush_metadata;
1755 PrefsCommon *prefs_common_get_prefs(void)
1757 return &prefs_common;