2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2003 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 2 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, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
28 #include <gdk/gdkkeysyms.h>
33 #include <sys/types.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 "mainwindow.h"
44 #include "summaryview.h"
45 #include "messageview.h"
46 #include "manage_window.h"
52 #include "alertpanel.h"
56 #include "folderview.h"
57 #include "stock_pixmap.h"
58 #include "quote_fmt.h"
60 PrefsCommon prefs_common;
62 static PrefsDialog dialog;
64 static struct Receive {
65 GtkWidget *checkbtn_incext;
66 GtkWidget *entry_incext;
67 GtkWidget *button_incext;
69 GtkWidget *checkbtn_autochk;
70 GtkWidget *spinbtn_autochk;
71 GtkObject *spinbtn_autochk_adj;
73 GtkWidget *checkbtn_chkonstartup;
74 GtkWidget *checkbtn_scan_after_inc;
77 GtkWidget *checkbtn_newmail_auto;
78 GtkWidget *checkbtn_newmail_manu;
79 GtkWidget *entry_newmail_notify_cmd;
80 GtkWidget *hbox_newmail_notify;
81 GtkWidget *optmenu_recvdialog;
82 GtkWidget *checkbtn_no_recv_err_panel;
83 GtkWidget *checkbtn_close_recv_dialog;
87 GtkWidget *checkbtn_savemsg;
88 GtkWidget *checkbtn_queuemsg;
89 GtkWidget *optmenu_senddialog;
91 GtkWidget *optmenu_charset;
92 GtkWidget *optmenu_encoding_method;
95 static struct Compose {
96 GtkWidget *entry_fw_quotemark;
97 GtkWidget *text_fw_quotefmt;
99 GtkWidget *checkbtn_autoextedit;
100 GtkWidget *spinbtn_undolevel;
101 GtkObject *spinbtn_undolevel_adj;
102 GtkWidget *spinbtn_linewrap;
103 GtkObject *spinbtn_linewrap_adj;
104 GtkWidget *checkbtn_wrapquote;
105 GtkWidget *checkbtn_autowrap;
106 GtkWidget *checkbtn_wrapatsend;
108 GtkWidget *checkbtn_reply_account_autosel;
109 GtkWidget *checkbtn_forward_account_autosel;
110 GtkWidget *checkbtn_reedit_account_autosel;
111 GtkWidget *checkbtn_quote;
112 GtkWidget *checkbtn_default_reply_list;
113 GtkWidget *checkbtn_forward_as_attachment;
114 GtkWidget *checkbtn_redirect_keep_from;
115 GtkWidget *checkbtn_smart_wrapping;
116 GtkWidget *checkbtn_block_cursor;
117 GtkWidget *checkbtn_reply_with_quote;
119 GtkWidget *checkbtn_autosave;
120 GtkWidget *entry_autosave_length;
123 static struct Quote {
124 GtkWidget *entry_quotemark;
125 GtkWidget *text_quotefmt;
127 GtkWidget *entry_fw_quotemark;
128 GtkWidget *text_fw_quotefmt;
130 GtkWidget *entry_quote_chars;
133 static struct Display {
134 GtkWidget *entry_textfont;
135 GtkWidget *button_textfont;
137 GtkWidget *entry_smallfont;
138 GtkWidget *entry_normalfont;
139 GtkWidget *entry_boldfont;
141 GtkWidget *chkbtn_folder_unread;
142 GtkWidget *entry_ng_abbrev_len;
143 GtkWidget *spinbtn_ng_abbrev_len;
144 GtkObject *spinbtn_ng_abbrev_len_adj;
146 GtkWidget *chkbtn_transhdr;
148 GtkWidget *chkbtn_swapfrom;
149 GtkWidget *chkbtn_useaddrbook;
150 GtkWidget *chkbtn_threadsubj;
151 GtkWidget *entry_datefmt;
154 static struct Message {
155 GtkWidget *chkbtn_enablecol;
156 GtkWidget *button_edit_col;
157 GtkWidget *chkbtn_mbalnum;
158 GtkWidget *chkbtn_disphdrpane;
159 GtkWidget *chkbtn_disphdr;
160 GtkWidget *spinbtn_linespc;
161 GtkObject *spinbtn_linespc_adj;
162 GtkWidget *chkbtn_headspc;
164 GtkWidget *chkbtn_smoothscroll;
165 GtkWidget *spinbtn_scrollstep;
166 GtkObject *spinbtn_scrollstep_adj;
167 GtkWidget *chkbtn_halfpage;
169 GtkWidget *chkbtn_attach_desc;
173 static struct Privacy {
174 GtkWidget *checkbtn_auto_check_signatures;
175 GtkWidget *checkbtn_gpg_signature_popup;
176 GtkWidget *checkbtn_store_passphrase;
177 GtkWidget *spinbtn_store_passphrase;
178 GtkObject *spinbtn_store_passphrase_adj;
179 GtkWidget *checkbtn_passphrase_grab;
180 GtkWidget *checkbtn_gpg_warning;
184 static struct Interface {
185 /* GtkWidget *checkbtn_emacs; */
186 GtkWidget *checkbtn_always_show_msg;
187 GtkWidget *checkbtn_openunread;
188 GtkWidget *checkbtn_mark_as_read_on_newwin;
189 GtkWidget *checkbtn_openinbox;
190 GtkWidget *checkbtn_immedexec;
191 GtkWidget *optmenu_nextunreadmsgdialog;
192 GtkWidget *entry_pixmap_theme;
193 GtkWidget *combo_pixmap_theme;
196 static struct Other {
197 GtkWidget *uri_combo;
198 GtkWidget *uri_entry;
199 GtkWidget *printcmd_entry;
200 GtkWidget *exteditor_combo;
201 GtkWidget *exteditor_entry;
203 GtkWidget *checkbtn_addaddrbyclick;
204 GtkWidget *checkbtn_confonexit;
205 GtkWidget *checkbtn_cleanonexit;
206 GtkWidget *checkbtn_askonclean;
207 GtkWidget *checkbtn_warnqueued;
208 GtkWidget *checkbtn_cliplog;
209 GtkWidget *loglength_entry;
212 GtkWidget *checkbtn_ssl_ask_unknown_valid;
216 GtkWidget *spinbtn_iotimeout;
217 GtkObject *spinbtn_iotimeout_adj;
220 static struct MessageColorButtons {
221 GtkWidget *quote_level1_btn;
222 GtkWidget *quote_level2_btn;
223 GtkWidget *quote_level3_btn;
225 GtkWidget *tgt_folder_btn;
226 GtkWidget *signature_btn;
229 static struct KeybindDialog {
234 static GtkWidget *font_sel_win;
235 static guint font_sel_conn_id;
236 static GtkWidget *quote_color_win;
237 static GtkWidget *color_dialog;
239 static void prefs_common_charset_set_data_from_optmenu (PrefParam *pparam);
240 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
241 static void prefs_common_encoding_set_data_from_optmenu (PrefParam *pparam);
242 static void prefs_common_encoding_set_optmenu (PrefParam *pparam);
243 static void prefs_common_recv_dialog_set_data_from_optmenu (PrefParam *pparam);
244 static void prefs_common_recv_dialog_set_optmenu (PrefParam *pparam);
245 static void prefs_common_recv_dialog_newmail_notify_toggle_cb (GtkWidget *w,
247 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
248 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
249 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam);
250 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam);
251 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
252 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
255 parameter name, default value, pointer to the prefs variable, data type,
256 pointer to the widget pointer,
257 pointer to the function for data setting,
258 pointer to the function for widget setting
261 static PrefParam param[] = {
263 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
264 &receive.checkbtn_incext,
265 prefs_set_data_from_toggle, prefs_set_toggle},
266 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
267 &receive.entry_incext,
268 prefs_set_data_from_entry, prefs_set_entry},
270 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
271 &receive.checkbtn_autochk,
272 prefs_set_data_from_toggle, prefs_set_toggle},
273 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
274 &receive.spinbtn_autochk,
275 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
276 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
277 &receive.checkbtn_chkonstartup,
278 prefs_set_data_from_toggle, prefs_set_toggle},
279 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
280 P_BOOL, &receive.checkbtn_scan_after_inc,
281 prefs_set_data_from_toggle, prefs_set_toggle},
282 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
283 P_BOOL, &receive.checkbtn_newmail_manu,
284 prefs_set_data_from_toggle, prefs_set_toggle},
285 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
286 P_BOOL, &receive.checkbtn_newmail_auto,
287 prefs_set_data_from_toggle, prefs_set_toggle},
288 {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING,
289 &receive.entry_newmail_notify_cmd,
290 prefs_set_data_from_entry, prefs_set_entry},
291 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
292 &receive.optmenu_recvdialog,
293 prefs_common_recv_dialog_set_data_from_optmenu,
294 prefs_common_recv_dialog_set_optmenu},
295 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
296 P_BOOL, &receive.checkbtn_no_recv_err_panel,
297 prefs_set_data_from_toggle, prefs_set_toggle},
298 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
299 P_BOOL, &receive.checkbtn_close_recv_dialog,
300 prefs_set_data_from_toggle, prefs_set_toggle},
303 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
304 &p_send.checkbtn_savemsg,
305 prefs_set_data_from_toggle, prefs_set_toggle},
306 {"queue_message", "FALSE", &prefs_common.queue_msg, P_BOOL,
307 &p_send.checkbtn_queuemsg,
308 prefs_set_data_from_toggle, prefs_set_toggle},
309 {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_ENUM,
310 &p_send.optmenu_senddialog,
311 prefs_common_send_dialog_set_data_from_optmenu,
312 prefs_common_send_dialog_set_optmenu},
314 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
315 &p_send.optmenu_charset,
316 prefs_common_charset_set_data_from_optmenu,
317 prefs_common_charset_set_optmenu},
318 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
319 &p_send.optmenu_encoding_method,
320 prefs_common_encoding_set_data_from_optmenu,
321 prefs_common_encoding_set_optmenu},
324 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
325 &compose.checkbtn_autoextedit,
326 prefs_set_data_from_toggle, prefs_set_toggle},
327 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
328 P_BOOL, &compose.checkbtn_forward_as_attachment,
329 prefs_set_data_from_toggle, prefs_set_toggle},
330 {"redirect_keep_from", "FALSE",
331 &prefs_common.redirect_keep_from, P_BOOL,
332 &compose.checkbtn_redirect_keep_from,
333 prefs_set_data_from_toggle, prefs_set_toggle},
334 {"undo_level", "50", &prefs_common.undolevels, P_INT,
335 &compose.spinbtn_undolevel,
336 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
337 {"block_cursor", "FALSE", &prefs_common.block_cursor,
338 P_BOOL, &compose.checkbtn_block_cursor,
339 prefs_set_data_from_toggle, prefs_set_toggle},
341 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
342 &compose.spinbtn_linewrap,
343 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
344 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
345 &compose.checkbtn_wrapquote,
346 prefs_set_data_from_toggle, prefs_set_toggle},
347 {"linewrap_auto", "FALSE", &prefs_common.autowrap, P_BOOL,
348 &compose.checkbtn_autowrap,
349 prefs_set_data_from_toggle, prefs_set_toggle},
350 {"linewrap_before_sending", "FALSE",
351 &prefs_common.linewrap_at_send, P_BOOL,
352 &compose.checkbtn_wrapatsend,
353 prefs_set_data_from_toggle, prefs_set_toggle},
354 {"smart_wrapping", "TRUE", &prefs_common.smart_wrapping,
355 P_BOOL, &compose.checkbtn_smart_wrapping,
356 prefs_set_data_from_toggle, prefs_set_toggle},
357 {"autosave", "FALSE", &prefs_common.autosave,
358 P_BOOL, &compose.checkbtn_autosave,
359 prefs_set_data_from_toggle, prefs_set_toggle},
360 {"autosave_length", "50", &prefs_common.autosave_length,
361 P_INT, &compose.entry_autosave_length,
362 prefs_set_data_from_entry, prefs_set_entry},
364 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
366 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
368 {"dictionary", "", &prefs_common.dictionary, P_STRING,
370 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
372 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
374 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
376 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
379 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
380 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
382 /* Account autoselection */
383 {"reply_account_autoselect", "TRUE",
384 &prefs_common.reply_account_autosel, P_BOOL,
385 &compose.checkbtn_reply_account_autosel,
386 prefs_set_data_from_toggle, prefs_set_toggle},
387 {"forward_account_autoselect", "TRUE",
388 &prefs_common.forward_account_autosel, P_BOOL,
389 &compose.checkbtn_forward_account_autosel,
390 prefs_set_data_from_toggle, prefs_set_toggle},
391 {"reedit_account_autoselect", "TRUE",
392 &prefs_common.reedit_account_autosel, P_BOOL,
393 &compose.checkbtn_reedit_account_autosel,
394 prefs_set_data_from_toggle, prefs_set_toggle},
396 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
397 &compose.checkbtn_default_reply_list,
398 prefs_set_data_from_toggle, prefs_set_toggle},
400 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
404 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
405 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
406 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
407 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
408 prefs_set_data_from_text, prefs_set_text},
410 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
411 "e.entry_fw_quotemark,
412 prefs_set_data_from_entry, prefs_set_entry},
413 {"forward_quote_format",
414 "\\n\\nBegin forwarded message:\\n\\n"
415 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
416 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
417 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
418 prefs_set_data_from_text, prefs_set_text},
419 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
420 "e.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
423 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
425 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
426 &prefs_common.textfont, P_STRING,
427 &display.entry_textfont,
428 prefs_set_data_from_entry, prefs_set_entry},
429 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
430 &prefs_common.smallfont, P_STRING,
431 &display.entry_smallfont,
432 prefs_set_data_from_entry, prefs_set_entry},
433 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
434 &prefs_common.boldfont, P_STRING,
435 &display.entry_boldfont,
436 prefs_set_data_from_entry, prefs_set_entry},
437 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
438 &prefs_common.normalfont, P_STRING,
439 &display.entry_normalfont,
440 prefs_set_data_from_entry, prefs_set_entry},
443 {"display_folder_unread_num", "TRUE",
444 &prefs_common.display_folder_unread, P_BOOL,
445 &display.chkbtn_folder_unread,
446 prefs_set_data_from_toggle, prefs_set_toggle},
447 {"newsgroup_abbrev_len", "16",
448 &prefs_common.ng_abbrev_len, P_INT,
449 &display.spinbtn_ng_abbrev_len,
450 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
452 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
453 &display.chkbtn_transhdr,
454 prefs_set_data_from_toggle, prefs_set_toggle},
456 /* Display: Summary View */
457 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
458 &display.chkbtn_swapfrom,
459 prefs_set_data_from_toggle, prefs_set_toggle},
460 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
461 &display.chkbtn_useaddrbook,
462 prefs_set_data_from_toggle, prefs_set_toggle},
463 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
464 &display.chkbtn_threadsubj,
465 prefs_set_data_from_toggle, prefs_set_toggle},
466 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
467 P_STRING, &display.entry_datefmt,
468 prefs_set_data_from_entry, prefs_set_entry},
470 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
472 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
474 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
475 P_INT, NULL, NULL, NULL },
477 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
479 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
481 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
483 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
486 {"folderview_vscrollbar_policy", "0",
487 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
490 {"summary_col_show_mark", "TRUE",
491 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
492 {"summary_col_show_unread", "TRUE",
493 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
494 {"summary_col_show_mime", "TRUE",
495 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
496 {"summary_col_show_subject", "TRUE",
497 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
498 {"summary_col_show_from", "TRUE",
499 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
500 {"summary_col_show_date", "TRUE",
501 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
502 {"summary_col_show_size", "TRUE",
503 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
504 {"summary_col_show_number", "FALSE",
505 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
506 {"summary_col_show_score", "FALSE",
507 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
508 {"summary_col_show_locked", "FALSE",
509 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
511 {"summary_col_pos_mark", "0",
512 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
513 {"summary_col_pos_unread", "1",
514 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
515 {"summary_col_pos_mime", "2",
516 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
517 {"summary_col_pos_subject", "3",
518 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
519 {"summary_col_pos_from", "4",
520 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
521 {"summary_col_pos_date", "5",
522 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
523 {"summary_col_pos_size", "6",
524 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
525 {"summary_col_pos_number", "7",
526 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
527 {"summary_col_pos_score", "8",
528 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
529 {"summary_col_pos_locked", "9",
530 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
532 {"summary_col_size_mark", "10",
533 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
534 {"summary_col_size_unread", "13",
535 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
536 {"summary_col_size_mime", "10",
537 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
538 {"summary_col_size_subject", "200",
539 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
540 {"summary_col_size_from", "120",
541 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
542 {"summary_col_size_date", "118",
543 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
544 {"summary_col_size_size", "45",
545 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
546 {"summary_col_size_number", "40",
547 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
548 {"summary_col_size_score", "40",
549 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
550 {"summary_col_size_locked", "13",
551 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
554 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
556 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
558 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
560 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
562 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
565 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
567 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
569 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
571 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
574 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
576 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
579 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
581 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
583 {"messageview_width", "600", &prefs_common.msgview_width, P_INT,
585 {"messageview_height", "540", &prefs_common.msgview_height, P_INT,
587 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
590 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
592 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
594 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
596 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
598 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
600 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
602 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
604 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
606 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
608 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
610 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
612 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
614 {"compose_width", "600", &prefs_common.compose_width, P_INT,
616 {"compose_height", "560", &prefs_common.compose_height, P_INT,
620 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
621 &message.chkbtn_enablecol,
622 prefs_set_data_from_toggle, prefs_set_toggle},
624 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
626 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
628 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
630 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
632 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
634 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
636 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
637 P_BOOL, NULL, NULL, NULL},
639 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
640 &message.chkbtn_mbalnum,
641 prefs_set_data_from_toggle, prefs_set_toggle},
642 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
643 P_BOOL, &message.chkbtn_disphdrpane,
644 prefs_set_data_from_toggle, prefs_set_toggle},
645 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
646 &message.chkbtn_disphdr,
647 prefs_set_data_from_toggle, prefs_set_toggle},
648 {"line_space", "2", &prefs_common.line_space, P_INT,
649 &message.spinbtn_linespc,
650 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
651 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
652 &message.chkbtn_headspc,
653 prefs_set_data_from_toggle, prefs_set_toggle},
655 {"enable_smooth_scroll", "FALSE",
656 &prefs_common.enable_smooth_scroll, P_BOOL,
657 &message.chkbtn_smoothscroll,
658 prefs_set_data_from_toggle, prefs_set_toggle},
659 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
660 &message.spinbtn_scrollstep,
661 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
662 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
663 &message.chkbtn_halfpage,
664 prefs_set_data_from_toggle, prefs_set_toggle},
666 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
669 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
670 &message.chkbtn_attach_desc,
671 prefs_set_data_from_toggle, prefs_set_toggle},
674 {"mime_image_viewer", "display '%s'",
675 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
676 {"mime_audio_player", "play '%s'",
677 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
678 {"mime_open_command", "gedit '%s'",
679 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
683 {"auto_check_signatures", "TRUE",
684 &prefs_common.auto_check_signatures, P_BOOL,
685 &privacy.checkbtn_auto_check_signatures,
686 prefs_set_data_from_toggle, prefs_set_toggle},
687 {"gpg_signature_popup", "FALSE",
688 &prefs_common.gpg_signature_popup, P_BOOL,
689 &privacy.checkbtn_gpg_signature_popup,
690 prefs_set_data_from_toggle, prefs_set_toggle},
691 {"store_passphrase", "FALSE", &prefs_common.store_passphrase, P_BOOL,
692 &privacy.checkbtn_store_passphrase,
693 prefs_set_data_from_toggle, prefs_set_toggle},
694 {"store_passphrase_timeout", "0",
695 &prefs_common.store_passphrase_timeout, P_INT,
696 &privacy.spinbtn_store_passphrase,
697 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
699 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
700 &privacy.checkbtn_passphrase_grab,
701 prefs_set_data_from_toggle, prefs_set_toggle},
702 #endif /* __MINGW32__ */
703 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
704 &privacy.checkbtn_gpg_warning,
705 prefs_set_data_from_toggle, prefs_set_toggle},
706 #endif /* USE_GPGME */
709 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
711 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
714 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
715 NULL, NULL, NULL}, */
716 {"always_show_message_when_selected", "FALSE",
717 &prefs_common.always_show_msg,
718 P_BOOL, &interface.checkbtn_always_show_msg,
719 prefs_set_data_from_toggle, prefs_set_toggle},
720 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
721 P_BOOL, &interface.checkbtn_openunread,
722 prefs_set_data_from_toggle, prefs_set_toggle},
723 {"mark_as_read_on_new_window", "FALSE",
724 &prefs_common.mark_as_read_on_new_window,
725 P_BOOL, &interface.checkbtn_mark_as_read_on_newwin,
726 prefs_set_data_from_toggle, prefs_set_toggle},
727 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
728 P_BOOL, &interface.checkbtn_openinbox,
729 prefs_set_data_from_toggle, prefs_set_toggle},
730 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
731 &interface.checkbtn_immedexec,
732 prefs_set_data_from_toggle, prefs_set_toggle},
733 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
734 &interface.optmenu_nextunreadmsgdialog,
735 prefs_nextunreadmsgdialog_set_data_from_optmenu,
736 prefs_nextunreadmsgdialog_set_optmenu},
738 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
739 &prefs_common.pixmap_theme_path, P_STRING,
740 &interface.entry_pixmap_theme, prefs_set_data_from_entry, prefs_set_entry},
742 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
746 {"uri_open_command", DEFAULT_BROWSER_CMD,
747 &prefs_common.uri_cmd, P_STRING,
748 &other.uri_entry, prefs_set_data_from_entry, prefs_set_entry},
749 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
750 &other.printcmd_entry, prefs_set_data_from_entry, prefs_set_entry},
751 {"ext_editor_command", "gedit %s",
752 &prefs_common.ext_editor_cmd, P_STRING,
753 &other.exteditor_entry, prefs_set_data_from_entry, prefs_set_entry},
755 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
756 P_BOOL, &other.checkbtn_addaddrbyclick,
757 prefs_set_data_from_toggle, prefs_set_toggle},
759 {"confirm_on_exit", "TRUE", &prefs_common.confirm_on_exit, P_BOOL,
760 &other.checkbtn_confonexit,
761 prefs_set_data_from_toggle, prefs_set_toggle},
762 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
763 &other.checkbtn_cleanonexit,
764 prefs_set_data_from_toggle, prefs_set_toggle},
765 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
766 &other.checkbtn_askonclean,
767 prefs_set_data_from_toggle, prefs_set_toggle},
768 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
769 P_BOOL, &other.checkbtn_warnqueued,
770 prefs_set_data_from_toggle, prefs_set_toggle},
773 {"ssl_ask_unknown_valid", "TRUE", &prefs_common.ssl_ask_unknown_valid,
774 P_BOOL, &other.checkbtn_ssl_ask_unknown_valid,
775 prefs_set_data_from_toggle, prefs_set_toggle},
778 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
780 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
783 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
784 P_INT, &other.spinbtn_iotimeout,
785 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
786 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
788 {"important_score", "1", &prefs_common.important_score, P_INT,
790 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
791 &other.checkbtn_cliplog,
792 prefs_set_data_from_toggle, prefs_set_toggle},
793 {"log_length", "500", &prefs_common.loglength, P_INT,
794 &other.loglength_entry,
795 prefs_set_data_from_entry, prefs_set_entry},
797 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
799 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
802 {"color_new", "179", &prefs_common.color_new, P_COLOR,
805 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
808 /* widget creating functions */
809 static void prefs_common_create (void);
810 static void prefs_receive_create (void);
811 static void prefs_send_create (void);
812 static void prefs_compose_create (void);
813 static void prefs_quote_create (void);
814 static void prefs_display_create (void);
815 static void prefs_message_create (void);
817 static void prefs_privacy_create (void);
819 static void prefs_interface_create (void);
820 static void prefs_other_create (void);
822 static void date_format_ok_btn_clicked (GtkButton *button,
824 static void date_format_cancel_btn_clicked (GtkButton *button,
826 static void date_format_key_pressed (GtkWidget *keywidget,
829 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
832 static void date_format_entry_on_change (GtkEditable *editable,
834 static void date_format_select_row (GtkWidget *date_format_list,
837 GdkEventButton *event,
838 GtkWidget *date_format);
839 static GtkWidget *date_format_create (GtkButton *button,
842 static void prefs_quote_colors_dialog (void);
843 static void prefs_quote_colors_dialog_create (void);
844 static void prefs_quote_colors_key_pressed (GtkWidget *widget,
847 static void quote_color_set_dialog (GtkWidget *widget,
849 static void quote_colors_set_dialog_ok (GtkWidget *widget,
851 static void quote_colors_set_dialog_cancel (GtkWidget *widget,
853 static void quote_colors_set_dialog_key_pressed (GtkWidget *widget,
856 static void set_button_bg_color (GtkWidget *widget,
858 static void prefs_enable_message_color_toggled (void);
859 static void prefs_recycle_colors_toggled (GtkWidget *widget);
861 static void prefs_font_select (GtkButton *button, GtkEntry *entry);
863 static void prefs_font_selection_key_pressed (GtkWidget *widget,
866 static void prefs_font_selection_ok (GtkButton *button, GtkEntry *entry);
868 static void prefs_keybind_select (void);
869 static gint prefs_keybind_deleted (GtkWidget *widget,
872 static void prefs_keybind_key_pressed (GtkWidget *widget,
875 static void prefs_keybind_cancel (void);
876 static void prefs_keybind_apply_clicked (GtkWidget *widget);
878 static gint prefs_common_deleted (GtkWidget *widget,
881 static void prefs_common_key_pressed (GtkWidget *widget,
884 static void prefs_common_ok (void);
885 static void prefs_common_apply (void);
886 static void prefs_common_cancel (void);
888 void prefs_common_init(void)
890 prefs_common.disphdr_list = NULL;
893 PrefsCommon *prefs_common_get(void)
895 return &prefs_common;
898 void prefs_common_read_config(void)
902 gchar buf[PREFSBUFSIZE];
904 prefs_read_config(param, "Common", COMMON_RC);
906 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
908 if ((fp = fopen(path, "rb")) == NULL) {
909 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
914 while (fgets(buf, sizeof(buf), fp) != NULL) {
916 if (buf[0] == '\0') continue;
917 prefs_common.mime_open_cmd_history =
918 add_history(prefs_common.mime_open_cmd_history, buf);
922 prefs_common.mime_open_cmd_history =
923 g_list_reverse(prefs_common.mime_open_cmd_history);
926 void prefs_common_save_config(void)
932 prefs_save_config(param, "Common", COMMON_RC);
934 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
936 if ((fp = fopen(path, "wb")) == NULL) {
937 FILE_OP_ERROR(path, "fopen");
942 for (cur = prefs_common.mime_open_cmd_history;
943 cur != NULL; cur = cur->next) {
944 fputs((gchar *)cur->data, fp);
952 void prefs_common_open(void)
954 if (prefs_rc_is_readonly(COMMON_RC))
959 if (!dialog.window) {
960 prefs_common_create();
963 manage_window_set_transient(GTK_WINDOW(dialog.window));
964 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
965 gtk_widget_grab_focus(dialog.ok_btn);
967 prefs_set_dialog(param);
969 gtk_widget_show(dialog.window);
972 static void prefs_common_create(void)
976 debug_print("Creating common preferences window...\n");
978 prefs_dialog_create(&dialog);
979 gtk_window_set_title (GTK_WINDOW(dialog.window),
980 _("Common Preferences"));
981 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
982 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
983 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
984 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
985 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
987 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
988 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
989 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
990 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
991 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
992 GTK_SIGNAL_FUNC(prefs_common_cancel),
993 GTK_OBJECT(dialog.window));
995 /* create all widgets on notebook */
996 prefs_receive_create();
997 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
999 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
1000 prefs_compose_create();
1001 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
1002 prefs_quote_create();
1003 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
1004 prefs_display_create();
1005 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
1006 prefs_message_create();
1007 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
1009 prefs_privacy_create();
1010 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
1012 prefs_interface_create();
1013 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
1014 prefs_other_create();
1015 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
1017 gtk_widget_show_all(dialog.window);
1020 static void prefs_receive_create(void)
1024 GtkWidget *frame_incext;
1025 GtkWidget *checkbtn_incext;
1027 GtkWidget *label_incext;
1028 GtkWidget *entry_incext;
1029 /* GtkWidget *button_incext; */
1031 GtkWidget *hbox_autochk;
1032 GtkWidget *checkbtn_autochk;
1033 GtkWidget *label_autochk1;
1034 GtkObject *spinbtn_autochk_adj;
1035 GtkWidget *spinbtn_autochk;
1036 GtkWidget *label_autochk2;
1037 GtkWidget *checkbtn_chkonstartup;
1038 GtkWidget *checkbtn_scan_after_inc;
1041 GtkWidget *frame_newmail;
1042 GtkWidget *hbox_newmail_notify;
1043 GtkWidget *checkbtn_newmail_auto;
1044 GtkWidget *checkbtn_newmail_manu;
1045 GtkWidget *entry_newmail_notify_cmd;
1046 GtkWidget *label_newmail_notify_cmd;
1048 GtkWidget *hbox_recvdialog;
1049 GtkWidget *label_recvdialog;
1051 GtkWidget *menuitem;
1052 GtkWidget *optmenu_recvdialog;
1053 GtkWidget *checkbtn_no_recv_err_panel;
1054 GtkWidget *checkbtn_close_recv_dialog;
1056 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1057 gtk_widget_show (vbox1);
1058 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1059 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1061 PACK_FRAME(vbox1, frame_incext, _("External program"));
1063 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1064 gtk_widget_show (vbox2);
1065 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1066 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1068 /* Use of external incorporation program */
1069 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1070 _("Use external program for incorporation"));
1072 hbox = gtk_hbox_new (FALSE, 8);
1073 gtk_widget_show (hbox);
1074 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1075 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1077 label_incext = gtk_label_new (_("Command"));
1078 gtk_widget_show (label_incext);
1079 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1081 entry_incext = gtk_entry_new ();
1082 gtk_widget_show (entry_incext);
1083 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1086 button_incext = gtk_button_new_with_label ("... ");
1087 gtk_widget_show (button_incext);
1088 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1091 vbox2 = gtk_vbox_new (FALSE, 0);
1092 gtk_widget_show (vbox2);
1093 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1096 hbox_autochk = gtk_hbox_new (FALSE, 8);
1097 gtk_widget_show (hbox_autochk);
1098 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1100 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1101 _("Auto-check new mail"));
1103 label_autochk1 = gtk_label_new (_("every"));
1104 gtk_widget_show (label_autochk1);
1105 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1107 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1108 spinbtn_autochk = gtk_spin_button_new
1109 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1110 gtk_widget_show (spinbtn_autochk);
1111 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1112 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1113 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1115 label_autochk2 = gtk_label_new (_("minute(s)"));
1116 gtk_widget_show (label_autochk2);
1117 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1119 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1120 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1121 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1123 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1124 _("Check new mail on startup"));
1125 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1126 _("Update all local folders after incorporation"));
1129 /* receive dialog */
1130 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1131 gtk_widget_show (hbox_recvdialog);
1132 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1134 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1135 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1136 gtk_widget_show (label_recvdialog);
1137 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1139 optmenu_recvdialog = gtk_option_menu_new ();
1140 gtk_widget_show (optmenu_recvdialog);
1141 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1143 menu = gtk_menu_new ();
1144 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1145 MENUITEM_ADD (menu, menuitem, _("Only on manual receiving"),
1146 RECV_DIALOG_MANUAL);
1147 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1149 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1151 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1152 _("Don't popup error dialog on receive error"));
1154 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1155 _("Close receive dialog when finished"));
1157 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1159 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1160 gtk_widget_show (vbox2);
1161 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1162 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1164 hbox = gtk_hbox_new (TRUE, 8);
1165 gtk_widget_show (hbox);
1166 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1167 _("after autochecking"));
1168 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1169 _("after manual checking"));
1170 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1171 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1172 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1174 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1175 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1178 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1179 gtk_widget_show (hbox);
1180 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1183 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1184 "(use %d as number of new "
1186 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1188 gtk_widget_show (label_newmail_notify_cmd);
1189 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1190 label_newmail_notify_cmd, FALSE, FALSE, 0);
1192 entry_newmail_notify_cmd = gtk_entry_new ();
1193 gtk_widget_show (entry_newmail_notify_cmd);
1194 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1195 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1197 gtk_widget_set_sensitive(hbox_newmail_notify,
1198 prefs_common.newmail_notify_auto ||
1199 prefs_common.newmail_notify_manu);
1201 receive.checkbtn_incext = checkbtn_incext;
1202 receive.entry_incext = entry_incext;
1203 /* receive.button_incext = button_incext; */
1205 receive.checkbtn_autochk = checkbtn_autochk;
1206 receive.spinbtn_autochk = spinbtn_autochk;
1207 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1209 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1210 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1213 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1214 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1215 receive.hbox_newmail_notify = hbox_newmail_notify;
1216 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1217 receive.optmenu_recvdialog = optmenu_recvdialog;
1218 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1219 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1222 static void prefs_send_create(void)
1227 GtkWidget *checkbtn_savemsg;
1228 GtkWidget *checkbtn_queuemsg;
1229 GtkWidget *label_outcharset;
1230 GtkWidget *optmenu_charset;
1231 GtkWidget *optmenu_menu;
1232 GtkWidget *menuitem;
1233 GtkTooltips *charset_tooltip;
1234 GtkWidget *optmenu_encoding;
1235 GtkWidget *label_encoding;
1236 GtkTooltips *encoding_tooltip;
1237 GtkWidget *label_senddialog;
1239 GtkWidget *optmenu_senddialog;
1240 GtkWidget *hbox_senddialog;
1242 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1243 gtk_widget_show (vbox1);
1244 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1245 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1247 vbox2 = gtk_vbox_new (FALSE, 0);
1248 gtk_widget_show (vbox2);
1249 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1251 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1252 _("Save sent messages to Sent folder"));
1253 PACK_CHECK_BUTTON (vbox2, checkbtn_queuemsg,
1254 _("Queue messages that fail to send"));
1256 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1257 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1259 label_senddialog = gtk_label_new (_("Show send dialog"));
1260 gtk_widget_show (label_senddialog);
1261 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1263 optmenu_senddialog = gtk_option_menu_new ();
1264 gtk_widget_show (optmenu_senddialog);
1265 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1267 menu = gtk_menu_new ();
1268 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1269 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1271 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1273 hbox1 = gtk_hbox_new (FALSE, 8);
1274 gtk_widget_show (hbox1);
1275 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1277 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1278 gtk_widget_show (label_outcharset);
1279 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1281 charset_tooltip = gtk_tooltips_new();
1283 optmenu_charset = gtk_option_menu_new ();
1284 gtk_widget_show (optmenu_charset);
1285 gtk_tooltips_set_tip(GTK_TOOLTIPS(charset_tooltip), optmenu_charset,
1286 _("If `Automatic' is selected, the optimal encoding"
1287 " for the current locale will be used"),
1289 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1291 optmenu_menu = gtk_menu_new ();
1293 #define SET_MENUITEM(str, data) \
1295 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1298 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1299 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1301 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1303 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1304 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1305 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1306 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1307 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1308 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1309 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1311 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1313 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1315 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1316 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1318 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1320 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1321 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1323 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1324 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1326 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1327 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1329 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1330 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1331 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1333 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1336 hbox1 = gtk_hbox_new (FALSE, 8);
1337 gtk_widget_show (hbox1);
1338 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1340 hbox1 = gtk_hbox_new (FALSE, 8);
1341 gtk_widget_show (hbox1);
1342 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1344 label_encoding = gtk_label_new (_("Transfer encoding"));
1345 gtk_widget_show (label_encoding);
1346 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1348 encoding_tooltip = gtk_tooltips_new();
1350 optmenu_encoding = gtk_option_menu_new ();
1351 gtk_widget_show (optmenu_encoding);
1352 gtk_tooltips_set_tip(GTK_TOOLTIPS(encoding_tooltip), optmenu_encoding,
1353 _("Specify Content-Transfer-Encoding used when"
1354 " message body contains non-ASCII characters"),
1356 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1358 optmenu_menu = gtk_menu_new ();
1360 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1361 SET_MENUITEM("base64", CTE_BASE64);
1362 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1363 SET_MENUITEM("8bit", CTE_8BIT);
1365 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1368 hbox1 = gtk_hbox_new (FALSE, 8);
1369 gtk_widget_show (hbox1);
1370 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1372 p_send.checkbtn_savemsg = checkbtn_savemsg;
1373 p_send.checkbtn_queuemsg = checkbtn_queuemsg;
1374 p_send.optmenu_senddialog = optmenu_senddialog;
1376 p_send.optmenu_charset = optmenu_charset;
1377 p_send.optmenu_encoding_method = optmenu_encoding;
1380 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1384 toggled = gtk_toggle_button_get_active
1385 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1386 gtk_toggle_button_get_active
1387 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1388 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1391 static void prefs_compose_create(void)
1396 GtkWidget *checkbtn_autoextedit;
1398 GtkWidget *frame_autosel;
1399 GtkWidget *hbox_autosel;
1400 GtkWidget *checkbtn_reply_account_autosel;
1401 GtkWidget *checkbtn_forward_account_autosel;
1402 GtkWidget *checkbtn_reedit_account_autosel;
1404 GtkWidget *hbox_undolevel;
1405 GtkWidget *label_undolevel;
1406 GtkObject *spinbtn_undolevel_adj;
1407 GtkWidget *spinbtn_undolevel;
1409 GtkWidget *vbox_linewrap;
1414 GtkWidget *label_linewrap;
1415 GtkObject *spinbtn_linewrap_adj;
1416 GtkWidget *spinbtn_linewrap;
1417 GtkWidget *checkbtn_wrapquote;
1418 GtkWidget *checkbtn_autowrap;
1419 GtkWidget *checkbtn_wrapatsend;
1421 GtkWidget *checkbtn_default_reply_list;
1423 GtkWidget *checkbtn_forward_as_attachment;
1424 GtkWidget *checkbtn_redirect_keep_from;
1425 GtkWidget *checkbtn_smart_wrapping;
1426 GtkWidget *checkbtn_block_cursor;
1427 GtkWidget *frame_msgwrap;
1429 GtkWidget *hbox_autosave;
1430 GtkWidget *checkbtn_autosave;
1431 GtkWidget *entry_autosave_length;
1432 GtkWidget *label_autosave_length;
1434 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1435 gtk_widget_show (vbox1);
1436 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1437 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1439 /* Account autoselection */
1440 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1442 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1443 gtk_widget_show (hbox_autosel);
1444 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1445 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1447 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1448 _("when replying"));
1449 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1450 _("when forwarding"));
1451 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1452 _("when re-editing"));
1454 vbox2 = gtk_vbox_new (FALSE, 0);
1455 gtk_widget_show (vbox2);
1456 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1458 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1459 _("Reply button invokes mailing list reply"));
1461 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1462 _("Automatically launch the external editor"));
1464 hbox5 = gtk_hbox_new (FALSE, 8);
1465 gtk_widget_show (hbox5);
1466 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1468 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1469 _("Forward as attachment"));
1471 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1474 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1475 _("Keep the original 'From' header when redirecting"));
1478 hbox_autosave = gtk_hbox_new (FALSE, 8);
1479 gtk_widget_show (hbox_autosave);
1480 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1482 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1483 _("Autosave to Drafts folder every "));
1485 entry_autosave_length = gtk_entry_new();
1486 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1487 gtk_widget_show (entry_autosave_length);
1488 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1490 label_autosave_length = gtk_label_new(_("characters"));
1491 gtk_widget_show (label_autosave_length);
1492 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1494 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1495 gtk_widget_show (hbox_undolevel);
1496 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1498 label_undolevel = gtk_label_new (_("Undo level"));
1499 gtk_widget_show (label_undolevel);
1500 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1502 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1503 spinbtn_undolevel = gtk_spin_button_new
1504 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1505 gtk_widget_show (spinbtn_undolevel);
1506 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1507 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1508 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1511 PACK_FRAME(vbox1, frame_msgwrap, _("Message wrapping"));
1513 vbox_linewrap = gtk_vbox_new (FALSE, VSPACING_NARROW);
1514 gtk_widget_show (vbox_linewrap);
1515 gtk_container_add (GTK_CONTAINER (frame_msgwrap), vbox_linewrap);
1516 gtk_container_set_border_width (GTK_CONTAINER (vbox_linewrap), 8);
1518 hbox3 = gtk_hbox_new (FALSE, 8);
1519 gtk_widget_show (hbox3);
1520 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox3, FALSE, FALSE, 0);
1523 label_linewrap = gtk_label_new (_("Wrap messages at"));
1524 gtk_widget_show (label_linewrap);
1525 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1527 spinbtn_linewrap_adj = gtk_adjustment_new (72, 20, 1024, 1, 10, 10);
1528 spinbtn_linewrap = gtk_spin_button_new
1529 (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
1530 gtk_widget_show (spinbtn_linewrap);
1531 gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
1532 gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
1533 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
1535 label_linewrap = gtk_label_new (_("characters"));
1536 gtk_widget_show (label_linewrap);
1537 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1539 hbox4 = gtk_hbox_new (FALSE, VSPACING);
1540 gtk_widget_show (hbox4);
1541 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox4, FALSE, FALSE, 0);
1543 PACK_CHECK_BUTTON (hbox4, checkbtn_wrapquote, _("Wrap quotation"));
1545 PACK_CHECK_BUTTON (hbox4, checkbtn_autowrap, _("Wrap on input"));
1548 (hbox4, checkbtn_wrapatsend, _("Wrap before sending"));
1550 PACK_CHECK_BUTTON (vbox_linewrap, checkbtn_smart_wrapping,
1551 _("Smart wrapping (EXPERIMENTAL)"));
1554 compose.checkbtn_quote = checkbtn_quote;
1555 compose.entry_quotemark = entry_quotemark;
1556 compose.text_quotefmt = text_quotefmt;
1559 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1561 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1562 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1563 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1565 compose.spinbtn_undolevel = spinbtn_undolevel;
1566 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1568 compose.spinbtn_linewrap = spinbtn_linewrap;
1569 compose.spinbtn_linewrap_adj = spinbtn_linewrap_adj;
1570 compose.checkbtn_wrapquote = checkbtn_wrapquote;
1571 compose.checkbtn_autowrap = checkbtn_autowrap;
1572 compose.checkbtn_wrapatsend = checkbtn_wrapatsend;
1574 compose.checkbtn_autosave = checkbtn_autosave;
1575 compose.entry_autosave_length = entry_autosave_length;
1577 compose.checkbtn_forward_as_attachment =
1578 checkbtn_forward_as_attachment;
1579 compose.checkbtn_redirect_keep_from =
1580 checkbtn_redirect_keep_from;
1581 compose.checkbtn_smart_wrapping =
1582 checkbtn_smart_wrapping;
1583 compose.checkbtn_block_cursor =
1584 checkbtn_block_cursor;
1585 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1588 static void prefs_quote_create(void)
1591 GtkWidget *frame_quote;
1592 GtkWidget *vbox_quote;
1595 GtkWidget *label_quotemark;
1596 GtkWidget *entry_quotemark;
1597 GtkWidget *scrolledwin_quotefmt;
1598 GtkWidget *text_quotefmt;
1600 GtkWidget *entry_fw_quotemark;
1601 GtkWidget *text_fw_quotefmt;
1603 GtkWidget *entry_quote_chars;
1604 GtkWidget *label_quote_chars;
1606 GtkWidget *btn_quotedesc;
1608 GtkWidget *checkbtn_reply_with_quote;
1610 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1611 gtk_widget_show (vbox1);
1612 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1613 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1617 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1619 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1621 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1622 gtk_widget_show (vbox_quote);
1623 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1624 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1626 hbox1 = gtk_hbox_new (FALSE, 32);
1627 gtk_widget_show (hbox1);
1628 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1630 hbox2 = gtk_hbox_new (FALSE, 8);
1631 gtk_widget_show (hbox2);
1632 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1634 label_quotemark = gtk_label_new (_("Quotation mark"));
1635 gtk_widget_show (label_quotemark);
1636 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1638 entry_quotemark = gtk_entry_new ();
1639 gtk_widget_show (entry_quotemark);
1640 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1641 gtk_widget_set_usize (entry_quotemark, 64, -1);
1643 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1644 gtk_widget_show (scrolledwin_quotefmt);
1645 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1646 gtk_scrolled_window_set_policy
1647 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1648 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1650 text_quotefmt = gtk_text_new (NULL, NULL);
1651 gtk_widget_show (text_quotefmt);
1652 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1653 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1654 gtk_widget_set_usize(text_quotefmt, -1, 60);
1658 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1660 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1661 gtk_widget_show (vbox_quote);
1662 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1663 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1665 hbox1 = gtk_hbox_new (FALSE, 32);
1666 gtk_widget_show (hbox1);
1667 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1669 hbox2 = gtk_hbox_new (FALSE, 8);
1670 gtk_widget_show (hbox2);
1671 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1673 label_quotemark = gtk_label_new (_("Quotation mark"));
1674 gtk_widget_show (label_quotemark);
1675 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1677 entry_fw_quotemark = gtk_entry_new ();
1678 gtk_widget_show (entry_fw_quotemark);
1679 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1681 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1683 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1684 gtk_widget_show (scrolledwin_quotefmt);
1685 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1686 gtk_scrolled_window_set_policy
1687 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1688 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1690 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1691 gtk_widget_show (text_fw_quotefmt);
1692 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1694 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1695 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1697 hbox1 = gtk_hbox_new (FALSE, 32);
1698 gtk_widget_show (hbox1);
1699 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1702 gtk_button_new_with_label (_(" Description of symbols "));
1703 gtk_widget_show (btn_quotedesc);
1704 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1705 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1706 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
1710 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
1712 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1713 gtk_widget_show (vbox_quote);
1714 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1715 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1717 hbox1 = gtk_hbox_new (FALSE, 32);
1718 gtk_widget_show (hbox1);
1719 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1721 hbox2 = gtk_hbox_new (FALSE, 8);
1722 gtk_widget_show (hbox2);
1723 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1725 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
1726 gtk_widget_show (label_quote_chars);
1727 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
1729 entry_quote_chars = gtk_entry_new ();
1730 gtk_widget_show (entry_quote_chars);
1731 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
1733 gtk_widget_set_usize (entry_quote_chars, 64, -1);
1736 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1737 quote.entry_quotemark = entry_quotemark;
1738 quote.text_quotefmt = text_quotefmt;
1739 quote.entry_fw_quotemark = entry_fw_quotemark;
1740 quote.text_fw_quotefmt = text_fw_quotefmt;
1741 quote.entry_quote_chars = entry_quote_chars;
1744 static void prefs_display_create(void)
1747 GtkWidget *frame_font;
1749 GtkWidget *label_textfont;
1750 GtkWidget *entry_textfont;
1751 GtkWidget *button_textfont;
1752 GtkWidget *chkbtn_transhdr;
1753 GtkWidget *chkbtn_folder_unread;
1755 GtkWidget *label_ng_abbrev;
1756 GtkWidget *spinbtn_ng_abbrev_len;
1757 GtkObject *spinbtn_ng_abbrev_len_adj;
1758 GtkWidget *frame_summary;
1760 GtkWidget *chkbtn_swapfrom;
1761 GtkWidget *chkbtn_useaddrbook;
1762 GtkWidget *chkbtn_threadsubj;
1764 GtkWidget *label_datefmt;
1765 GtkWidget *button_datefmt;
1766 GtkWidget *entry_datefmt;
1767 GtkWidget *button_dispitem;
1768 GtkWidget *tmplabel, *tmpbutton, *tmpentry;
1770 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1771 gtk_widget_show (vbox1);
1772 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1773 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1775 PACK_FRAME(vbox1, frame_font, _("Font"));
1777 table1 = gtk_table_new (4, 3, FALSE);
1779 gtk_widget_show (table1);
1780 gtk_container_add (GTK_CONTAINER (frame_font), table1);
1781 gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
1782 gtk_table_set_row_spacings (GTK_TABLE (table1), 8);
1783 gtk_table_set_col_spacings (GTK_TABLE (table1), 8);
1785 label_textfont = gtk_label_new (_("Text"));
1786 gtk_misc_set_alignment(GTK_MISC(label_textfont), 0, 0.5);
1787 gtk_widget_show (label_textfont);
1788 gtk_table_attach (GTK_TABLE (table1), label_textfont, 0, 1, 0, 1,
1789 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1791 entry_textfont = gtk_entry_new ();
1792 gtk_widget_show (entry_textfont);
1793 gtk_table_attach (GTK_TABLE (table1), entry_textfont, 1, 2, 0, 1,
1794 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1796 button_textfont = gtk_button_new_with_label (" ... ");
1798 gtk_widget_show (button_textfont);
1799 gtk_table_attach (GTK_TABLE (table1), button_textfont, 2, 3, 0, 1,
1801 gtk_signal_connect (GTK_OBJECT (button_textfont), "clicked",
1802 GTK_SIGNAL_FUNC (prefs_font_select), entry_textfont);
1804 tmplabel = gtk_label_new (_("Small"));
1805 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
1806 gtk_widget_show (tmplabel);
1807 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 1, 2,
1808 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1810 tmpentry = gtk_entry_new ();
1811 gtk_widget_show (tmpentry);
1812 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 1, 2,
1813 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1815 tmpbutton = gtk_button_new_with_label (" ... ");
1816 gtk_widget_show (tmpbutton);
1817 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 1, 2,
1819 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
1820 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
1821 display.entry_smallfont = tmpentry;
1823 tmplabel = gtk_label_new (_("Normal"));
1824 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
1825 gtk_widget_show (tmplabel);
1826 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 2, 3,
1827 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1829 tmpentry = gtk_entry_new ();
1830 gtk_widget_show (tmpentry);
1831 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 2, 3,
1832 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1834 tmpbutton = gtk_button_new_with_label (" ... ");
1835 gtk_widget_show (tmpbutton);
1836 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 2, 3,
1838 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
1839 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
1840 display.entry_normalfont = tmpentry;
1842 tmplabel = gtk_label_new (_("Bold"));
1843 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
1844 gtk_widget_show (tmplabel);
1845 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 3, 4,
1846 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1848 tmpentry = gtk_entry_new ();
1849 gtk_widget_show (tmpentry);
1850 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 3, 4,
1851 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1853 tmpbutton = gtk_button_new_with_label (" ... ");
1854 gtk_widget_show (tmpbutton);
1855 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 3, 4,
1857 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
1858 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
1859 display.entry_boldfont = tmpentry;
1861 vbox2 = gtk_vbox_new (FALSE, 0);
1862 gtk_widget_show (vbox2);
1863 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1866 (vbox2, chkbtn_transhdr,
1867 _("Translate header name (such as `From:', `Subject:')"));
1869 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1870 _("Display unread number next to folder name"));
1872 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1874 hbox1 = gtk_hbox_new (FALSE, 8);
1875 gtk_widget_show (hbox1);
1876 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1878 label_ng_abbrev = gtk_label_new
1879 (_("Abbreviate newsgroup names longer than"));
1880 gtk_widget_show (label_ng_abbrev);
1881 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1883 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
1884 spinbtn_ng_abbrev_len = gtk_spin_button_new
1885 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
1886 gtk_widget_show (spinbtn_ng_abbrev_len);
1887 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
1889 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
1890 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
1893 label_ng_abbrev = gtk_label_new
1895 gtk_widget_show (label_ng_abbrev);
1896 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1898 /* ---- Summary ---- */
1900 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
1902 vbox2 = gtk_vbox_new (FALSE, 0);
1903 gtk_widget_show (vbox2);
1904 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
1905 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1908 (vbox2, chkbtn_swapfrom,
1909 _("Display recipient in `From' column if sender is yourself"));
1911 (vbox2, chkbtn_useaddrbook,
1912 _("Display sender using address book"));
1914 (vbox2, chkbtn_threadsubj,
1915 _("Thread using subject in addition to standard headers"));
1917 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1919 hbox1 = gtk_hbox_new (FALSE, 8);
1920 gtk_widget_show (hbox1);
1921 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1923 label_datefmt = gtk_label_new (_("Date format"));
1924 gtk_widget_show (label_datefmt);
1925 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
1927 entry_datefmt = gtk_entry_new ();
1928 gtk_widget_show (entry_datefmt);
1929 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
1931 button_datefmt = gtk_button_new_with_label (" ... ");
1933 gtk_widget_show (button_datefmt);
1934 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
1935 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
1936 GTK_SIGNAL_FUNC (date_format_create), NULL);
1938 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
1940 hbox1 = gtk_hbox_new (FALSE, 8);
1941 gtk_widget_show (hbox1);
1942 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1944 button_dispitem = gtk_button_new_with_label
1945 (_(" Set displayed items in summary... "));
1946 gtk_widget_show (button_dispitem);
1947 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
1948 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
1949 GTK_SIGNAL_FUNC (prefs_summary_column_open),
1952 display.entry_textfont = entry_textfont;
1953 display.button_textfont = button_textfont;
1955 display.chkbtn_transhdr = chkbtn_transhdr;
1956 display.chkbtn_folder_unread = chkbtn_folder_unread;
1957 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
1958 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
1960 display.chkbtn_swapfrom = chkbtn_swapfrom;
1961 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
1962 display.chkbtn_threadsubj = chkbtn_threadsubj;
1963 display.entry_datefmt = entry_datefmt;
1966 static void prefs_message_create(void)
1972 GtkWidget *chkbtn_enablecol;
1973 GtkWidget *button_edit_col;
1974 GtkWidget *chkbtn_mbalnum;
1975 GtkWidget *chkbtn_disphdrpane;
1976 GtkWidget *chkbtn_disphdr;
1977 GtkWidget *button_edit_disphdr;
1978 GtkWidget *hbox_linespc;
1979 GtkWidget *label_linespc;
1980 GtkObject *spinbtn_linespc_adj;
1981 GtkWidget *spinbtn_linespc;
1982 GtkWidget *chkbtn_headspc;
1984 GtkWidget *frame_scr;
1985 GtkWidget *vbox_scr;
1986 GtkWidget *chkbtn_smoothscroll;
1987 GtkWidget *hbox_scr;
1988 GtkWidget *label_scr;
1989 GtkObject *spinbtn_scrollstep_adj;
1990 GtkWidget *spinbtn_scrollstep;
1991 GtkWidget *chkbtn_halfpage;
1993 GtkWidget *chkbtn_attach_desc;
1995 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1996 gtk_widget_show (vbox1);
1997 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1998 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2000 vbox2 = gtk_vbox_new (FALSE, 0);
2001 gtk_widget_show (vbox2);
2002 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2004 hbox1 = gtk_hbox_new (FALSE, 8);
2005 gtk_widget_show (hbox1);
2006 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2008 PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
2009 _("Enable coloration of message"));
2010 gtk_signal_connect(GTK_OBJECT(chkbtn_enablecol), "toggled",
2011 GTK_SIGNAL_FUNC(prefs_enable_message_color_toggled),
2014 button_edit_col = gtk_button_new_with_label (_(" Edit... "));
2015 gtk_widget_show (button_edit_col);
2016 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
2017 gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
2018 GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
2020 SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
2023 (vbox2, chkbtn_mbalnum,
2024 _("Display multi-byte alphanumeric as\n"
2025 "ASCII character (Japanese only)"));
2026 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
2029 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
2030 _("Display header pane above message view"));
2032 hbox1 = gtk_hbox_new (FALSE, 8);
2033 gtk_widget_show (hbox1);
2034 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2036 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
2037 _("Display short headers on message view"));
2039 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
2040 gtk_widget_show (button_edit_disphdr);
2041 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
2043 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
2044 GTK_SIGNAL_FUNC (prefs_display_header_open),
2047 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
2049 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2051 hbox1 = gtk_hbox_new (FALSE, 32);
2052 gtk_widget_show (hbox1);
2053 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2055 hbox_linespc = gtk_hbox_new (FALSE, 8);
2056 gtk_widget_show (hbox1);
2057 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
2059 label_linespc = gtk_label_new (_("Line space"));
2060 gtk_widget_show (label_linespc);
2061 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2064 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
2065 spinbtn_linespc = gtk_spin_button_new
2066 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
2067 gtk_widget_show (spinbtn_linespc);
2068 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
2070 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
2071 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
2073 label_linespc = gtk_label_new (_("pixel(s)"));
2074 gtk_widget_show (label_linespc);
2075 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2078 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Leave space on head"));
2080 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
2082 vbox_scr = gtk_vbox_new (FALSE, 0);
2083 gtk_widget_show (vbox_scr);
2084 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
2085 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
2087 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
2089 hbox1 = gtk_hbox_new (FALSE, 32);
2090 gtk_widget_show (hbox1);
2091 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
2093 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
2095 hbox_scr = gtk_hbox_new (FALSE, 8);
2096 gtk_widget_show (hbox_scr);
2097 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
2099 label_scr = gtk_label_new (_("Step"));
2100 gtk_widget_show (label_scr);
2101 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2103 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
2104 spinbtn_scrollstep = gtk_spin_button_new
2105 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
2106 gtk_widget_show (spinbtn_scrollstep);
2107 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
2109 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
2110 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
2113 label_scr = gtk_label_new (_("pixel(s)"));
2114 gtk_widget_show (label_scr);
2115 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2117 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
2119 vbox3 = gtk_vbox_new (FALSE, 0);
2120 gtk_widget_show (vbox3);
2121 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
2123 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
2124 _("Show attachment descriptions (rather than names)"));
2127 message.chkbtn_enablecol = chkbtn_enablecol;
2128 message.button_edit_col = button_edit_col;
2129 message.chkbtn_mbalnum = chkbtn_mbalnum;
2130 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
2131 message.chkbtn_disphdr = chkbtn_disphdr;
2132 message.spinbtn_linespc = spinbtn_linespc;
2133 message.chkbtn_headspc = chkbtn_headspc;
2135 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
2136 message.spinbtn_scrollstep = spinbtn_scrollstep;
2137 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
2138 message.chkbtn_halfpage = chkbtn_halfpage;
2140 message.chkbtn_attach_desc = chkbtn_attach_desc;
2144 static void prefs_privacy_create(void)
2150 GtkWidget *hbox_spc;
2152 GtkWidget *checkbtn_auto_check_signatures;
2153 GtkWidget *checkbtn_gpg_signature_popup;
2154 GtkWidget *checkbtn_store_passphrase;
2155 GtkObject *spinbtn_store_passphrase_adj;
2156 GtkWidget *spinbtn_store_passphrase;
2157 GtkTooltips *store_tooltip;
2158 GtkWidget *checkbtn_passphrase_grab;
2159 GtkWidget *checkbtn_gpg_warning;
2161 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2162 gtk_widget_show (vbox1);
2163 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2164 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2166 vbox2 = gtk_vbox_new (FALSE, 0);
2167 gtk_widget_show (vbox2);
2168 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2170 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
2171 _("Automatically check signatures"));
2173 PACK_CHECK_BUTTON (vbox2, checkbtn_gpg_signature_popup,
2174 _("Show signature check result in a popup window"));
2176 PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
2177 _("Store passphrase in memory temporarily"));
2179 vbox3 = gtk_vbox_new (FALSE, 0);
2180 gtk_widget_show (vbox3);
2181 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2183 hbox1 = gtk_hbox_new (FALSE, 8);
2184 gtk_widget_show (hbox1);
2185 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2187 hbox_spc = gtk_hbox_new (FALSE, 0);
2188 gtk_widget_show (hbox_spc);
2189 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2190 gtk_widget_set_usize (hbox_spc, 12, -1);
2192 label = gtk_label_new (_("Expire after"));
2193 gtk_widget_show (label);
2194 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2196 store_tooltip = gtk_tooltips_new();
2198 spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
2199 spinbtn_store_passphrase = gtk_spin_button_new
2200 (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
2201 gtk_widget_show (spinbtn_store_passphrase);
2202 gtk_tooltips_set_tip(GTK_TOOLTIPS(store_tooltip), spinbtn_store_passphrase,
2203 _("Setting to '0' will store the passphrase"
2204 " for the whole session"),
2206 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
2207 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
2209 gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
2211 label = gtk_label_new (_("minute(s) "));
2212 gtk_widget_show (label);
2213 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2215 hbox1 = gtk_hbox_new (FALSE, 8);
2216 gtk_widget_show (hbox1);
2217 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2219 hbox_spc = gtk_hbox_new (FALSE, 0);
2220 gtk_widget_show (hbox_spc);
2221 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2222 gtk_widget_set_usize (hbox_spc, 12, -1);
2224 SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
2227 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
2228 _("Grab input while entering a passphrase"));
2232 (vbox2, checkbtn_gpg_warning,
2233 _("Display warning on startup if GnuPG doesn't work"));
2235 hbox1 = gtk_hbox_new (FALSE, 8);
2236 gtk_widget_show (hbox1);
2237 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2239 privacy.checkbtn_auto_check_signatures
2240 = checkbtn_auto_check_signatures;
2241 privacy.checkbtn_gpg_signature_popup
2242 = checkbtn_gpg_signature_popup;
2243 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
2244 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
2245 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
2246 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2247 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2249 #endif /* USE_GPGME */
2251 static void prefs_interface_create(void)
2256 /* GtkWidget *checkbtn_emacs; */
2257 GtkWidget *checkbtn_always_show_msg;
2258 GtkWidget *checkbtn_openunread;
2259 GtkWidget *checkbtn_mark_as_read_on_newwin;
2260 GtkWidget *checkbtn_openinbox;
2261 GtkWidget *checkbtn_immedexec;
2262 GtkTooltips *immedexec_tooltip;
2266 GtkWidget *menuitem;
2268 GtkWidget *button_keybind;
2270 GtkWidget *hbox_nextunreadmsgdialog;
2271 GtkWidget *optmenu_nextunreadmsgdialog;
2273 GtkWidget *frame_pixmap_theme;
2274 GtkWidget *vbox_pixmap_theme;
2275 GtkWidget *entry_pixmap_theme;
2276 GtkWidget *combo_pixmap_theme;
2277 GList *avail_pixmap_themes = NULL;
2279 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2280 gtk_widget_show (vbox1);
2281 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2282 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2284 vbox2 = gtk_vbox_new (FALSE, 0);
2285 gtk_widget_show (vbox2);
2286 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2288 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2289 _("Emulate the behavior of mouse operation of\n"
2290 "Emacs-based mailer"));
2291 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2292 GTK_JUSTIFY_LEFT); */
2295 (vbox2, checkbtn_always_show_msg,
2296 _("Always open messages in summary when selected"));
2299 (vbox2, checkbtn_openunread,
2300 _("Open first unread message when entering a folder"));
2303 (vbox2, checkbtn_mark_as_read_on_newwin,
2304 _("Only mark message as read when opened in new window"));
2307 (vbox2, checkbtn_openinbox,
2308 _("Go to inbox after receiving new mail"));
2310 vbox3 = gtk_vbox_new (FALSE, 0);
2311 gtk_widget_show (vbox3);
2312 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2314 immedexec_tooltip = gtk_tooltips_new();
2317 (vbox3, checkbtn_immedexec,
2318 _("Execute immediately when moving or deleting messages"));
2319 gtk_tooltips_set_tip(GTK_TOOLTIPS(immedexec_tooltip), checkbtn_immedexec,
2320 _("Messages will be marked until execution"
2321 " if this is turned off"),
2324 hbox1 = gtk_hbox_new (FALSE, 0);
2325 gtk_widget_show (hbox1);
2326 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2328 /* Next Unread Message Dialog */
2329 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
2330 gtk_widget_show (hbox1);
2331 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
2333 label = gtk_label_new (_("Show no-unread-message dialog"));
2334 gtk_widget_show (label);
2335 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
2337 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2338 gtk_widget_show (optmenu_nextunreadmsgdialog);
2339 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
2341 menu = gtk_menu_new ();
2342 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2343 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
2344 NEXTUNREADMSGDIALOG_ASSUME_YES);
2345 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
2346 NEXTUNREADMSGDIALOG_ASSUME_NO);
2348 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
2350 hbox1 = gtk_hbox_new (FALSE, 8);
2351 gtk_widget_show (hbox1);
2352 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2354 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2355 gtk_widget_show (button_keybind);
2356 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2357 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2358 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2360 PACK_FRAME(vbox1, frame_pixmap_theme, _("Icon theme"));
2362 vbox_pixmap_theme = gtk_vbox_new(FALSE, 0);
2363 gtk_widget_show(vbox_pixmap_theme);
2364 gtk_container_add(GTK_CONTAINER(frame_pixmap_theme), vbox_pixmap_theme);
2365 gtk_container_set_border_width(GTK_CONTAINER(vbox_pixmap_theme), 8);
2367 avail_pixmap_themes = stock_pixmap_themes_list_new();
2369 combo_pixmap_theme = gtk_combo_new ();
2370 gtk_widget_show (combo_pixmap_theme);
2371 gtk_box_pack_start (GTK_BOX (vbox_pixmap_theme), combo_pixmap_theme, TRUE, TRUE, 0);
2372 gtk_combo_set_popdown_strings(GTK_COMBO(combo_pixmap_theme), avail_pixmap_themes);
2373 entry_pixmap_theme = GTK_COMBO (combo_pixmap_theme)->entry;
2375 stock_pixmap_themes_list_free(avail_pixmap_themes);
2377 /* interface.checkbtn_emacs = checkbtn_emacs; */
2378 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
2379 interface.checkbtn_openunread = checkbtn_openunread;
2380 interface.checkbtn_mark_as_read_on_newwin
2381 = checkbtn_mark_as_read_on_newwin;
2382 interface.checkbtn_openinbox = checkbtn_openinbox;
2383 interface.checkbtn_immedexec = checkbtn_immedexec;
2384 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2385 interface.combo_pixmap_theme = combo_pixmap_theme;
2386 interface.entry_pixmap_theme = entry_pixmap_theme;
2389 static void prefs_other_create(void)
2392 GtkWidget *ext_frame;
2393 GtkWidget *ext_table;
2396 GtkWidget *uri_label;
2397 GtkWidget *uri_combo;
2398 GtkWidget *uri_entry;
2400 GtkWidget *printcmd_label;
2401 GtkWidget *printcmd_entry;
2403 GtkWidget *exteditor_label;
2404 GtkWidget *exteditor_combo;
2405 GtkWidget *exteditor_entry;
2407 GtkWidget *frame_addr;
2408 GtkWidget *vbox_addr;
2409 GtkWidget *checkbtn_addaddrbyclick;
2411 GtkWidget *frame_cliplog;
2412 GtkWidget *vbox_cliplog;
2413 GtkWidget *hbox_cliplog;
2414 GtkWidget *checkbtn_cliplog;
2415 GtkWidget *loglength_label;
2416 GtkWidget *loglength_entry;
2417 GtkTooltips *loglength_tooltip;
2419 GtkWidget *frame_exit;
2420 GtkWidget *vbox_exit;
2421 GtkWidget *checkbtn_confonexit;
2422 GtkWidget *checkbtn_cleanonexit;
2423 GtkWidget *checkbtn_askonclean;
2424 GtkWidget *checkbtn_warnqueued;
2426 GtkWidget *label_iotimeout;
2427 GtkWidget *spinbtn_iotimeout;
2428 GtkObject *spinbtn_iotimeout_adj;
2432 GtkWidget *frame_ssl;
2433 GtkWidget *vbox_ssl;
2434 GtkWidget *hbox_ssl;
2435 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2438 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2439 gtk_widget_show (vbox1);
2440 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2441 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2443 PACK_FRAME(vbox1, ext_frame,
2444 _("External commands (%s will be replaced with file name / URI)"));
2446 ext_table = gtk_table_new (3, 2, FALSE);
2447 gtk_widget_show (ext_table);
2448 gtk_container_add (GTK_CONTAINER (ext_frame), ext_table);
2449 gtk_container_set_border_width (GTK_CONTAINER (ext_table), 8);
2450 gtk_table_set_row_spacings (GTK_TABLE (ext_table), VSPACING_NARROW);
2451 gtk_table_set_col_spacings (GTK_TABLE (ext_table), 8);
2453 uri_label = gtk_label_new (_("Web browser"));
2454 gtk_widget_show(uri_label);
2455 gtk_table_attach (GTK_TABLE (ext_table), uri_label, 0, 1, 0, 1,
2456 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2457 gtk_misc_set_alignment (GTK_MISC (uri_label), 1, 0.5);
2459 uri_combo = gtk_combo_new ();
2460 gtk_widget_show (uri_combo);
2461 gtk_table_attach (GTK_TABLE (ext_table), uri_combo, 1, 2, 0, 1,
2462 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2463 gtkut_combo_set_items (GTK_COMBO (uri_combo),
2464 DEFAULT_BROWSER_CMD,
2465 "galeon --new-tab '%s'",
2467 "mozilla -remote 'openurl(%s,new-window)'",
2468 "netscape -remote 'openURL(%s, new-window)'",
2470 "gnome-moz-remote --newwin '%s'",
2471 "kfmclient openURL '%s'",
2472 "opera -newwindow '%s'",
2473 "kterm -e w3m '%s'",
2474 "kterm -e lynx '%s'",
2476 uri_entry = GTK_COMBO (uri_combo)->entry;
2478 printcmd_label = gtk_label_new (_("Print"));
2479 gtk_widget_show (printcmd_label);
2480 gtk_table_attach (GTK_TABLE (ext_table), printcmd_label, 0, 1, 1, 2,
2481 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2482 gtk_misc_set_alignment (GTK_MISC (printcmd_label), 1, 0.5);
2484 printcmd_entry = gtk_entry_new ();
2485 gtk_widget_show (printcmd_entry);
2486 gtk_table_attach (GTK_TABLE (ext_table), printcmd_entry, 1, 2, 1, 2,
2487 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2489 exteditor_label = gtk_label_new (_("Editor"));
2490 gtk_widget_show (exteditor_label);
2491 gtk_table_attach (GTK_TABLE (ext_table), exteditor_label, 0, 1, 2, 3,
2492 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2493 gtk_misc_set_alignment (GTK_MISC (exteditor_label), 1, 0.5);
2495 exteditor_combo = gtk_combo_new ();
2496 gtk_widget_show (exteditor_combo);
2497 gtk_table_attach (GTK_TABLE (ext_table), exteditor_combo, 1, 2, 2, 3,
2498 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2499 gtkut_combo_set_items (GTK_COMBO (exteditor_combo),
2502 "mgedit --no-fork %s",
2508 exteditor_entry = GTK_COMBO (exteditor_combo)->entry;
2510 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2512 vbox_addr = gtk_vbox_new (FALSE, 0);
2513 gtk_widget_show (vbox_addr);
2514 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2515 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2518 (vbox_addr, checkbtn_addaddrbyclick,
2519 _("Add address to destination when double-clicked"));
2522 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2524 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2525 gtk_widget_show (vbox_cliplog);
2526 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2527 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2528 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2529 _("Clip the log size"));
2530 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2531 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2532 gtk_widget_show (hbox_cliplog);
2534 loglength_label = gtk_label_new (_("Log window length"));
2535 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2537 gtk_widget_show (GTK_WIDGET (loglength_label));
2539 loglength_tooltip = gtk_tooltips_new();
2541 loglength_entry = gtk_entry_new ();
2542 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2543 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2545 gtk_widget_show (GTK_WIDGET (loglength_entry));
2546 gtk_tooltips_set_tip(GTK_TOOLTIPS(loglength_tooltip), loglength_entry,
2547 _("0 to stop logging in the log window"),
2549 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2551 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2556 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2558 vbox_ssl = gtk_vbox_new (FALSE, 0);
2559 gtk_widget_show (vbox_ssl);
2560 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2561 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2562 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2563 _("Ask before accepting SSL certificates"));
2564 hbox_ssl = gtk_hbox_new (FALSE, 3);
2565 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2566 gtk_widget_show (hbox_ssl);
2571 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2573 vbox_exit = gtk_vbox_new (FALSE, 0);
2574 gtk_widget_show (vbox_exit);
2575 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2576 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2578 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2579 _("Confirm on exit"));
2581 hbox1 = gtk_hbox_new (FALSE, 32);
2582 gtk_widget_show (hbox1);
2583 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2585 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2586 _("Empty trash on exit"));
2587 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2588 _("Ask before emptying"));
2589 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2591 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2592 _("Warn if there are queued messages"));
2594 hbox1 = gtk_hbox_new (FALSE, 8);
2595 gtk_widget_show (hbox1);
2596 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2598 label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
2599 gtk_widget_show (label_iotimeout);
2600 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2602 spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
2603 spinbtn_iotimeout = gtk_spin_button_new
2604 (GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
2605 gtk_widget_show (spinbtn_iotimeout);
2606 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
2608 gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
2609 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
2611 label_iotimeout = gtk_label_new (_("seconds"));
2612 gtk_widget_show (label_iotimeout);
2613 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2615 other.uri_combo = uri_combo;
2616 other.uri_entry = uri_entry;
2617 other.printcmd_entry = printcmd_entry;
2619 other.exteditor_combo = exteditor_combo;
2620 other.exteditor_entry = exteditor_entry;
2622 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2624 other.checkbtn_cliplog = checkbtn_cliplog;
2625 other.loglength_entry = loglength_entry;
2627 other.checkbtn_confonexit = checkbtn_confonexit;
2628 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2629 other.checkbtn_askonclean = checkbtn_askonclean;
2630 other.checkbtn_warnqueued = checkbtn_warnqueued;
2632 other.spinbtn_iotimeout = spinbtn_iotimeout;
2633 other.spinbtn_iotimeout_adj = spinbtn_iotimeout_adj;
2637 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
2642 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2644 GtkWidget *datefmt_sample = NULL;
2647 g_return_if_fail(widget != NULL);
2648 g_return_if_fail(*widget != NULL);
2649 g_return_if_fail(display.entry_datefmt != NULL);
2651 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2652 (GTK_OBJECT(*widget), "datefmt_sample"));
2653 g_return_if_fail(datefmt_sample != NULL);
2655 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2656 g_free(prefs_common.date_format);
2657 prefs_common.date_format = text;
2658 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2660 gtk_widget_destroy(*widget);
2664 static void date_format_cancel_btn_clicked(GtkButton *button,
2667 g_return_if_fail(widget != NULL);
2668 g_return_if_fail(*widget != NULL);
2670 gtk_widget_destroy(*widget);
2674 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2677 if (event && event->keyval == GDK_Escape)
2678 date_format_cancel_btn_clicked(NULL, widget);
2681 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2682 GdkEventAny *event, GtkWidget **widget)
2684 g_return_val_if_fail(widget != NULL, FALSE);
2685 g_return_val_if_fail(*widget != NULL, FALSE);
2691 static void date_format_entry_on_change(GtkEditable *editable,
2695 struct tm *cal_time;
2699 cur_time = time(NULL);
2700 cal_time = localtime(&cur_time);
2702 text = gtk_editable_get_chars(editable, 0, -1);
2704 strftime(buffer, sizeof buffer, text, cal_time);
2706 gtk_label_set_text(example, buffer);
2709 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2710 gint column, GdkEventButton *event,
2711 GtkWidget *date_format)
2717 GtkWidget *datefmt_sample;
2719 /* only on double click */
2720 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2723 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2724 (GTK_OBJECT(date_format), "datefmt_sample"));
2726 g_return_if_fail(date_format_list != NULL);
2727 g_return_if_fail(date_format != NULL);
2728 g_return_if_fail(datefmt_sample != NULL);
2730 /* get format from clist */
2731 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2733 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2734 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2736 /* insert the format into the text entry */
2737 new_format = g_malloc(strlen(old_format) + 3);
2739 strncpy(new_format, old_format, cur_pos);
2740 new_format[cur_pos] = '\0';
2741 strcat(new_format, format);
2742 strcat(new_format, &old_format[cur_pos]);
2744 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2745 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2750 static GtkWidget *date_format_create(GtkButton *button, void *data)
2752 static GtkWidget *datefmt_win = NULL;
2754 GtkWidget *scrolledwindow1;
2755 GtkWidget *datefmt_clist;
2760 GtkWidget *confirm_area;
2762 GtkWidget *cancel_btn;
2763 GtkWidget *datefmt_entry;
2792 const gint TIME_FORMAT_ELEMS =
2793 sizeof time_format / sizeof time_format[0];
2795 time_format[0].txt = _("the full abbreviated weekday name");
2796 time_format[1].txt = _("the full weekday name");
2797 time_format[2].txt = _("the abbreviated month name");
2798 time_format[3].txt = _("the full month name");
2799 time_format[4].txt = _("the preferred date and time for the current locale");
2800 time_format[5].txt = _("the century number (year/100)");
2801 time_format[6].txt = _("the day of the month as a decimal number");
2802 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
2803 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
2804 time_format[9].txt = _("the day of the year as a decimal number");
2805 time_format[10].txt = _("the month as a decimal number");
2806 time_format[11].txt = _("the minute as a decimal number");
2807 time_format[12].txt = _("either AM or PM");
2808 time_format[13].txt = _("the second as a decimal number");
2809 time_format[14].txt = _("the day of the week as a decimal number");
2810 time_format[15].txt = _("the preferred date for the current locale");
2811 time_format[16].txt = _("the last two digits of a year");
2812 time_format[17].txt = _("the year as a decimal number");
2813 time_format[18].txt = _("the time zone or name or abbreviation");
2815 if (datefmt_win) return datefmt_win;
2817 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2818 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2819 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2820 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2821 gtk_widget_set_usize(datefmt_win, 440, 280);
2823 vbox1 = gtk_vbox_new(FALSE, 10);
2824 gtk_widget_show(vbox1);
2825 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2827 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2828 gtk_scrolled_window_set_policy
2829 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2830 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2831 gtk_widget_show(scrolledwindow1);
2832 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2834 titles[0] = _("Specifier");
2835 titles[1] = _("Description");
2836 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2837 gtk_widget_show(datefmt_clist);
2838 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2839 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2840 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2841 GTK_SELECTION_BROWSE);
2843 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2845 /* phoney casting necessary because of gtk... */
2846 text[0] = (gchar *)time_format[i].fmt;
2847 text[1] = (gchar *)time_format[i].txt;
2848 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2851 table = gtk_table_new(2, 2, FALSE);
2852 gtk_widget_show(table);
2853 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2854 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2855 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2857 label1 = gtk_label_new(_("Date format"));
2858 gtk_widget_show(label1);
2859 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2861 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2862 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2864 datefmt_entry = gtk_entry_new_with_max_length(256);
2865 gtk_widget_show(datefmt_entry);
2866 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2867 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2869 /* we need the "sample" entry box; add it as data so callbacks can
2870 * get the entry box */
2871 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2874 label2 = gtk_label_new(_("Example"));
2875 gtk_widget_show(label2);
2876 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2878 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2879 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2881 label3 = gtk_label_new("");
2882 gtk_widget_show(label3);
2883 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2884 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2885 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2886 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2888 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2889 &cancel_btn, _("Cancel"), NULL, NULL);
2890 gtk_widget_grab_default(ok_btn);
2891 gtk_widget_show(confirm_area);
2893 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2895 /* set the current format */
2896 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2897 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2900 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2901 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
2903 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
2904 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
2906 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
2907 GTK_SIGNAL_FUNC(date_format_key_pressed),
2909 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
2910 GTK_SIGNAL_FUNC(date_format_on_delete),
2912 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
2913 GTK_SIGNAL_FUNC(date_format_entry_on_change),
2916 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
2917 GTK_SIGNAL_FUNC(date_format_select_row),
2920 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2921 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
2923 gtk_widget_show(datefmt_win);
2924 manage_window_set_transient(GTK_WINDOW(datefmt_win));
2926 gtk_widget_grab_focus(ok_btn);
2931 void prefs_quote_colors_dialog(void)
2933 if (!quote_color_win)
2934 prefs_quote_colors_dialog_create();
2935 gtk_widget_show(quote_color_win);
2936 manage_window_set_transient(GTK_WINDOW(quote_color_win));
2939 gtk_widget_hide(quote_color_win);
2941 textview_update_message_colors();
2942 main_window_reflect_prefs_all();
2945 static void prefs_quote_colors_dialog_create(void)
2950 GtkWidget *quotelevel1_label;
2951 GtkWidget *quotelevel2_label;
2952 GtkWidget *quotelevel3_label;
2953 GtkWidget *uri_label;
2954 GtkWidget *signature_label;
2955 GtkWidget *tgt_folder_label;
2958 GtkWidget *recycle_colors_btn;
2959 GtkWidget *frame_colors;
2961 window = gtk_window_new(GTK_WINDOW_DIALOG);
2962 gtk_container_set_border_width(GTK_CONTAINER(window), 2);
2963 gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
2964 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
2965 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
2966 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
2968 vbox = gtk_vbox_new (FALSE, VSPACING);
2969 gtk_container_add (GTK_CONTAINER (window), vbox);
2970 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
2971 PACK_FRAME(vbox, frame_colors, _("Colors"));
2973 table = gtk_table_new (5, 2, FALSE);
2974 gtk_container_add (GTK_CONTAINER (frame_colors), table);
2975 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
2976 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
2977 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
2980 color_buttons.quote_level1_btn = gtk_button_new();
2981 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
2982 0, 1, 0, 1, 0, 0, 0, 0);
2983 gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
2984 gtk_container_set_border_width
2985 (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
2987 color_buttons.quote_level2_btn = gtk_button_new();
2988 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
2989 0, 1, 1, 2, 0, 0, 0, 0);
2990 gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
2991 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
2993 color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
2994 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
2995 0, 1, 2, 3, 0, 0, 0, 0);
2996 gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
2997 gtk_container_set_border_width
2998 (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
3000 color_buttons.uri_btn = gtk_button_new_with_label ("");
3001 gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
3002 0, 1, 3, 4, 0, 0, 0, 0);
3003 gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
3004 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
3006 color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
3007 gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
3008 0, 1, 4, 5, 0, 0, 0, 0);
3009 gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
3010 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
3012 color_buttons.signature_btn = gtk_button_new_with_label ("");
3013 gtk_table_attach (GTK_TABLE (table), color_buttons.signature_btn,
3014 0, 1, 5, 6, 0, 0, 0, 0);
3015 gtk_widget_set_usize (color_buttons.signature_btn, 40, 30);
3016 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.signature_btn), 5);
3018 quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
3019 gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
3020 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3021 gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
3022 gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
3024 quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
3025 gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
3026 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3027 gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
3028 gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
3030 quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
3031 gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
3032 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3033 gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
3034 gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
3036 uri_label = gtk_label_new (_("URI link"));
3037 gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
3038 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3039 gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
3040 gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
3042 tgt_folder_label = gtk_label_new (_("Target folder"));
3043 gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
3044 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3045 gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
3046 gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
3048 signature_label = gtk_label_new (_("Signatures"));
3049 gtk_table_attach (GTK_TABLE (table), signature_label, 1, 2, 5, 6,
3050 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3051 gtk_label_set_justify (GTK_LABEL (signature_label), GTK_JUSTIFY_LEFT);
3052 gtk_misc_set_alignment (GTK_MISC (signature_label), 0, 0.5);
3054 PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
3055 _("Recycle quote colors"));
3057 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
3058 NULL, NULL, NULL, NULL);
3059 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
3061 gtk_widget_grab_default(ok_btn);
3062 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3063 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
3064 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3065 gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
3066 GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
3069 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
3070 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
3071 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
3072 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
3073 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
3074 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
3075 gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
3076 GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
3077 gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
3078 GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
3079 gtk_signal_connect(GTK_OBJECT(color_buttons.signature_btn), "clicked",
3080 GTK_SIGNAL_FUNC(quote_color_set_dialog), "SIGNATURE");
3081 gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
3082 GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
3083 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3084 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3086 /* show message button colors and recycle options */
3087 set_button_bg_color(color_buttons.quote_level1_btn,
3088 prefs_common.quote_level1_col);
3089 set_button_bg_color(color_buttons.quote_level2_btn,
3090 prefs_common.quote_level2_col);
3091 set_button_bg_color(color_buttons.quote_level3_btn,
3092 prefs_common.quote_level3_col);
3093 set_button_bg_color(color_buttons.uri_btn,
3094 prefs_common.uri_col);
3095 set_button_bg_color(color_buttons.tgt_folder_btn,
3096 prefs_common.tgt_folder_col);
3097 set_button_bg_color(color_buttons.signature_btn,
3098 prefs_common.signature_col);
3099 gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
3100 prefs_common.recycle_quote_colors);
3102 gtk_widget_show_all(vbox);
3103 quote_color_win = window;
3106 static void prefs_quote_colors_key_pressed(GtkWidget *widget,
3107 GdkEventKey *event, gpointer data)
3109 if (event && event->keyval == GDK_Escape)
3113 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
3115 gchar *type = (gchar *)data;
3116 gchar *title = NULL;
3117 gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
3119 GtkColorSelectionDialog *dialog;
3121 if(g_strcasecmp(type, "LEVEL1") == 0) {
3122 title = _("Pick color for quotation level 1");
3123 rgbvalue = prefs_common.quote_level1_col;
3124 } else if(g_strcasecmp(type, "LEVEL2") == 0) {
3125 title = _("Pick color for quotation level 2");
3126 rgbvalue = prefs_common.quote_level2_col;
3127 } else if(g_strcasecmp(type, "LEVEL3") == 0) {
3128 title = _("Pick color for quotation level 3");
3129 rgbvalue = prefs_common.quote_level3_col;
3130 } else if(g_strcasecmp(type, "URI") == 0) {
3131 title = _("Pick color for URI");
3132 rgbvalue = prefs_common.uri_col;
3133 } else if(g_strcasecmp(type, "TGTFLD") == 0) {
3134 title = _("Pick color for target folder");
3135 rgbvalue = prefs_common.tgt_folder_col;
3136 } else if(g_strcasecmp(type, "SIGNATURE") == 0) {
3137 title = _("Pick color for signatures");
3138 rgbvalue = prefs_common.signature_col;
3139 } else { /* Should never be called */
3140 g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
3144 color_dialog = gtk_color_selection_dialog_new(title);
3145 gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
3146 gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
3147 gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
3148 manage_window_set_transient(GTK_WINDOW(color_dialog));
3150 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
3151 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
3152 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
3153 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
3154 gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
3155 GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
3158 /* preselect the previous color in the color selection dialog */
3159 color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
3160 color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
3161 color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
3162 dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
3163 gtk_color_selection_set_color
3164 (GTK_COLOR_SELECTION(dialog->colorsel), color);
3166 gtk_widget_show(color_dialog);
3169 static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
3171 GtkColorSelection *colorsel = (GtkColorSelection *)
3172 ((GtkColorSelectionDialog *)color_dialog)->colorsel;
3174 gint red, green, blue, rgbvalue;
3175 gchar *type = (gchar *)data;
3177 gtk_color_selection_get_color(colorsel, color);
3179 red = (gint) (color[0] * 255.0);
3180 green = (gint) (color[1] * 255.0);
3181 blue = (gint) (color[2] * 255.0);
3182 rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
3185 fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
3186 fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
3187 fprintf(stderr, "Color is %x\n", rgbvalue);
3190 if (g_strcasecmp(type, "LEVEL1") == 0) {
3191 prefs_common.quote_level1_col = rgbvalue;
3192 set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
3193 } else if (g_strcasecmp(type, "LEVEL2") == 0) {
3194 prefs_common.quote_level2_col = rgbvalue;
3195 set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
3196 } else if (g_strcasecmp(type, "LEVEL3") == 0) {
3197 prefs_common.quote_level3_col = rgbvalue;
3198 set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
3199 } else if (g_strcasecmp(type, "URI") == 0) {
3200 prefs_common.uri_col = rgbvalue;
3201 set_button_bg_color(color_buttons.uri_btn, rgbvalue);
3202 } else if (g_strcasecmp(type, "TGTFLD") == 0) {
3203 prefs_common.tgt_folder_col = rgbvalue;
3204 set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
3205 folderview_set_target_folder_color(prefs_common.tgt_folder_col);
3206 } else if (g_strcasecmp(type, "SIGNATURE") == 0) {
3207 prefs_common.signature_col = rgbvalue;
3208 set_button_bg_color(color_buttons.signature_btn, rgbvalue);
3210 fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
3212 gtk_widget_destroy(color_dialog);
3215 static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
3217 gtk_widget_destroy(color_dialog);
3220 static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
3224 gtk_widget_destroy(color_dialog);
3227 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
3232 gtkut_convert_int_to_gdk_color(rgbvalue, &color);
3233 newstyle = gtk_style_copy(gtk_widget_get_default_style());
3234 newstyle->bg[GTK_STATE_NORMAL] = color;
3235 newstyle->bg[GTK_STATE_PRELIGHT] = color;
3236 newstyle->bg[GTK_STATE_ACTIVE] = color;
3238 gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
3241 static void prefs_enable_message_color_toggled(void)
3245 is_active = gtk_toggle_button_get_active
3246 (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
3247 gtk_widget_set_sensitive(message.button_edit_col, is_active);
3248 prefs_common.enable_color = is_active;
3251 static void prefs_recycle_colors_toggled(GtkWidget *widget)
3255 is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
3256 prefs_common.recycle_quote_colors = is_active;
3259 static void prefs_font_select(GtkButton *button, GtkEntry *entry)
3263 g_return_if_fail(entry != NULL);
3265 if (!font_sel_win) {
3266 font_sel_win = gtk_font_selection_dialog_new
3267 (_("Font selection"));
3268 gtk_window_position(GTK_WINDOW(font_sel_win),
3269 GTK_WIN_POS_CENTER);
3270 gtk_signal_connect(GTK_OBJECT(font_sel_win), "delete_event",
3271 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3274 (GTK_OBJECT(font_sel_win), "key_press_event",
3275 GTK_SIGNAL_FUNC(prefs_font_selection_key_pressed),
3277 gtk_signal_connect_object
3278 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->cancel_button),
3280 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3281 GTK_OBJECT(font_sel_win));
3284 if(font_sel_conn_id) {
3285 gtk_signal_disconnect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button), font_sel_conn_id);
3287 font_sel_conn_id = gtk_signal_connect
3288 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button),
3290 GTK_SIGNAL_FUNC(prefs_font_selection_ok),
3292 printf("%i\n", font_sel_conn_id);
3294 font_name = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
3295 gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(font_sel_win), font_name);
3297 manage_window_set_transient(GTK_WINDOW(font_sel_win));
3298 gtk_window_set_modal(GTK_WINDOW(font_sel_win), TRUE);
3299 gtk_widget_grab_focus
3300 (GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button);
3301 gtk_widget_show(font_sel_win);
3304 static void prefs_font_selection_key_pressed(GtkWidget *widget,
3308 if (event && event->keyval == GDK_Escape)
3309 gtk_widget_hide(font_sel_win);
3312 static void prefs_font_selection_ok(GtkButton *button, GtkEntry *entry)
3316 fontname = gtk_font_selection_dialog_get_font_name
3317 (GTK_FONT_SELECTION_DIALOG(font_sel_win));
3320 gtk_entry_set_text(entry, fontname);
3325 gtk_widget_hide(font_sel_win);
3328 static void prefs_keybind_select(void)
3335 GtkWidget *confirm_area;
3337 GtkWidget *cancel_btn;
3339 window = gtk_window_new (GTK_WINDOW_DIALOG);
3340 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
3341 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
3342 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
3343 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
3344 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
3345 manage_window_set_transient (GTK_WINDOW (window));
3347 vbox1 = gtk_vbox_new (FALSE, VSPACING);
3348 gtk_container_add (GTK_CONTAINER (window), vbox1);
3349 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
3351 hbox1 = gtk_hbox_new (FALSE, 8);
3352 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3354 label = gtk_label_new
3355 (_("Select preset:"));
3356 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3357 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3359 hbox1 = gtk_hbox_new (FALSE, 8);
3360 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3362 combo = gtk_combo_new ();
3363 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
3364 gtkut_combo_set_items (GTK_COMBO (combo),
3370 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
3372 hbox1 = gtk_hbox_new (FALSE, 8);
3373 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3375 label = gtk_label_new
3376 (_("You can also modify each menu shortcut by pressing\n"
3377 "any key(s) when placing the mouse pointer on the item."));
3378 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3379 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3381 hbox1 = gtk_hbox_new (FALSE, 8);
3382 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3384 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
3385 &cancel_btn, _("Cancel"), NULL, NULL);
3386 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
3387 gtk_widget_grab_default (ok_btn);
3389 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3390 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3391 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
3392 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
3393 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
3394 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
3395 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
3397 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
3398 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
3401 gtk_widget_show_all(window);
3403 keybind.window = window;
3404 keybind.combo = combo;
3407 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
3410 if (event && event->keyval == GDK_Escape)
3411 prefs_keybind_cancel();
3414 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
3417 prefs_keybind_cancel();
3421 static void prefs_keybind_cancel(void)
3423 gtk_widget_destroy(keybind.window);
3424 keybind.window = NULL;
3425 keybind.combo = NULL;
3428 static void prefs_keybind_apply_clicked(GtkWidget *widget)
3430 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
3434 static gchar *default_menurc =
3435 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3436 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
3437 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3438 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
3440 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3441 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3442 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3443 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
3445 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
3446 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
3447 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3448 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3449 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3450 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3451 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3452 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3453 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3454 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3455 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3456 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3458 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3459 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3460 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
3461 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3462 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
3463 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3464 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3465 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
3466 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3467 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3468 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
3469 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
3470 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3471 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3472 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3473 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3475 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3476 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3477 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3479 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
3480 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
3481 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
3482 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
3483 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
3484 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
3485 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
3487 static gchar *mew_wl_menurc =
3488 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
3489 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
3490 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
3491 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
3493 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3494 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3495 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3496 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3498 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3499 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3500 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
3501 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3502 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3503 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3504 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3505 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3506 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3507 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3508 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
3509 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
3511 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3512 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3513 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
3514 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3515 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
3516 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3517 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3518 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3519 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
3520 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
3521 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
3522 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3523 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3524 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3525 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3526 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
3528 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3529 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3530 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3532 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3533 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3534 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3535 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3536 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3537 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3538 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3540 static gchar *mutt_menurc =
3541 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3542 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
3543 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
3544 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
3546 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3547 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3548 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3549 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
3551 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3552 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3553 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3554 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3555 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
3556 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
3557 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
3558 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3559 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3560 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3561 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3563 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3564 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3565 "(menu-path \"<Main>/Message/Compose new message\" \"M\")\n"
3566 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
3567 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
3568 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3569 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3570 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3571 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
3572 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3573 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
3574 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3575 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
3576 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3577 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
3578 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3580 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3581 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3582 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3584 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3585 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3586 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3587 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3588 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3589 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3590 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3592 static gchar *old_sylpheed_menurc =
3593 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3594 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3595 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
3596 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
3598 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3599 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3600 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3601 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3603 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3604 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3605 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3606 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3607 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3608 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3609 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3610 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
3611 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
3612 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3613 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3614 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
3616 "(menu-path \"<Main>/Message/Get new mail\" \"<alt>I\")\n"
3617 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><alt>I\")\n"
3618 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
3619 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
3620 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
3621 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
3622 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3623 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
3624 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
3625 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
3626 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
3627 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
3628 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3629 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3630 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3631 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3633 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
3634 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
3635 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
3637 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3638 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3639 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3640 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3641 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3642 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3643 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3645 text = gtk_entry_get_text(entry);
3647 if (!strcmp(text, _("Default")))
3648 rc_str = default_menurc;
3649 else if (!strcmp(text, "Mew / Wanderlust"))
3650 rc_str = mew_wl_menurc;
3651 else if (!strcmp(text, "Mutt"))
3652 rc_str = mutt_menurc;
3653 else if (!strcmp(text, _("Old Sylpheed")))
3654 rc_str = old_sylpheed_menurc;
3658 menu_factory_clear_rc(rc_str);
3659 gtk_item_factory_parse_rc_string(rc_str);
3661 gtk_widget_destroy(keybind.window);
3662 keybind.window = NULL;
3663 keybind.combo = NULL;
3666 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
3669 GtkWidget *menuitem;
3672 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3673 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3674 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
3675 g_free(*((gchar **)pparam->data));
3676 *((gchar **)pparam->data) = g_strdup(charset);
3679 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
3681 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3684 g_return_if_fail(optmenu != NULL);
3685 g_return_if_fail(*((gchar **)pparam->data) != NULL);
3687 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
3688 (GCompareFunc)strcmp);
3690 gtk_option_menu_set_history(optmenu, index);
3692 gtk_option_menu_set_history(optmenu, 0);
3693 prefs_common_charset_set_data_from_optmenu(pparam);
3697 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
3700 GtkWidget *menuitem;
3702 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3703 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3704 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
3705 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3708 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
3710 TransferEncodingMethod method =
3711 *((TransferEncodingMethod *)pparam->data);
3712 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3715 g_return_if_fail(optmenu != NULL);
3717 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
3720 gtk_option_menu_set_history(optmenu, index);
3722 gtk_option_menu_set_history(optmenu, 0);
3723 prefs_common_encoding_set_data_from_optmenu(pparam);
3727 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
3730 GtkWidget *menuitem;
3732 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3733 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3734 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
3735 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3738 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
3740 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
3741 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3743 GtkWidget *menuitem;
3746 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
3749 gtk_option_menu_set_history(optmenu, index);
3751 gtk_option_menu_set_history(optmenu, 0);
3752 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
3755 menu = gtk_option_menu_get_menu(optmenu);
3756 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3757 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3760 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
3763 GtkWidget *menuitem;
3765 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3766 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3767 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
3768 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3771 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
3773 SendDialogMode mode = *((SendDialogMode *)pparam->data);
3774 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3776 GtkWidget *menuitem;
3779 case SEND_DIALOG_ALWAYS:
3780 gtk_option_menu_set_history(optmenu, 0);
3782 case SEND_DIALOG_NEVER:
3783 gtk_option_menu_set_history(optmenu, 1);
3789 menu = gtk_option_menu_get_menu(optmenu);
3790 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3791 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3794 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
3797 prefs_common_cancel();
3801 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
3804 if (event && event->keyval == GDK_Escape)
3805 prefs_common_cancel();
3808 static void prefs_common_ok(void)
3810 prefs_common_apply();
3811 gtk_widget_hide(dialog.window);
3816 static void prefs_common_apply(void)
3818 gchar *entry_pixmap_theme_str;
3819 gboolean update_pixmap_theme;
3820 gchar *backup_theme_path;
3821 MainWindow *mainwindow;
3823 entry_pixmap_theme_str = gtk_entry_get_text(GTK_ENTRY(interface.entry_pixmap_theme));
3824 if (entry_pixmap_theme_str &&
3825 (strcmp(prefs_common.pixmap_theme_path, entry_pixmap_theme_str) != 0) )
3826 update_pixmap_theme = TRUE;
3828 update_pixmap_theme = FALSE;
3830 /*!< FIXME: prefs_set_data_from_dialog() clears and frees all strings,
3831 * but prefs_common.pixmap_theme_path is stored in the StockPixmapData
3832 * in stock_pixmap.c::pixmaps[].icon_path, and used when reflecting
3833 * the pixmap changes. Work around by saving the old one and freeing
3835 backup_theme_path = prefs_common.pixmap_theme_path;
3836 prefs_common.pixmap_theme_path = g_strdup(backup_theme_path);
3837 prefs_set_data_from_dialog(param);
3838 sock_set_io_timeout(prefs_common.io_timeout_secs);
3840 if (update_pixmap_theme) {
3841 main_window_reflect_prefs_all_real(TRUE);
3842 compose_reflect_prefs_pixmap_theme();
3844 main_window_reflect_prefs_all_real(FALSE);
3846 /*!< FIXME: Now it's safe to delete the backup path */
3847 g_free(backup_theme_path);
3849 prefs_common_save_config();
3851 mainwindow = mainwindow_get_mainwindow();
3852 log_window_set_clipping(mainwindow->logwin, prefs_common.cliplog,
3853 prefs_common.loglength);
3855 inc_autocheck_timer_remove();
3856 inc_autocheck_timer_set();
3859 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
3862 GtkWidget *menuitem;
3864 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3865 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3866 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
3867 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3870 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
3872 NextUnreadMsgDialogShow dialog_show;
3873 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3875 GtkWidget *menuitem;
3877 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
3879 switch (dialog_show) {
3880 case NEXTUNREADMSGDIALOG_ALWAYS:
3881 gtk_option_menu_set_history(optmenu, 0);
3883 case NEXTUNREADMSGDIALOG_ASSUME_YES:
3884 gtk_option_menu_set_history(optmenu, 1);
3886 case NEXTUNREADMSGDIALOG_ASSUME_NO:
3887 gtk_option_menu_set_history(optmenu, 2);
3891 menu = gtk_option_menu_get_menu(optmenu);
3892 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3893 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3896 static void prefs_common_cancel(void)
3898 gtk_widget_hide(dialog.window);
3903 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
3906 GtkWidget *menuitem;
3908 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3909 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3910 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
3911 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3914 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
3916 RecvDialogShow dialog_show;
3917 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3919 GtkWidget *menuitem;
3921 dialog_show = *((RecvDialogShow *)pparam->data);
3923 switch (dialog_show) {
3924 case RECVDIALOG_ALWAYS:
3925 gtk_option_menu_set_history(optmenu, 0);
3927 case RECVDIALOG_WINDOW_ACTIVE:
3928 gtk_option_menu_set_history(optmenu, 1);
3930 case RECVDIALOG_NEVER:
3931 gtk_option_menu_set_history(optmenu, 2);
3936 menu = gtk_option_menu_get_menu(optmenu);
3937 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3938 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));