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 *recvserv_entry;
70 GtkWidget *smtpserv_entry;
71 GtkWidget *nntpserv_entry;
73 GtkWidget *pass_label;
75 GtkWidget *pass_entry;
78 static struct Receive {
79 GtkWidget *pop3_frame;
80 GtkWidget *rmmail_chkbtn;
81 GtkWidget *getall_chkbtn;
82 GtkWidget *recvatgetall_chkbtn;
83 GtkWidget *filter_on_recv_chkbtn;
87 GtkWidget *date_chkbtn;
88 GtkWidget *msgid_chkbtn;
90 GtkWidget *customhdr_chkbtn;
92 GtkWidget *autocc_chkbtn;
93 GtkWidget *autocc_entry;
94 GtkWidget *autobcc_chkbtn;
95 GtkWidget *autobcc_entry;
96 GtkWidget *autoreplyto_chkbtn;
97 GtkWidget *autoreplyto_entry;
99 GtkWidget *smtp_auth_chkbtn;
100 GtkWidget *pop_bfr_smtp_chkbtn;
103 static struct Compose {
104 GtkWidget *sigpath_entry;
108 static struct Privacy {
109 GtkWidget *defaultkey_radiobtn;
110 GtkWidget *emailkey_radiobtn;
111 GtkWidget *customkey_radiobtn;
112 GtkWidget *customkey_entry;
114 #endif /* USE_GPGME */
116 static struct Advanced {
117 GtkWidget *smtpport_chkbtn;
118 GtkWidget *smtpport_entry;
119 GtkWidget *popport_chkbtn;
120 GtkWidget *popport_entry;
121 GtkWidget *domain_chkbtn;
122 GtkWidget *domain_entry;
125 static void prefs_account_protocol_set_data_from_optmenu(PrefParam *pparam);
126 static void prefs_account_protocol_set_optmenu (PrefParam *pparam);
127 static void prefs_account_protocol_activated (GtkMenuItem *menuitem);
129 static void prefs_account_sign_key_set_data_from_radiobtn (PrefParam *pparam);
130 static void prefs_account_sign_key_set_radiobtn (PrefParam *pparam);
131 #endif /* USE_GPGME */
133 static PrefParam param[] = {
135 {"account_name", NULL, &tmp_ac_prefs.account_name, P_STRING,
136 &basic.acname_entry, prefs_set_data_from_entry, prefs_set_entry},
138 {"is_default", "FALSE", &tmp_ac_prefs.is_default, P_BOOL,
139 &basic.default_chkbtn,
140 prefs_set_data_from_toggle, prefs_set_toggle},
142 {"name", NULL, &tmp_ac_prefs.name, P_STRING,
143 &basic.name_entry, prefs_set_data_from_entry, prefs_set_entry},
145 {"address", NULL, &tmp_ac_prefs.address, P_STRING,
146 &basic.addr_entry, prefs_set_data_from_entry, prefs_set_entry},
148 {"organization", NULL, &tmp_ac_prefs.organization, P_STRING,
149 &basic.org_entry, prefs_set_data_from_entry, prefs_set_entry},
151 {"protocol", NULL, &tmp_ac_prefs.protocol, P_ENUM,
152 &basic.protocol_optmenu,
153 prefs_account_protocol_set_data_from_optmenu,
154 prefs_account_protocol_set_optmenu},
156 {"receive_server", NULL, &tmp_ac_prefs.recv_server, P_STRING,
157 &basic.recvserv_entry, prefs_set_data_from_entry, prefs_set_entry},
159 {"smtp_server", NULL, &tmp_ac_prefs.smtp_server, P_STRING,
160 &basic.smtpserv_entry, prefs_set_data_from_entry, prefs_set_entry},
162 {"nntp_server", NULL, &tmp_ac_prefs.nntp_server, P_STRING,
163 &basic.nntpserv_entry, prefs_set_data_from_entry, prefs_set_entry},
165 {"use_nntp_auth", "FALSE", &tmp_ac_prefs.use_nntp_auth, P_BOOL,
168 {"user_id", "ENV_USER", &tmp_ac_prefs.userid, P_STRING,
169 &basic.uid_entry, prefs_set_data_from_entry, prefs_set_entry},
171 {"password", NULL, &tmp_ac_prefs.passwd, P_STRING,
172 &basic.pass_entry, prefs_set_data_from_entry, prefs_set_entry},
174 {"inbox", "inbox", &tmp_ac_prefs.inbox, P_STRING,
175 &basic.inbox_entry, prefs_set_data_from_entry, prefs_set_entry},
178 {"remove_mail", "TRUE", &tmp_ac_prefs.rmmail, P_BOOL,
179 &receive.rmmail_chkbtn,
180 prefs_set_data_from_toggle, prefs_set_toggle},
182 {"get_all_mail", "FALSE", &tmp_ac_prefs.getall, P_BOOL,
183 &receive.getall_chkbtn,
184 prefs_set_data_from_toggle, prefs_set_toggle},
186 {"receive_at_get_all", "TRUE", &tmp_ac_prefs.recv_at_getall, P_BOOL,
187 &receive.recvatgetall_chkbtn,
188 prefs_set_data_from_toggle, prefs_set_toggle},
190 {"filter_on_receive", "TRUE", &tmp_ac_prefs.filter_on_recv, P_BOOL,
191 &receive.filter_on_recv_chkbtn,
192 prefs_set_data_from_toggle, prefs_set_toggle},
195 {"add_date", "TRUE", &tmp_ac_prefs.add_date, P_BOOL,
197 prefs_set_data_from_toggle, prefs_set_toggle},
199 {"generate_msgid", "TRUE", &tmp_ac_prefs.gen_msgid, P_BOOL,
201 prefs_set_data_from_toggle, prefs_set_toggle},
203 {"add_custom_header", "FALSE", &tmp_ac_prefs.add_customhdr, P_BOOL,
204 &send.customhdr_chkbtn,
205 prefs_set_data_from_toggle, prefs_set_toggle},
207 {"set_autocc", "FALSE", &tmp_ac_prefs.set_autocc, P_BOOL,
209 prefs_set_data_from_toggle, prefs_set_toggle},
211 {"auto_cc", NULL, &tmp_ac_prefs.auto_cc, P_STRING,
213 prefs_set_data_from_entry, prefs_set_entry},
215 {"set_autobcc", "FALSE", &tmp_ac_prefs.set_autobcc, P_BOOL,
216 &send.autobcc_chkbtn,
217 prefs_set_data_from_toggle, prefs_set_toggle},
219 {"auto_bcc", NULL, &tmp_ac_prefs.auto_bcc, P_STRING,
221 prefs_set_data_from_entry, prefs_set_entry},
223 {"set_autoreplyto", "FALSE", &tmp_ac_prefs.set_autoreplyto, P_BOOL,
224 &send.autoreplyto_chkbtn,
225 prefs_set_data_from_toggle, prefs_set_toggle},
227 {"auto_replyto", NULL, &tmp_ac_prefs.auto_replyto, P_STRING,
228 &send.autoreplyto_entry,
229 prefs_set_data_from_entry, prefs_set_entry},
231 {"use_smtp_auth", "FALSE", &tmp_ac_prefs.use_smtp_auth, P_BOOL,
232 &send.smtp_auth_chkbtn,
233 prefs_set_data_from_toggle, prefs_set_toggle},
235 {"pop_before_smtp", "FALSE", &tmp_ac_prefs.pop_before_smtp, P_BOOL,
236 &send.pop_bfr_smtp_chkbtn,
237 prefs_set_data_from_toggle, prefs_set_toggle},
240 {"signature_path", "~/"DEFAULT_SIGNATURE, &tmp_ac_prefs.sig_path, P_STRING,
241 &compose.sigpath_entry,
242 prefs_set_data_from_entry, prefs_set_entry},
246 {"sign_key", NULL, &tmp_ac_prefs.sign_key, P_ENUM,
247 &privacy.defaultkey_radiobtn,
248 prefs_account_sign_key_set_data_from_radiobtn,
249 prefs_account_sign_key_set_radiobtn},
250 {"sign_key_id", "", &tmp_ac_prefs.sign_key_id, P_STRING,
251 &privacy.customkey_entry,
252 prefs_set_data_from_entry, prefs_set_entry},
253 #endif /* USE_GPGME */
256 {"set_smtpport", "FALSE", &tmp_ac_prefs.set_smtpport, P_BOOL,
257 &advanced.smtpport_chkbtn,
258 prefs_set_data_from_toggle, prefs_set_toggle},
260 {"smtp_port", "25", &tmp_ac_prefs.smtpport, P_USHORT,
261 &advanced.smtpport_entry,
262 prefs_set_data_from_entry, prefs_set_entry},
264 {"set_popport", "FALSE", &tmp_ac_prefs.set_popport, P_BOOL,
265 &advanced.popport_chkbtn,
266 prefs_set_data_from_toggle, prefs_set_toggle},
268 {"pop_port", "110", &tmp_ac_prefs.popport, P_USHORT,
269 &advanced.popport_entry,
270 prefs_set_data_from_entry, prefs_set_entry},
272 {"set_domain", "FALSE", &tmp_ac_prefs.set_domain, P_BOOL,
273 &advanced.domain_chkbtn,
274 prefs_set_data_from_toggle, prefs_set_toggle},
276 {"domain", NULL, &tmp_ac_prefs.domain, P_STRING,
277 &advanced.domain_entry,
278 prefs_set_data_from_entry, prefs_set_entry},
280 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
283 static void prefs_account_create (void);
284 static void prefs_account_basic_create (void);
285 static void prefs_account_receive_create (void);
286 static void prefs_account_send_create (void);
287 static void prefs_account_compose_create (void);
289 static void prefs_account_privacy_create (void);
290 #endif /* USE_GPGME */
291 static void prefs_account_advanced_create (void);
293 static void prefs_account_key_pressed (GtkWidget *widget,
296 static void prefs_account_ok (void);
297 static gint prefs_account_apply (void);
298 static void prefs_account_cancel (void);
300 static void prefs_account_customhdr_edit (void);
303 #define VSPACING_NARROW 4
304 #define BOX_BORDER 16
305 #define DEFAULT_ENTRY_WIDTH 80
307 void prefs_account_read_config(PrefsAccount *ac_prefs, const gchar *label)
309 const gchar *p = label;
312 g_return_if_fail(ac_prefs != NULL);
313 g_return_if_fail(label != NULL);
315 memset(&tmp_ac_prefs, 0, sizeof(PrefsAccount));
316 prefs_read_config(param, label, ACCOUNT_RC);
317 *ac_prefs = tmp_ac_prefs;
318 while (*p && !isdigit(*p)) p++;
320 if (id < 0) g_warning("wrong account id: %d\n", id);
321 ac_prefs->account_id = id;
323 prefs_headers_read_config(ac_prefs);
326 void prefs_account_save_config(PrefsAccount *ac_prefs)
330 g_return_if_fail(ac_prefs != NULL);
332 tmp_ac_prefs = *ac_prefs;
333 buf = g_strdup_printf("Account: %d", ac_prefs->account_id);
334 prefs_save_config(param, buf, ACCOUNT_RC);
337 void prefs_account_save_config_all(GList *account_list)
343 if (!account_list) return;
345 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, ACCOUNT_RC, NULL);
346 if ((pfile = prefs_write_open(rcpath)) == NULL) {
352 for (cur = account_list; cur != NULL; cur = cur->next) {
353 tmp_ac_prefs = *(PrefsAccount *)cur->data;
354 if (fprintf(pfile->fp, "[Account: %d]\n",
355 tmp_ac_prefs.account_id) <= 0 ||
356 prefs_write_param(param, pfile->fp) < 0) {
357 g_warning(_("failed to write configuration to file\n"));
358 prefs_write_close_revert(pfile);
362 if (fputc('\n', pfile->fp) == EOF) {
363 FILE_OP_ERROR(rcpath, "fputc");
364 prefs_write_close_revert(pfile);
370 if (prefs_write_close(pfile) < 0)
371 g_warning(_("failed to write configuration to file\n"));
374 void prefs_account_free(PrefsAccount *ac_prefs)
376 if (!ac_prefs) return;
378 tmp_ac_prefs = *ac_prefs;
382 static gint prefs_account_get_new_id(void)
386 static gint last_id = 0;
388 for (ac_list = account_get_list(); ac_list != NULL;
389 ac_list = ac_list->next) {
390 ac = (PrefsAccount *)ac_list->data;
391 if (last_id < ac->account_id)
392 last_id = ac->account_id;
398 PrefsAccount *prefs_account_open(PrefsAccount *ac_prefs)
400 gboolean new_account = FALSE;
402 debug_print(_("Opening account preferences window...\n"));
407 ac_prefs = g_new0(PrefsAccount, 1);
408 ac_prefs->account_id = prefs_account_get_new_id();
412 if (!dialog.window) {
413 prefs_account_create();
416 manage_window_set_transient(GTK_WINDOW(dialog.window));
417 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
418 gtk_widget_grab_focus(dialog.ok_btn);
420 tmp_ac_prefs = *ac_prefs;
423 PrefsAccount *def_ac;
426 prefs_set_dialog_to_default(param);
427 buf = g_strdup_printf(_("Account%d"), ac_prefs->account_id);
428 gtk_entry_set_text(GTK_ENTRY(basic.acname_entry), buf);
430 def_ac = account_get_default();
432 gtk_entry_set_text(GTK_ENTRY(basic.name_entry),
433 def_ac->name ? def_ac->name : "");
434 gtk_entry_set_text(GTK_ENTRY(basic.addr_entry),
435 def_ac->address ? def_ac->address : "");
436 gtk_entry_set_text(GTK_ENTRY(basic.org_entry),
437 def_ac->organization ? def_ac->organization : "");
439 gtk_window_set_title(GTK_WINDOW(dialog.window),
440 _("Preferences for new account"));
441 gtk_widget_hide(dialog.apply_btn);
443 prefs_set_dialog(param);
444 gtk_window_set_title(GTK_WINDOW(dialog.window),
445 _("Preferences for each account"));
446 gtk_widget_show(dialog.apply_btn);
449 gtk_widget_show(dialog.window);
451 gtk_widget_hide(dialog.window);
453 if (cancelled && new_account) {
457 *ac_prefs = tmp_ac_prefs;
462 static void prefs_account_create(void)
466 debug_print(_("Creating account preferences window...\n"));
469 prefs_dialog_create(&dialog);
470 gtk_signal_connect(GTK_OBJECT(dialog.window), "delete_event",
471 GTK_SIGNAL_FUNC(prefs_account_cancel), NULL);
472 gtk_signal_connect(GTK_OBJECT(dialog.window), "key_press_event",
473 GTK_SIGNAL_FUNC(prefs_account_key_pressed), NULL);
474 gtk_signal_connect(GTK_OBJECT(dialog.window), "focus_in_event",
475 GTK_SIGNAL_FUNC(manage_window_focus_in), NULL);
476 gtk_signal_connect(GTK_OBJECT(dialog.window), "focus_out_event",
477 GTK_SIGNAL_FUNC(manage_window_focus_out), NULL);
478 gtk_signal_connect(GTK_OBJECT(dialog.ok_btn), "clicked",
479 GTK_SIGNAL_FUNC(prefs_account_ok), NULL);
480 gtk_signal_connect(GTK_OBJECT(dialog.apply_btn), "clicked",
481 GTK_SIGNAL_FUNC(prefs_account_apply), NULL);
482 gtk_signal_connect(GTK_OBJECT(dialog.cancel_btn), "clicked",
483 GTK_SIGNAL_FUNC(prefs_account_cancel), NULL);
485 prefs_account_basic_create();
486 SET_NOTEBOOK_LABEL(dialog.notebook, _("Basic"), page++);
487 prefs_account_receive_create();
488 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
489 prefs_account_send_create();
490 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
491 prefs_account_compose_create();
492 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
494 prefs_account_privacy_create();
495 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
496 #endif /* USE_GPGME */
497 prefs_account_advanced_create();
498 SET_NOTEBOOK_LABEL(dialog.notebook, _("Advanced"), page++);
500 gtk_widget_show_all(dialog.window);
503 #define SET_ACTIVATE(menuitem) \
505 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", \
506 GTK_SIGNAL_FUNC(prefs_account_protocol_activated), \
510 static void prefs_account_basic_create(void)
515 GtkWidget *acname_entry;
516 GtkWidget *default_chkbtn;
519 GtkWidget *name_entry;
520 GtkWidget *addr_entry;
521 GtkWidget *org_entry;
523 GtkWidget *serv_frame;
526 GtkWidget *optmenu_menu;
528 GtkWidget *inbox_label;
529 GtkWidget *inbox_entry;
530 GtkWidget *serv_table;
531 GtkWidget *recvserv_label;
532 GtkWidget *smtpserv_label;
533 GtkWidget *nntpserv_label;
534 GtkWidget *recvserv_entry;
535 GtkWidget *smtpserv_entry;
536 GtkWidget *nntpserv_entry;
537 GtkWidget *uid_label;
538 GtkWidget *pass_label;
539 GtkWidget *uid_entry;
540 GtkWidget *pass_entry;
542 vbox1 = gtk_vbox_new (FALSE, VSPACING);
543 gtk_widget_show (vbox1);
544 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
545 gtk_container_set_border_width (GTK_CONTAINER (vbox1), BOX_BORDER);
547 hbox = gtk_hbox_new (FALSE, 8);
548 gtk_widget_show (hbox);
549 gtk_box_pack_start (GTK_BOX (vbox1), hbox, FALSE, FALSE, 0);
551 label = gtk_label_new (_("Name of this account"));
552 gtk_widget_show (label);
553 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
555 acname_entry = gtk_entry_new ();
556 gtk_widget_show (acname_entry);
557 gtk_widget_set_usize (acname_entry, DEFAULT_ENTRY_WIDTH, -1);
558 gtk_box_pack_start (GTK_BOX (hbox), acname_entry, TRUE, TRUE, 0);
560 default_chkbtn = gtk_check_button_new_with_label (_("Usually used"));
561 gtk_widget_show (default_chkbtn);
562 gtk_box_pack_end (GTK_BOX (hbox), default_chkbtn, FALSE, FALSE, 0);
564 PACK_FRAME (vbox1, frame1, _("Personal information"));
566 table1 = gtk_table_new (3, 2, FALSE);
567 gtk_widget_show (table1);
568 gtk_container_add (GTK_CONTAINER (frame1), table1);
569 gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
570 gtk_table_set_row_spacings (GTK_TABLE (table1), VSPACING_NARROW);
571 gtk_table_set_col_spacings (GTK_TABLE (table1), 8);
573 label = gtk_label_new (_("Full name"));
574 gtk_widget_show (label);
575 gtk_table_attach (GTK_TABLE (table1), label, 0, 1, 0, 1,
577 gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);
579 label = gtk_label_new (_("Mail address"));
580 gtk_widget_show (label);
581 gtk_table_attach (GTK_TABLE (table1), label, 0, 1, 1, 2,
583 gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);
585 label = gtk_label_new (_("Organization"));
586 gtk_widget_show (label);
587 gtk_table_attach (GTK_TABLE (table1), label, 0, 1, 2, 3,
589 gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);
591 name_entry = gtk_entry_new ();
592 gtk_widget_show (name_entry);
593 gtk_table_attach (GTK_TABLE (table1), name_entry, 1, 2, 0, 1,
594 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
595 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
597 addr_entry = gtk_entry_new ();
598 gtk_widget_show (addr_entry);
599 gtk_table_attach (GTK_TABLE (table1), addr_entry, 1, 2, 1, 2,
600 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
601 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
603 org_entry = gtk_entry_new ();
604 gtk_widget_show (org_entry);
605 gtk_table_attach (GTK_TABLE (table1), org_entry, 1, 2, 2, 3,
606 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
607 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
609 PACK_FRAME (vbox1, serv_frame, _("Server information"));
611 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
612 gtk_widget_show (vbox2);
613 gtk_container_add (GTK_CONTAINER (serv_frame), vbox2);
614 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
616 hbox = gtk_hbox_new (FALSE, 8);
617 gtk_widget_show (hbox);
618 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
620 label = gtk_label_new (_("Protocol"));
621 gtk_widget_show (label);
622 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
624 optmenu = gtk_option_menu_new ();
625 gtk_widget_show (optmenu);
626 gtk_box_pack_start (GTK_BOX (hbox), optmenu, FALSE, FALSE, 0);
628 optmenu_menu = gtk_menu_new ();
630 MENUITEM_ADD (optmenu_menu, menuitem, _("POP3 (normal)"), A_POP3);
631 SET_ACTIVATE (menuitem);
632 MENUITEM_ADD (optmenu_menu, menuitem, _("POP3 (APOP auth)"), A_APOP);
633 SET_ACTIVATE (menuitem);
634 MENUITEM_ADD (optmenu_menu, menuitem, _("IMAP4"), A_IMAP4);
635 SET_ACTIVATE (menuitem);
636 MENUITEM_ADD (optmenu_menu, menuitem, _("News (NNTP)"), A_NNTP);
637 SET_ACTIVATE (menuitem);
638 MENUITEM_ADD (optmenu_menu, menuitem, _("None (local)"), A_LOCAL);
639 SET_ACTIVATE (menuitem);
641 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu), optmenu_menu);
643 inbox_label = gtk_label_new (_("Inbox"));
644 gtk_widget_show (inbox_label);
645 gtk_box_pack_start (GTK_BOX (hbox), inbox_label, FALSE, FALSE, 0);
647 inbox_entry = gtk_entry_new ();
648 gtk_widget_show (inbox_entry);
649 gtk_widget_set_usize (inbox_entry, DEFAULT_ENTRY_WIDTH, -1);
650 gtk_box_pack_start (GTK_BOX (hbox), inbox_entry, TRUE, TRUE, 0);
652 serv_table = gtk_table_new (5, 4, FALSE);
653 gtk_widget_show (serv_table);
654 gtk_box_pack_start (GTK_BOX (vbox2), serv_table, FALSE, FALSE, 0);
655 gtk_table_set_row_spacings (GTK_TABLE (serv_table), VSPACING_NARROW);
656 gtk_table_set_col_spacings (GTK_TABLE (serv_table), 8);
658 nntpserv_entry = gtk_entry_new ();
659 gtk_widget_show (nntpserv_entry);
660 gtk_table_attach (GTK_TABLE (serv_table), nntpserv_entry, 1, 4, 0, 1,
661 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
662 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
663 gtk_table_set_row_spacing (GTK_TABLE (serv_table), 0, 0);
665 recvserv_entry = gtk_entry_new ();
666 gtk_widget_show (recvserv_entry);
667 gtk_table_attach (GTK_TABLE (serv_table), recvserv_entry, 1, 4, 1, 2,
668 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
669 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
671 smtpserv_entry = gtk_entry_new ();
672 gtk_widget_show (smtpserv_entry);
673 gtk_table_attach (GTK_TABLE (serv_table), smtpserv_entry, 1, 4, 2, 3,
674 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
675 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
677 uid_entry = gtk_entry_new ();
678 gtk_widget_show (uid_entry);
679 gtk_widget_set_usize (uid_entry, DEFAULT_ENTRY_WIDTH, -1);
680 gtk_table_attach (GTK_TABLE (serv_table), uid_entry, 1, 2, 4, 5,
681 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
682 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
684 pass_entry = gtk_entry_new ();
685 gtk_widget_show (pass_entry);
686 gtk_widget_set_usize (pass_entry, DEFAULT_ENTRY_WIDTH, -1);
687 gtk_table_attach (GTK_TABLE (serv_table), pass_entry, 3, 4, 4, 5,
688 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
689 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
690 gtk_entry_set_visibility (GTK_ENTRY (pass_entry), FALSE);
692 nntpserv_label = gtk_label_new (_("News server"));
693 gtk_widget_show (nntpserv_label);
694 gtk_table_attach (GTK_TABLE (serv_table), nntpserv_label, 0, 1, 0, 1,
696 gtk_misc_set_alignment (GTK_MISC (nntpserv_label), 1, 0.5);
698 recvserv_label = gtk_label_new (_("Server for receiving"));
699 gtk_widget_show (recvserv_label);
700 gtk_table_attach (GTK_TABLE (serv_table), recvserv_label, 0, 1, 1, 2,
702 gtk_misc_set_alignment (GTK_MISC (recvserv_label), 1, 0.5);
704 smtpserv_label = gtk_label_new (_("SMTP server (send)"));
705 gtk_widget_show (smtpserv_label);
706 gtk_table_attach (GTK_TABLE (serv_table), smtpserv_label, 0, 1, 2, 3,
708 gtk_misc_set_alignment (GTK_MISC (smtpserv_label), 1, 0.5);
709 gtk_table_set_row_spacing (GTK_TABLE (serv_table), 2, 0);
711 uid_label = gtk_label_new (_("User ID"));
712 gtk_widget_show (uid_label);
713 gtk_table_attach (GTK_TABLE (serv_table), uid_label, 0, 1, 4, 5,
715 gtk_misc_set_alignment (GTK_MISC (uid_label), 1, 0.5);
717 pass_label = gtk_label_new (_("Password"));
718 gtk_widget_show (pass_label);
719 gtk_table_attach (GTK_TABLE (serv_table), pass_label, 2, 3, 4, 5,
722 basic.acname_entry = acname_entry;
723 basic.default_chkbtn = default_chkbtn;
725 basic.name_entry = name_entry;
726 basic.addr_entry = addr_entry;
727 basic.org_entry = org_entry;
729 basic.serv_frame = serv_frame;
730 basic.serv_table = serv_table;
731 basic.protocol_optmenu = optmenu;
732 basic.inbox_label = inbox_label;
733 basic.inbox_entry = inbox_entry;
734 basic.recvserv_label = recvserv_label;
735 basic.recvserv_entry = recvserv_entry;
736 basic.smtpserv_label = smtpserv_label;
737 basic.smtpserv_entry = smtpserv_entry;
738 basic.nntpserv_label = nntpserv_label;
739 basic.nntpserv_entry = nntpserv_entry;
740 basic.uid_label = uid_label;
741 basic.pass_label = pass_label;
742 basic.uid_entry = uid_entry;
743 basic.pass_entry = pass_entry;
746 static void prefs_account_receive_create(void)
751 GtkWidget *rmmail_chkbtn;
752 GtkWidget *getall_chkbtn;
753 GtkWidget *recvatgetall_chkbtn;
754 GtkWidget *filter_on_recv_chkbtn;
756 vbox1 = gtk_vbox_new (FALSE, VSPACING);
757 gtk_widget_show (vbox1);
758 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
759 gtk_container_set_border_width (GTK_CONTAINER (vbox1), BOX_BORDER);
761 PACK_FRAME (vbox1, frame1, _("POP3"));
763 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
764 gtk_widget_show (vbox2);
765 gtk_container_add (GTK_CONTAINER (frame1), vbox2);
766 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
768 PACK_CHECK_BUTTON (vbox2, rmmail_chkbtn,
769 _("Remove messages on server when received"));
770 PACK_CHECK_BUTTON (vbox2, getall_chkbtn,
771 _("Receive all messages on server"));
772 PACK_CHECK_BUTTON (vbox2, recvatgetall_chkbtn,
773 _("Receive at getting from all accounts"));
774 PACK_CHECK_BUTTON (vbox2, filter_on_recv_chkbtn,
775 _("Filter messages on receiving"));
777 receive.pop3_frame = frame1;
778 receive.rmmail_chkbtn = rmmail_chkbtn;
779 receive.getall_chkbtn = getall_chkbtn;
780 receive.recvatgetall_chkbtn = recvatgetall_chkbtn;
781 receive.filter_on_recv_chkbtn = filter_on_recv_chkbtn;
784 static void prefs_account_send_create(void)
789 GtkWidget *date_chkbtn;
790 GtkWidget *msgid_chkbtn;
792 GtkWidget *customhdr_chkbtn;
793 GtkWidget *customhdr_edit_btn;
796 GtkWidget *autocc_chkbtn;
797 GtkWidget *autocc_entry;
798 GtkWidget *autobcc_chkbtn;
799 GtkWidget *autobcc_entry;
800 GtkWidget *autoreplyto_chkbtn;
801 GtkWidget *autoreplyto_entry;
804 GtkWidget *smtp_auth_chkbtn;
805 GtkWidget *pop_bfr_smtp_chkbtn;
807 vbox1 = gtk_vbox_new (FALSE, VSPACING);
808 gtk_widget_show (vbox1);
809 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
810 gtk_container_set_border_width (GTK_CONTAINER (vbox1), BOX_BORDER);
812 PACK_FRAME (vbox1, frame, _("Header"));
814 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
815 gtk_widget_show (vbox2);
816 gtk_container_add (GTK_CONTAINER (frame), vbox2);
817 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
819 PACK_CHECK_BUTTON (vbox2, date_chkbtn, _("Add Date header field"));
820 PACK_CHECK_BUTTON (vbox2, msgid_chkbtn, _("Generate Message-ID"));
822 hbox = gtk_hbox_new (FALSE, 12);
823 gtk_widget_show (hbox);
824 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
826 // gtk_widget_set_sensitive(hbox, FALSE);
828 PACK_CHECK_BUTTON (hbox, customhdr_chkbtn,
829 _("Add user-defined header"));
831 customhdr_edit_btn = gtk_button_new_with_label (_(" Edit... "));
832 gtk_widget_show (customhdr_edit_btn);
833 gtk_box_pack_start (GTK_BOX (hbox), customhdr_edit_btn,
836 SET_TOGGLE_SENSITIVITY (customhdr_chkbtn, customhdr_edit_btn);
838 PACK_FRAME (vbox1, frame2, _("Automatically set following addresses"));
840 table = gtk_table_new (3, 2, FALSE);
841 gtk_widget_show (table);
842 gtk_container_add (GTK_CONTAINER (frame2), table);
843 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
844 gtk_table_set_row_spacings (GTK_TABLE (table), VSPACING_NARROW);
845 gtk_table_set_col_spacings (GTK_TABLE (table), 8);
847 autocc_chkbtn = gtk_check_button_new_with_label (_("Cc"));
848 gtk_widget_show (autocc_chkbtn);
849 gtk_table_attach (GTK_TABLE (table), autocc_chkbtn, 0, 1, 0, 1,
852 autocc_entry = gtk_entry_new ();
853 gtk_widget_show (autocc_entry);
854 gtk_table_attach (GTK_TABLE (table), autocc_entry, 1, 2, 0, 1,
855 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
856 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
858 SET_TOGGLE_SENSITIVITY (autocc_chkbtn, autocc_entry);
860 autobcc_chkbtn = gtk_check_button_new_with_label (_("Bcc"));
861 gtk_widget_show (autobcc_chkbtn);
862 gtk_table_attach (GTK_TABLE (table), autobcc_chkbtn, 0, 1, 1, 2,
865 autobcc_entry = gtk_entry_new ();
866 gtk_widget_show (autobcc_entry);
867 gtk_table_attach (GTK_TABLE (table), autobcc_entry, 1, 2, 1, 2,
868 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
869 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
871 SET_TOGGLE_SENSITIVITY (autobcc_chkbtn, autobcc_entry);
873 autoreplyto_chkbtn = gtk_check_button_new_with_label (_("Reply-To"));
874 gtk_widget_show (autoreplyto_chkbtn);
875 gtk_table_attach (GTK_TABLE (table), autoreplyto_chkbtn, 0, 1, 2, 3,
878 autoreplyto_entry = gtk_entry_new ();
879 gtk_widget_show (autoreplyto_entry);
880 gtk_table_attach (GTK_TABLE (table), autoreplyto_entry, 1, 2, 2, 3,
881 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
882 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
884 SET_TOGGLE_SENSITIVITY (autoreplyto_chkbtn, autoreplyto_entry);
886 PACK_FRAME (vbox1, frame3, _("Authentication"));
888 vbox3 = gtk_vbox_new (FALSE, VSPACING_NARROW);
889 gtk_widget_show (vbox3);
890 gtk_container_add (GTK_CONTAINER (frame3), vbox3);
891 gtk_container_set_border_width (GTK_CONTAINER (vbox3), 8);
893 PACK_CHECK_BUTTON (vbox3, smtp_auth_chkbtn,
894 _("SMTP Authentication (SMTP AUTH)"));
895 PACK_CHECK_BUTTON (vbox3, pop_bfr_smtp_chkbtn,
896 _("Authenticate with POP3 before sending"));
897 gtk_widget_set_sensitive(pop_bfr_smtp_chkbtn, FALSE);
899 gtk_signal_connect(GTK_OBJECT(customhdr_edit_btn), "clicked",
900 GTK_SIGNAL_FUNC(prefs_account_customhdr_edit),
903 send.date_chkbtn = date_chkbtn;
904 send.msgid_chkbtn = msgid_chkbtn;
905 send.customhdr_chkbtn = customhdr_chkbtn;
907 send.autocc_chkbtn = autocc_chkbtn;
908 send.autocc_entry = autocc_entry;
909 send.autobcc_chkbtn = autobcc_chkbtn;
910 send.autobcc_entry = autobcc_entry;
911 send.autoreplyto_chkbtn = autoreplyto_chkbtn;
912 send.autoreplyto_entry = autoreplyto_entry;
914 send.smtp_auth_chkbtn = smtp_auth_chkbtn;
915 send.pop_bfr_smtp_chkbtn = pop_bfr_smtp_chkbtn;
918 static void prefs_account_compose_create(void)
923 GtkWidget *sigpath_entry;
925 vbox1 = gtk_vbox_new (FALSE, VSPACING);
926 gtk_widget_show (vbox1);
927 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
928 gtk_container_set_border_width (GTK_CONTAINER (vbox1), BOX_BORDER);
930 hbox = gtk_hbox_new (FALSE, 8);
931 gtk_widget_show (hbox);
932 gtk_box_pack_start (GTK_BOX (vbox1), hbox, FALSE, FALSE, 0);
934 label = gtk_label_new (_("Signature file"));
935 gtk_widget_show (label);
936 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
938 sigpath_entry = gtk_entry_new ();
939 gtk_widget_show (sigpath_entry);
940 gtk_box_pack_start (GTK_BOX (hbox), sigpath_entry, TRUE, TRUE, 0);
942 compose.sigpath_entry = sigpath_entry;
946 static void prefs_account_privacy_create(void)
953 GtkWidget *defaultkey_radiobtn;
954 GtkWidget *emailkey_radiobtn;
955 GtkWidget *customkey_radiobtn;
956 GtkWidget *customkey_entry;
958 vbox1 = gtk_vbox_new (FALSE, VSPACING);
959 gtk_widget_show (vbox1);
960 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
961 gtk_container_set_border_width (GTK_CONTAINER (vbox1), BOX_BORDER);
963 PACK_FRAME (vbox1, frame1, _("Sign key"));
965 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
966 gtk_widget_show (vbox2);
967 gtk_container_add (GTK_CONTAINER (frame1), vbox2);
968 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
970 defaultkey_radiobtn = gtk_radio_button_new_with_label
971 (NULL, _("Use default GnuPG key"));
972 gtk_widget_show (defaultkey_radiobtn);
973 gtk_box_pack_start (GTK_BOX (vbox2), defaultkey_radiobtn,
975 gtk_object_set_user_data (GTK_OBJECT (defaultkey_radiobtn),
976 GINT_TO_POINTER (SIGN_KEY_DEFAULT));
978 emailkey_radiobtn = gtk_radio_button_new_with_label_from_widget
979 (GTK_RADIO_BUTTON (defaultkey_radiobtn),
980 _("Select key by your email address"));
981 gtk_widget_show (emailkey_radiobtn);
982 gtk_box_pack_start (GTK_BOX (vbox2), emailkey_radiobtn,
984 gtk_object_set_user_data (GTK_OBJECT (emailkey_radiobtn),
985 GINT_TO_POINTER (SIGN_KEY_BY_FROM));
987 customkey_radiobtn = gtk_radio_button_new_with_label_from_widget
988 (GTK_RADIO_BUTTON (defaultkey_radiobtn),
989 _("Specify key manually"));
990 gtk_widget_show (customkey_radiobtn);
991 gtk_box_pack_start (GTK_BOX (vbox2), customkey_radiobtn,
993 gtk_object_set_user_data (GTK_OBJECT (customkey_radiobtn),
994 GINT_TO_POINTER (SIGN_KEY_CUSTOM));
996 hbox1 = gtk_hbox_new (FALSE, 8);
997 gtk_widget_show (hbox1);
998 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
1000 label = gtk_label_new ("");
1001 gtk_widget_show (label);
1002 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
1003 gtk_widget_set_usize (label, 16, -1);
1005 label = gtk_label_new (_("User or key ID:"));
1006 gtk_widget_show (label);
1007 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
1009 customkey_entry = gtk_entry_new ();
1010 gtk_widget_show (customkey_entry);
1011 gtk_box_pack_start (GTK_BOX (hbox1), customkey_entry,
1014 SET_TOGGLE_SENSITIVITY (customkey_radiobtn, customkey_entry);
1016 privacy.defaultkey_radiobtn = defaultkey_radiobtn;
1017 privacy.emailkey_radiobtn = emailkey_radiobtn;
1018 privacy.customkey_radiobtn = customkey_radiobtn;
1019 privacy.customkey_entry = customkey_entry;
1021 #endif /* USE_GPGME */
1023 static void prefs_account_advanced_create(void)
1028 GtkWidget *checkbtn_smtpport;
1029 GtkWidget *entry_smtpport;
1031 GtkWidget *checkbtn_popport;
1032 GtkWidget *entry_popport;
1034 GtkWidget *checkbtn_domain;
1035 GtkWidget *entry_domain;
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 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1043 gtk_widget_show (vbox2);
1044 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1046 hbox1 = gtk_hbox_new (FALSE, 8);
1047 gtk_widget_show (hbox1);
1048 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
1050 PACK_CHECK_BUTTON (hbox1, checkbtn_smtpport, _("Specify SMTP port"));
1052 entry_smtpport = gtk_entry_new_with_max_length (5);
1053 gtk_widget_show (entry_smtpport);
1054 gtk_box_pack_start (GTK_BOX (hbox1), entry_smtpport, FALSE, FALSE, 0);
1055 gtk_widget_set_usize (entry_smtpport, 64, -1);
1056 SET_TOGGLE_SENSITIVITY(checkbtn_smtpport, entry_smtpport);
1058 hbox2 = gtk_hbox_new (FALSE, 8);
1059 gtk_widget_show (hbox2);
1060 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0);
1062 PACK_CHECK_BUTTON (hbox2, checkbtn_popport, _("Specify POP3 port"));
1064 entry_popport = gtk_entry_new_with_max_length (5);
1065 gtk_widget_show (entry_popport);
1066 gtk_box_pack_start (GTK_BOX (hbox2), entry_popport, FALSE, FALSE, 0);
1067 gtk_widget_set_usize (entry_popport, 64, -1);
1068 SET_TOGGLE_SENSITIVITY(checkbtn_popport, entry_popport);
1070 hbox3 = gtk_hbox_new (FALSE, 8);
1071 gtk_widget_show (hbox3);
1072 gtk_box_pack_start (GTK_BOX (vbox2), hbox3, FALSE, FALSE, 0);
1074 PACK_CHECK_BUTTON (hbox3, checkbtn_domain, _("Specify domain name"));
1076 entry_domain = gtk_entry_new ();
1077 gtk_widget_show (entry_domain);
1078 gtk_box_pack_start (GTK_BOX (hbox3), entry_domain, TRUE, TRUE, 0);
1079 SET_TOGGLE_SENSITIVITY(checkbtn_domain, entry_domain);
1081 advanced.smtpport_chkbtn = checkbtn_smtpport;
1082 advanced.smtpport_entry = entry_smtpport;
1083 advanced.popport_chkbtn = checkbtn_popport;
1084 advanced.popport_entry = entry_popport;
1085 advanced.domain_chkbtn = checkbtn_domain;
1086 advanced.domain_entry = entry_domain;
1089 static void prefs_account_key_pressed(GtkWidget *widget, GdkEventKey *event,
1092 if (event && event->keyval == GDK_Escape)
1093 prefs_account_cancel();
1096 static void prefs_account_ok(void)
1098 if (prefs_account_apply() == 0)
1102 static gint prefs_account_apply(void)
1104 RecvProtocol protocol;
1106 GtkWidget *menuitem;
1108 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(basic.protocol_optmenu));
1109 menuitem = gtk_menu_get_active(GTK_MENU(menu));
1110 protocol = GPOINTER_TO_INT
1111 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
1113 if (*gtk_entry_get_text(GTK_ENTRY(basic.addr_entry)) == '\0') {
1114 alertpanel_error(_("Mail address is not entered."));
1117 if ((protocol == A_POP3 || protocol == A_APOP || protocol == A_LOCAL) &&
1118 *gtk_entry_get_text(GTK_ENTRY(basic.smtpserv_entry)) == '\0') {
1119 alertpanel_error(_("SMTP server is not entered."));
1122 if ((protocol == A_POP3 || protocol == A_APOP || protocol == A_LOCAL) &&
1123 *gtk_entry_get_text(GTK_ENTRY(basic.uid_entry)) == '\0') {
1124 alertpanel_error(_("User ID is not entered."));
1127 if ((protocol == A_POP3 || protocol == A_APOP) &&
1128 *gtk_entry_get_text(GTK_ENTRY(basic.recvserv_entry)) == '\0') {
1129 alertpanel_error(_("POP3 server is not entered."));
1132 if (protocol == A_IMAP4 &&
1133 *gtk_entry_get_text(GTK_ENTRY(basic.recvserv_entry)) == '\0') {
1134 alertpanel_error(_("IMAP4 server is not entered."));
1137 if (protocol == A_NNTP &&
1138 *gtk_entry_get_text(GTK_ENTRY(basic.nntpserv_entry)) == '\0') {
1139 alertpanel_error(_("NNTP server is not entered."));
1143 prefs_set_data_from_dialog(param);
1147 static void prefs_account_cancel(void)
1153 static void prefs_account_customhdr_edit(void)
1155 prefs_headers_open(&tmp_ac_prefs);
1160 static void prefs_account_sign_key_set_data_from_radiobtn(PrefParam *pparam)
1162 GtkRadioButton *radiobtn;
1165 radiobtn = GTK_RADIO_BUTTON (*pparam->widget);
1166 group = gtk_radio_button_group (radiobtn);
1167 while (group != NULL) {
1168 GtkToggleButton *btn = GTK_TOGGLE_BUTTON (group->data);
1169 if (gtk_toggle_button_get_active (btn)) {
1170 *((SignKeyType *)pparam->data) = GPOINTER_TO_INT
1171 (gtk_object_get_user_data (GTK_OBJECT (btn)));
1174 group = group->next;
1178 static void prefs_account_sign_key_set_radiobtn(PrefParam *pparam)
1180 GtkRadioButton *radiobtn;
1184 data = GINT_TO_POINTER (*((RecvProtocol *)pparam->data));
1185 radiobtn = GTK_RADIO_BUTTON (*pparam->widget);
1186 group = gtk_radio_button_group (radiobtn);
1187 while (group != NULL) {
1188 GtkToggleButton *btn = GTK_TOGGLE_BUTTON (group->data);
1189 gpointer data1 = gtk_object_get_user_data (GTK_OBJECT (btn));
1190 if (data1 == data) {
1191 gtk_toggle_button_set_active (btn, TRUE);
1194 group = group->next;
1198 #endif /* USE_GPGME */
1200 static void prefs_account_protocol_set_data_from_optmenu(PrefParam *pparam)
1203 GtkWidget *menuitem;
1205 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
1206 menuitem = gtk_menu_get_active(GTK_MENU(menu));
1207 *((RecvProtocol *)pparam->data) = GPOINTER_TO_INT
1208 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
1211 static void prefs_account_protocol_set_optmenu(PrefParam *pparam)
1213 RecvProtocol protocol;
1214 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1216 GtkWidget *menuitem;
1218 protocol = *((RecvProtocol *)pparam->data);
1222 gtk_option_menu_set_history(optmenu, 0);
1225 gtk_option_menu_set_history(optmenu, 1);
1228 gtk_option_menu_set_history(optmenu, 2);
1231 gtk_option_menu_set_history(optmenu, 3);
1234 gtk_option_menu_set_history(optmenu, 4);
1239 menu = gtk_option_menu_get_menu(optmenu);
1240 menuitem = gtk_menu_get_active(GTK_MENU(menu));
1241 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
1244 static void prefs_account_protocol_activated(GtkMenuItem *menuitem)
1246 RecvProtocol protocol;
1248 protocol = GPOINTER_TO_INT
1249 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
1253 gtk_widget_set_sensitive(basic.inbox_label, FALSE);
1254 gtk_widget_set_sensitive(basic.inbox_entry, FALSE);
1255 gtk_widget_show(basic.nntpserv_label);
1256 gtk_widget_show(basic.nntpserv_entry);
1257 gtk_widget_hide(basic.recvserv_label);
1258 gtk_widget_hide(basic.recvserv_entry);
1259 gtk_widget_hide(basic.smtpserv_label);
1260 gtk_widget_hide(basic.smtpserv_entry);
1261 gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table), 3, 0);
1262 gtk_widget_set_sensitive(basic.uid_label, FALSE);
1263 gtk_widget_set_sensitive(basic.pass_label, FALSE);
1264 gtk_widget_set_sensitive(basic.uid_entry, FALSE);
1265 gtk_widget_set_sensitive(basic.pass_entry, FALSE);
1266 gtk_widget_set_sensitive(receive.pop3_frame, FALSE);
1269 gtk_widget_set_sensitive(basic.inbox_label, TRUE);
1270 gtk_widget_set_sensitive(basic.inbox_entry, TRUE);
1271 gtk_widget_hide(basic.nntpserv_label);
1272 gtk_widget_hide(basic.nntpserv_entry);
1273 gtk_widget_set_sensitive(basic.recvserv_label, FALSE);
1274 gtk_widget_set_sensitive(basic.recvserv_entry, FALSE);
1275 gtk_widget_show(basic.recvserv_label);
1276 gtk_widget_show(basic.recvserv_entry);
1277 gtk_widget_show(basic.smtpserv_label);
1278 gtk_widget_show(basic.smtpserv_entry);
1279 gtk_table_set_row_spacing
1280 (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW);
1281 gtk_widget_set_sensitive(basic.uid_label, FALSE);
1282 gtk_widget_set_sensitive(basic.pass_label, FALSE);
1283 gtk_widget_set_sensitive(basic.uid_entry, FALSE);
1284 gtk_widget_set_sensitive(basic.pass_entry, FALSE);
1285 gtk_widget_set_sensitive(receive.pop3_frame, FALSE);
1288 gtk_widget_set_sensitive(basic.inbox_label, TRUE);
1289 gtk_widget_set_sensitive(basic.inbox_entry, TRUE);
1290 gtk_widget_hide(basic.nntpserv_label);
1291 gtk_widget_hide(basic.nntpserv_entry);
1292 gtk_widget_set_sensitive(basic.recvserv_label, TRUE);
1293 gtk_widget_set_sensitive(basic.recvserv_entry, TRUE);
1294 gtk_widget_show(basic.recvserv_label);
1295 gtk_widget_show(basic.recvserv_entry);
1296 gtk_widget_show(basic.smtpserv_label);
1297 gtk_widget_show(basic.smtpserv_entry);
1298 gtk_table_set_row_spacing
1299 (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW);
1300 gtk_widget_set_sensitive(basic.uid_label, TRUE);
1301 gtk_widget_set_sensitive(basic.pass_label, TRUE);
1302 gtk_widget_set_sensitive(basic.uid_entry, TRUE);
1303 gtk_widget_set_sensitive(basic.pass_entry, TRUE);
1304 gtk_widget_set_sensitive(receive.pop3_frame, FALSE);
1307 gtk_widget_set_sensitive(basic.inbox_label, TRUE);
1308 gtk_widget_set_sensitive(basic.inbox_entry, TRUE);
1309 gtk_widget_hide(basic.nntpserv_label);
1310 gtk_widget_hide(basic.nntpserv_entry);
1311 gtk_widget_set_sensitive(basic.recvserv_label, TRUE);
1312 gtk_widget_set_sensitive(basic.recvserv_entry, TRUE);
1313 gtk_widget_show(basic.recvserv_label);
1314 gtk_widget_show(basic.recvserv_entry);
1315 gtk_widget_show(basic.smtpserv_label);
1316 gtk_widget_show(basic.smtpserv_entry);
1317 gtk_table_set_row_spacing
1318 (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW);
1319 gtk_widget_set_sensitive(basic.uid_label, TRUE);
1320 gtk_widget_set_sensitive(basic.pass_label, TRUE);
1321 gtk_widget_set_sensitive(basic.uid_entry, TRUE);
1322 gtk_widget_set_sensitive(basic.pass_entry, TRUE);
1323 gtk_widget_set_sensitive(receive.pop3_frame, TRUE);
1327 gtk_widget_queue_resize(basic.serv_frame);