2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2007 Colin Leroy <colin@colino.net>
4 * and the Claws Mail team
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
28 #include <glib/gi18n.h>
29 #include <gdk/gdkkeysyms.h>
30 #include <gtk/gtkwidget.h>
31 #include <gtk/gtkvbox.h>
32 #include <gtk/gtkbox.h>
33 #include <gtk/gtktable.h>
34 #include <gtk/gtkentry.h>
35 #include <gtk/gtklabel.h>
36 #include <gtk/gtknotebook.h>
37 #include <gtk/gtktogglebutton.h>
38 #include <gtk/gtkcheckbutton.h>
54 #include "prefs_account.h"
55 #include "mainwindow.h"
56 #include "stock_pixmap.h"
59 #include "alertpanel.h"
60 #if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
63 #include "prefs_common.h"
66 #include <libgnomevfs/gnome-vfs-volume.h>
67 #include <libgnomevfs/gnome-vfs-volume-monitor.h>
68 #include <libgnomevfs/gnome-vfs-utils.h>
79 int WELCOME_PAGE = -1;
83 int MAILBOX_PAGE = -1;
96 GtkWidget *organization;
98 GtkWidget *mailbox_name;
99 GtkWidget *mailbox_label;
101 GtkWidget *smtp_server;
102 GtkWidget *smtp_auth;
103 GtkWidget *smtp_username;
104 GtkWidget *smtp_password;
105 GtkWidget *smtp_username_label;
106 GtkWidget *smtp_password_label;
108 GtkWidget *recv_type;
109 GtkWidget *recv_label;
110 GtkWidget *recv_server;
111 GtkWidget *recv_username;
112 GtkWidget *recv_password;
113 GtkWidget *recv_username_label;
114 GtkWidget *recv_password_label;
115 GtkWidget *recv_imap_label;
116 GtkWidget *recv_imap_subdir;
117 GtkWidget *subsonly_checkbtn;
118 GtkWidget *no_imap_warning;
119 #if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
120 GtkWidget *smtp_use_ssl;
121 GtkWidget *recv_use_ssl;
122 GtkWidget *smtp_use_tls;
123 GtkWidget *recv_use_tls;
127 GtkWidget *data_root_nokia_radiobtn;
128 GtkWidget *data_root_mmc1_radiobtn;
129 GtkWidget *data_root_mmc2_radiobtn;
130 GnomeVFSVolumeMonitor *volmon;
131 gulong volmon_mount_sigid;
132 gulong volmon_unmount_sigid;
133 GnomeVFSVolume *vol_mmc1;
134 GnomeVFSVolume *vol_mmc2;
136 gboolean create_mailbox;
142 typedef struct _AccountTemplate {
151 RecvProtocol recvtype;
163 static AccountTemplate tmpl;
165 static PrefParam template_params[] = {
166 {"name", "$USERNAME",
167 &tmpl.name, P_STRING, NULL, NULL, NULL},
168 {"domain", "$DEFAULTDOMAIN",
169 &tmpl.domain, P_STRING, NULL, NULL, NULL},
170 {"email", "$NAME_MAIL@$DOMAIN",
171 &tmpl.email, P_STRING, NULL, NULL, NULL},
173 &tmpl.organization, P_STRING, NULL, NULL, NULL},
174 {"smtpserver", "smtp.$DOMAIN",
175 &tmpl.smtpserver, P_STRING, NULL, NULL, NULL},
176 {"smtpauth", "FALSE",
177 &tmpl.smtpauth, P_BOOL, NULL, NULL, NULL},
179 &tmpl.smtpuser, P_STRING, NULL, NULL, NULL},
181 &tmpl.smtppass, P_STRING, NULL, NULL, NULL},
183 &tmpl.recvtype, P_INT, NULL, NULL, NULL},
184 {"recvserver", "pop.$DOMAIN",
185 &tmpl.recvserver, P_STRING, NULL, NULL, NULL},
186 {"recvuser", "$LOGIN",
187 &tmpl.recvuser, P_STRING, NULL, NULL, NULL},
189 &tmpl.recvpass, P_STRING, NULL, NULL, NULL},
191 &tmpl.imapdir, P_STRING, NULL, NULL, NULL},
193 &tmpl.subsonly, P_BOOL, NULL, NULL, NULL},
194 {"mboxfile", "/var/mail/$LOGIN",
195 &tmpl.mboxfile, P_STRING, NULL, NULL, NULL},
197 &tmpl.mailbox, P_STRING, NULL, NULL, NULL},
199 &tmpl.smtpssl, P_INT, NULL, NULL, NULL},
201 &tmpl.recvssl, P_INT, NULL, NULL, NULL},
202 {NULL, NULL, NULL, P_INT, NULL, NULL, NULL}
206 static gchar *accountrc_tmpl =
207 "[AccountTemplate]\n"
208 "#you can use $DEFAULTDOMAIN here\n"
209 "#domain must be defined before the variables that use it\n"
210 "#by default, domain is extracted from the hostname\n"
213 "#you can use $USERNAME for name (this is the default)\n"
216 "#you can use $LOGIN, $NAME_MAIL and $DOMAIN here \n"
217 "#$NAME_MAIL is the name without uppercase and with dots instead\n"
219 "#the default is $NAME_MAIL@$DOMAIN\n"
222 "#you can use $DOMAIN here\n"
223 "#the default organization is empty\n"
226 "#you can use $DOMAIN here \n"
227 "#the default is stmp.$DOMAIN\n"
230 "#Whether to use smtp authentication\n"
231 "#the default is 0 (no)\n"
235 "#you can use $LOGIN, $NAME_MAIL, $DOMAIN or $EMAIL here\n"
236 "#the default is empty (same as reception username)\n"
240 "#the default is empty (same as reception password)\n"
243 "#recvtype can be:\n"
246 "#5 for a local mbox file\n"
249 "#you can use $DOMAIN here \n"
250 "#the default is {pop,imap}.$DOMAIN\n"
253 "#you can use $LOGIN, $NAME_MAIL, $DOMAIN or $EMAIL here\n"
254 "#default is $LOGIN\n"
257 "#default is empty\n"
260 "#imap dir if imap (relative to the home on the server)\n"
261 "#default is empty\n"
264 "#show subscribed folders only, if imap\n"
268 "#mbox file if local\n"
269 "#you can use $LOGIN here\n"
270 "#default is /var/mail/$LOGIN\n"
273 "#mailbox name if pop3 or local\n"
274 "#relative path from the user's home\n"
275 "#default is \"Mail\"\n"
278 "#whether to use ssl on STMP connections\n"
279 "#default is 0, 1 is ssl, 2 is starttls\n"
282 "#whether to use ssl on pop or imap connections\n"
283 "#default is 0, 1 is ssl, 2 is starttls\n"
286 static gchar *wizard_get_default_domain_name(void)
288 static gchar *domain_name = NULL;
290 if (domain_name == NULL) {
291 domain_name = g_strdup(get_domain_name());
292 if (strchr(domain_name, '.') != strrchr(domain_name, '.')
293 && strlen(strchr(domain_name, '.')) > 6) {
294 gchar *tmp = g_strdup(strchr(domain_name, '.')+1);
302 static gchar *get_name_for_mail(void)
304 gchar *name = g_strdup(tmpl.name);
308 while(strstr(name, " "))
309 *strstr(name, " ")='.';
314 #define PARSE_DEFAULT(str) { \
315 gchar *tmp = NULL, *new = NULL; \
317 tmp = g_strdup(str); \
318 if (strstr(str, "$USERNAME")) { \
319 tmp = g_strdup(str); \
320 *strstr(tmp, "$USERNAME") = '\0'; \
321 new = g_strconcat(tmp, g_get_real_name(), \
322 strstr(str, "$USERNAME")+strlen("$USERNAME"), \
329 if (strstr(str, "$LOGIN")) { \
330 tmp = g_strdup(str); \
331 *strstr(tmp, "$LOGIN") = '\0'; \
332 new = g_strconcat(tmp, g_get_user_name(), \
333 strstr(str, "$LOGIN")+strlen("$LOGIN"), \
340 if (strstr(str, "$EMAIL")) { \
341 tmp = g_strdup(str); \
342 *strstr(tmp, "$EMAIL") = '\0'; \
343 new = g_strconcat(tmp, tmpl.email, \
344 strstr(str, "$EMAIL")+strlen("$EMAIL"), \
351 if (strstr(str, "$NAME_MAIL")) { \
352 tmp = g_strdup(str); \
353 *strstr(tmp, "$NAME_MAIL") = '\0'; \
354 new = g_strconcat(tmp, get_name_for_mail(), \
355 strstr(str, "$NAME_MAIL")+strlen("$NAME_MAIL"), \
362 if (strstr(str, "$DEFAULTDOMAIN")) { \
363 tmp = g_strdup(str); \
364 *strstr(tmp, "$DEFAULTDOMAIN") = '\0'; \
365 new = g_strconcat(tmp, wizard_get_default_domain_name(), \
366 strstr(str, "$DEFAULTDOMAIN")+strlen("$DEFAULTDOMAIN"), \
373 if (strstr(str, "$DOMAIN")) { \
374 tmp = g_strdup(str); \
375 *strstr(tmp, "$DOMAIN") = '\0'; \
376 new = g_strconcat(tmp, tmpl.domain, \
377 strstr(str, "$DOMAIN")+strlen("$DOMAIN"), \
386 static void wizard_read_defaults(void)
390 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, "accountrc.tmpl", NULL);
391 if (!is_file_exist(rcpath)) {
392 str_write_to_file(accountrc_tmpl, rcpath);
395 prefs_read_config(template_params, "AccountTemplate", rcpath, NULL);
397 PARSE_DEFAULT(tmpl.domain);
398 PARSE_DEFAULT(tmpl.name);
399 PARSE_DEFAULT(tmpl.email);
400 PARSE_DEFAULT(tmpl.organization);
401 PARSE_DEFAULT(tmpl.smtpserver);
402 PARSE_DEFAULT(tmpl.smtpuser);
403 PARSE_DEFAULT(tmpl.smtppass);
404 PARSE_DEFAULT(tmpl.recvserver);
405 PARSE_DEFAULT(tmpl.recvuser);
406 PARSE_DEFAULT(tmpl.recvpass);
407 PARSE_DEFAULT(tmpl.imapdir);
408 PARSE_DEFAULT(tmpl.mboxfile);
409 PARSE_DEFAULT(tmpl.mailbox);
412 "%s, %s, %s, %s, %s, %d, %s, %s, %s, %s, %s, %s, %d, %d\n",
413 tmpl.name,tmpl.domain,tmpl.email,tmpl.organization,tmpl.smtpserver,
414 tmpl.recvtype,tmpl.recvserver,tmpl.recvuser,tmpl.recvpass,
415 tmpl.imapdir,tmpl.mboxfile,tmpl.mailbox,tmpl.smtpssl,tmpl.recvssl);
420 static void initialize_fonts(WizardWindow *wizard)
422 GtkWidget *widget = wizard->email;
423 gint size = pango_font_description_get_size(
424 widget->style->font_desc)
428 tmp = g_strdup(prefs_common.textfont);
429 if (strrchr(tmp, ' ')) {
430 *(strrchr(tmp, ' ')) = '\0';
431 new = g_strdup_printf("%s %d", tmp, size);
432 g_free(prefs_common.textfont);
433 prefs_common.textfont = new;
437 tmp = g_strdup(prefs_common.smallfont);
438 if (strrchr(tmp, ' ')) {
439 *(strrchr(tmp, ' ')) = '\0';
440 new = g_strdup_printf("%s %d", tmp, size);
441 g_free(prefs_common.smallfont);
442 prefs_common.smallfont = new;
446 tmp = g_strdup(prefs_common.normalfont);
447 if (strrchr(tmp, ' ')) {
448 *(strrchr(tmp, ' ')) = '\0';
449 new = g_strdup_printf("%s %d", tmp, size);
450 g_free(prefs_common.normalfont);
451 prefs_common.normalfont = new;
456 #define XFACE "+}Axz@~a,-Yx?0Ysa|q}CLRH=89Y]\"')DSX^<6p\"d)'81yx5%G#u^o*7JG&[aPU0h1Ux.vb2yIjH83{5`/bVo|~nn/i83vE^E)qk-4W)_E.4Y=D*qvf/,Ci_=P<iY<M6"
457 #define FACE "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAM1BMVEUAAAAcJCI\n\
458 ONl1JUi0+Z4daY2NZciPabV9ykS5kj6Wsl2ybmZOBsMjZxK2wzN3Pzczs7OsCAGN0AAAAAXRSTlM\n\
459 AQObYZgAAAAFiS0dEAIgFHUgAAAIVSURBVEjH1ZbtlqMgDIaFECoGhPu/2s0b0Lais/NzN6d1OJ7\n\
460 3yReQzrL8B5Zy3rvl9At52Pf2tv1vSMjtYj8jaa8XUyI/yn3YD6sigj/2Tf5Bn069MIsTPHvx/t5\n\
461 /3rU/6JCIY3YwGe26r/cwUfE3cFe5T28L0K5rJAUHEeYAQxs8DHojjk3M9wECU4xxjXisI8RA0gy\n\
462 oczJZJOjxiTFZVTchAnIRJrgdmEGDyFfAI3UuG5FmYTkR9RDrIC4H0SqV4pzpEcUp0HNLjwBv+jA\n\
463 dikUE5g9iBvzmu3sH2oDk4lnHd829+2Q9gj6kDqDPg7hsGwBzH02fE3ZCt6ZHmlNKIMjMeRwra5I\n\
464 ecgNoBnLGPmzaHPJIwLY8Sq2M/tLUJfj0QcqmfVXAdLSStIYF8dzWjBBb2VgvDa4mO9oc651OiUo\n\
465 BEKbZokdPATF9E9oKAjQJcJOniaPXrVZRAnVWaqIyqRoNC8ZJvgCcW8XN39RqxVP1rS8Yd4WnCdN\n\
466 aRTo2jJRDbg3vtCpEUGffgDPhqKDaSuVqYtOplFIvIcx3HUI5/MuIWl6vKyBjNlqEru8hbFXqBPA\n\
467 5TpHGIUZOePeaIyzfQ/g9Xg0opU1AvdfXM9floYhv92pPAE96OZtkPV8eivgQi9RTfwPUU36I26n\n\
468 Hy+WuCJzAT7efMSeA1TNf2/VugDz+dN139xfA5ffxGZDD+MvcP/uvyB80wzZ76wbz8gAAAABJRU5\n\
471 static void write_welcome_email(WizardWindow *wizard)
477 const gchar *mailbox = gtk_entry_get_text(GTK_ENTRY(wizard->mailbox_name));
478 Folder *folder = folder_find_from_path(mailbox);
479 FolderItem *inbox = folder ? folder->inbox:NULL;
480 gchar *file = get_tmp_file();
481 gchar enc_from_name[BUFFSIZE], enc_to_name[BUFFSIZE], enc_subject[BUFFSIZE];
483 get_rfc822_date(buf_date, sizeof(buf_date));
485 conv_encode_header_full(enc_subject, sizeof(enc_subject),
486 Q_("Welcome Mail Subject|Welcome to Claws Mail"),
487 strlen("Subject: "), FALSE, CS_INTERNAL);
488 conv_encode_header_full(enc_to_name, sizeof(enc_to_name),
489 gtk_entry_get_text(GTK_ENTRY(wizard->full_name)),
490 strlen("To: "), TRUE, CS_INTERNAL);
491 conv_encode_header_full(enc_from_name, sizeof(enc_from_name),
492 _("The Claws Mail Team"),
493 strlen("From: "), TRUE, CS_INTERNAL);
495 head = g_strdup_printf(
502 "Content-Type: text/plain; charset=UTF-8\n",
506 gtk_entry_get_text(GTK_ENTRY(wizard->email)),
507 buf_date, enc_subject, XFACE, FACE);
508 body = g_strdup_printf(
510 "Welcome to Claws Mail\n"
511 "---------------------\n"
513 "Now that you have set up your account you can fetch your\n"
514 "mail by clicking the 'Get Mail' button at the left of the\n"
517 "Claws Mail has lots of extra features accessible via plugins,\n"
518 "like anti-spam filtering and learning (via the Bogofilter or\n"
519 "SpamAssassin plugins), privacy protection (via PGP/Mime), an RSS\n"
520 "aggregator, a calendar, and much more. You can load them from\n"
521 "the menu entry '/Configuration/Plugins'.\n"
523 "You can change your Account Preferences by using the menu\n"
524 "entry '/Configuration/Preferences for current account'\n"
525 "and change the general Preferences by using\n"
526 "'/Configuration/Preferences'.\n"
528 "You can find further information in the Claws Mail manual,\n"
529 "which can be accessed by using the menu entry '/Help/Manual'\n"
530 "or online at the URL given below.\n"
538 "Mailing Lists: <%s>\n"
542 "Claws Mail is free software, released under the terms\n"
543 "of the GNU General Public License, version 3 or later, as\n"
544 "published by the Free Software Foundation, 51 Franklin Street,\n"
545 "Fifth Floor, Boston, MA 02110-1301, USA. The license can be\n"
550 "If you wish to donate to the Claws Mail project you can do\n"
552 HOMEPAGE_URI, MANUAL_URI, FAQ_URI, THEMES_URI, MAILING_LIST_URI,
553 GPL_URI, DONATE_URI);
555 msg = g_strconcat(head, body, NULL);
557 if (inbox && inbox->total_msgs == 0
558 && str_write_to_file(msg, file) >= 0) {
559 MsgFlags flags = { MSG_UNREAD|MSG_NEW, 0};
560 folder_item_add_msg(inbox, file, &flags, FALSE);
569 static gboolean wizard_write_config(WizardWindow *wizard)
571 static gboolean mailbox_ok = FALSE;
572 PrefsAccount *prefs_account = prefs_account_new();
573 GList *account_list = NULL;
574 GtkWidget *menu, *menuitem;
575 gchar *smtp_server, *recv_server;
576 gint smtp_port, recv_port;
577 #if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
578 SSLType smtp_ssl_type, recv_ssl_type;
581 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(wizard->recv_type));
582 menuitem = gtk_menu_get_active(GTK_MENU(menu));
583 prefs_account->protocol = GPOINTER_TO_INT
584 (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
587 if (wizard->create_mailbox && prefs_account->protocol != A_IMAP4 &&
588 !strlen(gtk_entry_get_text(GTK_ENTRY(wizard->mailbox_name)))) {
589 alertpanel_error(_("Please enter the mailbox name."));
590 g_free(prefs_account);
591 gtk_notebook_set_current_page (
592 GTK_NOTEBOOK(wizard->notebook),
598 if (wizard->create_mailbox) {
599 g_free(prefs_common.data_root);
600 if (gtk_toggle_button_get_active(
601 GTK_TOGGLE_BUTTON(wizard->data_root_nokia_radiobtn)))
602 prefs_common.data_root = NULL;
603 else if (gtk_toggle_button_get_active(
604 GTK_TOGGLE_BUTTON(wizard->data_root_mmc1_radiobtn)))
605 prefs_common.data_root = g_strdup(MMC1_PATH);
606 else if (gtk_toggle_button_get_active(
607 GTK_TOGGLE_BUTTON(wizard->data_root_mmc2_radiobtn)))
608 prefs_common.data_root = g_strdup(MMC2_PATH);
613 if (wizard->create_mailbox && prefs_account->protocol != A_IMAP4) {
614 mailbox_ok = setup_write_mailbox_path(wizard->mainwin,
616 GTK_ENTRY(wizard->mailbox_name)));
622 /* alertpanel done by setup_write_mailbox_path */
623 g_free(prefs_account);
624 gtk_notebook_set_current_page (
625 GTK_NOTEBOOK(wizard->notebook),
630 if (!strlen(gtk_entry_get_text(GTK_ENTRY(wizard->full_name)))
631 || !strlen(gtk_entry_get_text(GTK_ENTRY(wizard->email)))) {
632 alertpanel_error(_("Please enter your name and email address."));
633 g_free(prefs_account);
634 gtk_notebook_set_current_page (
635 GTK_NOTEBOOK(wizard->notebook),
640 if (prefs_account->protocol != A_LOCAL) {
641 if (!strlen(gtk_entry_get_text(GTK_ENTRY(wizard->recv_username)))
642 || !strlen(gtk_entry_get_text(GTK_ENTRY(wizard->recv_server)))) {
643 alertpanel_error(_("Please enter your receiving server "
645 g_free(prefs_account);
646 gtk_notebook_set_current_page (
647 GTK_NOTEBOOK(wizard->notebook),
652 if (!strlen(gtk_entry_get_text(GTK_ENTRY(wizard->recv_server)))) {
653 alertpanel_error(_("Please enter your username."));
654 g_free(prefs_account);
655 gtk_notebook_set_current_page (
656 GTK_NOTEBOOK(wizard->notebook),
662 if (!strlen(gtk_entry_get_text(GTK_ENTRY(wizard->smtp_server)))) {
663 alertpanel_error(_("Please enter your SMTP server."));
664 g_free(prefs_account);
665 gtk_notebook_set_current_page (
666 GTK_NOTEBOOK(wizard->notebook),
671 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wizard->smtp_auth))) {
672 if (prefs_account->protocol == A_LOCAL
673 && !strlen(gtk_entry_get_text(GTK_ENTRY(wizard->smtp_username)))) {
674 alertpanel_error(_("Please enter your SMTP username."));
675 g_free(prefs_account);
676 gtk_notebook_set_current_page (
677 GTK_NOTEBOOK(wizard->notebook),
680 } /* if it's not local we'll use the reception server */
683 if (prefs_account->protocol != A_LOCAL)
684 prefs_account->account_name = g_strdup_printf("%s@%s",
685 gtk_entry_get_text(GTK_ENTRY(wizard->recv_username)),
686 gtk_entry_get_text(GTK_ENTRY(wizard->recv_server)));
688 prefs_account->account_name = g_strdup_printf("%s",
689 gtk_entry_get_text(GTK_ENTRY(wizard->recv_server)));
691 recv_server = g_strdup(gtk_entry_get_text(GTK_ENTRY(wizard->recv_server)));
692 smtp_server = g_strdup(gtk_entry_get_text(GTK_ENTRY(wizard->smtp_server)));
694 if (prefs_account->protocol != A_LOCAL && strstr(recv_server, ":")) {
695 recv_port = atoi(strstr(recv_server, ":")+1);
696 *(strstr(recv_server, ":")) = '\0';
697 if (prefs_account->protocol == A_IMAP4) {
698 prefs_account->set_imapport = TRUE;
699 prefs_account->imapport = recv_port;
700 } else if (prefs_account->protocol == A_POP3) {
701 prefs_account->set_popport = TRUE;
702 prefs_account->popport = recv_port;
705 if (strstr(smtp_server, ":")) {
706 smtp_port = atoi(strstr(smtp_server, ":")+1);
707 *(strstr(smtp_server, ":")) = '\0';
708 prefs_account->set_smtpport = TRUE;
709 prefs_account->smtpport = smtp_port;
712 prefs_account->name = g_strdup(
713 gtk_entry_get_text(GTK_ENTRY(wizard->full_name)));
714 prefs_account->address = g_strdup(
715 gtk_entry_get_text(GTK_ENTRY(wizard->email)));
716 prefs_account->organization = g_strdup(
717 gtk_entry_get_text(GTK_ENTRY(wizard->organization)));
718 prefs_account->smtp_server = g_strdup(smtp_server);
720 if (wizard->create_mailbox && prefs_account->protocol != A_IMAP4) {
722 tmp = g_path_get_basename(gtk_entry_get_text(GTK_ENTRY(wizard->mailbox_name)));
723 prefs_account->inbox = g_strdup_printf("#mh/%s/inbox",
724 (!strcmp("Mail", gtk_entry_get_text(GTK_ENTRY(wizard->mailbox_name))))
727 prefs_account->local_inbox = g_strdup(prefs_account->inbox);
728 } else if (prefs_account->protocol != A_IMAP4) {
729 if (folder_get_default_inbox())
730 prefs_account->local_inbox =
731 folder_item_get_identifier(folder_get_default_inbox());
734 if (prefs_account->protocol != A_LOCAL)
735 prefs_account->recv_server = g_strdup(recv_server);
737 prefs_account->local_mbox = g_strdup(recv_server);
742 prefs_account->userid = g_strdup(
743 gtk_entry_get_text(GTK_ENTRY(wizard->recv_username)));
744 prefs_account->passwd = g_strdup(
745 gtk_entry_get_text(GTK_ENTRY(wizard->recv_password)));
747 prefs_account->smtp_userid = g_strdup(
748 gtk_entry_get_text(GTK_ENTRY(wizard->smtp_username)));
749 prefs_account->smtp_passwd = g_strdup(
750 gtk_entry_get_text(GTK_ENTRY(wizard->smtp_password)));
751 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wizard->smtp_auth))) {
752 prefs_account->use_smtp_auth = TRUE;
755 #if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
756 smtp_ssl_type = SSL_NONE;
757 recv_ssl_type = SSL_NONE;
759 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wizard->smtp_use_ssl))) {
760 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wizard->smtp_use_tls)))
761 smtp_ssl_type = SSL_STARTTLS;
763 smtp_ssl_type = SSL_TUNNEL;
765 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wizard->recv_use_ssl))) {
766 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wizard->recv_use_tls)))
767 recv_ssl_type = SSL_STARTTLS;
769 recv_ssl_type = SSL_TUNNEL;
772 prefs_account->ssl_smtp = smtp_ssl_type;
774 if (prefs_account->protocol == A_IMAP4)
775 prefs_account->ssl_imap = recv_ssl_type;
777 prefs_account->ssl_pop = recv_ssl_type;
780 if (prefs_account->protocol == A_IMAP4) {
781 gchar *directory = gtk_editable_get_chars(
782 GTK_EDITABLE(wizard->recv_imap_subdir), 0, -1);
783 if (directory && strlen(directory)) {
784 prefs_account->imap_dir = g_strdup(directory);
786 prefs_account->imap_subsonly =
787 gtk_toggle_button_get_active(
788 GTK_TOGGLE_BUTTON(wizard->subsonly_checkbtn));
792 account_list = g_list_append(account_list, prefs_account);
793 prefs_account_write_config_all(account_list);
794 prefs_account_free(prefs_account);
795 account_read_config_all();
797 initialize_fonts(wizard);
798 if (wizard->create_mailbox && prefs_account->protocol != A_IMAP4)
799 write_welcome_email(wizard);
802 if (wizard->volmon_mount_sigid)
803 g_signal_handler_disconnect(
804 G_OBJECT(wizard->volmon),
805 wizard->volmon_mount_sigid);
806 if (wizard->volmon_unmount_sigid)
807 g_signal_handler_disconnect(
808 G_OBJECT(wizard->volmon),
809 wizard->volmon_unmount_sigid);
813 plugin_load_standard_plugins();
818 static GtkWidget* create_page (WizardWindow *wizard, const char * title)
826 vbox = gtk_vbox_new (FALSE, 6);
827 gtk_container_set_border_width (GTK_CONTAINER(vbox), 10);
829 /* create the titlebar */
830 hbox = gtk_hbox_new (FALSE, 12);
831 image = stock_pixmap_widget(wizard->window,
832 STOCK_PIXMAP_CLAWS_MAIL_ICON);
833 gtk_box_pack_start (GTK_BOX(hbox), image, FALSE, FALSE, 0);
834 title_string = g_strconcat ("<span size=\"xx-large\" weight=\"ultrabold\">", title ? title : "", "</span>", NULL);
835 w = gtk_label_new (title_string);
836 gtk_label_set_use_markup (GTK_LABEL(w), TRUE);
837 g_free (title_string);
838 gtk_box_pack_start (GTK_BOX(hbox), w, FALSE, FALSE, 0);
840 /* pack the titlebar */
841 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
843 /* pack the separator */
844 gtk_box_pack_start (GTK_BOX(vbox), gtk_hseparator_new(), FALSE, FALSE, 0);
847 w = gtk_alignment_new (0, 0, 0, 0);
848 gtk_widget_set_size_request (w, 0, 6);
849 gtk_box_pack_start (GTK_BOX(vbox), w, FALSE, FALSE, 0);
854 #define PACK_BOX(hbox,text,entry) { \
855 GtkWidget *label = gtk_label_new(text); \
856 gtk_label_set_use_markup(GTK_LABEL(label), TRUE); \
857 if (GTK_IS_MISC(label)) \
858 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); \
859 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); \
860 gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0); \
863 static gchar *get_default_server(WizardWindow * wizard, const gchar *type)
865 if (!strcmp(type, "smtp")) {
866 if (!tmpl.smtpserver || !strlen(tmpl.smtpserver))
867 return g_strconcat(type, ".", tmpl.domain, NULL);
869 return g_strdup(tmpl.smtpserver);
871 if (!tmpl.recvserver || !strlen(tmpl.recvserver))
872 return g_strconcat(type, ".", tmpl.domain, NULL);
874 return g_strdup(tmpl.recvserver);
878 static gchar *get_default_account(WizardWindow * wizard)
880 gchar *result = NULL;
882 if (!tmpl.recvuser || !strlen(tmpl.recvuser)) {
883 result = gtk_editable_get_chars(
884 GTK_EDITABLE(wizard->email), 0, -1);
886 if (strstr(result, "@")) {
887 *(strstr(result,"@")) = '\0';
890 result = g_strdup(tmpl.recvuser);
895 static gchar *get_default_smtp_account(WizardWindow * wizard)
897 gchar *result = NULL;
899 if (!tmpl.smtpuser || !strlen(tmpl.smtpuser)) {
902 result = g_strdup(tmpl.smtpuser);
907 static void wizard_email_changed(GtkWidget *widget, gpointer data)
909 WizardWindow *wizard = (WizardWindow *)data;
910 RecvProtocol protocol;
912 protocol = GPOINTER_TO_INT
913 (g_object_get_data(G_OBJECT(wizard->recv_type), MENU_VAL_ID));
915 text = get_default_server(wizard, "smtp");
916 gtk_entry_set_text(GTK_ENTRY(wizard->smtp_server), text);
919 text = get_default_account(wizard);
920 gtk_entry_set_text(GTK_ENTRY(wizard->recv_username), text);
923 if (protocol == A_POP3) {
924 text = get_default_server(wizard, "pop");
925 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), text);
927 } else if (protocol == A_IMAP4) {
928 text = get_default_server(wizard, "imap");
929 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), text);
931 } else if (protocol == A_LOCAL) {
932 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), tmpl.mboxfile?tmpl.mboxfile:"");
937 static GtkWidget* user_page (WizardWindow * wizard)
939 GtkWidget *table = gtk_table_new(1,1, FALSE);
943 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
944 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
946 vbox = gtk_vbox_new(FALSE, VSPACING_NARROW);
947 gtk_container_set_border_width(GTK_CONTAINER(vbox), VSPACING_NARROW_2);
949 gtk_table_attach(GTK_TABLE(table), vbox, 0,1,1,2,
950 GTK_EXPAND|GTK_FILL, 0, 0, 0);
952 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
953 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
954 wizard->full_name = gtk_entry_new();
955 gtk_entry_set_text(GTK_ENTRY(wizard->full_name), tmpl.name?tmpl.name:"");
956 PACK_BOX(hbox, _("<span weight=\"bold\">Your name:</span>"),
959 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
960 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
961 wizard->email = gtk_entry_new();
962 gtk_entry_set_text(GTK_ENTRY(wizard->email), tmpl.email?tmpl.email:"");
963 PACK_BOX(hbox, _("<span weight=\"bold\">Your email address:</span>"),
966 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
967 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
968 wizard->organization = gtk_entry_new();
969 gtk_entry_set_text(GTK_ENTRY(wizard->organization), tmpl.organization?tmpl.organization:"");
970 PACK_BOX(hbox, _("Your organization:"), wizard->organization);
972 g_signal_connect(G_OBJECT(wizard->email), "changed",
973 G_CALLBACK(wizard_email_changed),
979 static void wizard_vol_mount_cb(GnomeVFSVolumeMonitor *vfs, GnomeVFSVolume *vol, WizardWindow *wizard)
981 gchar *uri = gnome_vfs_volume_get_activation_uri (vol);
982 gchar *mount_path = uri?gnome_vfs_get_local_path_from_uri (uri):NULL;
985 if(!strcmp(mount_path, MMC1_PATH)) {
986 gtk_widget_set_sensitive(wizard->data_root_mmc1_radiobtn, TRUE);
988 if(!strcmp(mount_path, MMC2_PATH)) {
989 gtk_widget_set_sensitive(wizard->data_root_mmc2_radiobtn, TRUE);
994 static void wizard_vol_unmount_cb(GnomeVFSVolumeMonitor *vfs, GnomeVFSVolume *vol, WizardWindow *wizard)
996 gchar *uri = gnome_vfs_volume_get_activation_uri (vol);
997 gchar *mount_path = uri?gnome_vfs_get_local_path_from_uri (uri):NULL;
1000 if(!strcmp(mount_path, MMC1_PATH)) {
1001 gtk_widget_set_sensitive(wizard->data_root_mmc1_radiobtn, FALSE);
1002 if (gtk_toggle_button_get_active(
1003 GTK_TOGGLE_BUTTON(wizard->data_root_mmc1_radiobtn))) {
1004 gtk_toggle_button_set_active(
1005 GTK_TOGGLE_BUTTON(wizard->data_root_nokia_radiobtn), TRUE);
1008 if(!strcmp(mount_path, MMC2_PATH)) {
1009 gtk_widget_set_sensitive(wizard->data_root_mmc2_radiobtn, FALSE);
1010 if (gtk_toggle_button_get_active(
1011 GTK_TOGGLE_BUTTON(wizard->data_root_mmc2_radiobtn))) {
1012 gtk_toggle_button_set_active(
1013 GTK_TOGGLE_BUTTON(wizard->data_root_nokia_radiobtn), TRUE);
1020 void data_root_changed (GtkToggleButton *toggle_btn,
1021 WizardWindow *wizard)
1023 gchar *name = g_path_get_basename(gtk_entry_get_text(GTK_ENTRY(wizard->mailbox_name)));
1025 if (gtk_toggle_button_get_active(
1026 GTK_TOGGLE_BUTTON(wizard->data_root_nokia_radiobtn)))
1027 gtk_entry_set_text(GTK_ENTRY(wizard->mailbox_name), name);
1028 else if (gtk_toggle_button_get_active(
1029 GTK_TOGGLE_BUTTON(wizard->data_root_mmc1_radiobtn))) {
1030 path = g_strconcat(MMC1_PATH, G_DIR_SEPARATOR_S,
1031 "Claws", G_DIR_SEPARATOR_S,
1032 g_get_user_name(), G_DIR_SEPARATOR_S,
1034 gtk_entry_set_text(GTK_ENTRY(wizard->mailbox_name), path);
1036 } else if (gtk_toggle_button_get_active(
1037 GTK_TOGGLE_BUTTON(wizard->data_root_mmc2_radiobtn))) {
1038 path = g_strconcat(MMC2_PATH, G_DIR_SEPARATOR_S,
1039 "Claws", G_DIR_SEPARATOR_S,
1040 g_get_user_name(), G_DIR_SEPARATOR_S,
1042 gtk_entry_set_text(GTK_ENTRY(wizard->mailbox_name), path);
1049 static GtkWidget* mailbox_page (WizardWindow * wizard)
1051 GtkWidget *table = gtk_table_new(1,1, FALSE);
1055 gchar *uri, *mount_path;
1058 GtkTooltips *tips = gtk_tooltips_new();
1060 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
1061 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
1063 vbox = gtk_vbox_new(FALSE, VSPACING_NARROW);
1064 gtk_container_set_border_width(GTK_CONTAINER(vbox), VSPACING_NARROW_2);
1066 gtk_table_attach(GTK_TABLE(table), vbox, 0,1,1,2,
1067 GTK_EXPAND|GTK_FILL, 0, 0, 0);
1069 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1070 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1072 wizard->mailbox_label = gtk_label_new(_("<span weight=\"bold\">Mailbox name:</span>"));
1073 gtk_label_set_use_markup(GTK_LABEL(wizard->mailbox_label), TRUE);
1074 if (GTK_IS_MISC(wizard->mailbox_label))
1075 gtk_misc_set_alignment(GTK_MISC(wizard->mailbox_label), 1, 0.5);
1076 wizard->mailbox_name = gtk_entry_new();
1078 gtk_entry_set_text(GTK_ENTRY(wizard->mailbox_name), tmpl.mailbox?tmpl.mailbox:"");
1080 gtk_tooltips_set_tip(GTK_TOOLTIPS(tips), wizard->mailbox_name,
1081 _("You can also specify an absolute path, for example: "
1082 "\"/home/john/Documents/Mail\""),
1085 gtk_box_pack_start(GTK_BOX(hbox), wizard->mailbox_label, FALSE, FALSE, 0);
1086 gtk_box_pack_start(GTK_BOX(hbox), wizard->mailbox_name, TRUE, TRUE, 0);
1089 wizard->data_root_nokia_radiobtn = gtk_radio_button_new_with_label(NULL,
1090 _("on internal memory"));
1091 wizard->data_root_mmc1_radiobtn = gtk_radio_button_new_with_label_from_widget(
1092 GTK_RADIO_BUTTON(wizard->data_root_nokia_radiobtn),
1093 _("on /media/mmc1"));
1094 wizard->data_root_mmc2_radiobtn = gtk_radio_button_new_with_label_from_widget(
1095 GTK_RADIO_BUTTON(wizard->data_root_nokia_radiobtn),
1096 _("on /media/mmc2"));
1098 g_signal_connect(G_OBJECT(wizard->data_root_nokia_radiobtn), "toggled",
1099 G_CALLBACK(data_root_changed), wizard);
1100 g_signal_connect(G_OBJECT(wizard->data_root_mmc1_radiobtn), "toggled",
1101 G_CALLBACK(data_root_changed), wizard);
1102 g_signal_connect(G_OBJECT(wizard->data_root_mmc2_radiobtn), "toggled",
1103 G_CALLBACK(data_root_changed), wizard);
1105 wizard->volmon = gnome_vfs_get_volume_monitor();
1106 wizard->vol_mmc1 = gnome_vfs_volume_monitor_get_volume_for_path(wizard->volmon, MMC1_PATH);
1107 wizard->vol_mmc2 = gnome_vfs_volume_monitor_get_volume_for_path(wizard->volmon, MMC2_PATH);
1109 uri = gnome_vfs_volume_get_activation_uri (wizard->vol_mmc1);
1110 mount_path = uri?gnome_vfs_get_local_path_from_uri (uri):NULL;
1112 if (wizard->vol_mmc1 == NULL || !gnome_vfs_volume_is_mounted(wizard->vol_mmc1)
1113 || strcmp(mount_path, MMC1_PATH)) {
1114 gtk_widget_set_sensitive(wizard->data_root_mmc1_radiobtn, FALSE);
1118 uri = gnome_vfs_volume_get_activation_uri (wizard->vol_mmc2);
1119 mount_path = uri?gnome_vfs_get_local_path_from_uri (uri):NULL;
1121 if (wizard->vol_mmc2 == NULL || !gnome_vfs_volume_is_mounted(wizard->vol_mmc2)
1122 || strcmp(mount_path, MMC2_PATH)) {
1123 gtk_widget_set_sensitive(wizard->data_root_mmc2_radiobtn, FALSE);
1127 gnome_vfs_volume_unref(wizard->vol_mmc1);
1128 gnome_vfs_volume_unref(wizard->vol_mmc2);
1129 wizard->vol_mmc1 = NULL;
1130 wizard->vol_mmc2 = NULL;
1132 wizard->volmon_mount_sigid = g_signal_connect(G_OBJECT(wizard->volmon),
1133 "volume-mounted", G_CALLBACK(wizard_vol_mount_cb), wizard);
1134 wizard->volmon_unmount_sigid = g_signal_connect(G_OBJECT(wizard->volmon),
1135 "volume-unmounted", G_CALLBACK(wizard_vol_unmount_cb), wizard);
1137 vbox2 = gtk_vbox_new(FALSE, VSPACING_NARROW);
1138 gtk_box_pack_start (GTK_BOX(vbox2), wizard->data_root_nokia_radiobtn, FALSE, FALSE, 0);
1139 gtk_box_pack_start (GTK_BOX(vbox2), wizard->data_root_mmc1_radiobtn, FALSE, FALSE, 0);
1140 gtk_box_pack_start (GTK_BOX(vbox2), wizard->data_root_mmc2_radiobtn, FALSE, FALSE, 0);
1142 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1143 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1144 PACK_BOX(hbox, _("<span weight=\"bold\">Store data</span>"),
1151 static void smtp_auth_changed (GtkWidget *btn, gpointer data)
1153 WizardWindow *wizard = (WizardWindow *)data;
1154 gboolean do_auth = gtk_toggle_button_get_active(
1155 GTK_TOGGLE_BUTTON(wizard->smtp_auth));
1156 gtk_widget_set_sensitive(wizard->smtp_username, do_auth);
1157 gtk_widget_set_sensitive(wizard->smtp_username_label, do_auth);
1158 gtk_widget_set_sensitive(wizard->smtp_password, do_auth);
1159 gtk_widget_set_sensitive(wizard->smtp_password_label, do_auth);
1162 static GtkWidget* smtp_page (WizardWindow * wizard)
1164 GtkWidget *table = gtk_table_new(1, 1, FALSE);
1167 GtkTooltips *tips = gtk_tooltips_new();
1170 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
1171 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
1173 vbox = gtk_vbox_new(FALSE, VSPACING_NARROW);
1174 gtk_container_set_border_width(GTK_CONTAINER(vbox), VSPACING_NARROW_2);
1176 gtk_table_attach(GTK_TABLE(table), vbox, 0,1,1,2,
1177 GTK_EXPAND|GTK_FILL, 0, 0, 0);
1179 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1180 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1181 wizard->smtp_server = gtk_entry_new();
1182 text = get_default_server(wizard, "smtp");
1183 gtk_entry_set_text(GTK_ENTRY(wizard->smtp_server), text);
1186 gtk_tooltips_set_tip(GTK_TOOLTIPS(tips), wizard->smtp_server,
1187 _("You can specify the port number by appending it at the end: "
1188 "\"mail.example.com:25\""),
1191 PACK_BOX(hbox, _("<span weight=\"bold\">SMTP server address:</span>"),
1192 wizard->smtp_server);
1195 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1196 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1197 wizard->smtp_auth = gtk_check_button_new_with_label(
1198 _("Use authentication"));
1199 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wizard->smtp_auth),
1201 g_signal_connect(G_OBJECT(wizard->smtp_auth), "toggled",
1202 G_CALLBACK(smtp_auth_changed),
1204 gtk_box_pack_start(GTK_BOX(hbox), wizard->smtp_auth, FALSE, FALSE, 0);
1206 text = get_default_smtp_account(wizard);
1208 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1209 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1210 wizard->smtp_username = gtk_entry_new();
1211 gtk_entry_set_text(GTK_ENTRY(wizard->smtp_username), text);
1213 wizard->smtp_username_label = gtk_label_new(_("SMTP username:\n"
1214 "<span size=\"small\">(empty to use the same as receive)</span>"));
1215 gtk_label_set_use_markup(GTK_LABEL(wizard->smtp_username_label), TRUE);
1216 if (GTK_IS_MISC(wizard->smtp_username_label))
1217 gtk_misc_set_alignment(GTK_MISC(wizard->smtp_username_label), 1, 0.5);
1218 gtk_box_pack_start(GTK_BOX(hbox), wizard->smtp_username_label, FALSE, FALSE, 0);
1219 gtk_box_pack_start(GTK_BOX(hbox), wizard->smtp_username, TRUE, TRUE, 0);
1221 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1222 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1223 wizard->smtp_password = gtk_entry_new();
1224 gtk_entry_set_text(GTK_ENTRY(wizard->smtp_password), tmpl.smtppass?tmpl.smtppass:"");
1225 gtk_entry_set_visibility(GTK_ENTRY(wizard->smtp_password), FALSE);
1226 wizard->smtp_password_label = gtk_label_new(_("SMTP password:\n"
1227 "<span size=\"small\">(empty to use the same as receive)</span>"));
1228 gtk_label_set_use_markup(GTK_LABEL(wizard->smtp_password_label), TRUE);
1229 if (GTK_IS_MISC(wizard->smtp_password_label))
1230 gtk_misc_set_alignment(GTK_MISC(wizard->smtp_password_label), 1, 0.5);
1231 gtk_box_pack_start(GTK_BOX(hbox), wizard->smtp_password_label, FALSE, FALSE, 0);
1232 gtk_box_pack_start(GTK_BOX(hbox), wizard->smtp_password, TRUE, TRUE, 0);
1233 #if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
1234 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1235 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1236 wizard->smtp_use_ssl = gtk_check_button_new_with_label(
1237 _("Use SSL to connect to SMTP server"));
1238 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wizard->smtp_use_ssl),
1240 gtk_box_pack_start(GTK_BOX(hbox), wizard->smtp_use_ssl, FALSE, FALSE, 0);
1242 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1243 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1244 wizard->smtp_use_tls = gtk_check_button_new_with_label(
1245 _("Use SSL via STARTTLS"));
1246 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wizard->smtp_use_tls),
1248 gtk_box_pack_start(GTK_BOX(hbox), wizard->smtp_use_tls, FALSE, FALSE, 0);
1249 SET_TOGGLE_SENSITIVITY (wizard->smtp_use_ssl, wizard->smtp_use_tls);
1251 smtp_auth_changed(NULL, wizard);
1255 static void wizard_protocol_change(WizardWindow *wizard, RecvProtocol protocol)
1259 if (protocol == A_POP3) {
1260 text = get_default_server(wizard, "pop");
1261 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), text);
1262 gtk_widget_hide(wizard->recv_imap_label);
1263 gtk_widget_hide(wizard->recv_imap_subdir);
1264 gtk_widget_hide(wizard->subsonly_checkbtn);
1265 gtk_widget_show(wizard->recv_username);
1266 gtk_widget_show(wizard->recv_password);
1267 gtk_widget_show(wizard->recv_username_label);
1268 gtk_widget_show(wizard->recv_password_label);
1269 gtk_widget_hide(wizard->no_imap_warning);
1270 #if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
1271 gtk_widget_show(wizard->recv_use_ssl);
1272 gtk_widget_show(wizard->recv_use_tls);
1274 gtk_label_set_text(GTK_LABEL(wizard->recv_label), _("<span weight=\"bold\">Server address:</span>"));
1275 gtk_label_set_use_markup(GTK_LABEL(wizard->recv_label), TRUE);
1276 gtk_dialog_set_response_sensitive (GTK_DIALOG(wizard->window), GO_FORWARD, TRUE);
1278 if (wizard->create_mailbox) {
1279 gtk_widget_show(wizard->mailbox_label);
1280 gtk_widget_show(wizard->mailbox_name);
1282 } else if (protocol == A_IMAP4) {
1283 #ifdef HAVE_LIBETPAN
1284 text = get_default_server(wizard, "imap");
1285 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), text);
1286 gtk_widget_show(wizard->recv_imap_label);
1287 gtk_widget_show(wizard->recv_imap_subdir);
1288 gtk_widget_show(wizard->subsonly_checkbtn);
1289 gtk_widget_show(wizard->recv_username);
1290 gtk_widget_show(wizard->recv_password);
1291 gtk_widget_show(wizard->recv_username_label);
1292 gtk_widget_show(wizard->recv_password_label);
1293 gtk_widget_hide(wizard->no_imap_warning);
1294 #if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
1295 gtk_widget_show(wizard->recv_use_ssl);
1296 gtk_widget_show(wizard->recv_use_tls);
1298 gtk_label_set_text(GTK_LABEL(wizard->recv_label), _("<span weight=\"bold\">Server address:</span>"));
1299 gtk_label_set_use_markup(GTK_LABEL(wizard->recv_label), TRUE);
1300 gtk_dialog_set_response_sensitive (GTK_DIALOG(wizard->window), GO_FORWARD, TRUE);
1302 if (wizard->create_mailbox) {
1303 gtk_widget_hide(wizard->mailbox_label);
1304 gtk_widget_hide(wizard->mailbox_name);
1307 gtk_widget_hide(wizard->recv_imap_label);
1308 gtk_widget_hide(wizard->recv_imap_subdir);
1309 gtk_widget_hide(wizard->subsonly_checkbtn);
1310 gtk_widget_hide(wizard->recv_username);
1311 gtk_widget_hide(wizard->recv_password);
1312 gtk_widget_hide(wizard->recv_username_label);
1313 gtk_widget_hide(wizard->recv_password_label);
1314 gtk_widget_show(wizard->no_imap_warning);
1315 if (wizard->create_mailbox) {
1316 gtk_widget_hide(wizard->mailbox_label);
1317 gtk_widget_hide(wizard->mailbox_name);
1319 #if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
1320 gtk_widget_hide(wizard->recv_use_ssl);
1321 gtk_widget_hide(wizard->recv_use_tls);
1323 gtk_dialog_set_response_sensitive (GTK_DIALOG(wizard->window), GO_FORWARD, FALSE);
1325 } else if (protocol == A_LOCAL) {
1326 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), tmpl.mboxfile?tmpl.mboxfile:"");
1327 gtk_label_set_text(GTK_LABEL(wizard->recv_label), _("<span weight=\"bold\">Local mailbox:</span>"));
1328 gtk_label_set_use_markup(GTK_LABEL(wizard->recv_label), TRUE);
1329 gtk_widget_hide(wizard->no_imap_warning);
1330 gtk_widget_hide(wizard->recv_imap_label);
1331 gtk_widget_hide(wizard->recv_imap_subdir);
1332 gtk_widget_hide(wizard->subsonly_checkbtn);
1333 gtk_widget_hide(wizard->recv_username);
1334 gtk_widget_hide(wizard->recv_password);
1335 gtk_widget_hide(wizard->recv_username_label);
1336 gtk_widget_hide(wizard->recv_password_label);
1337 #if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
1338 gtk_widget_hide(wizard->recv_use_ssl);
1339 gtk_widget_hide(wizard->recv_use_tls);
1341 if (wizard->create_mailbox) {
1342 gtk_widget_show(wizard->mailbox_label);
1343 gtk_widget_show(wizard->mailbox_name);
1345 gtk_dialog_set_response_sensitive (GTK_DIALOG(wizard->window), GO_FORWARD, TRUE);
1349 static void wizard_protocol_changed(GtkMenuItem *menuitem, gpointer data)
1351 WizardWindow *wizard = (WizardWindow *)data;
1352 RecvProtocol protocol;
1353 protocol = GPOINTER_TO_INT
1354 (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
1356 wizard_protocol_change(wizard, protocol);
1359 static GtkWidget* recv_page (WizardWindow * wizard)
1361 GtkWidget *table = gtk_table_new(1,1, FALSE);
1362 GtkWidget *menu = gtk_menu_new();
1363 GtkWidget *menuitem;
1364 GtkTooltips *tips = gtk_tooltips_new();
1370 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
1371 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
1373 vbox = gtk_vbox_new(FALSE, VSPACING_NARROW);
1374 gtk_container_set_border_width(GTK_CONTAINER(vbox), VSPACING_NARROW_2);
1376 gtk_table_attach(GTK_TABLE(table), vbox, 0,1,1,2,
1377 GTK_EXPAND|GTK_FILL, 0, 0, 0);
1379 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1380 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1381 wizard->recv_type = gtk_option_menu_new();
1383 MENUITEM_ADD (menu, menuitem, _("POP3"), A_POP3);
1384 g_signal_connect(G_OBJECT(menuitem), "activate",
1385 G_CALLBACK(wizard_protocol_changed),
1388 MENUITEM_ADD (menu, menuitem, _("IMAP"), A_IMAP4);
1389 g_signal_connect(G_OBJECT(menuitem), "activate",
1390 G_CALLBACK(wizard_protocol_changed),
1393 MENUITEM_ADD (menu, menuitem, _("Local mbox file"), A_LOCAL);
1394 g_signal_connect(G_OBJECT(menuitem), "activate",
1395 G_CALLBACK(wizard_protocol_changed),
1398 gtk_option_menu_set_menu (GTK_OPTION_MENU (wizard->recv_type), menu);
1399 switch(tmpl.recvtype) {
1412 gtk_option_menu_set_history(GTK_OPTION_MENU (wizard->recv_type), index);
1413 PACK_BOX(hbox, _("<span weight=\"bold\">Server type:</span>"),
1416 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1417 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1418 wizard->recv_server = gtk_entry_new();
1419 text = get_default_server(wizard, "pop");
1420 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), text);
1423 gtk_tooltips_set_tip(GTK_TOOLTIPS(tips), wizard->recv_server,
1424 _("You can specify the port number by appending it at the end: "
1425 "\"mail.example.com:110\""),
1428 wizard->recv_label = gtk_label_new(_("<span weight=\"bold\">Server address:</span>"));
1429 gtk_label_set_use_markup(GTK_LABEL(wizard->recv_label), TRUE);
1430 if (GTK_IS_MISC(wizard->recv_label))
1431 gtk_misc_set_alignment(GTK_MISC(wizard->recv_label), 1, 0.5);
1432 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_label, FALSE, FALSE, 0);
1433 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_server, TRUE, TRUE, 0);
1435 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1436 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1437 wizard->recv_username = gtk_entry_new();
1438 wizard->recv_username_label = gtk_label_new(_("<span weight=\"bold\">Username:</span>"));
1439 gtk_label_set_use_markup(GTK_LABEL(wizard->recv_username_label), TRUE);
1440 if (GTK_IS_MISC(wizard->recv_username_label))
1441 gtk_misc_set_alignment(GTK_MISC(wizard->recv_username_label), 1, 0.5);
1442 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_username_label, FALSE, FALSE, 0);
1443 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_username, TRUE, TRUE, 0);
1445 text = get_default_account(wizard);
1446 gtk_entry_set_text(GTK_ENTRY(wizard->recv_username), text);
1449 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1450 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1451 wizard->recv_password = gtk_entry_new();
1452 gtk_entry_set_text(GTK_ENTRY(wizard->recv_password), tmpl.recvpass?tmpl.recvpass:"");
1453 wizard->recv_password_label = gtk_label_new(_("Password:"));
1454 if (GTK_IS_MISC(wizard->recv_password_label))
1455 gtk_misc_set_alignment(GTK_MISC(wizard->recv_password_label), 1, 0.5);
1456 gtk_entry_set_visibility(GTK_ENTRY(wizard->recv_password), FALSE);
1457 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_password_label, FALSE, FALSE, 0);
1458 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_password, TRUE, TRUE, 0);
1460 #if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
1461 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1462 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1463 wizard->recv_use_ssl = gtk_check_button_new_with_label(
1464 _("Use SSL to connect to receiving server"));
1465 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wizard->recv_use_ssl),
1467 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_use_ssl, FALSE, FALSE, 0);
1469 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1470 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1471 wizard->recv_use_tls = gtk_check_button_new_with_label(
1472 _("Use SSL via STARTTLS"));
1473 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wizard->recv_use_tls),
1475 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_use_tls, FALSE, FALSE, 0);
1476 SET_TOGGLE_SENSITIVITY (wizard->recv_use_ssl, wizard->recv_use_tls);
1478 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1479 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1480 wizard->recv_imap_subdir = gtk_entry_new();
1481 gtk_entry_set_text(GTK_ENTRY(wizard->recv_imap_subdir), tmpl.imapdir?tmpl.imapdir:"");
1482 wizard->recv_imap_label = gtk_label_new(_("IMAP server directory:"));
1483 if (GTK_IS_MISC(wizard->recv_imap_label))
1484 gtk_misc_set_alignment(GTK_MISC(wizard->recv_imap_label), 1, 0.5);
1485 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_imap_label, FALSE, FALSE, 0);
1486 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_imap_subdir, TRUE, TRUE, 0);
1488 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1489 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1490 wizard->subsonly_checkbtn = gtk_check_button_new_with_label(
1491 _("Show only subscribed folders"));
1492 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wizard->subsonly_checkbtn),
1494 gtk_box_pack_start(GTK_BOX(hbox), wizard->subsonly_checkbtn, FALSE, FALSE, 0);
1496 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1497 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1498 wizard->no_imap_warning = gtk_label_new(_(
1499 "<span weight=\"bold\">Warning: this version of Claws Mail\n"
1500 "has been built without IMAP support.</span>"));
1501 gtk_label_set_use_markup(GTK_LABEL(wizard->no_imap_warning), TRUE);
1502 gtk_box_pack_start(GTK_BOX(hbox), wizard->no_imap_warning, FALSE, FALSE, 0);
1508 wizard_response_cb (GtkDialog * dialog, int response, gpointer data)
1510 WizardWindow * wizard = (WizardWindow *)data;
1511 int current_page, num_pages;
1512 gboolean skip_mailbox_page = FALSE;
1514 GtkWidget *menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(wizard->recv_type));
1515 GtkWidget *menuitem = gtk_menu_get_active(GTK_MENU(menu));
1516 gint protocol = GPOINTER_TO_INT
1517 (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
1519 if (protocol == A_IMAP4) {
1520 skip_mailbox_page = TRUE;
1524 num_pages = g_slist_length(wizard->pages);
1526 current_page = gtk_notebook_get_current_page (
1527 GTK_NOTEBOOK(wizard->notebook));
1528 if (response == CANCEL)
1530 wizard->result = FALSE;
1531 wizard->finished = TRUE;
1532 gtk_widget_destroy (GTK_WIDGET(dialog));
1534 else if (response == FINISHED)
1536 if (!wizard_write_config(wizard)) {
1537 current_page = gtk_notebook_get_current_page (
1538 GTK_NOTEBOOK(wizard->notebook));
1541 wizard->result = TRUE;
1542 wizard->finished = TRUE;
1543 gtk_widget_destroy (GTK_WIDGET(dialog));
1547 if (response == GO_BACK)
1549 if (current_page > 0) {
1551 if (current_page == MAILBOX_PAGE && skip_mailbox_page) {
1555 gtk_notebook_set_current_page (
1556 GTK_NOTEBOOK(wizard->notebook),
1560 else if (response == GO_FORWARD)
1562 if (current_page < (num_pages-1)) {
1564 if (current_page == MAILBOX_PAGE && skip_mailbox_page) {
1568 gtk_notebook_set_current_page (
1569 GTK_NOTEBOOK(wizard->notebook),
1574 gtk_dialog_set_response_sensitive (dialog, GO_BACK,
1576 gtk_dialog_set_response_sensitive (dialog, GO_FORWARD,
1577 current_page < (num_pages - 1));
1578 if (current_page == (num_pages -1)) {
1579 gtk_dialog_set_response_sensitive (dialog, FINISHED, TRUE);
1580 gtk_dialog_set_default_response(GTK_DIALOG(wizard->window), FINISHED);
1582 gtk_dialog_set_response_sensitive (dialog, FINISHED, FALSE);
1583 gtk_dialog_set_default_response(GTK_DIALOG(wizard->window), GO_FORWARD);
1589 static gint wizard_close_cb(GtkWidget *widget, GdkEventAny *event,
1592 WizardWindow *wizard = (WizardWindow *)data;
1593 wizard->result = FALSE;
1594 wizard->finished = TRUE;
1599 #define PACK_WARNING(text) { \
1600 label = gtk_label_new(text); \
1601 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); \
1602 gtk_box_pack_end(GTK_BOX(widget), label, FALSE, FALSE, 0); \
1605 gboolean run_wizard(MainWindow *mainwin, gboolean create_mailbox) {
1606 WizardWindow *wizard = g_new0(WizardWindow, 1);
1610 GtkWidget *scrolled_window;
1615 wizard->mainwin = mainwin;
1616 wizard->create_mailbox = create_mailbox;
1618 gtk_widget_hide(mainwin->window);
1620 wizard_read_defaults();
1622 wizard->window = gtk_dialog_new_with_buttons (_("Claws Mail Setup Wizard"),
1624 GTK_STOCK_GO_BACK, GO_BACK,
1625 GTK_STOCK_GO_FORWARD, GO_FORWARD,
1626 GTK_STOCK_SAVE, FINISHED,
1627 GTK_STOCK_CANCEL, CANCEL,
1630 g_signal_connect(wizard->window, "response",
1631 G_CALLBACK(wizard_response_cb), wizard);
1632 gtk_widget_realize(wizard->window);
1633 gtk_dialog_set_default_response(GTK_DIALOG(wizard->window),
1635 gtk_dialog_set_response_sensitive(GTK_DIALOG(wizard->window),
1637 gtk_dialog_set_response_sensitive(GTK_DIALOG(wizard->window),
1639 gtk_dialog_set_response_sensitive(GTK_DIALOG(wizard->window),
1641 gtk_dialog_set_response_sensitive(GTK_DIALOG(wizard->window),
1644 wizard->notebook = gtk_notebook_new();
1645 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(wizard->notebook), FALSE);
1646 gtk_notebook_set_show_border(GTK_NOTEBOOK(wizard->notebook), FALSE);
1647 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(wizard->window)->vbox),
1648 wizard->notebook, TRUE, TRUE, 0);
1650 wizard->pages = NULL;
1652 /*welcome page: 0 */
1654 page = create_page(wizard, _("Welcome to Claws Mail"));
1656 wizard->pages = g_slist_append(wizard->pages, page);
1657 widget = stock_pixmap_widget(wizard->window,
1658 STOCK_PIXMAP_CLAWS_MAIL_LOGO);
1660 gtk_box_pack_start (GTK_BOX(page), widget, FALSE, FALSE, 0);
1662 text = g_strdup(_("Welcome to the Claws Mail setup wizard.\n\n"
1663 "We will begin by defining some basic "
1664 "information about you and your most common "
1665 "mail options so that you can start to use "
1666 "Claws Mail in less than five minutes."));
1667 widget = gtk_label_new(text);
1668 gtk_label_set_line_wrap(GTK_LABEL(widget), TRUE);
1670 gtk_box_pack_start (GTK_BOX(page), widget, FALSE, FALSE, 0);
1672 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
1673 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
1674 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1675 gtk_box_pack_start(GTK_BOX(page), scrolled_window, TRUE, TRUE, 0);
1677 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window),
1685 widget = create_page (wizard, _("About You"));
1686 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
1687 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
1688 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1689 gtk_box_pack_start(GTK_BOX(widget), scrolled_window, TRUE, TRUE, 0);
1691 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window),
1693 PACK_WARNING(_("Bold fields must be completed"));
1695 wizard->pages = g_slist_append(wizard->pages, widget);
1697 /* recv+auth page: 2 */
1700 widget = create_page (wizard, _("Receiving mail"));
1701 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
1702 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
1703 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1704 gtk_box_pack_start(GTK_BOX(widget), scrolled_window, TRUE, TRUE, 0);
1706 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window),
1708 PACK_WARNING(_("Bold fields must be completed"));
1710 wizard->pages = g_slist_append(wizard->pages, widget);
1715 widget = create_page (wizard, _("Sending mail"));
1716 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
1717 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
1718 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1719 gtk_box_pack_start(GTK_BOX(widget), scrolled_window, TRUE, TRUE, 0);
1721 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window),
1723 PACK_WARNING(_("Bold fields must be completed"));
1725 wizard->pages = g_slist_append(wizard->pages, widget);
1727 /* mailbox page: 4 */
1728 if (create_mailbox) {
1731 widget = create_page (wizard, _("Saving mail on disk"));
1732 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
1733 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
1734 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1735 gtk_box_pack_start(GTK_BOX(widget), scrolled_window, TRUE, TRUE, 0);
1737 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window),
1738 mailbox_page(wizard));
1739 PACK_WARNING(_("Bold fields must be completed"));
1741 wizard->pages = g_slist_append(wizard->pages, widget);
1747 page = create_page(wizard, _("Configuration finished"));
1749 wizard->pages = g_slist_append(wizard->pages, page);
1750 widget = stock_pixmap_widget(wizard->window,
1751 STOCK_PIXMAP_CLAWS_MAIL_LOGO);
1753 gtk_box_pack_start (GTK_BOX(page), widget, FALSE, FALSE, 0);
1755 text = g_strdup(_("Claws Mail is now ready.\n"
1756 "Click Save to start."));
1757 widget = gtk_label_new(text);
1758 gtk_box_pack_start (GTK_BOX(page), widget, FALSE, FALSE, 0);
1762 for (cur = wizard->pages; cur && cur->data; cur = cur->next) {
1763 gtk_notebook_append_page (GTK_NOTEBOOK(wizard->notebook),
1764 GTK_WIDGET(cur->data), NULL);
1767 g_signal_connect(G_OBJECT(wizard->window), "delete_event",
1768 G_CALLBACK(wizard_close_cb), wizard);
1769 gtk_widget_show_all (wizard->window);
1771 gtk_widget_hide(wizard->recv_imap_label);
1772 gtk_widget_hide(wizard->recv_imap_subdir);
1773 gtk_widget_hide(wizard->subsonly_checkbtn);
1775 wizard_protocol_change(wizard, tmpl.recvtype);
1777 while (!wizard->finished)
1778 gtk_main_iteration();
1780 result = wizard->result;
1784 gtk_widget_show(mainwin->window);