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"
55 #include "folderview.h"
56 #include "stock_pixmap.h"
57 #include "quote_fmt.h"
60 #include "gtkaspell.h"
63 PrefsCommon prefs_common;
65 static PrefsDialog dialog;
67 static struct Receive {
68 GtkWidget *checkbtn_incext;
69 GtkWidget *entry_incext;
70 GtkWidget *button_incext;
72 GtkWidget *checkbtn_local;
73 GtkWidget *checkbtn_filter_on_inc;
74 GtkWidget *entry_spool;
76 GtkWidget *checkbtn_autochk;
77 GtkWidget *spinbtn_autochk;
78 GtkObject *spinbtn_autochk_adj;
80 GtkWidget *checkbtn_chkonstartup;
81 GtkWidget *checkbtn_scan_after_inc;
84 GtkWidget *checkbtn_newmail_auto;
85 GtkWidget *checkbtn_newmail_manu;
86 GtkWidget *entry_newmail_notify_cmd;
87 GtkWidget *hbox_newmail_notify;
88 GtkWidget *optmenu_recvdialog;
89 GtkWidget *checkbtn_no_recv_err_panel;
90 GtkWidget *checkbtn_close_recv_dialog;
94 GtkWidget *checkbtn_extsend;
95 GtkWidget *entry_extsend;
96 GtkWidget *button_extsend;
98 GtkWidget *checkbtn_savemsg;
99 GtkWidget *checkbtn_queuemsg;
100 GtkWidget *optmenu_senddialog;
102 GtkWidget *optmenu_charset;
103 GtkWidget *optmenu_encoding_method;
106 static struct Compose {
107 GtkWidget *entry_fw_quotemark;
108 GtkWidget *text_fw_quotefmt;
110 GtkWidget *checkbtn_autoextedit;
111 GtkWidget *spinbtn_undolevel;
112 GtkObject *spinbtn_undolevel_adj;
113 GtkWidget *spinbtn_linewrap;
114 GtkObject *spinbtn_linewrap_adj;
115 GtkWidget *checkbtn_wrapquote;
116 GtkWidget *checkbtn_autowrap;
117 GtkWidget *checkbtn_wrapatsend;
119 GtkWidget *checkbtn_reply_account_autosel;
120 GtkWidget *checkbtn_forward_account_autosel;
121 GtkWidget *checkbtn_reedit_account_autosel;
122 GtkWidget *checkbtn_quote;
123 GtkWidget *checkbtn_default_reply_list;
124 GtkWidget *checkbtn_forward_as_attachment;
125 GtkWidget *checkbtn_redirect_keep_from;
126 GtkWidget *checkbtn_smart_wrapping;
127 GtkWidget *checkbtn_block_cursor;
128 GtkWidget *checkbtn_reply_with_quote;
130 GtkWidget *checkbtn_autosave;
131 GtkWidget *entry_autosave_length;
136 static struct Spelling {
137 GtkWidget *checkbtn_enable_aspell;
138 GtkWidget *entry_aspell_path;
139 GtkWidget *btn_aspell_path;
140 GtkWidget *optmenu_dictionary;
141 GtkWidget *optmenu_sugmode;
142 GtkWidget *misspelled_btn;
143 GtkWidget *checkbtn_use_alternate;
144 GtkWidget *checkbtn_check_while_typing;
148 static struct Quote {
149 GtkWidget *entry_quotemark;
150 GtkWidget *text_quotefmt;
152 GtkWidget *entry_fw_quotemark;
153 GtkWidget *text_fw_quotefmt;
155 GtkWidget *entry_quote_chars;
158 static struct Display {
159 GtkWidget *entry_textfont;
160 GtkWidget *button_textfont;
162 GtkWidget *entry_smallfont;
163 GtkWidget *entry_normalfont;
164 GtkWidget *entry_boldfont;
166 GtkWidget *chkbtn_folder_unread;
167 GtkWidget *entry_ng_abbrev_len;
168 GtkWidget *spinbtn_ng_abbrev_len;
169 GtkObject *spinbtn_ng_abbrev_len_adj;
171 GtkWidget *chkbtn_transhdr;
173 GtkWidget *chkbtn_swapfrom;
174 GtkWidget *chkbtn_useaddrbook;
175 GtkWidget *chkbtn_threadsubj;
176 GtkWidget *entry_datefmt;
179 static struct Message {
180 GtkWidget *chkbtn_enablecol;
181 GtkWidget *button_edit_col;
182 GtkWidget *chkbtn_mbalnum;
183 GtkWidget *chkbtn_disphdrpane;
184 GtkWidget *chkbtn_disphdr;
185 GtkWidget *spinbtn_linespc;
186 GtkObject *spinbtn_linespc_adj;
187 GtkWidget *chkbtn_headspc;
189 GtkWidget *chkbtn_smoothscroll;
190 GtkWidget *spinbtn_scrollstep;
191 GtkObject *spinbtn_scrollstep_adj;
192 GtkWidget *chkbtn_halfpage;
194 GtkWidget *chkbtn_attach_desc;
198 static struct Privacy {
199 GtkWidget *checkbtn_auto_check_signatures;
200 GtkWidget *checkbtn_gpg_signature_popup;
201 GtkWidget *checkbtn_store_passphrase;
202 GtkWidget *spinbtn_store_passphrase;
203 GtkObject *spinbtn_store_passphrase_adj;
204 GtkWidget *checkbtn_passphrase_grab;
205 GtkWidget *checkbtn_gpg_warning;
209 static struct Interface {
210 /* GtkWidget *checkbtn_emacs; */
211 GtkWidget *checkbtn_always_show_msg;
212 GtkWidget *checkbtn_openunread;
213 GtkWidget *checkbtn_mark_as_read_on_newwin;
214 GtkWidget *checkbtn_openinbox;
215 GtkWidget *checkbtn_immedexec;
216 GtkWidget *optmenu_nextunreadmsgdialog;
217 GtkWidget *entry_pixmap_theme;
218 GtkWidget *combo_pixmap_theme;
221 static struct Other {
222 GtkWidget *uri_combo;
223 GtkWidget *uri_entry;
224 GtkWidget *printcmd_entry;
225 GtkWidget *exteditor_combo;
226 GtkWidget *exteditor_entry;
227 GtkWidget *checkbtn_addaddrbyclick;
228 GtkWidget *checkbtn_confonexit;
229 GtkWidget *checkbtn_cleanonexit;
230 GtkWidget *checkbtn_askonclean;
231 GtkWidget *checkbtn_warnqueued;
232 GtkWidget *checkbtn_cliplog;
233 GtkWidget *loglength_entry;
236 GtkWidget *checkbtn_ssl_ask_unknown_valid;
242 static struct MessageColorButtons {
243 GtkWidget *quote_level1_btn;
244 GtkWidget *quote_level2_btn;
245 GtkWidget *quote_level3_btn;
247 GtkWidget *tgt_folder_btn;
248 GtkWidget *signature_btn;
251 static struct KeybindDialog {
256 static GtkWidget *font_sel_win;
257 static guint font_sel_conn_id;
258 static GtkWidget *quote_color_win;
259 static GtkWidget *color_dialog;
261 static void prefs_common_charset_set_data_from_optmenu (PrefParam *pparam);
262 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
263 static void prefs_common_encoding_set_data_from_optmenu (PrefParam *pparam);
264 static void prefs_common_encoding_set_optmenu (PrefParam *pparam);
265 static void prefs_common_recv_dialog_set_data_from_optmenu (PrefParam *pparam);
266 static void prefs_common_recv_dialog_set_optmenu (PrefParam *pparam);
267 static void prefs_common_recv_dialog_newmail_notify_toggle_cb (GtkWidget *w,
269 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
270 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
271 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam);
272 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam);
273 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
274 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
277 static void prefs_dictionary_set_data_from_optmenu (PrefParam *param);
278 static void prefs_dictionary_set_optmenu (PrefParam *pparam);
279 static void prefs_speller_sugmode_set_data_from_optmenu (PrefParam *pparam);
280 static void prefs_speller_sugmode_set_optmenu (PrefParam *pparam);
285 parameter name, default value, pointer to the prefs variable, data type,
286 pointer to the widget pointer,
287 pointer to the function for data setting,
288 pointer to the function for widget setting
291 static PrefParam param[] = {
293 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
294 &receive.checkbtn_incext,
295 prefs_set_data_from_toggle, prefs_set_toggle},
296 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
297 &receive.entry_incext,
298 prefs_set_data_from_entry, prefs_set_entry},
300 {"inc_local", "TRUE", &prefs_common.inc_local, P_BOOL,
301 &receive.checkbtn_local,
302 prefs_set_data_from_toggle, prefs_set_toggle},
303 {"filter_on_inc_local", "TRUE", &prefs_common.filter_on_inc, P_BOOL,
304 &receive.checkbtn_filter_on_inc,
305 prefs_set_data_from_toggle, prefs_set_toggle},
306 {"spool_path", DEFAULT_SPOOL_PATH, &prefs_common.spool_path, P_STRING,
307 &receive.entry_spool,
308 prefs_set_data_from_entry, prefs_set_entry},
310 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
311 &receive.checkbtn_autochk,
312 prefs_set_data_from_toggle, prefs_set_toggle},
313 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
314 &receive.spinbtn_autochk,
315 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
316 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
317 &receive.checkbtn_chkonstartup,
318 prefs_set_data_from_toggle, prefs_set_toggle},
319 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
320 P_BOOL, &receive.checkbtn_scan_after_inc,
321 prefs_set_data_from_toggle, prefs_set_toggle},
322 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
323 P_BOOL, &receive.checkbtn_newmail_manu,
324 prefs_set_data_from_toggle, prefs_set_toggle},
325 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
326 P_BOOL, &receive.checkbtn_newmail_auto,
327 prefs_set_data_from_toggle, prefs_set_toggle},
328 {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING,
329 &receive.entry_newmail_notify_cmd,
330 prefs_set_data_from_entry, prefs_set_entry},
331 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
332 &receive.optmenu_recvdialog,
333 prefs_common_recv_dialog_set_data_from_optmenu,
334 prefs_common_recv_dialog_set_optmenu},
335 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
336 P_BOOL, &receive.checkbtn_no_recv_err_panel,
337 prefs_set_data_from_toggle, prefs_set_toggle},
338 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
339 P_BOOL, &receive.checkbtn_close_recv_dialog,
340 prefs_set_data_from_toggle, prefs_set_toggle},
343 {"use_ext_sendmail", "FALSE", &prefs_common.use_extsend, P_BOOL,
344 &p_send.checkbtn_extsend,
345 prefs_set_data_from_toggle, prefs_set_toggle},
346 {"ext_sendmail_cmd", DEFAULT_SENDMAIL_CMD,
347 &prefs_common.extsend_cmd, P_STRING,
348 &p_send.entry_extsend, prefs_set_data_from_entry, prefs_set_entry},
349 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
350 &p_send.checkbtn_savemsg,
351 prefs_set_data_from_toggle, prefs_set_toggle},
352 {"queue_message", "FALSE", &prefs_common.queue_msg, P_BOOL,
353 &p_send.checkbtn_queuemsg,
354 prefs_set_data_from_toggle, prefs_set_toggle},
355 {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_ENUM,
356 &p_send.optmenu_senddialog,
357 prefs_common_send_dialog_set_data_from_optmenu,
358 prefs_common_send_dialog_set_optmenu},
360 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
361 &p_send.optmenu_charset,
362 prefs_common_charset_set_data_from_optmenu,
363 prefs_common_charset_set_optmenu},
364 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
365 &p_send.optmenu_encoding_method,
366 prefs_common_encoding_set_data_from_optmenu,
367 prefs_common_encoding_set_optmenu},
370 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
371 &compose.checkbtn_autoextedit,
372 prefs_set_data_from_toggle, prefs_set_toggle},
373 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
374 P_BOOL, &compose.checkbtn_forward_as_attachment,
375 prefs_set_data_from_toggle, prefs_set_toggle},
376 {"redirect_keep_from", "FALSE",
377 &prefs_common.redirect_keep_from, P_BOOL,
378 &compose.checkbtn_redirect_keep_from,
379 prefs_set_data_from_toggle, prefs_set_toggle},
380 {"undo_level", "50", &prefs_common.undolevels, P_INT,
381 &compose.spinbtn_undolevel,
382 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
383 {"block_cursor", "FALSE", &prefs_common.block_cursor,
384 P_BOOL, &compose.checkbtn_block_cursor,
385 prefs_set_data_from_toggle, prefs_set_toggle},
387 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
388 &compose.spinbtn_linewrap,
389 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
390 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
391 &compose.checkbtn_wrapquote,
392 prefs_set_data_from_toggle, prefs_set_toggle},
393 {"linewrap_auto", "FALSE", &prefs_common.autowrap, P_BOOL,
394 &compose.checkbtn_autowrap,
395 prefs_set_data_from_toggle, prefs_set_toggle},
396 {"linewrap_before_sending", "FALSE",
397 &prefs_common.linewrap_at_send, P_BOOL,
398 &compose.checkbtn_wrapatsend,
399 prefs_set_data_from_toggle, prefs_set_toggle},
400 {"smart_wrapping", "TRUE", &prefs_common.smart_wrapping,
401 P_BOOL, &compose.checkbtn_smart_wrapping,
402 prefs_set_data_from_toggle, prefs_set_toggle},
403 {"autosave", "FALSE", &prefs_common.autosave,
404 P_BOOL, &compose.checkbtn_autosave,
405 prefs_set_data_from_toggle, prefs_set_toggle},
406 {"autosave_length", "50", &prefs_common.autosave_length,
407 P_INT, &compose.entry_autosave_length,
408 prefs_set_data_from_entry, prefs_set_entry},
410 {"enable_aspell", "TRUE", &prefs_common.enable_aspell,
411 P_BOOL, &spelling.checkbtn_enable_aspell,
412 prefs_set_data_from_toggle, prefs_set_toggle},
413 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path,
414 P_STRING, &spelling.entry_aspell_path,
415 prefs_set_data_from_entry, prefs_set_entry},
416 {"dictionary", "", &prefs_common.dictionary,
417 P_STRING, &spelling.optmenu_dictionary,
418 prefs_dictionary_set_data_from_optmenu, prefs_dictionary_set_optmenu },
419 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode,
420 P_INT, &spelling.optmenu_sugmode,
421 prefs_speller_sugmode_set_data_from_optmenu, prefs_speller_sugmode_set_optmenu },
422 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate,
423 P_BOOL, &spelling.checkbtn_use_alternate,
424 prefs_set_data_from_toggle, prefs_set_toggle},
425 {"check_while_typing", "TRUE", &prefs_common.check_while_typing,
426 P_BOOL, &spelling.checkbtn_check_while_typing,
427 prefs_set_data_from_toggle, prefs_set_toggle},
428 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
431 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
432 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
434 /* Account autoselection */
435 {"reply_account_autoselect", "TRUE",
436 &prefs_common.reply_account_autosel, P_BOOL,
437 &compose.checkbtn_reply_account_autosel,
438 prefs_set_data_from_toggle, prefs_set_toggle},
439 {"forward_account_autoselect", "TRUE",
440 &prefs_common.forward_account_autosel, P_BOOL,
441 &compose.checkbtn_forward_account_autosel,
442 prefs_set_data_from_toggle, prefs_set_toggle},
443 {"reedit_account_autoselect", "TRUE",
444 &prefs_common.reedit_account_autosel, P_BOOL,
445 &compose.checkbtn_reedit_account_autosel,
446 prefs_set_data_from_toggle, prefs_set_toggle},
448 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
449 &compose.checkbtn_default_reply_list,
450 prefs_set_data_from_toggle, prefs_set_toggle},
452 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
456 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
457 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
458 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
459 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
460 prefs_set_data_from_text, prefs_set_text},
462 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
463 "e.entry_fw_quotemark,
464 prefs_set_data_from_entry, prefs_set_entry},
465 {"forward_quote_format",
466 "\\n\\nBegin forwarded message:\\n\\n"
467 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
468 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
469 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
470 prefs_set_data_from_text, prefs_set_text},
471 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
472 "e.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
475 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
477 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
478 &prefs_common.textfont, P_STRING,
479 &display.entry_textfont,
480 prefs_set_data_from_entry, prefs_set_entry},
481 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
482 &prefs_common.smallfont, P_STRING,
483 &display.entry_smallfont,
484 prefs_set_data_from_entry, prefs_set_entry},
485 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
486 &prefs_common.boldfont, P_STRING,
487 &display.entry_boldfont,
488 prefs_set_data_from_entry, prefs_set_entry},
489 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
490 &prefs_common.normalfont, P_STRING,
491 &display.entry_normalfont,
492 prefs_set_data_from_entry, prefs_set_entry},
495 {"display_folder_unread_num", "TRUE",
496 &prefs_common.display_folder_unread, P_BOOL,
497 &display.chkbtn_folder_unread,
498 prefs_set_data_from_toggle, prefs_set_toggle},
499 {"newsgroup_abbrev_len", "16",
500 &prefs_common.ng_abbrev_len, P_INT,
501 &display.spinbtn_ng_abbrev_len,
502 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
504 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
505 &display.chkbtn_transhdr,
506 prefs_set_data_from_toggle, prefs_set_toggle},
508 /* Display: Summary View */
509 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
510 &display.chkbtn_swapfrom,
511 prefs_set_data_from_toggle, prefs_set_toggle},
512 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
513 &display.chkbtn_useaddrbook,
514 prefs_set_data_from_toggle, prefs_set_toggle},
515 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
516 &display.chkbtn_threadsubj,
517 prefs_set_data_from_toggle, prefs_set_toggle},
518 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
519 P_STRING, &display.entry_datefmt,
520 prefs_set_data_from_entry, prefs_set_entry},
522 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
524 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
527 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
529 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
531 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
533 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
536 {"folderview_vscrollbar_policy", "0",
537 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
540 {"summary_col_show_mark", "TRUE",
541 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
542 {"summary_col_show_unread", "TRUE",
543 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
544 {"summary_col_show_mime", "TRUE",
545 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
546 {"summary_col_show_subject", "TRUE",
547 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
548 {"summary_col_show_from", "TRUE",
549 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
550 {"summary_col_show_date", "TRUE",
551 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
552 {"summary_col_show_size", "TRUE",
553 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
554 {"summary_col_show_number", "FALSE",
555 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
556 {"summary_col_show_score", "FALSE",
557 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
558 {"summary_col_show_locked", "FALSE",
559 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
561 {"summary_col_pos_mark", "0",
562 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
563 {"summary_col_pos_unread", "1",
564 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
565 {"summary_col_pos_mime", "2",
566 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
567 {"summary_col_pos_subject", "3",
568 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
569 {"summary_col_pos_from", "4",
570 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
571 {"summary_col_pos_date", "5",
572 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
573 {"summary_col_pos_size", "6",
574 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
575 {"summary_col_pos_number", "7",
576 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
577 {"summary_col_pos_score", "8",
578 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
579 {"summary_col_pos_locked", "9",
580 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
582 {"summary_col_size_mark", "10",
583 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
584 {"summary_col_size_unread", "13",
585 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
586 {"summary_col_size_mime", "10",
587 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
588 {"summary_col_size_subject", "200",
589 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
590 {"summary_col_size_from", "120",
591 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
592 {"summary_col_size_date", "118",
593 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
594 {"summary_col_size_size", "45",
595 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
596 {"summary_col_size_number", "40",
597 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
598 {"summary_col_size_score", "40",
599 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
600 {"summary_col_size_locked", "13",
601 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
604 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
606 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
608 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
610 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
612 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
614 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
617 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
619 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
622 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
624 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
626 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
628 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
630 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
632 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
634 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
636 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
638 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
640 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
642 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
644 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
646 {"compose_width", "600", &prefs_common.compose_width, P_INT,
648 {"compose_height", "560", &prefs_common.compose_height, P_INT,
652 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
653 &message.chkbtn_enablecol,
654 prefs_set_data_from_toggle, prefs_set_toggle},
656 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
658 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
660 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
662 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
664 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
666 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
668 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
669 P_BOOL, NULL, NULL, NULL},
671 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
672 &message.chkbtn_mbalnum,
673 prefs_set_data_from_toggle, prefs_set_toggle},
674 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
675 P_BOOL, &message.chkbtn_disphdrpane,
676 prefs_set_data_from_toggle, prefs_set_toggle},
677 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
678 &message.chkbtn_disphdr,
679 prefs_set_data_from_toggle, prefs_set_toggle},
680 {"line_space", "2", &prefs_common.line_space, P_INT,
681 &message.spinbtn_linespc,
682 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
683 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
684 &message.chkbtn_headspc,
685 prefs_set_data_from_toggle, prefs_set_toggle},
687 {"enable_smooth_scroll", "FALSE",
688 &prefs_common.enable_smooth_scroll, P_BOOL,
689 &message.chkbtn_smoothscroll,
690 prefs_set_data_from_toggle, prefs_set_toggle},
691 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
692 &message.spinbtn_scrollstep,
693 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
694 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
695 &message.chkbtn_halfpage,
696 prefs_set_data_from_toggle, prefs_set_toggle},
698 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
701 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
702 &message.chkbtn_attach_desc,
703 prefs_set_data_from_toggle, prefs_set_toggle},
706 {"mime_image_viewer", "display '%s'",
707 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
708 {"mime_audio_player", "play '%s'",
709 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
710 {"mime_open_command", "gedit '%s'",
711 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
715 {"auto_check_signatures", "TRUE",
716 &prefs_common.auto_check_signatures, P_BOOL,
717 &privacy.checkbtn_auto_check_signatures,
718 prefs_set_data_from_toggle, prefs_set_toggle},
719 {"gpg_signature_popup", "FALSE",
720 &prefs_common.gpg_signature_popup, P_BOOL,
721 &privacy.checkbtn_gpg_signature_popup,
722 prefs_set_data_from_toggle, prefs_set_toggle},
723 {"store_passphrase", "FALSE", &prefs_common.store_passphrase, P_BOOL,
724 &privacy.checkbtn_store_passphrase,
725 prefs_set_data_from_toggle, prefs_set_toggle},
726 {"store_passphrase_timeout", "0",
727 &prefs_common.store_passphrase_timeout, P_INT,
728 &privacy.spinbtn_store_passphrase,
729 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
731 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
732 &privacy.checkbtn_passphrase_grab,
733 prefs_set_data_from_toggle, prefs_set_toggle},
734 #endif /* __MINGW32__ */
735 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
736 &privacy.checkbtn_gpg_warning,
737 prefs_set_data_from_toggle, prefs_set_toggle},
738 #endif /* USE_GPGME */
741 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
743 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
746 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
747 NULL, NULL, NULL}, */
748 {"always_show_message_when_selected", "FALSE",
749 &prefs_common.always_show_msg,
750 P_BOOL, &interface.checkbtn_always_show_msg,
751 prefs_set_data_from_toggle, prefs_set_toggle},
752 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
753 P_BOOL, &interface.checkbtn_openunread,
754 prefs_set_data_from_toggle, prefs_set_toggle},
755 {"mark_as_read_on_new_window", "FALSE",
756 &prefs_common.mark_as_read_on_new_window,
757 P_BOOL, &interface.checkbtn_mark_as_read_on_newwin,
758 prefs_set_data_from_toggle, prefs_set_toggle},
759 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
760 P_BOOL, &interface.checkbtn_openinbox,
761 prefs_set_data_from_toggle, prefs_set_toggle},
762 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
763 &interface.checkbtn_immedexec,
764 prefs_set_data_from_toggle, prefs_set_toggle},
765 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
766 &interface.optmenu_nextunreadmsgdialog,
767 prefs_nextunreadmsgdialog_set_data_from_optmenu,
768 prefs_nextunreadmsgdialog_set_optmenu},
770 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
771 &prefs_common.pixmap_theme_path, P_STRING,
772 &interface.entry_pixmap_theme, prefs_set_data_from_entry, prefs_set_entry},
775 {"uri_open_command", DEFAULT_BROWSER_CMD,
776 &prefs_common.uri_cmd, P_STRING,
777 &other.uri_entry, prefs_set_data_from_entry, prefs_set_entry},
778 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
779 &other.printcmd_entry, prefs_set_data_from_entry, prefs_set_entry},
780 {"ext_editor_command", "gedit %s",
781 &prefs_common.ext_editor_cmd, P_STRING,
782 &other.exteditor_entry, prefs_set_data_from_entry, prefs_set_entry},
784 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
785 P_BOOL, &other.checkbtn_addaddrbyclick,
786 prefs_set_data_from_toggle, prefs_set_toggle},
788 {"confirm_on_exit", "TRUE", &prefs_common.confirm_on_exit, P_BOOL,
789 &other.checkbtn_confonexit,
790 prefs_set_data_from_toggle, prefs_set_toggle},
791 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
792 &other.checkbtn_cleanonexit,
793 prefs_set_data_from_toggle, prefs_set_toggle},
794 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
795 &other.checkbtn_askonclean,
796 prefs_set_data_from_toggle, prefs_set_toggle},
797 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
798 P_BOOL, &other.checkbtn_warnqueued,
799 prefs_set_data_from_toggle, prefs_set_toggle},
802 {"ssl_ask_unknown_valid", "TRUE", &prefs_common.ssl_ask_unknown_valid,
803 P_BOOL, &other.checkbtn_ssl_ask_unknown_valid,
804 prefs_set_data_from_toggle, prefs_set_toggle},
807 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
809 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
812 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
814 {"important_score", "1", &prefs_common.important_score, P_INT,
816 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
817 &other.checkbtn_cliplog,
818 prefs_set_data_from_toggle, prefs_set_toggle},
819 {"log_length", "500", &prefs_common.loglength, P_INT,
820 &other.loglength_entry,
821 prefs_set_data_from_entry, prefs_set_entry},
823 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
825 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
828 {"color_new", "179", &prefs_common.color_new, P_COLOR,
831 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
834 /* widget creating functions */
835 static void prefs_common_create (void);
836 static void prefs_receive_create (void);
837 static void prefs_send_create (void);
839 static void prefs_spelling_create (void);
841 static void prefs_compose_create (void);
842 static void prefs_quote_create (void);
843 static void prefs_display_create (void);
844 static void prefs_message_create (void);
846 static void prefs_privacy_create (void);
848 static void prefs_interface_create (void);
849 static void prefs_other_create (void);
851 static void date_format_ok_btn_clicked (GtkButton *button,
853 static void date_format_cancel_btn_clicked (GtkButton *button,
855 static void date_format_key_pressed (GtkWidget *keywidget,
858 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
861 static void date_format_entry_on_change (GtkEditable *editable,
863 static void date_format_select_row (GtkWidget *date_format_list,
866 GdkEventButton *event,
867 GtkWidget *date_format);
868 static GtkWidget *date_format_create (GtkButton *button,
871 static void prefs_quote_colors_dialog (void);
872 static void prefs_quote_colors_dialog_create (void);
873 static void prefs_quote_colors_key_pressed (GtkWidget *widget,
876 static void quote_color_set_dialog (GtkWidget *widget,
878 static void quote_colors_set_dialog_ok (GtkWidget *widget,
880 static void quote_colors_set_dialog_cancel (GtkWidget *widget,
882 static void quote_colors_set_dialog_key_pressed (GtkWidget *widget,
885 static void set_button_bg_color (GtkWidget *widget,
887 static void prefs_enable_message_color_toggled (void);
888 static void prefs_recycle_colors_toggled (GtkWidget *widget);
890 static void prefs_font_select (GtkButton *button, GtkEntry *entry);
892 static void prefs_font_selection_key_pressed (GtkWidget *widget,
895 static void prefs_font_selection_ok (GtkButton *button, GtkEntry *entry);
897 static void prefs_keybind_select (void);
898 static gint prefs_keybind_deleted (GtkWidget *widget,
901 static void prefs_keybind_key_pressed (GtkWidget *widget,
904 static void prefs_keybind_cancel (void);
905 static void prefs_keybind_apply_clicked (GtkWidget *widget);
907 static gint prefs_common_deleted (GtkWidget *widget,
910 static void prefs_common_key_pressed (GtkWidget *widget,
913 static void prefs_common_ok (void);
914 static void prefs_common_apply (void);
915 static void prefs_common_cancel (void);
917 void prefs_common_init(void)
919 prefs_common.disphdr_list = NULL;
922 PrefsCommon *prefs_common_get(void)
924 return &prefs_common;
927 void prefs_common_read_config(void)
931 gchar buf[PREFSBUFSIZE];
933 prefs_read_config(param, "Common", COMMON_RC);
935 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
937 if ((fp = fopen(path, "rb")) == NULL) {
938 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
943 while (fgets(buf, sizeof(buf), fp) != NULL) {
945 if (buf[0] == '\0') continue;
946 prefs_common.mime_open_cmd_history =
947 add_history(prefs_common.mime_open_cmd_history, buf);
951 prefs_common.mime_open_cmd_history =
952 g_list_reverse(prefs_common.mime_open_cmd_history);
955 void prefs_common_save_config(void)
961 prefs_save_config(param, "Common", COMMON_RC);
963 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
965 if ((fp = fopen(path, "wb")) == NULL) {
966 FILE_OP_ERROR(path, "fopen");
971 for (cur = prefs_common.mime_open_cmd_history;
972 cur != NULL; cur = cur->next) {
973 fputs((gchar *)cur->data, fp);
981 void prefs_common_open(void)
983 if (prefs_rc_is_readonly(COMMON_RC))
988 if (!dialog.window) {
989 prefs_common_create();
992 manage_window_set_transient(GTK_WINDOW(dialog.window));
993 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
994 gtk_widget_grab_focus(dialog.ok_btn);
996 prefs_set_dialog(param);
998 gtk_widget_show(dialog.window);
1001 static void prefs_common_create(void)
1005 debug_print("Creating common preferences window...\n");
1007 prefs_dialog_create(&dialog);
1008 gtk_window_set_title (GTK_WINDOW(dialog.window),
1009 _("Common Preferences"));
1010 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
1011 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
1012 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
1013 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
1014 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
1016 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
1017 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
1018 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
1019 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
1020 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
1021 GTK_SIGNAL_FUNC(prefs_common_cancel),
1022 GTK_OBJECT(dialog.window));
1024 /* create all widgets on notebook */
1025 prefs_receive_create();
1026 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
1027 prefs_send_create();
1028 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
1029 prefs_compose_create();
1030 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
1032 prefs_spelling_create();
1033 SET_NOTEBOOK_LABEL(dialog.notebook, _("Spell Checker"), page++);
1035 prefs_quote_create();
1036 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
1037 prefs_display_create();
1038 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
1039 prefs_message_create();
1040 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
1042 prefs_privacy_create();
1043 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
1045 prefs_interface_create();
1046 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
1047 prefs_other_create();
1048 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
1050 gtk_widget_show_all(dialog.window);
1053 static void prefs_receive_create(void)
1057 GtkWidget *frame_incext;
1058 GtkWidget *checkbtn_incext;
1060 GtkWidget *label_incext;
1061 GtkWidget *entry_incext;
1062 /* GtkWidget *button_incext; */
1064 GtkWidget *frame_spool;
1065 GtkWidget *checkbtn_local;
1066 GtkWidget *checkbtn_filter_on_inc;
1067 GtkWidget *label_spool;
1068 GtkWidget *entry_spool;
1070 GtkWidget *hbox_autochk;
1071 GtkWidget *checkbtn_autochk;
1072 GtkWidget *label_autochk1;
1073 GtkObject *spinbtn_autochk_adj;
1074 GtkWidget *spinbtn_autochk;
1075 GtkWidget *label_autochk2;
1076 GtkWidget *checkbtn_chkonstartup;
1077 GtkWidget *checkbtn_scan_after_inc;
1080 GtkWidget *frame_newmail;
1081 GtkWidget *hbox_newmail_notify;
1082 GtkWidget *checkbtn_newmail_auto;
1083 GtkWidget *checkbtn_newmail_manu;
1084 GtkWidget *entry_newmail_notify_cmd;
1085 GtkWidget *label_newmail_notify_cmd;
1087 GtkWidget *hbox_recvdialog;
1088 GtkWidget *label_recvdialog;
1090 GtkWidget *menuitem;
1091 GtkWidget *optmenu_recvdialog;
1092 GtkWidget *checkbtn_no_recv_err_panel;
1093 GtkWidget *checkbtn_close_recv_dialog;
1095 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1096 gtk_widget_show (vbox1);
1097 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1098 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1100 PACK_FRAME(vbox1, frame_incext, _("External program"));
1102 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1103 gtk_widget_show (vbox2);
1104 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1105 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1107 /* Use of external incorporation program */
1108 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1109 _("Use external program for incorporation"));
1111 hbox = gtk_hbox_new (FALSE, 8);
1112 gtk_widget_show (hbox);
1113 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1114 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1116 label_incext = gtk_label_new (_("Command"));
1117 gtk_widget_show (label_incext);
1118 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1120 entry_incext = gtk_entry_new ();
1121 gtk_widget_show (entry_incext);
1122 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1125 button_incext = gtk_button_new_with_label ("... ");
1126 gtk_widget_show (button_incext);
1127 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1130 PACK_FRAME(vbox1, frame_spool, _("Local spool"));
1132 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1133 gtk_widget_show (vbox2);
1134 gtk_container_add (GTK_CONTAINER (frame_spool), vbox2);
1135 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1137 hbox = gtk_hbox_new (FALSE, 32);
1138 gtk_widget_show (hbox);
1139 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1141 PACK_CHECK_BUTTON (hbox, checkbtn_local, _("Incorporate from spool"));
1142 PACK_CHECK_BUTTON (hbox, checkbtn_filter_on_inc,
1143 _("Filter on incorporation"));
1144 SET_TOGGLE_SENSITIVITY (checkbtn_local, checkbtn_filter_on_inc);
1146 hbox = gtk_hbox_new (FALSE, 8);
1147 gtk_widget_show (hbox);
1148 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1149 SET_TOGGLE_SENSITIVITY (checkbtn_local, hbox);
1151 label_spool = gtk_label_new (_("Spool directory"));
1152 gtk_widget_show (label_spool);
1153 gtk_box_pack_start (GTK_BOX (hbox), label_spool, FALSE, FALSE, 0);
1155 entry_spool = gtk_entry_new ();
1156 gtk_widget_show (entry_spool);
1157 gtk_box_pack_start (GTK_BOX (hbox), entry_spool, TRUE, TRUE, 0);
1159 vbox2 = gtk_vbox_new (FALSE, 0);
1160 gtk_widget_show (vbox2);
1161 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1164 hbox_autochk = gtk_hbox_new (FALSE, 8);
1165 gtk_widget_show (hbox_autochk);
1166 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1168 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1169 _("Auto-check new mail"));
1171 label_autochk1 = gtk_label_new (_("every"));
1172 gtk_widget_show (label_autochk1);
1173 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1175 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1176 spinbtn_autochk = gtk_spin_button_new
1177 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1178 gtk_widget_show (spinbtn_autochk);
1179 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1180 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1181 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1183 label_autochk2 = gtk_label_new (_("minute(s)"));
1184 gtk_widget_show (label_autochk2);
1185 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1187 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1188 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1189 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1191 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1192 _("Check new mail on startup"));
1193 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1194 _("Update all local folders after incorporation"));
1197 /* receive dialog */
1198 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1199 gtk_widget_show (hbox_recvdialog);
1200 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1202 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1203 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1204 gtk_widget_show (label_recvdialog);
1205 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1207 optmenu_recvdialog = gtk_option_menu_new ();
1208 gtk_widget_show (optmenu_recvdialog);
1209 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1211 menu = gtk_menu_new ();
1212 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1213 MENUITEM_ADD (menu, menuitem, _("Only if a window is active"),
1214 RECV_DIALOG_ACTIVE);
1215 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1217 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1219 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1220 _("Don't popup error dialog on receive error"));
1222 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1223 _("Close receive dialog when finished"));
1225 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1227 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1228 gtk_widget_show (vbox2);
1229 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1230 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1232 hbox = gtk_hbox_new (TRUE, 8);
1233 gtk_widget_show (hbox);
1234 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1235 _("after autochecking"));
1236 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1237 _("after manual checking"));
1238 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1239 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1240 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1242 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1243 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1246 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1247 gtk_widget_show (hbox);
1248 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1251 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1252 "(use %d as number of new "
1254 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1256 gtk_widget_show (label_newmail_notify_cmd);
1257 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1258 label_newmail_notify_cmd, FALSE, FALSE, 0);
1260 entry_newmail_notify_cmd = gtk_entry_new ();
1261 gtk_widget_show (entry_newmail_notify_cmd);
1262 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1263 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1265 gtk_widget_set_sensitive(hbox_newmail_notify,
1266 prefs_common.newmail_notify_auto ||
1267 prefs_common.newmail_notify_manu);
1269 receive.checkbtn_incext = checkbtn_incext;
1270 receive.entry_incext = entry_incext;
1271 /* receive.button_incext = button_incext; */
1273 receive.checkbtn_local = checkbtn_local;
1274 receive.checkbtn_filter_on_inc = checkbtn_filter_on_inc;
1275 receive.entry_spool = entry_spool;
1277 receive.checkbtn_autochk = checkbtn_autochk;
1278 receive.spinbtn_autochk = spinbtn_autochk;
1279 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1281 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1282 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1285 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1286 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1287 receive.hbox_newmail_notify = hbox_newmail_notify;
1288 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1289 receive.optmenu_recvdialog = optmenu_recvdialog;
1290 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1291 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1294 static void prefs_send_create(void)
1298 GtkWidget *frame_extsend;
1299 GtkWidget *vbox_extsend;
1300 GtkWidget *checkbtn_extsend;
1302 GtkWidget *label_extsend;
1303 GtkWidget *entry_extsend;
1304 /* GtkWidget *button_extsend; */
1305 GtkWidget *checkbtn_savemsg;
1306 GtkWidget *checkbtn_queuemsg;
1307 GtkWidget *label_outcharset;
1308 GtkWidget *optmenu_charset;
1309 GtkWidget *optmenu_menu;
1310 GtkWidget *menuitem;
1311 GtkWidget *label_charset_desc;
1312 GtkWidget *optmenu_encoding;
1313 GtkWidget *label_encoding;
1314 GtkWidget *label_encoding_desc;
1315 GtkWidget *label_senddialog;
1317 GtkWidget *optmenu_senddialog;
1318 GtkWidget *hbox_senddialog;
1320 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1321 gtk_widget_show (vbox1);
1322 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1323 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1325 PACK_FRAME(vbox1, frame_extsend, _("External program"));
1327 vbox_extsend = gtk_vbox_new (FALSE, VSPACING_NARROW);
1328 gtk_widget_show (vbox_extsend);
1329 gtk_container_add (GTK_CONTAINER (frame_extsend), vbox_extsend);
1330 gtk_container_set_border_width (GTK_CONTAINER (vbox_extsend), 8);
1332 PACK_CHECK_BUTTON (vbox_extsend, checkbtn_extsend,
1333 _("Use external program for sending"));
1335 hbox1 = gtk_hbox_new (FALSE, 8);
1336 gtk_widget_show (hbox1);
1337 gtk_box_pack_start (GTK_BOX (vbox_extsend), hbox1, FALSE, FALSE, 0);
1338 SET_TOGGLE_SENSITIVITY(checkbtn_extsend, hbox1);
1340 label_extsend = gtk_label_new (_("Command"));
1341 gtk_widget_show (label_extsend);
1342 gtk_box_pack_start (GTK_BOX (hbox1), label_extsend, FALSE, FALSE, 0);
1344 entry_extsend = gtk_entry_new ();
1345 gtk_widget_show (entry_extsend);
1346 gtk_box_pack_start (GTK_BOX (hbox1), entry_extsend, TRUE, TRUE, 0);
1349 button_extsend = gtk_button_new_with_label ("... ");
1350 gtk_widget_show (button_extsend);
1351 gtk_box_pack_start (GTK_BOX (hbox1), button_extsend, FALSE, FALSE, 0);
1354 vbox2 = gtk_vbox_new (FALSE, 0);
1355 gtk_widget_show (vbox2);
1356 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1358 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1359 _("Save sent messages to Sent folder"));
1360 PACK_CHECK_BUTTON (vbox2, checkbtn_queuemsg,
1361 _("Queue messages that fail to send"));
1363 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1364 gtk_widget_show (hbox1);
1365 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1367 label_senddialog = gtk_label_new (_("Show send dialog"));
1368 gtk_widget_show (label_senddialog);
1369 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1371 optmenu_senddialog = gtk_option_menu_new ();
1372 gtk_widget_show (optmenu_senddialog);
1373 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1375 menu = gtk_menu_new ();
1376 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1377 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1379 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1381 hbox1 = gtk_hbox_new (FALSE, 8);
1382 gtk_widget_show (hbox1);
1383 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1385 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1386 gtk_widget_show (label_outcharset);
1387 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1389 optmenu_charset = gtk_option_menu_new ();
1390 gtk_widget_show (optmenu_charset);
1391 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1393 optmenu_menu = gtk_menu_new ();
1395 #define SET_MENUITEM(str, data) \
1397 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1400 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1401 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1403 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1405 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1406 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1407 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1408 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1409 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1410 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1411 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1413 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1415 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1417 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1418 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1420 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1422 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1423 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1425 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1426 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1428 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1429 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1431 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1432 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1433 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1435 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1438 hbox1 = gtk_hbox_new (FALSE, 8);
1439 gtk_widget_show (hbox1);
1440 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1442 label_charset_desc = gtk_label_new
1443 (_("If `Automatic' is selected, the optimal encoding\n"
1444 "for the current locale will be used."));
1445 gtk_widget_show (label_charset_desc);
1446 gtk_box_pack_start (GTK_BOX (hbox1), label_charset_desc,
1448 gtk_label_set_justify (GTK_LABEL (label_charset_desc),
1451 hbox1 = gtk_hbox_new (FALSE, 8);
1452 gtk_widget_show (hbox1);
1453 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1455 label_encoding = gtk_label_new (_("Transfer encoding"));
1456 gtk_widget_show (label_encoding);
1457 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1459 optmenu_encoding = gtk_option_menu_new ();
1460 gtk_widget_show (optmenu_encoding);
1461 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1463 optmenu_menu = gtk_menu_new ();
1465 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1466 SET_MENUITEM("base64", CTE_BASE64);
1467 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1468 SET_MENUITEM("8bit", CTE_8BIT);
1470 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1473 hbox1 = gtk_hbox_new (FALSE, 8);
1474 gtk_widget_show (hbox1);
1475 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1477 label_encoding_desc = gtk_label_new
1478 (_("Specify Content-Transfer-Encoding used when\n"
1479 "message body contains non-ASCII characters."));
1480 gtk_widget_show (label_encoding_desc);
1481 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding_desc,
1483 gtk_label_set_justify (GTK_LABEL (label_encoding_desc),
1486 p_send.checkbtn_extsend = checkbtn_extsend;
1487 p_send.entry_extsend = entry_extsend;
1488 /* p_send.button_extsend = button_extsend; */
1490 p_send.checkbtn_savemsg = checkbtn_savemsg;
1491 p_send.checkbtn_queuemsg = checkbtn_queuemsg;
1492 p_send.optmenu_senddialog = optmenu_senddialog;
1494 p_send.optmenu_charset = optmenu_charset;
1495 p_send.optmenu_encoding_method = optmenu_encoding;
1498 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1502 toggled = gtk_toggle_button_get_active
1503 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1504 gtk_toggle_button_get_active
1505 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1506 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1510 static void prefs_dictionary_set_data_from_optmenu(PrefParam *param)
1513 gchar *dict_fullname;
1515 g_return_if_fail(param);
1516 g_return_if_fail(param->data);
1517 g_return_if_fail(param->widget);
1518 g_return_if_fail(*(param->widget));
1520 dict_fullname = gtkaspell_get_dictionary_menu_active_item
1521 (gtk_option_menu_get_menu(GTK_OPTION_MENU(*(param->widget))));
1522 str = *((gchar **) param->data);
1525 *((gchar **) param->data) = dict_fullname;
1528 static void prefs_dictionary_set_optmenu(PrefParam *pparam)
1531 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1533 GtkWidget *menuitem;
1537 g_return_if_fail(optmenu != NULL);
1538 g_return_if_fail(pparam->data != NULL);
1540 if (*(gchar **) pparam->data) {
1541 menu = gtk_option_menu_get_menu(optmenu);
1542 for (cur = GTK_MENU_SHELL(menu)->children;
1543 cur != NULL; cur = cur->next) {
1544 menuitem = GTK_WIDGET(cur->data);
1545 dict_name = gtk_object_get_data(GTK_OBJECT(menuitem),
1547 if (!strcmp2(dict_name, *((gchar **)pparam->data))) {
1548 gtk_option_menu_set_history(optmenu, n);
1555 gtk_option_menu_set_history(optmenu, 0);
1556 prefs_dictionary_set_data_from_optmenu(pparam);
1559 static void prefs_speller_sugmode_set_data_from_optmenu(PrefParam *param)
1562 g_return_if_fail(param);
1563 g_return_if_fail(param->data);
1564 g_return_if_fail(param->widget);
1565 g_return_if_fail(*(param->widget));
1567 sugmode = gtkaspell_get_sugmode_from_option_menu
1568 (GTK_OPTION_MENU(*(param->widget)));
1569 *((gint *) param->data) = sugmode;
1572 static void prefs_speller_sugmode_set_optmenu(PrefParam *pparam)
1574 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1577 g_return_if_fail(optmenu != NULL);
1578 g_return_if_fail(pparam->data != NULL);
1580 sugmode = *(gint *) pparam->data;
1581 gtkaspell_sugmode_option_menu_set(optmenu, sugmode);
1585 static void prefs_spelling_checkbtn_enable_aspell_toggle_cb
1591 toggled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1593 gtk_widget_set_sensitive(spelling.entry_aspell_path, toggled);
1594 gtk_widget_set_sensitive(spelling.optmenu_dictionary, toggled);
1595 gtk_widget_set_sensitive(spelling.optmenu_sugmode, toggled);
1596 gtk_widget_set_sensitive(spelling.btn_aspell_path, toggled);
1597 gtk_widget_set_sensitive(spelling.misspelled_btn, toggled);
1598 gtk_widget_set_sensitive(spelling.checkbtn_use_alternate, toggled);
1599 gtk_widget_set_sensitive(spelling.checkbtn_check_while_typing, toggled);
1602 static void prefs_spelling_btn_aspell_path_clicked_cb(GtkWidget *widget,
1605 gchar *file_path, *tmp;
1606 GtkWidget *new_menu;
1608 file_path = filesel_select_file(_("Select dictionaries location"),
1609 prefs_common.aspell_path);
1610 if (file_path == NULL) {
1614 tmp=g_dirname(file_path);
1616 if (prefs_common.aspell_path)
1617 g_free(prefs_common.aspell_path);
1618 prefs_common.aspell_path = g_strdup_printf("%s%s",tmp,
1621 new_menu = gtkaspell_dictionary_option_menu_new(prefs_common.aspell_path);
1622 gtk_option_menu_set_menu(GTK_OPTION_MENU(spelling.optmenu_dictionary),
1625 gtk_entry_set_text(GTK_ENTRY(spelling.entry_aspell_path),
1626 prefs_common.aspell_path);
1627 /* select first one */
1628 gtk_option_menu_set_history(GTK_OPTION_MENU(
1629 spelling.optmenu_dictionary), 0);
1631 if (prefs_common.dictionary)
1632 g_free(prefs_common.dictionary);
1634 prefs_common.dictionary =
1635 gtkaspell_get_dictionary_menu_active_item(
1636 gtk_option_menu_get_menu(
1638 spelling.optmenu_dictionary)));
1644 static void prefs_spelling_create()
1647 GtkWidget *frame_spell;
1648 GtkWidget *vbox_spell;
1649 GtkWidget *hbox_aspell_path;
1650 GtkWidget *checkbtn_enable_aspell;
1651 GtkWidget *label_aspell_path;
1652 GtkWidget *entry_aspell_path;
1653 GtkWidget *btn_aspell_path;
1654 GtkWidget *spell_table;
1655 GtkWidget *label_dictionary;
1656 GtkWidget *optmenu_dictionary;
1657 GtkWidget *sugmode_label;
1658 GtkWidget *sugmode_optmenu;
1659 GtkWidget *checkbtn_use_alternate;
1660 GtkWidget *help_label;
1661 GtkWidget *checkbtn_check_while_typing;
1662 GtkWidget *color_label;
1663 GtkWidget *col_align;
1665 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1666 gtk_widget_show (vbox1);
1667 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1668 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1670 /* spell checker defaults */
1671 PACK_FRAME(vbox1, frame_spell, _("Global spelling checker settings"));
1672 vbox_spell = gtk_vbox_new(FALSE, VSPACING_NARROW);
1673 gtk_widget_show (vbox_spell);
1674 gtk_container_add(GTK_CONTAINER(frame_spell), vbox_spell);
1675 gtk_container_set_border_width(GTK_CONTAINER(vbox_spell), 8);
1677 PACK_CHECK_BUTTON(vbox_spell, checkbtn_enable_aspell,
1678 _("Enable spell checker"));
1680 gtk_signal_connect(GTK_OBJECT(checkbtn_enable_aspell), "toggled",
1681 GTK_SIGNAL_FUNC(prefs_spelling_checkbtn_enable_aspell_toggle_cb),
1684 /* Check while typing */
1685 PACK_CHECK_BUTTON(vbox_spell, checkbtn_check_while_typing,
1686 _("Check while typing"));
1688 PACK_CHECK_BUTTON(vbox_spell, checkbtn_use_alternate,
1689 _("Enable alternate dictionary"));
1691 help_label = gtk_label_new(_("Enabling an alternate dictionary makes switching\n"
1692 "with the last used dictionary faster."));
1693 gtk_misc_set_alignment (GTK_MISC (help_label), 0, 0);
1694 gtk_widget_show(help_label);
1695 gtk_box_pack_start(GTK_BOX(vbox_spell), help_label, FALSE, TRUE, 0);
1697 spell_table = gtk_table_new(4, 3, FALSE);
1698 gtk_container_set_border_width (GTK_CONTAINER (spell_table), VSPACING);
1699 gtk_table_set_row_spacings(GTK_TABLE(spell_table), 8);
1700 gtk_table_set_col_spacings(GTK_TABLE(spell_table), 8);
1702 gtk_box_pack_start(GTK_BOX(vbox_spell), spell_table, TRUE, TRUE, 0);
1704 label_aspell_path = gtk_label_new (_("Dictionaries path:"));
1705 gtk_misc_set_alignment(GTK_MISC(label_aspell_path), 1.0, 0.5);
1706 gtk_widget_show(label_aspell_path);
1707 gtk_table_attach (GTK_TABLE (spell_table), label_aspell_path, 0, 1, 0,
1708 1, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1710 hbox_aspell_path = gtk_hbox_new (FALSE, 8);
1711 gtk_table_attach (GTK_TABLE (spell_table), hbox_aspell_path, 1, 2, 0,
1712 1, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1713 gtk_widget_show(hbox_aspell_path);
1715 entry_aspell_path = gtk_entry_new();
1716 gtk_widget_show(entry_aspell_path);
1717 gtk_box_pack_start(GTK_BOX(hbox_aspell_path), entry_aspell_path, TRUE,
1720 gtk_widget_set_sensitive(entry_aspell_path, prefs_common.enable_aspell);
1722 btn_aspell_path = gtk_button_new_with_label(" ... ");
1723 gtk_widget_show(btn_aspell_path);
1724 gtk_box_pack_start(GTK_BOX(hbox_aspell_path), btn_aspell_path, FALSE, FALSE, 0);
1725 gtk_widget_set_sensitive(btn_aspell_path, prefs_common.enable_aspell);
1727 gtk_signal_connect(GTK_OBJECT(btn_aspell_path), "clicked",
1728 GTK_SIGNAL_FUNC(prefs_spelling_btn_aspell_path_clicked_cb),
1731 label_dictionary = gtk_label_new(_("Default dictionary:"));
1732 gtk_misc_set_alignment(GTK_MISC(label_dictionary), 1.0, 0.5);
1733 gtk_widget_show(label_dictionary);
1734 gtk_table_attach (GTK_TABLE (spell_table), label_dictionary, 0, 1, 1, 2,
1735 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1737 optmenu_dictionary = gtk_option_menu_new();
1738 gtk_widget_show(optmenu_dictionary);
1739 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu_dictionary),
1740 gtkaspell_dictionary_option_menu_new(
1741 prefs_common.aspell_path));
1742 gtk_table_attach (GTK_TABLE (spell_table), optmenu_dictionary, 1, 2, 1,
1743 2, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1744 gtk_widget_set_sensitive(optmenu_dictionary, prefs_common.enable_aspell);
1746 /* Suggestion mode */
1747 sugmode_label = gtk_label_new(_("Default suggestion mode"));
1748 gtk_misc_set_alignment(GTK_MISC(sugmode_label), 1.0, 0.5);
1749 gtk_widget_show(sugmode_label);
1750 gtk_table_attach(GTK_TABLE (spell_table), sugmode_label, 0, 1, 2, 3,
1751 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1753 sugmode_optmenu = gtk_option_menu_new();
1754 gtk_widget_show(sugmode_optmenu);
1755 gtk_option_menu_set_menu(GTK_OPTION_MENU(sugmode_optmenu),
1756 gtkaspell_sugmode_option_menu_new(prefs_common.aspell_sugmode));
1757 gtk_table_attach(GTK_TABLE(spell_table), sugmode_optmenu, 1, 2, 2, 3,
1758 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1759 gtk_widget_set_sensitive(sugmode_optmenu, prefs_common.enable_aspell);
1762 color_label = gtk_label_new(_("Misspelled word color:"));
1763 gtk_misc_set_alignment(GTK_MISC(color_label), 1.0, 0.5);
1764 gtk_table_attach (GTK_TABLE (spell_table), color_label, 0, 1, 3, 4,
1765 GTK_FILL, GTK_SHRINK, 0, 0);
1766 gtk_widget_show(color_label);
1768 col_align = gtk_alignment_new(0.0, 0.5, 0, 0);
1769 gtk_widget_show(col_align);
1770 gtk_table_attach (GTK_TABLE (spell_table), col_align, 1, 2, 3, 4,
1771 GTK_FILL, GTK_SHRINK, 0, 0);
1773 spelling.misspelled_btn = gtk_button_new_with_label ("");
1774 set_button_bg_color(spelling.misspelled_btn,
1775 prefs_common.misspelled_col);
1776 gtk_widget_set_usize (spelling.misspelled_btn, 30, 20);
1777 gtk_widget_set_sensitive(spelling.misspelled_btn, prefs_common.enable_aspell);
1778 gtk_signal_connect (GTK_OBJECT (spelling.misspelled_btn), "clicked",
1779 GTK_SIGNAL_FUNC(quote_color_set_dialog), "Misspelled word");
1780 gtk_container_add(GTK_CONTAINER(col_align), spelling.misspelled_btn);
1783 spelling.checkbtn_enable_aspell = checkbtn_enable_aspell;
1784 spelling.entry_aspell_path = entry_aspell_path;
1785 spelling.btn_aspell_path = btn_aspell_path;
1786 spelling.optmenu_dictionary = optmenu_dictionary;
1787 spelling.optmenu_sugmode = sugmode_optmenu;
1788 spelling.checkbtn_use_alternate = checkbtn_use_alternate;
1789 spelling.checkbtn_check_while_typing = checkbtn_check_while_typing;
1795 static void prefs_compose_create(void)
1800 GtkWidget *checkbtn_autoextedit;
1802 GtkWidget *frame_autosel;
1803 GtkWidget *hbox_autosel;
1804 GtkWidget *checkbtn_reply_account_autosel;
1805 GtkWidget *checkbtn_forward_account_autosel;
1806 GtkWidget *checkbtn_reedit_account_autosel;
1808 GtkWidget *hbox_undolevel;
1809 GtkWidget *label_undolevel;
1810 GtkObject *spinbtn_undolevel_adj;
1811 GtkWidget *spinbtn_undolevel;
1813 GtkWidget *vbox_linewrap;
1818 GtkWidget *label_linewrap;
1819 GtkObject *spinbtn_linewrap_adj;
1820 GtkWidget *spinbtn_linewrap;
1821 GtkWidget *checkbtn_wrapquote;
1822 GtkWidget *checkbtn_autowrap;
1823 GtkWidget *checkbtn_wrapatsend;
1825 GtkWidget *checkbtn_default_reply_list;
1827 GtkWidget *checkbtn_forward_as_attachment;
1828 GtkWidget *checkbtn_redirect_keep_from;
1829 GtkWidget *checkbtn_smart_wrapping;
1830 GtkWidget *checkbtn_block_cursor;
1831 GtkWidget *frame_msgwrap;
1833 GtkWidget *hbox_autosave;
1834 GtkWidget *checkbtn_autosave;
1835 GtkWidget *entry_autosave_length;
1836 GtkWidget *label_autosave_length;
1838 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1839 gtk_widget_show (vbox1);
1840 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1841 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1843 /* Account autoselection */
1844 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1846 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1847 gtk_widget_show (hbox_autosel);
1848 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1849 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1851 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1852 _("when replying"));
1853 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1854 _("when forwarding"));
1855 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1856 _("when re-editing"));
1858 vbox2 = gtk_vbox_new (FALSE, 0);
1859 gtk_widget_show (vbox2);
1860 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1862 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1863 _("Reply button invokes mailing list reply"));
1865 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1866 _("Automatically launch the external editor"));
1868 hbox5 = gtk_hbox_new (FALSE, 8);
1869 gtk_widget_show (hbox5);
1870 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1872 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1873 _("Forward as attachment"));
1875 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1878 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1879 _("Keep the original 'From' header when redirecting"));
1882 hbox_autosave = gtk_hbox_new (FALSE, 8);
1883 gtk_widget_show (hbox_autosave);
1884 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1886 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1887 _("Autosave to Drafts folder every "));
1889 entry_autosave_length = gtk_entry_new();
1890 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1891 gtk_widget_show (entry_autosave_length);
1892 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1894 label_autosave_length = gtk_label_new(_("characters"));
1895 gtk_widget_show (label_autosave_length);
1896 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1898 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1899 gtk_widget_show (hbox_undolevel);
1900 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1902 label_undolevel = gtk_label_new (_("Undo level"));
1903 gtk_widget_show (label_undolevel);
1904 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1906 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1907 spinbtn_undolevel = gtk_spin_button_new
1908 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1909 gtk_widget_show (spinbtn_undolevel);
1910 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1911 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1912 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1915 PACK_FRAME(vbox1, frame_msgwrap, _("Message wrapping"));
1917 vbox_linewrap = gtk_vbox_new (FALSE, VSPACING_NARROW);
1918 gtk_widget_show (vbox_linewrap);
1919 gtk_container_add (GTK_CONTAINER (frame_msgwrap), vbox_linewrap);
1920 gtk_container_set_border_width (GTK_CONTAINER (vbox_linewrap), 8);
1922 hbox3 = gtk_hbox_new (FALSE, 8);
1923 gtk_widget_show (hbox3);
1924 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox3, FALSE, FALSE, 0);
1927 label_linewrap = gtk_label_new (_("Wrap messages at"));
1928 gtk_widget_show (label_linewrap);
1929 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1931 spinbtn_linewrap_adj = gtk_adjustment_new (72, 20, 1024, 1, 10, 10);
1932 spinbtn_linewrap = gtk_spin_button_new
1933 (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
1934 gtk_widget_show (spinbtn_linewrap);
1935 gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
1936 gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
1937 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
1939 label_linewrap = gtk_label_new (_("characters"));
1940 gtk_widget_show (label_linewrap);
1941 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1943 hbox4 = gtk_hbox_new (FALSE, VSPACING);
1944 gtk_widget_show (hbox4);
1945 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox4, FALSE, FALSE, 0);
1947 PACK_CHECK_BUTTON (hbox4, checkbtn_wrapquote, _("Wrap quotation"));
1949 PACK_CHECK_BUTTON (hbox4, checkbtn_autowrap, _("Wrap on input"));
1952 (hbox4, checkbtn_wrapatsend, _("Wrap before sending"));
1954 PACK_CHECK_BUTTON (vbox_linewrap, checkbtn_smart_wrapping,
1955 _("Smart wrapping (EXPERIMENTAL)"));
1958 compose.checkbtn_quote = checkbtn_quote;
1959 compose.entry_quotemark = entry_quotemark;
1960 compose.text_quotefmt = text_quotefmt;
1963 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1965 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1966 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1967 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1969 compose.spinbtn_undolevel = spinbtn_undolevel;
1970 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1972 compose.spinbtn_linewrap = spinbtn_linewrap;
1973 compose.spinbtn_linewrap_adj = spinbtn_linewrap_adj;
1974 compose.checkbtn_wrapquote = checkbtn_wrapquote;
1975 compose.checkbtn_autowrap = checkbtn_autowrap;
1976 compose.checkbtn_wrapatsend = checkbtn_wrapatsend;
1978 compose.checkbtn_autosave = checkbtn_autosave;
1979 compose.entry_autosave_length = entry_autosave_length;
1981 compose.checkbtn_forward_as_attachment =
1982 checkbtn_forward_as_attachment;
1983 compose.checkbtn_redirect_keep_from =
1984 checkbtn_redirect_keep_from;
1985 compose.checkbtn_smart_wrapping =
1986 checkbtn_smart_wrapping;
1987 compose.checkbtn_block_cursor =
1988 checkbtn_block_cursor;
1989 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1992 static void prefs_quote_create(void)
1995 GtkWidget *frame_quote;
1996 GtkWidget *vbox_quote;
1999 GtkWidget *label_quotemark;
2000 GtkWidget *entry_quotemark;
2001 GtkWidget *scrolledwin_quotefmt;
2002 GtkWidget *text_quotefmt;
2004 GtkWidget *entry_fw_quotemark;
2005 GtkWidget *text_fw_quotefmt;
2007 GtkWidget *entry_quote_chars;
2008 GtkWidget *label_quote_chars;
2010 GtkWidget *btn_quotedesc;
2012 GtkWidget *checkbtn_reply_with_quote;
2014 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2015 gtk_widget_show (vbox1);
2016 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2017 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2021 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
2023 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
2025 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
2026 gtk_widget_show (vbox_quote);
2027 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
2028 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
2030 hbox1 = gtk_hbox_new (FALSE, 32);
2031 gtk_widget_show (hbox1);
2032 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
2034 hbox2 = gtk_hbox_new (FALSE, 8);
2035 gtk_widget_show (hbox2);
2036 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
2038 label_quotemark = gtk_label_new (_("Quotation mark"));
2039 gtk_widget_show (label_quotemark);
2040 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
2042 entry_quotemark = gtk_entry_new ();
2043 gtk_widget_show (entry_quotemark);
2044 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
2045 gtk_widget_set_usize (entry_quotemark, 64, -1);
2047 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
2048 gtk_widget_show (scrolledwin_quotefmt);
2049 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
2050 gtk_scrolled_window_set_policy
2051 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
2052 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
2054 text_quotefmt = gtk_text_new (NULL, NULL);
2055 gtk_widget_show (text_quotefmt);
2056 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
2057 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
2058 gtk_widget_set_usize(text_quotefmt, -1, 60);
2062 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
2064 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
2065 gtk_widget_show (vbox_quote);
2066 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
2067 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
2069 hbox1 = gtk_hbox_new (FALSE, 32);
2070 gtk_widget_show (hbox1);
2071 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
2073 hbox2 = gtk_hbox_new (FALSE, 8);
2074 gtk_widget_show (hbox2);
2075 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
2077 label_quotemark = gtk_label_new (_("Quotation mark"));
2078 gtk_widget_show (label_quotemark);
2079 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
2081 entry_fw_quotemark = gtk_entry_new ();
2082 gtk_widget_show (entry_fw_quotemark);
2083 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
2085 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
2087 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
2088 gtk_widget_show (scrolledwin_quotefmt);
2089 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
2090 gtk_scrolled_window_set_policy
2091 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
2092 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
2094 text_fw_quotefmt = gtk_text_new (NULL, NULL);
2095 gtk_widget_show (text_fw_quotefmt);
2096 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
2098 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
2099 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
2101 hbox1 = gtk_hbox_new (FALSE, 32);
2102 gtk_widget_show (hbox1);
2103 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2106 gtk_button_new_with_label (_(" Description of symbols "));
2107 gtk_widget_show (btn_quotedesc);
2108 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
2109 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
2110 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
2114 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
2116 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
2117 gtk_widget_show (vbox_quote);
2118 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
2119 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
2121 hbox1 = gtk_hbox_new (FALSE, 32);
2122 gtk_widget_show (hbox1);
2123 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
2125 hbox2 = gtk_hbox_new (FALSE, 8);
2126 gtk_widget_show (hbox2);
2127 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
2129 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
2130 gtk_widget_show (label_quote_chars);
2131 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
2133 entry_quote_chars = gtk_entry_new ();
2134 gtk_widget_show (entry_quote_chars);
2135 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
2137 gtk_widget_set_usize (entry_quote_chars, 64, -1);
2140 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
2141 quote.entry_quotemark = entry_quotemark;
2142 quote.text_quotefmt = text_quotefmt;
2143 quote.entry_fw_quotemark = entry_fw_quotemark;
2144 quote.text_fw_quotefmt = text_fw_quotefmt;
2145 quote.entry_quote_chars = entry_quote_chars;
2148 static void prefs_display_create(void)
2151 GtkWidget *frame_font;
2153 GtkWidget *label_textfont;
2154 GtkWidget *entry_textfont;
2155 GtkWidget *button_textfont;
2156 GtkWidget *chkbtn_transhdr;
2157 GtkWidget *chkbtn_folder_unread;
2159 GtkWidget *label_ng_abbrev;
2160 GtkWidget *spinbtn_ng_abbrev_len;
2161 GtkObject *spinbtn_ng_abbrev_len_adj;
2162 GtkWidget *frame_summary;
2164 GtkWidget *chkbtn_swapfrom;
2165 GtkWidget *chkbtn_useaddrbook;
2166 GtkWidget *chkbtn_threadsubj;
2168 GtkWidget *label_datefmt;
2169 GtkWidget *button_datefmt;
2170 GtkWidget *entry_datefmt;
2171 GtkWidget *button_dispitem;
2172 GtkWidget *tmplabel, *tmpbutton, *tmpentry;
2174 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2175 gtk_widget_show (vbox1);
2176 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2177 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2179 PACK_FRAME(vbox1, frame_font, _("Font"));
2181 table1 = gtk_table_new (4, 3, FALSE);
2183 gtk_widget_show (table1);
2184 gtk_container_add (GTK_CONTAINER (frame_font), table1);
2185 gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
2186 gtk_table_set_row_spacings (GTK_TABLE (table1), 8);
2187 gtk_table_set_col_spacings (GTK_TABLE (table1), 8);
2189 label_textfont = gtk_label_new (_("Text"));
2190 gtk_misc_set_alignment(GTK_MISC(label_textfont), 0, 0.5);
2191 gtk_widget_show (label_textfont);
2192 gtk_table_attach (GTK_TABLE (table1), label_textfont, 0, 1, 0, 1,
2193 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2195 entry_textfont = gtk_entry_new ();
2196 gtk_widget_show (entry_textfont);
2197 gtk_table_attach (GTK_TABLE (table1), entry_textfont, 1, 2, 0, 1,
2198 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2200 button_textfont = gtk_button_new_with_label (" ... ");
2202 gtk_widget_show (button_textfont);
2203 gtk_table_attach (GTK_TABLE (table1), button_textfont, 2, 3, 0, 1,
2205 gtk_signal_connect (GTK_OBJECT (button_textfont), "clicked",
2206 GTK_SIGNAL_FUNC (prefs_font_select), entry_textfont);
2208 tmplabel = gtk_label_new (_("Small"));
2209 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2210 gtk_widget_show (tmplabel);
2211 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 1, 2,
2212 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2214 tmpentry = gtk_entry_new ();
2215 gtk_widget_show (tmpentry);
2216 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 1, 2,
2217 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2219 tmpbutton = gtk_button_new_with_label (" ... ");
2220 gtk_widget_show (tmpbutton);
2221 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 1, 2,
2223 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2224 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2225 display.entry_smallfont = tmpentry;
2227 tmplabel = gtk_label_new (_("Normal"));
2228 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2229 gtk_widget_show (tmplabel);
2230 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 2, 3,
2231 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2233 tmpentry = gtk_entry_new ();
2234 gtk_widget_show (tmpentry);
2235 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 2, 3,
2236 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2238 tmpbutton = gtk_button_new_with_label (" ... ");
2239 gtk_widget_show (tmpbutton);
2240 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 2, 3,
2242 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2243 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2244 display.entry_normalfont = tmpentry;
2246 tmplabel = gtk_label_new (_("Bold"));
2247 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2248 gtk_widget_show (tmplabel);
2249 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 3, 4,
2250 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2252 tmpentry = gtk_entry_new ();
2253 gtk_widget_show (tmpentry);
2254 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 3, 4,
2255 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2257 tmpbutton = gtk_button_new_with_label (" ... ");
2258 gtk_widget_show (tmpbutton);
2259 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 3, 4,
2261 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2262 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2263 display.entry_boldfont = tmpentry;
2265 vbox2 = gtk_vbox_new (FALSE, 0);
2266 gtk_widget_show (vbox2);
2267 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
2270 (vbox2, chkbtn_transhdr,
2271 _("Translate header name (such as `From:', `Subject:')"));
2273 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
2274 _("Display unread number next to folder name"));
2276 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2278 hbox1 = gtk_hbox_new (FALSE, 8);
2279 gtk_widget_show (hbox1);
2280 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2282 label_ng_abbrev = gtk_label_new
2283 (_("Abbreviate newsgroup names longer than"));
2284 gtk_widget_show (label_ng_abbrev);
2285 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
2287 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
2288 spinbtn_ng_abbrev_len = gtk_spin_button_new
2289 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
2290 gtk_widget_show (spinbtn_ng_abbrev_len);
2291 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
2293 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
2294 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
2297 label_ng_abbrev = gtk_label_new
2299 gtk_widget_show (label_ng_abbrev);
2300 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
2302 /* ---- Summary ---- */
2304 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
2306 vbox2 = gtk_vbox_new (FALSE, 0);
2307 gtk_widget_show (vbox2);
2308 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
2309 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
2312 (vbox2, chkbtn_swapfrom,
2313 _("Display recipient in `From' column if sender is yourself"));
2315 (vbox2, chkbtn_useaddrbook,
2316 _("Display sender using address book"));
2318 (vbox2, chkbtn_threadsubj,
2319 _("Thread using subject in addition to standard headers"));
2321 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2323 hbox1 = gtk_hbox_new (FALSE, 8);
2324 gtk_widget_show (hbox1);
2325 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2327 label_datefmt = gtk_label_new (_("Date format"));
2328 gtk_widget_show (label_datefmt);
2329 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
2331 entry_datefmt = gtk_entry_new ();
2332 gtk_widget_show (entry_datefmt);
2333 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
2335 button_datefmt = gtk_button_new_with_label (" ... ");
2337 gtk_widget_show (button_datefmt);
2338 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
2339 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
2340 GTK_SIGNAL_FUNC (date_format_create), NULL);
2342 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
2344 hbox1 = gtk_hbox_new (FALSE, 8);
2345 gtk_widget_show (hbox1);
2346 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2348 button_dispitem = gtk_button_new_with_label
2349 (_(" Set displayed items in summary... "));
2350 gtk_widget_show (button_dispitem);
2351 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
2352 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
2353 GTK_SIGNAL_FUNC (prefs_summary_column_open),
2356 display.entry_textfont = entry_textfont;
2357 display.button_textfont = button_textfont;
2359 display.chkbtn_transhdr = chkbtn_transhdr;
2360 display.chkbtn_folder_unread = chkbtn_folder_unread;
2361 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
2362 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
2364 display.chkbtn_swapfrom = chkbtn_swapfrom;
2365 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
2366 display.chkbtn_threadsubj = chkbtn_threadsubj;
2367 display.entry_datefmt = entry_datefmt;
2370 static void prefs_message_create(void)
2376 GtkWidget *chkbtn_enablecol;
2377 GtkWidget *button_edit_col;
2378 GtkWidget *chkbtn_mbalnum;
2379 GtkWidget *chkbtn_disphdrpane;
2380 GtkWidget *chkbtn_disphdr;
2381 GtkWidget *button_edit_disphdr;
2382 GtkWidget *hbox_linespc;
2383 GtkWidget *label_linespc;
2384 GtkObject *spinbtn_linespc_adj;
2385 GtkWidget *spinbtn_linespc;
2386 GtkWidget *chkbtn_headspc;
2388 GtkWidget *frame_scr;
2389 GtkWidget *vbox_scr;
2390 GtkWidget *chkbtn_smoothscroll;
2391 GtkWidget *hbox_scr;
2392 GtkWidget *label_scr;
2393 GtkObject *spinbtn_scrollstep_adj;
2394 GtkWidget *spinbtn_scrollstep;
2395 GtkWidget *chkbtn_halfpage;
2397 GtkWidget *chkbtn_attach_desc;
2399 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2400 gtk_widget_show (vbox1);
2401 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2402 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2404 vbox2 = gtk_vbox_new (FALSE, 0);
2405 gtk_widget_show (vbox2);
2406 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2408 hbox1 = gtk_hbox_new (FALSE, 8);
2409 gtk_widget_show (hbox1);
2410 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2412 PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
2413 _("Enable coloration of message"));
2414 gtk_signal_connect (GTK_OBJECT (chkbtn_enablecol), "toggled",
2415 GTK_SIGNAL_FUNC (prefs_enable_message_color_toggled),
2418 button_edit_col = gtk_button_new_with_label (_(" Edit... "));
2419 gtk_widget_show (button_edit_col);
2420 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
2421 gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
2422 GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
2424 SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
2427 (vbox2, chkbtn_mbalnum,
2428 _("Display multi-byte alphanumeric as\n"
2429 "ASCII character (Japanese only)"));
2430 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
2433 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
2434 _("Display header pane above message view"));
2436 hbox1 = gtk_hbox_new (FALSE, 8);
2437 gtk_widget_show (hbox1);
2438 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2440 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
2441 _("Display short headers on message view"));
2443 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
2444 gtk_widget_show (button_edit_disphdr);
2445 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
2447 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
2448 GTK_SIGNAL_FUNC (prefs_display_header_open),
2451 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
2453 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2455 hbox1 = gtk_hbox_new (FALSE, 32);
2456 gtk_widget_show (hbox1);
2457 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2459 hbox_linespc = gtk_hbox_new (FALSE, 8);
2460 gtk_widget_show (hbox1);
2461 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
2463 label_linespc = gtk_label_new (_("Line space"));
2464 gtk_widget_show (label_linespc);
2465 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2468 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
2469 spinbtn_linespc = gtk_spin_button_new
2470 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
2471 gtk_widget_show (spinbtn_linespc);
2472 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
2474 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
2475 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
2477 label_linespc = gtk_label_new (_("pixel(s)"));
2478 gtk_widget_show (label_linespc);
2479 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2482 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Leave space on head"));
2484 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
2486 vbox_scr = gtk_vbox_new (FALSE, 0);
2487 gtk_widget_show (vbox_scr);
2488 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
2489 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
2491 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
2493 hbox1 = gtk_hbox_new (FALSE, 32);
2494 gtk_widget_show (hbox1);
2495 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
2497 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
2499 hbox_scr = gtk_hbox_new (FALSE, 8);
2500 gtk_widget_show (hbox_scr);
2501 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
2503 label_scr = gtk_label_new (_("Step"));
2504 gtk_widget_show (label_scr);
2505 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2507 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
2508 spinbtn_scrollstep = gtk_spin_button_new
2509 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
2510 gtk_widget_show (spinbtn_scrollstep);
2511 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
2513 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
2514 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
2517 label_scr = gtk_label_new (_("pixel(s)"));
2518 gtk_widget_show (label_scr);
2519 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2521 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
2523 vbox3 = gtk_vbox_new (FALSE, 0);
2524 gtk_widget_show (vbox3);
2525 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
2527 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
2528 _("Show attachment descriptions (rather than names)"));
2531 message.chkbtn_enablecol = chkbtn_enablecol;
2532 message.button_edit_col = button_edit_col;
2533 message.chkbtn_mbalnum = chkbtn_mbalnum;
2534 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
2535 message.chkbtn_disphdr = chkbtn_disphdr;
2536 message.spinbtn_linespc = spinbtn_linespc;
2537 message.chkbtn_headspc = chkbtn_headspc;
2539 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
2540 message.spinbtn_scrollstep = spinbtn_scrollstep;
2541 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
2542 message.chkbtn_halfpage = chkbtn_halfpage;
2544 message.chkbtn_attach_desc = chkbtn_attach_desc;
2548 static void prefs_privacy_create(void)
2554 GtkWidget *hbox_spc;
2556 GtkWidget *checkbtn_auto_check_signatures;
2557 GtkWidget *checkbtn_gpg_signature_popup;
2558 GtkWidget *checkbtn_store_passphrase;
2559 GtkObject *spinbtn_store_passphrase_adj;
2560 GtkWidget *spinbtn_store_passphrase;
2561 GtkWidget *checkbtn_passphrase_grab;
2562 GtkWidget *checkbtn_gpg_warning;
2564 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2565 gtk_widget_show (vbox1);
2566 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2567 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2569 vbox2 = gtk_vbox_new (FALSE, 0);
2570 gtk_widget_show (vbox2);
2571 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2573 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
2574 _("Automatically check signatures"));
2576 PACK_CHECK_BUTTON (vbox2, checkbtn_gpg_signature_popup,
2577 _("Show signature check result in a popup window"));
2579 PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
2580 _("Store passphrase in memory temporarily"));
2582 vbox3 = gtk_vbox_new (FALSE, 0);
2583 gtk_widget_show (vbox3);
2584 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2586 hbox1 = gtk_hbox_new (FALSE, 8);
2587 gtk_widget_show (hbox1);
2588 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2590 hbox_spc = gtk_hbox_new (FALSE, 0);
2591 gtk_widget_show (hbox_spc);
2592 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2593 gtk_widget_set_usize (hbox_spc, 12, -1);
2595 label = gtk_label_new (_("Expire after"));
2596 gtk_widget_show (label);
2597 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2599 spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
2600 spinbtn_store_passphrase = gtk_spin_button_new
2601 (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
2602 gtk_widget_show (spinbtn_store_passphrase);
2603 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
2604 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
2606 gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
2608 label = gtk_label_new (_("minute(s) "));
2609 gtk_widget_show (label);
2610 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2612 hbox1 = gtk_hbox_new (FALSE, 8);
2613 gtk_widget_show (hbox1);
2614 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2616 hbox_spc = gtk_hbox_new (FALSE, 0);
2617 gtk_widget_show (hbox_spc);
2618 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2619 gtk_widget_set_usize (hbox_spc, 12, -1);
2621 label = gtk_label_new (_("(Setting to '0' will store the passphrase\n"
2622 " for the whole session)"));
2623 gtk_widget_show (label);
2624 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2625 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2627 SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
2630 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
2631 _("Grab input while entering a passphrase"));
2635 (vbox2, checkbtn_gpg_warning,
2636 _("Display warning on startup if GnuPG doesn't work"));
2638 hbox1 = gtk_hbox_new (FALSE, 8);
2639 gtk_widget_show (hbox1);
2640 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2642 privacy.checkbtn_auto_check_signatures
2643 = checkbtn_auto_check_signatures;
2644 privacy.checkbtn_gpg_signature_popup
2645 = checkbtn_gpg_signature_popup;
2646 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
2647 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
2648 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
2649 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2650 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2652 #endif /* USE_GPGME */
2654 static void prefs_interface_create(void)
2659 /* GtkWidget *checkbtn_emacs; */
2660 GtkWidget *checkbtn_always_show_msg;
2661 GtkWidget *checkbtn_openunread;
2662 GtkWidget *checkbtn_mark_as_read_on_newwin;
2663 GtkWidget *checkbtn_openinbox;
2664 GtkWidget *checkbtn_immedexec;
2668 GtkWidget *menuitem;
2670 GtkWidget *button_keybind;
2672 GtkWidget *hbox_nextunreadmsgdialog;
2673 GtkWidget *optmenu_nextunreadmsgdialog;
2675 GtkWidget *frame_pixmap_theme;
2676 GtkWidget *vbox_pixmap_theme;
2677 GtkWidget *entry_pixmap_theme;
2678 GtkWidget *combo_pixmap_theme;
2679 GList *avail_pixmap_themes = NULL;
2681 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2682 gtk_widget_show (vbox1);
2683 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2684 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2686 vbox2 = gtk_vbox_new (FALSE, 0);
2687 gtk_widget_show (vbox2);
2688 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2690 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2691 _("Emulate the behavior of mouse operation of\n"
2692 "Emacs-based mailer"));
2693 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2694 GTK_JUSTIFY_LEFT); */
2697 (vbox2, checkbtn_always_show_msg,
2698 _("Always open messages in summary when selected"));
2701 (vbox2, checkbtn_openunread,
2702 _("Open first unread message when entering a folder"));
2705 (vbox2, checkbtn_mark_as_read_on_newwin,
2706 _("Only mark message as read when opened in new window"));
2709 (vbox2, checkbtn_openinbox,
2710 _("Go to inbox after receiving new mail"));
2712 vbox3 = gtk_vbox_new (FALSE, 0);
2713 gtk_widget_show (vbox3);
2714 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2717 (vbox3, checkbtn_immedexec,
2718 _("Execute immediately when moving or deleting messages"));
2720 hbox1 = gtk_hbox_new (FALSE, 0);
2721 gtk_widget_show (hbox1);
2722 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2724 label = gtk_label_new
2725 (_("(Messages will be marked until execution\n"
2726 " if this is turned off)"));
2727 gtk_widget_show (label);
2728 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 8);
2729 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2731 /* Next Unread Message Dialog */
2732 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
2733 gtk_widget_show (hbox1);
2734 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
2736 label = gtk_label_new (_("Show no-unread-message dialog"));
2737 gtk_widget_show (label);
2738 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
2740 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2741 gtk_widget_show (optmenu_nextunreadmsgdialog);
2742 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
2744 menu = gtk_menu_new ();
2745 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2746 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
2747 NEXTUNREADMSGDIALOG_ASSUME_YES);
2748 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
2749 NEXTUNREADMSGDIALOG_ASSUME_NO);
2751 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
2753 hbox1 = gtk_hbox_new (FALSE, 8);
2754 gtk_widget_show (hbox1);
2755 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2757 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2758 gtk_widget_show (button_keybind);
2759 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2760 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2761 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2763 PACK_FRAME(vbox1, frame_pixmap_theme, _("Icon theme"));
2765 vbox_pixmap_theme = gtk_vbox_new(FALSE, 0);
2766 gtk_widget_show(vbox_pixmap_theme);
2767 gtk_container_add(GTK_CONTAINER(frame_pixmap_theme), vbox_pixmap_theme);
2768 gtk_container_set_border_width(GTK_CONTAINER(vbox_pixmap_theme), 8);
2770 avail_pixmap_themes = stock_pixmap_themes_list_new();
2772 combo_pixmap_theme = gtk_combo_new ();
2773 gtk_widget_show (combo_pixmap_theme);
2774 gtk_box_pack_start (GTK_BOX (vbox_pixmap_theme), combo_pixmap_theme, TRUE, TRUE, 0);
2775 gtk_combo_set_popdown_strings(GTK_COMBO(combo_pixmap_theme), avail_pixmap_themes);
2776 entry_pixmap_theme = GTK_COMBO (combo_pixmap_theme)->entry;
2778 stock_pixmap_themes_list_free(avail_pixmap_themes);
2780 /* interface.checkbtn_emacs = checkbtn_emacs; */
2781 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
2782 interface.checkbtn_openunread = checkbtn_openunread;
2783 interface.checkbtn_mark_as_read_on_newwin
2784 = checkbtn_mark_as_read_on_newwin;
2785 interface.checkbtn_openinbox = checkbtn_openinbox;
2786 interface.checkbtn_immedexec = checkbtn_immedexec;
2787 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2788 interface.combo_pixmap_theme = combo_pixmap_theme;
2789 interface.entry_pixmap_theme = entry_pixmap_theme;
2792 static void prefs_other_create(void)
2795 GtkWidget *ext_frame;
2796 GtkWidget *ext_table;
2799 GtkWidget *uri_label;
2800 GtkWidget *uri_combo;
2801 GtkWidget *uri_entry;
2803 GtkWidget *printcmd_label;
2804 GtkWidget *printcmd_entry;
2806 GtkWidget *exteditor_label;
2807 GtkWidget *exteditor_combo;
2808 GtkWidget *exteditor_entry;
2810 GtkWidget *frame_addr;
2811 GtkWidget *vbox_addr;
2812 GtkWidget *checkbtn_addaddrbyclick;
2814 GtkWidget *frame_cliplog;
2815 GtkWidget *vbox_cliplog;
2816 GtkWidget *hbox_cliplog;
2817 GtkWidget *checkbtn_cliplog;
2818 GtkWidget *loglength_label;
2819 GtkWidget *loglength_entry;
2821 GtkWidget *frame_exit;
2822 GtkWidget *vbox_exit;
2823 GtkWidget *checkbtn_confonexit;
2824 GtkWidget *checkbtn_cleanonexit;
2825 GtkWidget *checkbtn_askonclean;
2826 GtkWidget *checkbtn_warnqueued;
2829 GtkWidget *frame_ssl;
2830 GtkWidget *vbox_ssl;
2831 GtkWidget *hbox_ssl;
2832 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2835 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2836 gtk_widget_show (vbox1);
2837 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2838 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2840 PACK_FRAME(vbox1, ext_frame,
2841 _("External commands (%s will be replaced with file name / URI)"));
2843 ext_table = gtk_table_new (3, 2, FALSE);
2844 gtk_widget_show (ext_table);
2845 gtk_container_add (GTK_CONTAINER (ext_frame), ext_table);
2846 gtk_container_set_border_width (GTK_CONTAINER (ext_table), 8);
2847 gtk_table_set_row_spacings (GTK_TABLE (ext_table), VSPACING_NARROW);
2848 gtk_table_set_col_spacings (GTK_TABLE (ext_table), 8);
2850 uri_label = gtk_label_new (_("Web browser"));
2851 gtk_widget_show(uri_label);
2852 gtk_table_attach (GTK_TABLE (ext_table), uri_label, 0, 1, 0, 1,
2853 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2854 gtk_misc_set_alignment (GTK_MISC (uri_label), 1, 0.5);
2856 uri_combo = gtk_combo_new ();
2857 gtk_widget_show (uri_combo);
2858 gtk_table_attach (GTK_TABLE (ext_table), uri_combo, 1, 2, 0, 1,
2859 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2860 gtkut_combo_set_items (GTK_COMBO (uri_combo),
2861 DEFAULT_BROWSER_CMD,
2862 "galeon --new-tab '%s'",
2864 "mozilla -remote 'openurl(%s,new-window)'",
2865 "netscape -remote 'openURL(%s, new-window)'",
2867 "gnome-moz-remote --newwin '%s'",
2868 "kfmclient openURL '%s'",
2869 "opera -newwindow '%s'",
2870 "kterm -e w3m '%s'",
2871 "kterm -e lynx '%s'",
2873 uri_entry = GTK_COMBO (uri_combo)->entry;
2875 printcmd_label = gtk_label_new (_("Print"));
2876 gtk_widget_show (printcmd_label);
2877 gtk_table_attach (GTK_TABLE (ext_table), printcmd_label, 0, 1, 1, 2,
2878 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2879 gtk_misc_set_alignment (GTK_MISC (printcmd_label), 1, 0.5);
2881 printcmd_entry = gtk_entry_new ();
2882 gtk_widget_show (printcmd_entry);
2883 gtk_table_attach (GTK_TABLE (ext_table), printcmd_entry, 1, 2, 1, 2,
2884 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2886 exteditor_label = gtk_label_new (_("Editor"));
2887 gtk_widget_show (exteditor_label);
2888 gtk_table_attach (GTK_TABLE (ext_table), exteditor_label, 0, 1, 2, 3,
2889 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2890 gtk_misc_set_alignment (GTK_MISC (exteditor_label), 1, 0.5);
2892 exteditor_combo = gtk_combo_new ();
2893 gtk_widget_show (exteditor_combo);
2894 gtk_table_attach (GTK_TABLE (ext_table), exteditor_combo, 1, 2, 2, 3,
2895 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2896 gtkut_combo_set_items (GTK_COMBO (exteditor_combo),
2899 "mgedit --no-fork %s",
2905 exteditor_entry = GTK_COMBO (exteditor_combo)->entry;
2907 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2909 vbox_addr = gtk_vbox_new (FALSE, 0);
2910 gtk_widget_show (vbox_addr);
2911 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2912 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2915 (vbox_addr, checkbtn_addaddrbyclick,
2916 _("Add address to destination when double-clicked"));
2919 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2921 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2922 gtk_widget_show (vbox_cliplog);
2923 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2924 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2925 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2926 _("Clip the log size"));
2927 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2928 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2929 gtk_widget_show (hbox_cliplog);
2931 loglength_label = gtk_label_new (_("Log window length"));
2932 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2934 gtk_widget_show (GTK_WIDGET (loglength_label));
2935 loglength_entry = gtk_entry_new ();
2936 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2937 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2939 gtk_widget_show (GTK_WIDGET (loglength_entry));
2940 loglength_label = gtk_label_new (_("(0 to stop logging in the log window)"));
2941 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2943 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2948 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2950 vbox_ssl = gtk_vbox_new (FALSE, 0);
2951 gtk_widget_show (vbox_ssl);
2952 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2953 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2954 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2955 _("Ask before accepting SSL certificates"));
2956 hbox_ssl = gtk_hbox_new (FALSE, 3);
2957 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2958 gtk_widget_show (hbox_ssl);
2963 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2965 vbox_exit = gtk_vbox_new (FALSE, 0);
2966 gtk_widget_show (vbox_exit);
2967 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2968 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2970 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2971 _("Confirm on exit"));
2973 hbox1 = gtk_hbox_new (FALSE, 32);
2974 gtk_widget_show (hbox1);
2975 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2977 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2978 _("Empty trash on exit"));
2979 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2980 _("Ask before emptying"));
2981 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2983 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2984 _("Warn if there are queued messages"));
2986 other.uri_combo = uri_combo;
2987 other.uri_entry = uri_entry;
2988 other.printcmd_entry = printcmd_entry;
2990 other.exteditor_combo = exteditor_combo;
2991 other.exteditor_entry = exteditor_entry;
2993 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2995 other.checkbtn_cliplog = checkbtn_cliplog;
2996 other.loglength_entry = loglength_entry;
2998 other.checkbtn_confonexit = checkbtn_confonexit;
2999 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
3000 other.checkbtn_askonclean = checkbtn_askonclean;
3001 other.checkbtn_warnqueued = checkbtn_warnqueued;
3005 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
3010 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
3012 GtkWidget *datefmt_sample = NULL;
3015 g_return_if_fail(widget != NULL);
3016 g_return_if_fail(*widget != NULL);
3017 g_return_if_fail(display.entry_datefmt != NULL);
3019 datefmt_sample = GTK_WIDGET(gtk_object_get_data
3020 (GTK_OBJECT(*widget), "datefmt_sample"));
3021 g_return_if_fail(datefmt_sample != NULL);
3023 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
3024 g_free(prefs_common.date_format);
3025 prefs_common.date_format = text;
3026 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
3028 gtk_widget_destroy(*widget);
3032 static void date_format_cancel_btn_clicked(GtkButton *button,
3035 g_return_if_fail(widget != NULL);
3036 g_return_if_fail(*widget != NULL);
3038 gtk_widget_destroy(*widget);
3042 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
3045 if (event && event->keyval == GDK_Escape)
3046 date_format_cancel_btn_clicked(NULL, widget);
3049 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
3050 GdkEventAny *event, GtkWidget **widget)
3052 g_return_val_if_fail(widget != NULL, FALSE);
3053 g_return_val_if_fail(*widget != NULL, FALSE);
3059 static void date_format_entry_on_change(GtkEditable *editable,
3063 struct tm *cal_time;
3067 cur_time = time(NULL);
3068 cal_time = localtime(&cur_time);
3070 text = gtk_editable_get_chars(editable, 0, -1);
3072 strftime(buffer, sizeof buffer, text, cal_time);
3074 gtk_label_set_text(example, buffer);
3077 static void date_format_select_row(GtkWidget *date_format_list, gint row,
3078 gint column, GdkEventButton *event,
3079 GtkWidget *date_format)
3085 GtkWidget *datefmt_sample;
3087 /* only on double click */
3088 if (!event || event->type != GDK_2BUTTON_PRESS) return;
3091 datefmt_sample = GTK_WIDGET(gtk_object_get_data
3092 (GTK_OBJECT(date_format), "datefmt_sample"));
3094 g_return_if_fail(date_format_list != NULL);
3095 g_return_if_fail(date_format != NULL);
3096 g_return_if_fail(datefmt_sample != NULL);
3098 /* get format from clist */
3099 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
3101 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
3102 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
3104 /* insert the format into the text entry */
3105 new_format = g_malloc(strlen(old_format) + 3);
3107 strncpy(new_format, old_format, cur_pos);
3108 new_format[cur_pos] = '\0';
3109 strcat(new_format, format);
3110 strcat(new_format, &old_format[cur_pos]);
3112 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
3113 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
3118 static GtkWidget *date_format_create(GtkButton *button, void *data)
3120 static GtkWidget *datefmt_win = NULL;
3122 GtkWidget *scrolledwindow1;
3123 GtkWidget *datefmt_clist;
3128 GtkWidget *confirm_area;
3130 GtkWidget *cancel_btn;
3131 GtkWidget *datefmt_entry;
3160 const gint TIME_FORMAT_ELEMS =
3161 sizeof time_format / sizeof time_format[0];
3163 time_format[0].txt = _("the full abbreviated weekday name");
3164 time_format[1].txt = _("the full weekday name");
3165 time_format[2].txt = _("the abbreviated month name");
3166 time_format[3].txt = _("the full month name");
3167 time_format[4].txt = _("the preferred date and time for the current locale");
3168 time_format[5].txt = _("the century number (year/100)");
3169 time_format[6].txt = _("the day of the month as a decimal number");
3170 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
3171 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
3172 time_format[9].txt = _("the day of the year as a decimal number");
3173 time_format[10].txt = _("the month as a decimal number");
3174 time_format[11].txt = _("the minute as a decimal number");
3175 time_format[12].txt = _("either AM or PM");
3176 time_format[13].txt = _("the second as a decimal number");
3177 time_format[14].txt = _("the day of the week as a decimal number");
3178 time_format[15].txt = _("the preferred date for the current locale");
3179 time_format[16].txt = _("the last two digits of a year");
3180 time_format[17].txt = _("the year as a decimal number");
3181 time_format[18].txt = _("the time zone or name or abbreviation");
3183 if (datefmt_win) return datefmt_win;
3185 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
3186 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
3187 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
3188 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
3189 gtk_widget_set_usize(datefmt_win, 440, 280);
3191 vbox1 = gtk_vbox_new(FALSE, 10);
3192 gtk_widget_show(vbox1);
3193 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
3195 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
3196 gtk_scrolled_window_set_policy
3197 (GTK_SCROLLED_WINDOW(scrolledwindow1),
3198 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
3199 gtk_widget_show(scrolledwindow1);
3200 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
3202 titles[0] = _("Specifier");
3203 titles[1] = _("Description");
3204 datefmt_clist = gtk_clist_new_with_titles(2, titles);
3205 gtk_widget_show(datefmt_clist);
3206 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
3207 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
3208 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
3209 GTK_SELECTION_BROWSE);
3211 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
3213 /* phoney casting necessary because of gtk... */
3214 text[0] = (gchar *)time_format[i].fmt;
3215 text[1] = (gchar *)time_format[i].txt;
3216 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
3219 table = gtk_table_new(2, 2, FALSE);
3220 gtk_widget_show(table);
3221 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
3222 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
3223 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
3225 label1 = gtk_label_new(_("Date format"));
3226 gtk_widget_show(label1);
3227 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
3229 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
3230 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
3232 datefmt_entry = gtk_entry_new_with_max_length(256);
3233 gtk_widget_show(datefmt_entry);
3234 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
3235 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3237 /* we need the "sample" entry box; add it as data so callbacks can
3238 * get the entry box */
3239 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
3242 label2 = gtk_label_new(_("Example"));
3243 gtk_widget_show(label2);
3244 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
3246 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
3247 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
3249 label3 = gtk_label_new("");
3250 gtk_widget_show(label3);
3251 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
3252 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3253 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
3254 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
3256 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
3257 &cancel_btn, _("Cancel"), NULL, NULL);
3258 gtk_widget_grab_default(ok_btn);
3259 gtk_widget_show(confirm_area);
3261 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
3263 /* set the current format */
3264 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
3265 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
3268 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3269 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
3271 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
3272 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
3274 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
3275 GTK_SIGNAL_FUNC(date_format_key_pressed),
3277 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
3278 GTK_SIGNAL_FUNC(date_format_on_delete),
3280 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
3281 GTK_SIGNAL_FUNC(date_format_entry_on_change),
3284 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
3285 GTK_SIGNAL_FUNC(date_format_select_row),
3288 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
3289 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
3291 gtk_widget_show(datefmt_win);
3292 manage_window_set_transient(GTK_WINDOW(datefmt_win));
3294 gtk_widget_grab_focus(ok_btn);
3299 void prefs_quote_colors_dialog(void)
3301 if (!quote_color_win)
3302 prefs_quote_colors_dialog_create();
3303 gtk_widget_show(quote_color_win);
3304 manage_window_set_transient(GTK_WINDOW(quote_color_win));
3307 gtk_widget_hide(quote_color_win);
3309 textview_update_message_colors();
3310 main_window_reflect_prefs_all();
3313 static void prefs_quote_colors_dialog_create(void)
3318 GtkWidget *quotelevel1_label;
3319 GtkWidget *quotelevel2_label;
3320 GtkWidget *quotelevel3_label;
3321 GtkWidget *uri_label;
3322 GtkWidget *signature_label;
3323 GtkWidget *tgt_folder_label;
3326 GtkWidget *recycle_colors_btn;
3327 GtkWidget *frame_colors;
3329 window = gtk_window_new(GTK_WINDOW_DIALOG);
3330 gtk_container_set_border_width(GTK_CONTAINER(window), 2);
3331 gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
3332 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
3333 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
3334 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
3336 vbox = gtk_vbox_new (FALSE, VSPACING);
3337 gtk_container_add (GTK_CONTAINER (window), vbox);
3338 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
3339 PACK_FRAME(vbox, frame_colors, _("Colors"));
3341 table = gtk_table_new (5, 2, FALSE);
3342 gtk_container_add (GTK_CONTAINER (frame_colors), table);
3343 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
3344 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
3345 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
3348 color_buttons.quote_level1_btn = gtk_button_new();
3349 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
3350 0, 1, 0, 1, 0, 0, 0, 0);
3351 gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
3352 gtk_container_set_border_width
3353 (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
3355 color_buttons.quote_level2_btn = gtk_button_new();
3356 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
3357 0, 1, 1, 2, 0, 0, 0, 0);
3358 gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
3359 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
3361 color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
3362 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
3363 0, 1, 2, 3, 0, 0, 0, 0);
3364 gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
3365 gtk_container_set_border_width
3366 (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
3368 color_buttons.uri_btn = gtk_button_new_with_label ("");
3369 gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
3370 0, 1, 3, 4, 0, 0, 0, 0);
3371 gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
3372 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
3374 color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
3375 gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
3376 0, 1, 4, 5, 0, 0, 0, 0);
3377 gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
3378 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
3380 color_buttons.signature_btn = gtk_button_new_with_label ("");
3381 gtk_table_attach (GTK_TABLE (table), color_buttons.signature_btn,
3382 0, 1, 5, 6, 0, 0, 0, 0);
3383 gtk_widget_set_usize (color_buttons.signature_btn, 40, 30);
3384 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.signature_btn), 5);
3386 quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
3387 gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
3388 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3389 gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
3390 gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
3392 quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
3393 gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
3394 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3395 gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
3396 gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
3398 quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
3399 gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
3400 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3401 gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
3402 gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
3404 uri_label = gtk_label_new (_("URI link"));
3405 gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
3406 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3407 gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
3408 gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
3410 tgt_folder_label = gtk_label_new (_("Target folder"));
3411 gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
3412 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3413 gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
3414 gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
3416 signature_label = gtk_label_new (_("Signatures"));
3417 gtk_table_attach (GTK_TABLE (table), signature_label, 1, 2, 5, 6,
3418 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3419 gtk_label_set_justify (GTK_LABEL (signature_label), GTK_JUSTIFY_LEFT);
3420 gtk_misc_set_alignment (GTK_MISC (signature_label), 0, 0.5);
3422 PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
3423 _("Recycle quote colors"));
3425 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
3426 NULL, NULL, NULL, NULL);
3427 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
3429 gtk_widget_grab_default(ok_btn);
3430 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3431 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
3432 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3433 gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
3434 GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
3437 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
3438 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
3439 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
3440 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
3441 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
3442 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
3443 gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
3444 GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
3445 gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
3446 GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
3447 gtk_signal_connect(GTK_OBJECT(color_buttons.signature_btn), "clicked",
3448 GTK_SIGNAL_FUNC(quote_color_set_dialog), "SIGNATURE");
3449 gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
3450 GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
3451 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3452 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3454 /* show message button colors and recycle options */
3455 set_button_bg_color(color_buttons.quote_level1_btn,
3456 prefs_common.quote_level1_col);
3457 set_button_bg_color(color_buttons.quote_level2_btn,
3458 prefs_common.quote_level2_col);
3459 set_button_bg_color(color_buttons.quote_level3_btn,
3460 prefs_common.quote_level3_col);
3461 set_button_bg_color(color_buttons.uri_btn,
3462 prefs_common.uri_col);
3463 set_button_bg_color(color_buttons.tgt_folder_btn,
3464 prefs_common.tgt_folder_col);
3465 set_button_bg_color(color_buttons.signature_btn,
3466 prefs_common.signature_col);
3467 gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
3468 prefs_common.recycle_quote_colors);
3470 gtk_widget_show_all(vbox);
3471 quote_color_win = window;
3474 static void prefs_quote_colors_key_pressed(GtkWidget *widget,
3475 GdkEventKey *event, gpointer data)
3477 if (event && event->keyval == GDK_Escape)
3481 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
3483 gchar *type = (gchar *)data;
3484 gchar *title = NULL;
3485 gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
3487 GtkColorSelectionDialog *dialog;
3489 if(g_strcasecmp(type, "LEVEL1") == 0) {
3490 title = _("Pick color for quotation level 1");
3491 rgbvalue = prefs_common.quote_level1_col;
3492 } else if(g_strcasecmp(type, "LEVEL2") == 0) {
3493 title = _("Pick color for quotation level 2");
3494 rgbvalue = prefs_common.quote_level2_col;
3495 } else if(g_strcasecmp(type, "LEVEL3") == 0) {
3496 title = _("Pick color for quotation level 3");
3497 rgbvalue = prefs_common.quote_level3_col;
3498 } else if(g_strcasecmp(type, "URI") == 0) {
3499 title = _("Pick color for URI");
3500 rgbvalue = prefs_common.uri_col;
3501 } else if(g_strcasecmp(type, "TGTFLD") == 0) {
3502 title = _("Pick color for target folder");
3503 rgbvalue = prefs_common.tgt_folder_col;
3504 } else if(g_strcasecmp(type, "SIGNATURE") == 0) {
3505 title = _("Pick color for signatures");
3506 rgbvalue = prefs_common.signature_col;
3508 } else if(g_strcasecmp(type, "Misspelled word") == 0) {
3509 title = _("Pick color for misspelled word");
3510 rgbvalue = prefs_common.misspelled_col;
3512 } else { /* Should never be called */
3513 g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
3517 color_dialog = gtk_color_selection_dialog_new(title);
3518 gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
3519 gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
3520 gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
3521 manage_window_set_transient(GTK_WINDOW(color_dialog));
3523 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
3524 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
3525 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
3526 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
3527 gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
3528 GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
3531 /* preselect the previous color in the color selection dialog */
3532 color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
3533 color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
3534 color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
3535 dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
3536 gtk_color_selection_set_color
3537 (GTK_COLOR_SELECTION(dialog->colorsel), color);
3539 gtk_widget_show(color_dialog);
3542 static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
3544 GtkColorSelection *colorsel = (GtkColorSelection *)
3545 ((GtkColorSelectionDialog *)color_dialog)->colorsel;
3547 gint red, green, blue, rgbvalue;
3548 gchar *type = (gchar *)data;
3550 gtk_color_selection_get_color(colorsel, color);
3552 red = (gint) (color[0] * 255.0);
3553 green = (gint) (color[1] * 255.0);
3554 blue = (gint) (color[2] * 255.0);
3555 rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
3558 fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
3559 fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
3560 fprintf(stderr, "Color is %x\n", rgbvalue);
3563 if (g_strcasecmp(type, "LEVEL1") == 0) {
3564 prefs_common.quote_level1_col = rgbvalue;
3565 set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
3566 } else if (g_strcasecmp(type, "LEVEL2") == 0) {
3567 prefs_common.quote_level2_col = rgbvalue;
3568 set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
3569 } else if (g_strcasecmp(type, "LEVEL3") == 0) {
3570 prefs_common.quote_level3_col = rgbvalue;
3571 set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
3572 } else if (g_strcasecmp(type, "URI") == 0) {
3573 prefs_common.uri_col = rgbvalue;
3574 set_button_bg_color(color_buttons.uri_btn, rgbvalue);
3575 } else if (g_strcasecmp(type, "TGTFLD") == 0) {
3576 prefs_common.tgt_folder_col = rgbvalue;
3577 set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
3578 folderview_set_target_folder_color(prefs_common.tgt_folder_col);
3579 } else if (g_strcasecmp(type, "SIGNATURE") == 0) {
3580 prefs_common.signature_col = rgbvalue;
3581 set_button_bg_color(color_buttons.signature_btn, rgbvalue);
3583 } else if (g_strcasecmp(type, "Misspelled word") == 0) {
3584 prefs_common.misspelled_col = rgbvalue;
3585 set_button_bg_color(spelling.misspelled_btn, rgbvalue);
3588 fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
3590 gtk_widget_destroy(color_dialog);
3593 static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
3595 gtk_widget_destroy(color_dialog);
3598 static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
3602 gtk_widget_destroy(color_dialog);
3605 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
3610 gtkut_convert_int_to_gdk_color(rgbvalue, &color);
3611 newstyle = gtk_style_copy(gtk_widget_get_default_style());
3612 newstyle->bg[GTK_STATE_NORMAL] = color;
3613 newstyle->bg[GTK_STATE_PRELIGHT] = color;
3614 newstyle->bg[GTK_STATE_ACTIVE] = color;
3616 gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
3619 static void prefs_enable_message_color_toggled(void)
3623 is_active = gtk_toggle_button_get_active
3624 (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
3625 gtk_widget_set_sensitive(message.button_edit_col, is_active);
3626 prefs_common.enable_color = is_active;
3629 static void prefs_recycle_colors_toggled(GtkWidget *widget)
3633 is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
3634 prefs_common.recycle_quote_colors = is_active;
3637 static void prefs_font_select(GtkButton *button, GtkEntry *entry)
3641 g_return_if_fail(entry != NULL);
3643 if (!font_sel_win) {
3644 font_sel_win = gtk_font_selection_dialog_new
3645 (_("Font selection"));
3646 gtk_window_position(GTK_WINDOW(font_sel_win),
3647 GTK_WIN_POS_CENTER);
3648 gtk_signal_connect(GTK_OBJECT(font_sel_win), "delete_event",
3649 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3652 (GTK_OBJECT(font_sel_win), "key_press_event",
3653 GTK_SIGNAL_FUNC(prefs_font_selection_key_pressed),
3655 gtk_signal_connect_object
3656 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->cancel_button),
3658 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3659 GTK_OBJECT(font_sel_win));
3662 if(font_sel_conn_id) {
3663 gtk_signal_disconnect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button), font_sel_conn_id);
3665 font_sel_conn_id = gtk_signal_connect
3666 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button),
3668 GTK_SIGNAL_FUNC(prefs_font_selection_ok),
3670 printf("%i\n", font_sel_conn_id);
3672 font_name = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
3673 gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(font_sel_win), font_name);
3675 manage_window_set_transient(GTK_WINDOW(font_sel_win));
3676 gtk_window_set_modal(GTK_WINDOW(font_sel_win), TRUE);
3677 gtk_widget_grab_focus
3678 (GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button);
3679 gtk_widget_show(font_sel_win);
3682 static void prefs_font_selection_key_pressed(GtkWidget *widget,
3686 if (event && event->keyval == GDK_Escape)
3687 gtk_widget_hide(font_sel_win);
3690 static void prefs_font_selection_ok(GtkButton *button, GtkEntry *entry)
3694 fontname = gtk_font_selection_dialog_get_font_name
3695 (GTK_FONT_SELECTION_DIALOG(font_sel_win));
3698 gtk_entry_set_text(entry, fontname);
3703 gtk_widget_hide(font_sel_win);
3706 static void prefs_keybind_select(void)
3713 GtkWidget *confirm_area;
3715 GtkWidget *cancel_btn;
3717 window = gtk_window_new (GTK_WINDOW_DIALOG);
3718 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
3719 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
3720 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
3721 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
3722 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
3723 manage_window_set_transient (GTK_WINDOW (window));
3725 vbox1 = gtk_vbox_new (FALSE, VSPACING);
3726 gtk_container_add (GTK_CONTAINER (window), vbox1);
3727 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
3729 hbox1 = gtk_hbox_new (FALSE, 8);
3730 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3732 label = gtk_label_new
3733 (_("Select preset:"));
3734 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3735 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3737 hbox1 = gtk_hbox_new (FALSE, 8);
3738 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3740 combo = gtk_combo_new ();
3741 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
3742 gtkut_combo_set_items (GTK_COMBO (combo),
3748 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
3750 hbox1 = gtk_hbox_new (FALSE, 8);
3751 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3753 label = gtk_label_new
3754 (_("You can also modify each menu shortcut by pressing\n"
3755 "any key(s) when placing the mouse pointer on the item."));
3756 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3757 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3759 hbox1 = gtk_hbox_new (FALSE, 8);
3760 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3762 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
3763 &cancel_btn, _("Cancel"), NULL, NULL);
3764 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
3765 gtk_widget_grab_default (ok_btn);
3767 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3768 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3769 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
3770 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
3771 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
3772 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
3773 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
3775 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
3776 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
3779 gtk_widget_show_all(window);
3781 keybind.window = window;
3782 keybind.combo = combo;
3785 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
3788 if (event && event->keyval == GDK_Escape)
3789 prefs_keybind_cancel();
3792 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
3795 prefs_keybind_cancel();
3799 static void prefs_keybind_cancel(void)
3801 gtk_widget_destroy(keybind.window);
3802 keybind.window = NULL;
3803 keybind.combo = NULL;
3806 static void prefs_keybind_apply_clicked(GtkWidget *widget)
3808 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
3812 static gchar *default_menurc =
3813 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3814 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
3815 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3816 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
3818 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3819 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3820 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3821 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
3823 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
3824 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
3825 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3826 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3827 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3828 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3829 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3830 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3831 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3832 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3833 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3834 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3836 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3837 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3838 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
3839 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3840 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
3841 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3842 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3843 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
3844 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3845 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3846 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
3847 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
3848 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3849 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3850 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3851 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3853 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3854 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3855 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3857 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
3858 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
3859 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
3860 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
3861 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
3862 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
3863 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
3865 static gchar *mew_wl_menurc =
3866 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
3867 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
3868 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
3869 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
3871 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3872 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3873 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3874 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3876 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3877 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3878 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
3879 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3880 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3881 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3882 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3883 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3884 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3885 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3886 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
3887 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
3889 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3890 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3891 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
3892 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3893 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
3894 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3895 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3896 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3897 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
3898 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
3899 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
3900 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3901 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3902 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3903 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3904 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
3906 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3907 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3908 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3910 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3911 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3912 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3913 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3914 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3915 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3916 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3918 static gchar *mutt_menurc =
3919 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3920 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
3921 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
3922 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
3924 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3925 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3926 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3927 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
3929 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3930 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3931 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3932 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3933 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
3934 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
3935 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
3936 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3937 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3938 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3939 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3941 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3942 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3943 "(menu-path \"<Main>/Message/Compose new message\" \"M\")\n"
3944 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
3945 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
3946 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3947 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3948 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3949 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
3950 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3951 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
3952 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3953 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
3954 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3955 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
3956 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3958 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3959 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3960 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3962 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3963 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3964 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3965 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3966 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3967 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3968 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3970 static gchar *old_sylpheed_menurc =
3971 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3972 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3973 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
3974 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
3976 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3977 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3978 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3979 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3981 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3982 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3983 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3984 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3985 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3986 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3987 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3988 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
3989 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
3990 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3991 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3992 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
3994 "(menu-path \"<Main>/Message/Get new mail\" \"<alt>I\")\n"
3995 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><alt>I\")\n"
3996 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
3997 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
3998 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
3999 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
4000 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
4001 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
4002 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
4003 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
4004 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
4005 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
4006 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
4007 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
4008 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
4009 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
4011 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
4012 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
4013 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
4015 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
4016 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
4017 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
4018 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
4019 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
4020 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
4021 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
4023 text = gtk_entry_get_text(entry);
4025 if (!strcmp(text, _("Default")))
4026 rc_str = default_menurc;
4027 else if (!strcmp(text, "Mew / Wanderlust"))
4028 rc_str = mew_wl_menurc;
4029 else if (!strcmp(text, "Mutt"))
4030 rc_str = mutt_menurc;
4031 else if (!strcmp(text, _("Old Sylpheed")))
4032 rc_str = old_sylpheed_menurc;
4036 menu_factory_clear_rc(rc_str);
4037 gtk_item_factory_parse_rc_string(rc_str);
4039 gtk_widget_destroy(keybind.window);
4040 keybind.window = NULL;
4041 keybind.combo = NULL;
4044 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
4047 GtkWidget *menuitem;
4050 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4051 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4052 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
4053 g_free(*((gchar **)pparam->data));
4054 *((gchar **)pparam->data) = g_strdup(charset);
4057 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
4059 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4062 g_return_if_fail(optmenu != NULL);
4063 g_return_if_fail(*((gchar **)pparam->data) != NULL);
4065 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
4066 (GCompareFunc)strcmp);
4068 gtk_option_menu_set_history(optmenu, index);
4070 gtk_option_menu_set_history(optmenu, 0);
4071 prefs_common_charset_set_data_from_optmenu(pparam);
4075 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
4078 GtkWidget *menuitem;
4080 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4081 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4082 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
4083 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4086 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
4088 TransferEncodingMethod method =
4089 *((TransferEncodingMethod *)pparam->data);
4090 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4093 g_return_if_fail(optmenu != NULL);
4095 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
4098 gtk_option_menu_set_history(optmenu, index);
4100 gtk_option_menu_set_history(optmenu, 0);
4101 prefs_common_encoding_set_data_from_optmenu(pparam);
4105 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
4108 GtkWidget *menuitem;
4110 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4111 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4112 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
4113 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4116 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
4118 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
4119 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4121 GtkWidget *menuitem;
4124 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
4127 gtk_option_menu_set_history(optmenu, index);
4129 gtk_option_menu_set_history(optmenu, 0);
4130 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
4133 menu = gtk_option_menu_get_menu(optmenu);
4134 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4135 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
4138 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
4141 GtkWidget *menuitem;
4143 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4144 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4145 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
4146 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4149 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
4151 SendDialogMode mode = *((SendDialogMode *)pparam->data);
4152 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4154 GtkWidget *menuitem;
4157 case SEND_DIALOG_ALWAYS:
4158 gtk_option_menu_set_history(optmenu, 0);
4160 case SEND_DIALOG_NEVER:
4161 gtk_option_menu_set_history(optmenu, 1);
4167 menu = gtk_option_menu_get_menu(optmenu);
4168 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4169 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
4172 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
4175 prefs_common_cancel();
4179 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
4182 if (event && event->keyval == GDK_Escape)
4183 prefs_common_cancel();
4186 static void prefs_common_ok(void)
4188 prefs_common_apply();
4189 gtk_widget_hide(dialog.window);
4194 static void prefs_common_apply(void)
4196 gchar *entry_pixmap_theme_str;
4197 gboolean update_pixmap_theme;
4199 entry_pixmap_theme_str = gtk_entry_get_text(GTK_ENTRY(interface.entry_pixmap_theme));
4200 if (entry_pixmap_theme_str &&
4201 (strcmp(prefs_common.pixmap_theme_path, entry_pixmap_theme_str) != 0) )
4202 update_pixmap_theme = TRUE;
4204 update_pixmap_theme = FALSE;
4206 prefs_set_data_from_dialog(param);
4208 if (update_pixmap_theme)
4210 main_window_reflect_prefs_all_real(TRUE);
4211 compose_reflect_prefs_pixmap_theme();
4213 main_window_reflect_prefs_all_real(FALSE);
4215 prefs_common_save_config();
4217 inc_autocheck_timer_remove();
4218 inc_autocheck_timer_set();
4221 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
4224 GtkWidget *menuitem;
4226 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4227 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4228 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
4229 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4232 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
4234 NextUnreadMsgDialogShow dialog_show;
4235 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4237 GtkWidget *menuitem;
4239 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
4241 switch (dialog_show) {
4242 case NEXTUNREADMSGDIALOG_ALWAYS:
4243 gtk_option_menu_set_history(optmenu, 0);
4245 case NEXTUNREADMSGDIALOG_ASSUME_YES:
4246 gtk_option_menu_set_history(optmenu, 1);
4248 case NEXTUNREADMSGDIALOG_ASSUME_NO:
4249 gtk_option_menu_set_history(optmenu, 2);
4253 menu = gtk_option_menu_get_menu(optmenu);
4254 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4255 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
4258 static void prefs_common_cancel(void)
4260 gtk_widget_hide(dialog.window);
4265 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
4268 GtkWidget *menuitem;
4270 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4271 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4272 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
4273 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4276 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
4278 RecvDialogShow dialog_show;
4279 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4281 GtkWidget *menuitem;
4283 dialog_show = *((RecvDialogShow *)pparam->data);
4285 switch (dialog_show) {
4286 case RECVDIALOG_ALWAYS:
4287 gtk_option_menu_set_history(optmenu, 0);
4289 case RECVDIALOG_WINDOW_ACTIVE:
4290 gtk_option_menu_set_history(optmenu, 1);
4292 case RECVDIALOG_NEVER:
4293 gtk_option_menu_set_history(optmenu, 2);
4298 menu = gtk_option_menu_get_menu(optmenu);
4299 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4300 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));