2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999,2000 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.
27 #include <gdk/gdkkeysyms.h>
29 #include <sys/types.h>
38 #include "prefs_account.h"
40 #include "mainwindow.h"
41 #include "manage_window.h"
45 #include "alertpanel.h"
47 static gboolean cancelled;
49 static PrefsAccount tmp_ac_prefs;
51 static PrefsDialog dialog;
54 GtkWidget *acname_entry;
55 GtkWidget *default_chkbtn;
57 GtkWidget *name_entry;
58 GtkWidget *addr_entry;
61 GtkWidget *serv_frame;
62 GtkWidget *serv_table;
63 GtkWidget *protocol_optmenu;
64 GtkWidget *inbox_label;
65 GtkWidget *inbox_entry;
66 GtkWidget *recvserv_label;
67 GtkWidget *smtpserv_label;
68 GtkWidget *nntpserv_label;
69 GtkWidget *localmbox_label;
70 GtkWidget *mailcmd_label;
71 GtkWidget *recvserv_entry;
72 GtkWidget *smtpserv_entry;
73 GtkWidget *nntpserv_entry;
74 GtkWidget *nntpauth_chkbtn;
75 GtkWidget *localmbox_entry;
76 GtkWidget *mailcmd_chkbtn;
77 GtkWidget *mailcmd_entry;
79 GtkWidget *pass_label;
81 GtkWidget *pass_entry;
84 static struct Receive {
85 GtkWidget *pop3_frame;
86 GtkWidget *rmmail_chkbtn;
87 GtkWidget *getall_chkbtn;
88 GtkWidget *recvatgetall_chkbtn;
89 GtkWidget *filter_on_recv_chkbtn;
93 GtkWidget *date_chkbtn;
94 GtkWidget *msgid_chkbtn;
96 GtkWidget *customhdr_chkbtn;
98 GtkWidget *autocc_chkbtn;
99 GtkWidget *autocc_entry;
100 GtkWidget *autobcc_chkbtn;
101 GtkWidget *autobcc_entry;
102 GtkWidget *autoreplyto_chkbtn;
103 GtkWidget *autoreplyto_entry;
105 GtkWidget *smtp_auth_chkbtn;
106 GtkWidget *pop_bfr_smtp_chkbtn;
109 static struct Compose {
110 GtkWidget *sigpath_entry;
114 static struct Privacy {
115 GtkWidget *defaultkey_radiobtn;
116 GtkWidget *emailkey_radiobtn;
117 GtkWidget *customkey_radiobtn;
118 GtkWidget *customkey_entry;
120 #endif /* USE_GPGME */
122 static struct Advanced {
123 GtkWidget *smtpport_chkbtn;
124 GtkWidget *smtpport_entry;
125 GtkWidget *popport_chkbtn;
126 GtkWidget *popport_entry;
127 GtkWidget *domain_chkbtn;
128 GtkWidget *domain_entry;
131 static void prefs_account_fix_size (void);
133 static void prefs_account_protocol_set_data_from_optmenu(PrefParam *pparam);
134 static void prefs_account_protocol_set_optmenu (PrefParam *pparam);
135 static void prefs_account_protocol_activated (GtkMenuItem *menuitem);
137 static void prefs_account_sign_key_set_data_from_radiobtn (PrefParam *pparam);
138 static void prefs_account_sign_key_set_radiobtn (PrefParam *pparam);
139 #endif /* USE_GPGME */
141 static void prefs_account_nntpauth_toggled(GtkToggleButton *button,
143 static void prefs_account_mailcmd_toggled(GtkToggleButton *button,
146 static PrefParam param[] = {
148 {"account_name", NULL, &tmp_ac_prefs.account_name, P_STRING,
149 &basic.acname_entry, prefs_set_data_from_entry, prefs_set_entry},
151 {"is_default", "FALSE", &tmp_ac_prefs.is_default, P_BOOL,
152 &basic.default_chkbtn,
153 prefs_set_data_from_toggle, prefs_set_toggle},
155 {"name", NULL, &tmp_ac_prefs.name, P_STRING,
156 &basic.name_entry, prefs_set_data_from_entry, prefs_set_entry},
158 {"address", NULL, &tmp_ac_prefs.address, P_STRING,
159 &basic.addr_entry, prefs_set_data_from_entry, prefs_set_entry},
161 {"organization", NULL, &tmp_ac_prefs.organization, P_STRING,
162 &basic.org_entry, prefs_set_data_from_entry, prefs_set_entry},
164 {"protocol", NULL, &tmp_ac_prefs.protocol, P_ENUM,
165 &basic.protocol_optmenu,
166 prefs_account_protocol_set_data_from_optmenu,
167 prefs_account_protocol_set_optmenu},
169 {"receive_server", NULL, &tmp_ac_prefs.recv_server, P_STRING,
170 &basic.recvserv_entry, prefs_set_data_from_entry, prefs_set_entry},
172 {"smtp_server", NULL, &tmp_ac_prefs.smtp_server, P_STRING,
173 &basic.smtpserv_entry, prefs_set_data_from_entry, prefs_set_entry},
175 {"nntp_server", NULL, &tmp_ac_prefs.nntp_server, P_STRING,
176 &basic.nntpserv_entry, prefs_set_data_from_entry, prefs_set_entry},
178 {"local_mbox", NULL, &tmp_ac_prefs.local_mbox, P_STRING,
179 &basic.localmbox_entry, prefs_set_data_from_entry, prefs_set_entry},
181 {"use_mail_command", "FALSE", &tmp_ac_prefs.use_mail_command, P_BOOL,
182 &basic.mailcmd_chkbtn, prefs_set_data_from_toggle, prefs_set_toggle},
184 {"mail_command", "mail", &tmp_ac_prefs.mail_command, P_STRING,
185 &basic.mailcmd_entry, prefs_set_data_from_entry, prefs_set_entry},
187 {"use_nntp_auth", "FALSE", &tmp_ac_prefs.use_nntp_auth, P_BOOL,
188 &basic.nntpauth_chkbtn,
189 prefs_set_data_from_toggle, prefs_set_toggle},
191 {"user_id", "ENV_USER", &tmp_ac_prefs.userid, P_STRING,
192 &basic.uid_entry, prefs_set_data_from_entry, prefs_set_entry},
194 {"password", NULL, &tmp_ac_prefs.passwd, P_STRING,
195 &basic.pass_entry, prefs_set_data_from_entry, prefs_set_entry},
197 {"inbox", "inbox", &tmp_ac_prefs.inbox, P_STRING,
198 &basic.inbox_entry, prefs_set_data_from_entry, prefs_set_entry},
201 {"remove_mail", "TRUE", &tmp_ac_prefs.rmmail, P_BOOL,
202 &receive.rmmail_chkbtn,
203 prefs_set_data_from_toggle, prefs_set_toggle},
205 {"get_all_mail", "FALSE", &tmp_ac_prefs.getall, P_BOOL,
206 &receive.getall_chkbtn,
207 prefs_set_data_from_toggle, prefs_set_toggle},
209 {"receive_at_get_all", "TRUE", &tmp_ac_prefs.recv_at_getall, P_BOOL,
210 &receive.recvatgetall_chkbtn,
211 prefs_set_data_from_toggle, prefs_set_toggle},
213 {"filter_on_receive", "TRUE", &tmp_ac_prefs.filter_on_recv, P_BOOL,
214 &receive.filter_on_recv_chkbtn,
215 prefs_set_data_from_toggle, prefs_set_toggle},
218 {"add_date", "TRUE", &tmp_ac_prefs.add_date, P_BOOL,
220 prefs_set_data_from_toggle, prefs_set_toggle},
222 {"generate_msgid", "TRUE", &tmp_ac_prefs.gen_msgid, P_BOOL,
224 prefs_set_data_from_toggle, prefs_set_toggle},
226 {"add_custom_header", "FALSE", &tmp_ac_prefs.add_customhdr, P_BOOL,
227 &send.customhdr_chkbtn,
228 prefs_set_data_from_toggle, prefs_set_toggle},
230 {"set_autocc", "FALSE", &tmp_ac_prefs.set_autocc, P_BOOL,
232 prefs_set_data_from_toggle, prefs_set_toggle},
234 {"auto_cc", NULL, &tmp_ac_prefs.auto_cc, P_STRING,
236 prefs_set_data_from_entry, prefs_set_entry},
238 {"set_autobcc", "FALSE", &tmp_ac_prefs.set_autobcc, P_BOOL,
239 &send.autobcc_chkbtn,
240 prefs_set_data_from_toggle, prefs_set_toggle},
242 {"auto_bcc", NULL, &tmp_ac_prefs.auto_bcc, P_STRING,
244 prefs_set_data_from_entry, prefs_set_entry},
246 {"set_autoreplyto", "FALSE", &tmp_ac_prefs.set_autoreplyto, P_BOOL,
247 &send.autoreplyto_chkbtn,
248 prefs_set_data_from_toggle, prefs_set_toggle},
250 {"auto_replyto", NULL, &tmp_ac_prefs.auto_replyto, P_STRING,
251 &send.autoreplyto_entry,
252 prefs_set_data_from_entry, prefs_set_entry},
254 {"use_smtp_auth", "FALSE", &tmp_ac_prefs.use_smtp_auth, P_BOOL,
255 &send.smtp_auth_chkbtn,
256 prefs_set_data_from_toggle, prefs_set_toggle},
258 {"pop_before_smtp", "FALSE", &tmp_ac_prefs.pop_before_smtp, P_BOOL,
259 &send.pop_bfr_smtp_chkbtn,
260 prefs_set_data_from_toggle, prefs_set_toggle},
263 {"signature_path", "~/"DEFAULT_SIGNATURE, &tmp_ac_prefs.sig_path, P_STRING,
264 &compose.sigpath_entry,
265 prefs_set_data_from_entry, prefs_set_entry},
269 {"sign_key", NULL, &tmp_ac_prefs.sign_key, P_ENUM,
270 &privacy.defaultkey_radiobtn,
271 prefs_account_sign_key_set_data_from_radiobtn,
272 prefs_account_sign_key_set_radiobtn},
273 {"sign_key_id", "", &tmp_ac_prefs.sign_key_id, P_STRING,
274 &privacy.customkey_entry,
275 prefs_set_data_from_entry, prefs_set_entry},
276 #endif /* USE_GPGME */
279 {"set_smtpport", "FALSE", &tmp_ac_prefs.set_smtpport, P_BOOL,
280 &advanced.smtpport_chkbtn,
281 prefs_set_data_from_toggle, prefs_set_toggle},
283 {"smtp_port", "25", &tmp_ac_prefs.smtpport, P_USHORT,
284 &advanced.smtpport_entry,
285 prefs_set_data_from_entry, prefs_set_entry},
287 {"set_popport", "FALSE", &tmp_ac_prefs.set_popport, P_BOOL,
288 &advanced.popport_chkbtn,
289 prefs_set_data_from_toggle, prefs_set_toggle},
291 {"pop_port", "110", &tmp_ac_prefs.popport, P_USHORT,
292 &advanced.popport_entry,
293 prefs_set_data_from_entry, prefs_set_entry},
295 {"set_domain", "FALSE", &tmp_ac_prefs.set_domain, P_BOOL,
296 &advanced.domain_chkbtn,
297 prefs_set_data_from_toggle, prefs_set_toggle},
299 {"domain", NULL, &tmp_ac_prefs.domain, P_STRING,
300 &advanced.domain_entry,
301 prefs_set_data_from_entry, prefs_set_entry},
303 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
306 static void prefs_account_create (void);
307 static void prefs_account_basic_create (void);
308 static void prefs_account_receive_create (void);
309 static void prefs_account_send_create (void);
310 static void prefs_account_compose_create (void);
312 static void prefs_account_privacy_create (void);
313 #endif /* USE_GPGME */
314 static void prefs_account_advanced_create (void);
316 static void prefs_account_key_pressed (GtkWidget *widget,
319 static void prefs_account_ok (void);
320 static gint prefs_account_apply (void);
321 static void prefs_account_cancel (void);
323 static void prefs_account_customhdr_edit (void);
326 #define VSPACING_NARROW 4
327 #define BOX_BORDER 16
328 #define DEFAULT_ENTRY_WIDTH 80
330 void prefs_account_read_config(PrefsAccount *ac_prefs, const gchar *label)
332 const gchar *p = label;
335 g_return_if_fail(ac_prefs != NULL);
336 g_return_if_fail(label != NULL);
338 memset(&tmp_ac_prefs, 0, sizeof(PrefsAccount));
339 prefs_read_config(param, label, ACCOUNT_RC);
340 *ac_prefs = tmp_ac_prefs;
341 while (*p && !isdigit(*p)) p++;
343 if (id < 0) g_warning("wrong account id: %d\n", id);
344 ac_prefs->account_id = id;
346 prefs_headers_read_config(ac_prefs);
349 void prefs_account_save_config(PrefsAccount *ac_prefs)
353 g_return_if_fail(ac_prefs != NULL);
355 tmp_ac_prefs = *ac_prefs;
356 buf = g_strdup_printf("Account: %d", ac_prefs->account_id);
357 prefs_save_config(param, buf, ACCOUNT_RC);
360 void prefs_account_save_config_all(GList *account_list)
366 if (!account_list) return;
368 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, ACCOUNT_RC, NULL);
369 if ((pfile = prefs_write_open(rcpath)) == NULL) {
375 for (cur = account_list; cur != NULL; cur = cur->next) {
376 tmp_ac_prefs = *(PrefsAccount *)cur->data;
377 if (fprintf(pfile->fp, "[Account: %d]\n",
378 tmp_ac_prefs.account_id) <= 0 ||
379 prefs_write_param(param, pfile->fp) < 0) {
380 g_warning(_("failed to write configuration to file\n"));
381 prefs_write_close_revert(pfile);
385 if (fputc('\n', pfile->fp) == EOF) {
386 FILE_OP_ERROR(rcpath, "fputc");
387 prefs_write_close_revert(pfile);
393 if (prefs_write_close(pfile) < 0)
394 g_warning(_("failed to write configuration to file\n"));
397 void prefs_account_free(PrefsAccount *ac_prefs)
399 if (!ac_prefs) return;
401 tmp_ac_prefs = *ac_prefs;
405 static gint prefs_account_get_new_id(void)
409 static gint last_id = 0;
411 for (ac_list = account_get_list(); ac_list != NULL;
412 ac_list = ac_list->next) {
413 ac = (PrefsAccount *)ac_list->data;
414 if (last_id < ac->account_id)
415 last_id = ac->account_id;
421 PrefsAccount *prefs_account_open(PrefsAccount *ac_prefs)
423 gboolean new_account = FALSE;
425 debug_print(_("Opening account preferences window...\n"));
430 ac_prefs = g_new0(PrefsAccount, 1);
431 ac_prefs->account_id = prefs_account_get_new_id();
435 if (!dialog.window) {
436 prefs_account_create();
439 manage_window_set_transient(GTK_WINDOW(dialog.window));
440 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
441 gtk_widget_grab_focus(dialog.ok_btn);
443 tmp_ac_prefs = *ac_prefs;
446 PrefsAccount *def_ac;
449 prefs_set_dialog_to_default(param);
450 buf = g_strdup_printf(_("Account%d"), ac_prefs->account_id);
451 gtk_entry_set_text(GTK_ENTRY(basic.acname_entry), buf);
453 def_ac = account_get_default();
455 gtk_entry_set_text(GTK_ENTRY(basic.name_entry),
456 def_ac->name ? def_ac->name : "");
457 gtk_entry_set_text(GTK_ENTRY(basic.addr_entry),
458 def_ac->address ? def_ac->address : "");
459 gtk_entry_set_text(GTK_ENTRY(basic.org_entry),
460 def_ac->organization ? def_ac->organization : "");
462 gtk_window_set_title(GTK_WINDOW(dialog.window),
463 _("Preferences for new account"));
464 gtk_widget_hide(dialog.apply_btn);
466 prefs_set_dialog(param);
467 gtk_window_set_title(GTK_WINDOW(dialog.window),
468 _("Preferences for each account"));
469 gtk_widget_show(dialog.apply_btn);
472 if (ac_prefs->protocol != A_LOCAL) {
473 gtk_widget_set_sensitive(basic.smtpserv_entry, TRUE);
474 gtk_widget_set_sensitive(basic.smtpserv_label, TRUE);
477 gtk_widget_show(dialog.window);
479 gtk_widget_hide(dialog.window);
481 if (cancelled && new_account) {
485 *ac_prefs = tmp_ac_prefs;
490 static void prefs_account_create(void)
494 debug_print(_("Creating account preferences window...\n"));
497 prefs_dialog_create(&dialog);
498 gtk_signal_connect(GTK_OBJECT(dialog.window), "delete_event",
499 GTK_SIGNAL_FUNC(prefs_account_cancel), NULL);
500 gtk_signal_connect(GTK_OBJECT(dialog.window), "key_press_event",
501 GTK_SIGNAL_FUNC(prefs_account_key_pressed), NULL);
502 gtk_signal_connect(GTK_OBJECT(dialog.window), "focus_in_event",
503 GTK_SIGNAL_FUNC(manage_window_focus_in), NULL);
504 gtk_signal_connect(GTK_OBJECT(dialog.window), "focus_out_event",
505 GTK_SIGNAL_FUNC(manage_window_focus_out), NULL);
506 gtk_signal_connect(GTK_OBJECT(dialog.ok_btn), "clicked",
507 GTK_SIGNAL_FUNC(prefs_account_ok), NULL);
508 gtk_signal_connect(GTK_OBJECT(dialog.apply_btn), "clicked",
509 GTK_SIGNAL_FUNC(prefs_account_apply), NULL);
510 gtk_signal_connect(GTK_OBJECT(dialog.cancel_btn), "clicked",
511 GTK_SIGNAL_FUNC(prefs_account_cancel), NULL);
513 prefs_account_basic_create();
514 SET_NOTEBOOK_LABEL(dialog.notebook, _("Basic"), page++);
515 prefs_account_receive_create();
516 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
517 prefs_account_send_create();
518 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
519 prefs_account_compose_create();
520 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
522 prefs_account_privacy_create();
523 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
524 #endif /* USE_GPGME */
525 prefs_account_advanced_create();
526 SET_NOTEBOOK_LABEL(dialog.notebook, _("Advanced"), page++);
528 prefs_account_fix_size();
529 gtk_widget_show(dialog.window);
533 * prefs_account_fix_size:
535 * Fix the window size after creating widgets by selecting "Local"
536 * protocol (currently it has the largest size of parameter widgets).
537 * Without this the window gets too large.
539 static void prefs_account_fix_size(void)
541 GtkOptionMenu *optmenu = GTK_OPTION_MENU (basic.protocol_optmenu);
545 gtk_option_menu_set_history (optmenu, 4); /* local */
546 menu = gtk_option_menu_get_menu (optmenu);
547 menuitem = gtk_menu_get_active (GTK_MENU (menu));
548 gtk_menu_item_activate (GTK_MENU_ITEM (menuitem));
551 #define SET_ACTIVATE(menuitem) \
553 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", \
554 GTK_SIGNAL_FUNC(prefs_account_protocol_activated), \
560 static void prefs_account_basic_create(void)
565 GtkWidget *acname_entry;
566 GtkWidget *default_chkbtn;
569 GtkWidget *name_entry;
570 GtkWidget *addr_entry;
571 GtkWidget *org_entry;
573 GtkWidget *serv_frame;
576 GtkWidget *optmenu_menu;
578 GtkWidget *inbox_label;
579 GtkWidget *inbox_entry;
580 GtkWidget *serv_table;
581 GtkWidget *recvserv_label;
582 GtkWidget *smtpserv_label;
583 GtkWidget *nntpserv_label;
584 GtkWidget *localmbox_label;
585 GtkWidget *mailcmd_label;
586 GtkWidget *recvserv_entry;
587 GtkWidget *smtpserv_entry;
588 GtkWidget *nntpserv_entry;
589 GtkWidget *nntpauth_chkbtn;
590 GtkWidget *localmbox_entry;
591 GtkWidget *mailcmd_chkbtn;
592 GtkWidget *mailcmd_entry;
593 GtkWidget *uid_label;
594 GtkWidget *pass_label;
595 GtkWidget *uid_entry;
596 GtkWidget *pass_entry;
598 vbox1 = gtk_vbox_new (FALSE, VSPACING);
599 gtk_widget_show (vbox1);
600 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
601 gtk_container_set_border_width (GTK_CONTAINER (vbox1), BOX_BORDER);
603 hbox = gtk_hbox_new (FALSE, 8);
604 gtk_widget_show (hbox);
605 gtk_box_pack_start (GTK_BOX (vbox1), hbox, FALSE, FALSE, 0);
607 label = gtk_label_new (_("Name of this account"));
608 gtk_widget_show (label);
609 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
611 acname_entry = gtk_entry_new ();
612 gtk_widget_show (acname_entry);
613 gtk_widget_set_usize (acname_entry, DEFAULT_ENTRY_WIDTH, -1);
614 gtk_box_pack_start (GTK_BOX (hbox), acname_entry, TRUE, TRUE, 0);
616 default_chkbtn = gtk_check_button_new_with_label (_("Usually used"));
617 gtk_widget_show (default_chkbtn);
618 gtk_box_pack_end (GTK_BOX (hbox), default_chkbtn, FALSE, FALSE, 0);
620 PACK_FRAME (vbox1, frame1, _("Personal information"));
622 table1 = gtk_table_new (3, 2, FALSE);
623 gtk_widget_show (table1);
624 gtk_container_add (GTK_CONTAINER (frame1), table1);
625 gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
626 gtk_table_set_row_spacings (GTK_TABLE (table1), VSPACING_NARROW);
627 gtk_table_set_col_spacings (GTK_TABLE (table1), 8);
629 label = gtk_label_new (_("Full name"));
630 gtk_widget_show (label);
631 gtk_table_attach (GTK_TABLE (table1), label, 0, 1, 0, 1,
633 gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);
635 label = gtk_label_new (_("Mail address"));
636 gtk_widget_show (label);
637 gtk_table_attach (GTK_TABLE (table1), label, 0, 1, 1, 2,
639 gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);
641 label = gtk_label_new (_("Organization"));
642 gtk_widget_show (label);
643 gtk_table_attach (GTK_TABLE (table1), label, 0, 1, 2, 3,
645 gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);
647 name_entry = gtk_entry_new ();
648 gtk_widget_show (name_entry);
649 gtk_table_attach (GTK_TABLE (table1), name_entry, 1, 2, 0, 1,
650 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
651 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
653 addr_entry = gtk_entry_new ();
654 gtk_widget_show (addr_entry);
655 gtk_table_attach (GTK_TABLE (table1), addr_entry, 1, 2, 1, 2,
656 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
657 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
659 org_entry = gtk_entry_new ();
660 gtk_widget_show (org_entry);
661 gtk_table_attach (GTK_TABLE (table1), org_entry, 1, 2, 2, 3,
662 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
663 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
665 PACK_FRAME (vbox1, serv_frame, _("Server information"));
667 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
668 gtk_widget_show (vbox2);
669 gtk_container_add (GTK_CONTAINER (serv_frame), vbox2);
670 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
672 hbox = gtk_hbox_new (FALSE, 8);
673 gtk_widget_show (hbox);
674 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
676 label = gtk_label_new (_("Protocol"));
677 gtk_widget_show (label);
678 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
680 optmenu = gtk_option_menu_new ();
681 gtk_widget_show (optmenu);
682 gtk_box_pack_start (GTK_BOX (hbox), optmenu, FALSE, FALSE, 0);
684 optmenu_menu = gtk_menu_new ();
686 MENUITEM_ADD (optmenu_menu, menuitem, _("POP3 (normal)"), A_POP3);
687 SET_ACTIVATE (menuitem);
688 MENUITEM_ADD (optmenu_menu, menuitem, _("POP3 (APOP auth)"), A_APOP);
689 SET_ACTIVATE (menuitem);
690 MENUITEM_ADD (optmenu_menu, menuitem, _("IMAP4"), A_IMAP4);
691 SET_ACTIVATE (menuitem);
692 MENUITEM_ADD (optmenu_menu, menuitem, _("News (NNTP)"), A_NNTP);
693 SET_ACTIVATE (menuitem);
694 MENUITEM_ADD (optmenu_menu, menuitem, _("Local"), A_LOCAL);
695 SET_ACTIVATE (menuitem);
697 MENUITEM_ADD (optmenu_menu, menuitem, _("Local (without SMTP server)"), A_LOCAL_CMD);
698 SET_ACTIVATE (menuitem);
701 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu), optmenu_menu);
703 inbox_label = gtk_label_new (_("Inbox"));
704 gtk_widget_show (inbox_label);
705 gtk_box_pack_start (GTK_BOX (hbox), inbox_label, FALSE, FALSE, 0);
707 inbox_entry = gtk_entry_new ();
708 gtk_widget_show (inbox_entry);
709 gtk_widget_set_usize (inbox_entry, DEFAULT_ENTRY_WIDTH, -1);
710 gtk_box_pack_start (GTK_BOX (hbox), inbox_entry, TRUE, TRUE, 0);
712 serv_table = gtk_table_new (8, 4, FALSE);
713 gtk_widget_show (serv_table);
714 gtk_box_pack_start (GTK_BOX (vbox2), serv_table, FALSE, FALSE, 0);
715 gtk_table_set_row_spacings (GTK_TABLE (serv_table), 0);
716 gtk_table_set_col_spacings (GTK_TABLE (serv_table), 8);
718 nntpserv_entry = gtk_entry_new ();
719 gtk_widget_show (nntpserv_entry);
720 gtk_table_attach (GTK_TABLE (serv_table), nntpserv_entry, 1, 4, 0, 1,
721 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
722 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD);
723 /* gtk_table_set_row_spacing (GTK_TABLE (serv_table), 0, 0); */
725 recvserv_entry = gtk_entry_new ();
726 gtk_widget_show (recvserv_entry);
727 gtk_table_attach (GTK_TABLE (serv_table), recvserv_entry, 1, 4, 1, 2,
728 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
729 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD);
731 localmbox_entry = gtk_entry_new ();
732 gtk_widget_show (localmbox_entry);
733 gtk_table_attach (GTK_TABLE (serv_table), localmbox_entry, 1, 4, 2, 3,
734 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
735 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD);
737 smtpserv_entry = gtk_entry_new ();
738 gtk_widget_show (smtpserv_entry);
739 gtk_table_attach (GTK_TABLE (serv_table), smtpserv_entry, 1, 4, 3, 4,
740 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
741 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD);
743 mailcmd_entry = gtk_entry_new ();
744 gtk_widget_show (mailcmd_entry);
745 gtk_table_attach (GTK_TABLE (serv_table), mailcmd_entry, 1, 4, 5, 6,
746 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
747 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD);
749 nntpauth_chkbtn = gtk_check_button_new_with_label
750 (_("NNTP server requires authentication"));
751 gtk_widget_show (nntpauth_chkbtn);
752 gtk_table_attach (GTK_TABLE (serv_table), nntpauth_chkbtn, 0, 4, 6, 7,
753 GTK_EXPAND | GTK_FILL,
755 gtk_signal_connect(GTK_OBJECT(nntpauth_chkbtn), "toggled",
756 GTK_SIGNAL_FUNC(prefs_account_nntpauth_toggled),
759 uid_entry = gtk_entry_new ();
760 gtk_widget_show (uid_entry);
761 gtk_widget_set_usize (uid_entry, DEFAULT_ENTRY_WIDTH, -1);
762 gtk_table_attach (GTK_TABLE (serv_table), uid_entry, 1, 2, 7, 8,
763 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
764 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD);
766 pass_entry = gtk_entry_new ();
767 gtk_widget_show (pass_entry);
768 gtk_widget_set_usize (pass_entry, DEFAULT_ENTRY_WIDTH, -1);
769 gtk_table_attach (GTK_TABLE (serv_table), pass_entry, 3, 4, 7, 8,
770 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
771 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD);
772 gtk_entry_set_visibility (GTK_ENTRY (pass_entry), FALSE);
774 nntpserv_label = gtk_label_new (_("News server"));
775 gtk_widget_show (nntpserv_label);
776 gtk_table_attach (GTK_TABLE (serv_table), nntpserv_label, 0, 1, 0, 1,
777 GTK_FILL, 0, 0, TABLE_YPAD);
778 gtk_misc_set_alignment (GTK_MISC (nntpserv_label), 1, 0.5);
780 recvserv_label = gtk_label_new (_("Server for receiving"));
781 gtk_widget_show (recvserv_label);
782 gtk_table_attach (GTK_TABLE (serv_table), recvserv_label, 0, 1, 1, 2,
783 GTK_FILL, 0, 0, TABLE_YPAD);
784 gtk_misc_set_alignment (GTK_MISC (recvserv_label), 1, 0.5);
786 localmbox_label = gtk_label_new (_("Local mailbox file"));
787 gtk_widget_show (localmbox_label);
788 gtk_table_attach (GTK_TABLE (serv_table), localmbox_label, 0, 1, 2, 3,
789 GTK_FILL, 0, 0, TABLE_YPAD);
790 gtk_misc_set_alignment (GTK_MISC (localmbox_label), 1, 0.5);
791 /* gtk_table_set_row_spacing (GTK_TABLE (serv_table), 2, 0); */
793 smtpserv_label = gtk_label_new (_("SMTP server (send)"));
794 gtk_widget_show (smtpserv_label);
795 gtk_table_attach (GTK_TABLE (serv_table), smtpserv_label, 0, 1, 3, 4,
796 GTK_FILL, 0, 0, TABLE_YPAD);
797 gtk_misc_set_alignment (GTK_MISC (smtpserv_label), 1, 0.5);
798 /* gtk_table_set_row_spacing (GTK_TABLE (serv_table), 2, 0); */
800 mailcmd_chkbtn = gtk_check_button_new_with_label
801 (_("Use mail command rather than SMTP server"));
802 gtk_widget_show (mailcmd_chkbtn);
803 gtk_table_attach (GTK_TABLE (serv_table), mailcmd_chkbtn, 0, 4, 4, 5,
804 GTK_EXPAND | GTK_FILL,
806 gtk_signal_connect(GTK_OBJECT(mailcmd_chkbtn), "toggled",
807 GTK_SIGNAL_FUNC(prefs_account_mailcmd_toggled),
810 mailcmd_label = gtk_label_new (_("command to send mails"));
811 gtk_widget_show (mailcmd_label);
812 gtk_table_attach (GTK_TABLE (serv_table), mailcmd_label, 0, 1, 5, 6,
813 GTK_FILL, 0, 0, TABLE_YPAD);
814 gtk_misc_set_alignment (GTK_MISC (mailcmd_label), 1, 0.5);
815 /* gtk_table_set_row_spacing (GTK_TABLE (serv_table), 2, 0); */
817 uid_label = gtk_label_new (_("User ID"));
818 gtk_widget_show (uid_label);
819 gtk_table_attach (GTK_TABLE (serv_table), uid_label, 0, 1, 7, 8,
820 GTK_FILL, 0, 0, TABLE_YPAD);
821 gtk_misc_set_alignment (GTK_MISC (uid_label), 1, 0.5);
823 pass_label = gtk_label_new (_("Password"));
824 gtk_widget_show (pass_label);
825 gtk_table_attach (GTK_TABLE (serv_table), pass_label, 2, 3, 7, 8,
826 0, 0, 0, TABLE_YPAD);
828 basic.acname_entry = acname_entry;
829 basic.default_chkbtn = default_chkbtn;
831 basic.name_entry = name_entry;
832 basic.addr_entry = addr_entry;
833 basic.org_entry = org_entry;
835 basic.serv_frame = serv_frame;
836 basic.serv_table = serv_table;
837 basic.protocol_optmenu = optmenu;
838 basic.inbox_label = inbox_label;
839 basic.inbox_entry = inbox_entry;
840 basic.recvserv_label = recvserv_label;
841 basic.recvserv_entry = recvserv_entry;
842 basic.smtpserv_label = smtpserv_label;
843 basic.smtpserv_entry = smtpserv_entry;
844 basic.nntpserv_label = nntpserv_label;
845 basic.nntpserv_entry = nntpserv_entry;
846 basic.nntpauth_chkbtn = nntpauth_chkbtn;
847 basic.localmbox_label = localmbox_label;
848 basic.localmbox_entry = localmbox_entry;
849 basic.mailcmd_chkbtn = mailcmd_chkbtn;
850 basic.mailcmd_label = mailcmd_label;
851 basic.mailcmd_entry = mailcmd_entry;
852 basic.uid_label = uid_label;
853 basic.pass_label = pass_label;
854 basic.uid_entry = uid_entry;
855 basic.pass_entry = pass_entry;
858 static void prefs_account_receive_create(void)
863 GtkWidget *rmmail_chkbtn;
864 GtkWidget *getall_chkbtn;
865 GtkWidget *recvatgetall_chkbtn;
866 GtkWidget *filter_on_recv_chkbtn;
868 vbox1 = gtk_vbox_new (FALSE, VSPACING);
869 gtk_widget_show (vbox1);
870 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
871 gtk_container_set_border_width (GTK_CONTAINER (vbox1), BOX_BORDER);
873 PACK_FRAME (vbox1, frame1, _("POP3"));
875 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
876 gtk_widget_show (vbox2);
877 gtk_container_add (GTK_CONTAINER (frame1), vbox2);
878 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
880 PACK_CHECK_BUTTON (vbox2, rmmail_chkbtn,
881 _("Remove messages on server when received"));
882 PACK_CHECK_BUTTON (vbox2, getall_chkbtn,
883 _("Receive all messages on server"));
884 PACK_CHECK_BUTTON (vbox2, recvatgetall_chkbtn,
885 _("Receive at getting from all accounts"));
886 PACK_CHECK_BUTTON (vbox2, filter_on_recv_chkbtn,
887 _("Filter messages on receiving"));
889 receive.pop3_frame = frame1;
890 receive.rmmail_chkbtn = rmmail_chkbtn;
891 receive.getall_chkbtn = getall_chkbtn;
892 receive.recvatgetall_chkbtn = recvatgetall_chkbtn;
893 receive.filter_on_recv_chkbtn = filter_on_recv_chkbtn;
896 static void prefs_account_send_create(void)
901 GtkWidget *date_chkbtn;
902 GtkWidget *msgid_chkbtn;
904 GtkWidget *customhdr_chkbtn;
905 GtkWidget *customhdr_edit_btn;
908 GtkWidget *autocc_chkbtn;
909 GtkWidget *autocc_entry;
910 GtkWidget *autobcc_chkbtn;
911 GtkWidget *autobcc_entry;
912 GtkWidget *autoreplyto_chkbtn;
913 GtkWidget *autoreplyto_entry;
916 GtkWidget *smtp_auth_chkbtn;
917 GtkWidget *pop_bfr_smtp_chkbtn;
919 vbox1 = gtk_vbox_new (FALSE, VSPACING);
920 gtk_widget_show (vbox1);
921 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
922 gtk_container_set_border_width (GTK_CONTAINER (vbox1), BOX_BORDER);
924 PACK_FRAME (vbox1, frame, _("Header"));
926 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
927 gtk_widget_show (vbox2);
928 gtk_container_add (GTK_CONTAINER (frame), vbox2);
929 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
931 PACK_CHECK_BUTTON (vbox2, date_chkbtn, _("Add Date header field"));
932 PACK_CHECK_BUTTON (vbox2, msgid_chkbtn, _("Generate Message-ID"));
934 hbox = gtk_hbox_new (FALSE, 12);
935 gtk_widget_show (hbox);
936 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
938 /* gtk_widget_set_sensitive(hbox, FALSE); */
940 PACK_CHECK_BUTTON (hbox, customhdr_chkbtn,
941 _("Add user-defined header"));
943 customhdr_edit_btn = gtk_button_new_with_label (_(" Edit... "));
944 gtk_widget_show (customhdr_edit_btn);
945 gtk_box_pack_start (GTK_BOX (hbox), customhdr_edit_btn,
948 SET_TOGGLE_SENSITIVITY (customhdr_chkbtn, customhdr_edit_btn);
950 PACK_FRAME (vbox1, frame2, _("Automatically set following addresses"));
952 table = gtk_table_new (3, 2, FALSE);
953 gtk_widget_show (table);
954 gtk_container_add (GTK_CONTAINER (frame2), table);
955 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
956 gtk_table_set_row_spacings (GTK_TABLE (table), VSPACING_NARROW);
957 gtk_table_set_col_spacings (GTK_TABLE (table), 8);
959 autocc_chkbtn = gtk_check_button_new_with_label (_("Cc"));
960 gtk_widget_show (autocc_chkbtn);
961 gtk_table_attach (GTK_TABLE (table), autocc_chkbtn, 0, 1, 0, 1,
964 autocc_entry = gtk_entry_new ();
965 gtk_widget_show (autocc_entry);
966 gtk_table_attach (GTK_TABLE (table), autocc_entry, 1, 2, 0, 1,
967 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
968 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
970 SET_TOGGLE_SENSITIVITY (autocc_chkbtn, autocc_entry);
972 autobcc_chkbtn = gtk_check_button_new_with_label (_("Bcc"));
973 gtk_widget_show (autobcc_chkbtn);
974 gtk_table_attach (GTK_TABLE (table), autobcc_chkbtn, 0, 1, 1, 2,
977 autobcc_entry = gtk_entry_new ();
978 gtk_widget_show (autobcc_entry);
979 gtk_table_attach (GTK_TABLE (table), autobcc_entry, 1, 2, 1, 2,
980 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
981 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
983 SET_TOGGLE_SENSITIVITY (autobcc_chkbtn, autobcc_entry);
985 autoreplyto_chkbtn = gtk_check_button_new_with_label (_("Reply-To"));
986 gtk_widget_show (autoreplyto_chkbtn);
987 gtk_table_attach (GTK_TABLE (table), autoreplyto_chkbtn, 0, 1, 2, 3,
990 autoreplyto_entry = gtk_entry_new ();
991 gtk_widget_show (autoreplyto_entry);
992 gtk_table_attach (GTK_TABLE (table), autoreplyto_entry, 1, 2, 2, 3,
993 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
994 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
996 SET_TOGGLE_SENSITIVITY (autoreplyto_chkbtn, autoreplyto_entry);
998 PACK_FRAME (vbox1, frame3, _("Authentication"));
1000 vbox3 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1001 gtk_widget_show (vbox3);
1002 gtk_container_add (GTK_CONTAINER (frame3), vbox3);
1003 gtk_container_set_border_width (GTK_CONTAINER (vbox3), 8);
1005 PACK_CHECK_BUTTON (vbox3, smtp_auth_chkbtn,
1006 _("SMTP Authentication (SMTP AUTH)"));
1007 PACK_CHECK_BUTTON (vbox3, pop_bfr_smtp_chkbtn,
1008 _("Authenticate with POP3 before sending"));
1009 gtk_widget_set_sensitive(pop_bfr_smtp_chkbtn, FALSE);
1011 gtk_signal_connect(GTK_OBJECT(customhdr_edit_btn), "clicked",
1012 GTK_SIGNAL_FUNC(prefs_account_customhdr_edit),
1015 send.date_chkbtn = date_chkbtn;
1016 send.msgid_chkbtn = msgid_chkbtn;
1017 send.customhdr_chkbtn = customhdr_chkbtn;
1019 send.autocc_chkbtn = autocc_chkbtn;
1020 send.autocc_entry = autocc_entry;
1021 send.autobcc_chkbtn = autobcc_chkbtn;
1022 send.autobcc_entry = autobcc_entry;
1023 send.autoreplyto_chkbtn = autoreplyto_chkbtn;
1024 send.autoreplyto_entry = autoreplyto_entry;
1026 send.smtp_auth_chkbtn = smtp_auth_chkbtn;
1027 send.pop_bfr_smtp_chkbtn = pop_bfr_smtp_chkbtn;
1030 static void prefs_account_compose_create(void)
1035 GtkWidget *sigpath_entry;
1037 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1038 gtk_widget_show (vbox1);
1039 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1040 gtk_container_set_border_width (GTK_CONTAINER (vbox1), BOX_BORDER);
1042 hbox = gtk_hbox_new (FALSE, 8);
1043 gtk_widget_show (hbox);
1044 gtk_box_pack_start (GTK_BOX (vbox1), hbox, FALSE, FALSE, 0);
1046 label = gtk_label_new (_("Signature file"));
1047 gtk_widget_show (label);
1048 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
1050 sigpath_entry = gtk_entry_new ();
1051 gtk_widget_show (sigpath_entry);
1052 gtk_box_pack_start (GTK_BOX (hbox), sigpath_entry, TRUE, TRUE, 0);
1054 compose.sigpath_entry = sigpath_entry;
1058 static void prefs_account_privacy_create(void)
1065 GtkWidget *defaultkey_radiobtn;
1066 GtkWidget *emailkey_radiobtn;
1067 GtkWidget *customkey_radiobtn;
1068 GtkWidget *customkey_entry;
1070 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1071 gtk_widget_show (vbox1);
1072 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1073 gtk_container_set_border_width (GTK_CONTAINER (vbox1), BOX_BORDER);
1075 PACK_FRAME (vbox1, frame1, _("Sign key"));
1077 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1078 gtk_widget_show (vbox2);
1079 gtk_container_add (GTK_CONTAINER (frame1), vbox2);
1080 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1082 defaultkey_radiobtn = gtk_radio_button_new_with_label
1083 (NULL, _("Use default GnuPG key"));
1084 gtk_widget_show (defaultkey_radiobtn);
1085 gtk_box_pack_start (GTK_BOX (vbox2), defaultkey_radiobtn,
1087 gtk_object_set_user_data (GTK_OBJECT (defaultkey_radiobtn),
1088 GINT_TO_POINTER (SIGN_KEY_DEFAULT));
1090 emailkey_radiobtn = gtk_radio_button_new_with_label_from_widget
1091 (GTK_RADIO_BUTTON (defaultkey_radiobtn),
1092 _("Select key by your email address"));
1093 gtk_widget_show (emailkey_radiobtn);
1094 gtk_box_pack_start (GTK_BOX (vbox2), emailkey_radiobtn,
1096 gtk_object_set_user_data (GTK_OBJECT (emailkey_radiobtn),
1097 GINT_TO_POINTER (SIGN_KEY_BY_FROM));
1099 customkey_radiobtn = gtk_radio_button_new_with_label_from_widget
1100 (GTK_RADIO_BUTTON (defaultkey_radiobtn),
1101 _("Specify key manually"));
1102 gtk_widget_show (customkey_radiobtn);
1103 gtk_box_pack_start (GTK_BOX (vbox2), customkey_radiobtn,
1105 gtk_object_set_user_data (GTK_OBJECT (customkey_radiobtn),
1106 GINT_TO_POINTER (SIGN_KEY_CUSTOM));
1108 hbox1 = gtk_hbox_new (FALSE, 8);
1109 gtk_widget_show (hbox1);
1110 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
1112 label = gtk_label_new ("");
1113 gtk_widget_show (label);
1114 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
1115 gtk_widget_set_usize (label, 16, -1);
1117 label = gtk_label_new (_("User or key ID:"));
1118 gtk_widget_show (label);
1119 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
1121 customkey_entry = gtk_entry_new ();
1122 gtk_widget_show (customkey_entry);
1123 gtk_box_pack_start (GTK_BOX (hbox1), customkey_entry,
1126 SET_TOGGLE_SENSITIVITY (customkey_radiobtn, customkey_entry);
1128 privacy.defaultkey_radiobtn = defaultkey_radiobtn;
1129 privacy.emailkey_radiobtn = emailkey_radiobtn;
1130 privacy.customkey_radiobtn = customkey_radiobtn;
1131 privacy.customkey_entry = customkey_entry;
1133 #endif /* USE_GPGME */
1135 static void prefs_account_advanced_create(void)
1140 GtkWidget *checkbtn_smtpport;
1141 GtkWidget *entry_smtpport;
1143 GtkWidget *checkbtn_popport;
1144 GtkWidget *entry_popport;
1146 GtkWidget *checkbtn_domain;
1147 GtkWidget *entry_domain;
1149 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1150 gtk_widget_show (vbox1);
1151 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1152 gtk_container_set_border_width (GTK_CONTAINER (vbox1), BOX_BORDER);
1154 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1155 gtk_widget_show (vbox2);
1156 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1158 hbox1 = gtk_hbox_new (FALSE, 8);
1159 gtk_widget_show (hbox1);
1160 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
1162 PACK_CHECK_BUTTON (hbox1, checkbtn_smtpport, _("Specify SMTP port"));
1164 entry_smtpport = gtk_entry_new_with_max_length (5);
1165 gtk_widget_show (entry_smtpport);
1166 gtk_box_pack_start (GTK_BOX (hbox1), entry_smtpport, FALSE, FALSE, 0);
1167 gtk_widget_set_usize (entry_smtpport, 64, -1);
1168 SET_TOGGLE_SENSITIVITY(checkbtn_smtpport, entry_smtpport);
1170 hbox2 = gtk_hbox_new (FALSE, 8);
1171 gtk_widget_show (hbox2);
1172 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0);
1174 PACK_CHECK_BUTTON (hbox2, checkbtn_popport, _("Specify POP3 port"));
1176 entry_popport = gtk_entry_new_with_max_length (5);
1177 gtk_widget_show (entry_popport);
1178 gtk_box_pack_start (GTK_BOX (hbox2), entry_popport, FALSE, FALSE, 0);
1179 gtk_widget_set_usize (entry_popport, 64, -1);
1180 SET_TOGGLE_SENSITIVITY(checkbtn_popport, entry_popport);
1182 hbox3 = gtk_hbox_new (FALSE, 8);
1183 gtk_widget_show (hbox3);
1184 gtk_box_pack_start (GTK_BOX (vbox2), hbox3, FALSE, FALSE, 0);
1186 PACK_CHECK_BUTTON (hbox3, checkbtn_domain, _("Specify domain name"));
1188 entry_domain = gtk_entry_new ();
1189 gtk_widget_show (entry_domain);
1190 gtk_box_pack_start (GTK_BOX (hbox3), entry_domain, TRUE, TRUE, 0);
1191 SET_TOGGLE_SENSITIVITY(checkbtn_domain, entry_domain);
1193 advanced.smtpport_chkbtn = checkbtn_smtpport;
1194 advanced.smtpport_entry = entry_smtpport;
1195 advanced.popport_chkbtn = checkbtn_popport;
1196 advanced.popport_entry = entry_popport;
1197 advanced.domain_chkbtn = checkbtn_domain;
1198 advanced.domain_entry = entry_domain;
1201 static void prefs_account_key_pressed(GtkWidget *widget, GdkEventKey *event,
1204 if (event && event->keyval == GDK_Escape)
1205 prefs_account_cancel();
1208 static void prefs_account_ok(void)
1210 if (prefs_account_apply() == 0)
1214 static gint prefs_account_apply(void)
1216 RecvProtocol protocol;
1218 GtkWidget *menuitem;
1220 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(basic.protocol_optmenu));
1221 menuitem = gtk_menu_get_active(GTK_MENU(menu));
1222 protocol = GPOINTER_TO_INT
1223 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
1225 if (*gtk_entry_get_text(GTK_ENTRY(basic.addr_entry)) == '\0') {
1226 alertpanel_error(_("Mail address is not entered."));
1229 if ((protocol == A_POP3 || protocol == A_APOP
1230 || (protocol == A_LOCAL && !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(basic.mailcmd_chkbtn)))) && *gtk_entry_get_text(GTK_ENTRY(basic.smtpserv_entry)) == '\0') {
1231 alertpanel_error(_("SMTP server is not entered."));
1234 if ((protocol == A_POP3 || protocol == A_APOP || protocol == A_LOCAL) &&
1235 *gtk_entry_get_text(GTK_ENTRY(basic.uid_entry)) == '\0') {
1236 alertpanel_error(_("User ID is not entered."));
1239 if ((protocol == A_POP3 || protocol == A_APOP) &&
1240 *gtk_entry_get_text(GTK_ENTRY(basic.recvserv_entry)) == '\0') {
1241 alertpanel_error(_("POP3 server is not entered."));
1244 if (protocol == A_IMAP4 &&
1245 *gtk_entry_get_text(GTK_ENTRY(basic.recvserv_entry)) == '\0') {
1246 alertpanel_error(_("IMAP4 server is not entered."));
1249 if (protocol == A_NNTP &&
1250 *gtk_entry_get_text(GTK_ENTRY(basic.nntpserv_entry)) == '\0') {
1251 alertpanel_error(_("NNTP server is not entered."));
1255 if (protocol == A_LOCAL &&
1256 *gtk_entry_get_text(GTK_ENTRY(basic.localmbox_entry)) == '\0') {
1257 alertpanel_error(_("local mailbox filename is not entered."));
1261 if (protocol == A_LOCAL &&
1262 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(basic.mailcmd_chkbtn)) && *gtk_entry_get_text(GTK_ENTRY(basic.mailcmd_entry)) == '\0') {
1263 alertpanel_error(_("mail command is not entered."));
1267 prefs_set_data_from_dialog(param);
1271 static void prefs_account_cancel(void)
1277 static void prefs_account_customhdr_edit(void)
1279 prefs_headers_open(&tmp_ac_prefs);
1284 static void prefs_account_sign_key_set_data_from_radiobtn(PrefParam *pparam)
1286 GtkRadioButton *radiobtn;
1289 radiobtn = GTK_RADIO_BUTTON (*pparam->widget);
1290 group = gtk_radio_button_group (radiobtn);
1291 while (group != NULL) {
1292 GtkToggleButton *btn = GTK_TOGGLE_BUTTON (group->data);
1293 if (gtk_toggle_button_get_active (btn)) {
1294 *((SignKeyType *)pparam->data) = GPOINTER_TO_INT
1295 (gtk_object_get_user_data (GTK_OBJECT (btn)));
1298 group = group->next;
1302 static void prefs_account_sign_key_set_radiobtn(PrefParam *pparam)
1304 GtkRadioButton *radiobtn;
1308 data = GINT_TO_POINTER (*((RecvProtocol *)pparam->data));
1309 radiobtn = GTK_RADIO_BUTTON (*pparam->widget);
1310 group = gtk_radio_button_group (radiobtn);
1311 while (group != NULL) {
1312 GtkToggleButton *btn = GTK_TOGGLE_BUTTON (group->data);
1313 gpointer data1 = gtk_object_get_user_data (GTK_OBJECT (btn));
1314 if (data1 == data) {
1315 gtk_toggle_button_set_active (btn, TRUE);
1318 group = group->next;
1322 #endif /* USE_GPGME */
1324 static void prefs_account_protocol_set_data_from_optmenu(PrefParam *pparam)
1327 GtkWidget *menuitem;
1329 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
1330 menuitem = gtk_menu_get_active(GTK_MENU(menu));
1331 *((RecvProtocol *)pparam->data) = GPOINTER_TO_INT
1332 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
1335 static void prefs_account_protocol_set_optmenu(PrefParam *pparam)
1337 RecvProtocol protocol;
1338 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1340 GtkWidget *menuitem;
1342 protocol = *((RecvProtocol *)pparam->data);
1346 gtk_option_menu_set_history(optmenu, 0);
1349 gtk_option_menu_set_history(optmenu, 1);
1352 gtk_option_menu_set_history(optmenu, 2);
1355 gtk_option_menu_set_history(optmenu, 3);
1358 gtk_option_menu_set_history(optmenu, 4);
1362 gtk_option_menu_set_history(optmenu, 5);
1368 menu = gtk_option_menu_get_menu(optmenu);
1369 menuitem = gtk_menu_get_active(GTK_MENU(menu));
1370 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
1373 static void prefs_account_protocol_activated(GtkMenuItem *menuitem)
1375 RecvProtocol protocol;
1377 protocol = GPOINTER_TO_INT
1378 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
1382 gtk_widget_set_sensitive(basic.inbox_label, FALSE);
1383 gtk_widget_set_sensitive(basic.inbox_entry, FALSE);
1384 gtk_widget_show(basic.nntpserv_label);
1385 gtk_widget_show(basic.nntpserv_entry);
1386 gtk_widget_set_sensitive(basic.nntpauth_chkbtn, TRUE);
1387 gtk_widget_show(basic.nntpauth_chkbtn);
1388 gtk_widget_hide(basic.recvserv_label);
1389 gtk_widget_hide(basic.recvserv_entry);
1390 gtk_widget_hide(basic.smtpserv_label);
1391 gtk_widget_hide(basic.smtpserv_entry);
1392 gtk_widget_hide(basic.localmbox_label);
1393 gtk_widget_hide(basic.localmbox_entry);
1394 gtk_widget_hide(basic.mailcmd_label);
1395 gtk_widget_hide(basic.mailcmd_entry);
1396 gtk_widget_hide(basic.mailcmd_chkbtn);
1397 /* gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table), 3, 0); */
1398 /* update userid/passwd sensitive state */
1399 prefs_account_nntpauth_toggled
1400 (GTK_TOGGLE_BUTTON(basic.nntpauth_chkbtn), NULL);
1401 gtk_widget_set_sensitive(receive.pop3_frame, FALSE);
1404 gtk_widget_set_sensitive(basic.inbox_label, TRUE);
1405 gtk_widget_set_sensitive(basic.inbox_entry, TRUE);
1406 gtk_widget_hide(basic.nntpserv_label);
1407 gtk_widget_hide(basic.nntpserv_entry);
1408 gtk_widget_set_sensitive(basic.nntpauth_chkbtn, FALSE);
1409 gtk_widget_hide(basic.nntpauth_chkbtn);
1410 gtk_widget_set_sensitive(basic.recvserv_label, FALSE);
1411 gtk_widget_set_sensitive(basic.recvserv_entry, FALSE);
1412 gtk_widget_hide(basic.recvserv_label);
1413 gtk_widget_hide(basic.recvserv_entry);
1414 gtk_widget_show(basic.smtpserv_label);
1415 gtk_widget_show(basic.smtpserv_entry);
1416 gtk_widget_show(basic.localmbox_label);
1417 gtk_widget_show(basic.localmbox_entry);
1418 gtk_widget_show(basic.mailcmd_label);
1419 gtk_widget_show(basic.mailcmd_entry);
1420 gtk_widget_show(basic.mailcmd_chkbtn);
1421 /* gtk_table_set_row_spacing */
1422 /* (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW); */
1423 gtk_widget_set_sensitive(basic.uid_label, FALSE);
1424 gtk_widget_set_sensitive(basic.pass_label, FALSE);
1425 gtk_widget_set_sensitive(basic.uid_entry, FALSE);
1426 gtk_widget_set_sensitive(basic.pass_entry, FALSE);
1427 gtk_widget_set_sensitive(receive.pop3_frame, FALSE);
1428 prefs_account_mailcmd_toggled
1429 (GTK_TOGGLE_BUTTON(basic.mailcmd_chkbtn), NULL);
1433 gtk_widget_set_sensitive(basic.inbox_label, TRUE);
1434 gtk_widget_set_sensitive(basic.inbox_entry, TRUE);
1435 gtk_widget_hide(basic.nntpserv_label);
1436 gtk_widget_hide(basic.nntpserv_entry);
1437 gtk_widget_hide(basic.nntpauth_chkbtn);
1438 gtk_widget_set_sensitive(basic.recvserv_label, FALSE);
1439 gtk_widget_set_sensitive(basic.recvserv_entry, FALSE);
1440 gtk_widget_hide(basic.recvserv_label);
1441 gtk_widget_hide(basic.recvserv_entry);
1442 gtk_widget_hide(basic.smtpserv_label);
1443 gtk_widget_hide(basic.smtpserv_entry);
1444 gtk_widget_show(basic.localmbox_label);
1445 gtk_widget_show(basic.localmbox_entry);
1446 gtk_widget_show(basic.mailcmd_label);
1447 gtk_widget_show(basic.mailcmd_entry);
1448 gtk_widget_hide(basic.mailcmd_chkbtn);
1449 gtk_table_set_row_spacing
1450 (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW);
1451 gtk_widget_set_sensitive(basic.uid_label, FALSE);
1452 gtk_widget_set_sensitive(basic.pass_label, FALSE);
1453 gtk_widget_set_sensitive(basic.uid_entry, FALSE);
1454 gtk_widget_set_sensitive(basic.pass_entry, FALSE);
1455 gtk_widget_set_sensitive(receive.pop3_frame, FALSE);
1459 gtk_widget_set_sensitive(basic.inbox_label, TRUE);
1460 gtk_widget_set_sensitive(basic.inbox_entry, TRUE);
1461 gtk_widget_hide(basic.nntpserv_label);
1462 gtk_widget_hide(basic.nntpserv_entry);
1463 gtk_widget_set_sensitive(basic.nntpauth_chkbtn, FALSE);
1464 gtk_widget_hide(basic.nntpauth_chkbtn);
1465 gtk_widget_set_sensitive(basic.recvserv_label, TRUE);
1466 gtk_widget_set_sensitive(basic.recvserv_entry, TRUE);
1467 gtk_widget_show(basic.recvserv_label);
1468 gtk_widget_show(basic.recvserv_entry);
1469 gtk_widget_show(basic.smtpserv_label);
1470 gtk_widget_show(basic.smtpserv_entry);
1471 gtk_widget_hide(basic.localmbox_label);
1472 gtk_widget_hide(basic.localmbox_entry);
1473 gtk_widget_hide(basic.mailcmd_label);
1474 gtk_widget_hide(basic.mailcmd_entry);
1475 gtk_widget_hide(basic.mailcmd_chkbtn);
1476 /* gtk_table_set_row_spacing */
1477 /* (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW); */
1478 gtk_widget_set_sensitive(basic.uid_label, TRUE);
1479 gtk_widget_set_sensitive(basic.pass_label, TRUE);
1480 gtk_widget_set_sensitive(basic.uid_entry, TRUE);
1481 gtk_widget_set_sensitive(basic.pass_entry, TRUE);
1482 gtk_widget_set_sensitive(receive.pop3_frame, FALSE);
1483 gtk_widget_set_sensitive(basic.smtpserv_entry, TRUE);
1484 gtk_widget_set_sensitive(basic.smtpserv_label, TRUE);
1487 gtk_widget_set_sensitive(basic.inbox_label, TRUE);
1488 gtk_widget_set_sensitive(basic.inbox_entry, TRUE);
1489 gtk_widget_set_sensitive(basic.nntpauth_chkbtn, FALSE);
1490 gtk_widget_hide(basic.nntpserv_label);
1491 gtk_widget_hide(basic.nntpserv_entry);
1492 gtk_widget_set_sensitive(basic.nntpauth_chkbtn, FALSE);
1493 gtk_widget_hide(basic.nntpauth_chkbtn);
1494 gtk_widget_set_sensitive(basic.recvserv_label, TRUE);
1495 gtk_widget_set_sensitive(basic.recvserv_entry, TRUE);
1496 gtk_widget_show(basic.recvserv_label);
1497 gtk_widget_show(basic.recvserv_entry);
1498 gtk_widget_show(basic.smtpserv_label);
1499 gtk_widget_show(basic.smtpserv_entry);
1500 gtk_widget_hide(basic.localmbox_label);
1501 gtk_widget_hide(basic.localmbox_entry);
1502 gtk_widget_hide(basic.mailcmd_label);
1503 gtk_widget_hide(basic.mailcmd_entry);
1504 gtk_widget_hide(basic.mailcmd_chkbtn);
1505 /* gtk_table_set_row_spacing */
1506 /* (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW); */
1507 gtk_widget_set_sensitive(basic.uid_label, TRUE);
1508 gtk_widget_set_sensitive(basic.pass_label, TRUE);
1509 gtk_widget_set_sensitive(basic.uid_entry, TRUE);
1510 gtk_widget_set_sensitive(basic.pass_entry, TRUE);
1511 gtk_widget_set_sensitive(receive.pop3_frame, TRUE);
1512 gtk_widget_set_sensitive(basic.smtpserv_entry, TRUE);
1513 gtk_widget_set_sensitive(basic.smtpserv_label, TRUE);
1517 gtk_widget_queue_resize(basic.serv_frame);
1520 static void prefs_account_nntpauth_toggled(GtkToggleButton *button,
1525 if (!GTK_WIDGET_SENSITIVE (GTK_WIDGET (button)))
1527 auth = gtk_toggle_button_get_active (button);
1528 gtk_widget_set_sensitive(basic.uid_label, auth);
1529 gtk_widget_set_sensitive(basic.pass_label, auth);
1530 gtk_widget_set_sensitive(basic.uid_entry, auth);
1531 gtk_widget_set_sensitive(basic.pass_entry, auth);
1534 static void prefs_account_mailcmd_toggled(GtkToggleButton *button,
1537 gboolean use_mailcmd;
1539 use_mailcmd = gtk_toggle_button_get_active (button);
1541 gtk_widget_set_sensitive(basic.mailcmd_entry, use_mailcmd);
1542 gtk_widget_set_sensitive(basic.mailcmd_label, use_mailcmd);
1543 gtk_widget_set_sensitive(basic.smtpserv_entry, !use_mailcmd);
1544 gtk_widget_set_sensitive(basic.smtpserv_label, !use_mailcmd);