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