2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2013 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/>.
23 #include "claws-features.h"
29 #include <glib/gi18n.h>
30 #include <gdk/gdkkeysyms.h>
40 #include "claws-features.h"
47 #include "prefs_account.h"
48 #include "mainwindow.h"
49 #include "stock_pixmap.h"
52 #include "alertpanel.h"
57 #include "prefs_common.h"
68 int WELCOME_PAGE = -1;
72 int MAILBOX_PAGE = -1;
85 GtkWidget *organization;
87 GtkWidget *mailbox_name;
88 GtkWidget *mailbox_label;
90 GtkWidget *smtp_server;
92 GtkWidget *smtp_username;
93 GtkWidget *smtp_password;
94 GtkWidget *smtp_username_label;
95 GtkWidget *smtp_password_label;
98 GtkWidget *recv_label;
99 GtkWidget *recv_server;
100 GtkWidget *recv_username;
101 GtkWidget *recv_password;
102 GtkWidget *recv_username_label;
103 GtkWidget *recv_password_label;
104 GtkWidget *recv_imap_label;
105 GtkWidget *recv_imap_subdir;
106 GtkWidget *subsonly_checkbtn;
107 GtkWidget *no_imap_warning;
109 GtkWidget *smtp_use_ssl;
110 GtkWidget *recv_use_ssl;
111 GtkWidget *smtp_use_tls;
112 GtkWidget *recv_use_tls;
113 GtkWidget *smtp_ssl_cert_file;
114 GtkWidget *recv_ssl_cert_file;
115 GtkWidget *smtp_ssl_cert_pass;
116 GtkWidget *recv_ssl_cert_pass;
117 GtkWidget *smtp_cert_table;
118 GtkWidget *recv_cert_table;
120 gboolean create_mailbox;
126 typedef struct _AccountTemplate {
135 RecvProtocol recvtype;
147 gchar *smtpssl_cert_pass;
148 gchar *recvssl_cert_pass;
151 static AccountTemplate tmpl;
153 static PrefParam template_params[] = {
154 {"name", "$USERNAME",
155 &tmpl.name, P_STRING, NULL, NULL, NULL},
156 {"domain", "$DEFAULTDOMAIN",
157 &tmpl.domain, P_STRING, NULL, NULL, NULL},
158 {"email", "$NAME_MAIL@$DOMAIN",
159 &tmpl.email, P_STRING, NULL, NULL, NULL},
161 &tmpl.organization, P_STRING, NULL, NULL, NULL},
162 {"smtpserver", "smtp.$DOMAIN",
163 &tmpl.smtpserver, P_STRING, NULL, NULL, NULL},
164 {"smtpauth", "FALSE",
165 &tmpl.smtpauth, P_BOOL, NULL, NULL, NULL},
167 &tmpl.smtpuser, P_STRING, NULL, NULL, NULL},
169 &tmpl.smtppass, P_STRING, NULL, NULL, NULL},
171 &tmpl.recvtype, P_INT, NULL, NULL, NULL},
172 {"recvserver", "pop.$DOMAIN",
173 &tmpl.recvserver, P_STRING, NULL, NULL, NULL},
174 {"recvuser", "$LOGIN",
175 &tmpl.recvuser, P_STRING, NULL, NULL, NULL},
177 &tmpl.recvpass, P_STRING, NULL, NULL, NULL},
179 &tmpl.imapdir, P_STRING, NULL, NULL, NULL},
181 &tmpl.subsonly, P_BOOL, NULL, NULL, NULL},
182 {"mboxfile", "/var/mail/$LOGIN",
183 &tmpl.mboxfile, P_STRING, NULL, NULL, NULL},
185 &tmpl.mailbox, P_STRING, NULL, NULL, NULL},
187 &tmpl.smtpssl, P_INT, NULL, NULL, NULL},
189 &tmpl.recvssl, P_INT, NULL, NULL, NULL},
191 &tmpl.smtpssl_cert, P_STRING, NULL, NULL, NULL},
193 &tmpl.recvssl_cert, P_STRING, NULL, NULL, NULL},
194 {"smtpssl_cert_pass", "",
195 &tmpl.smtpssl_cert, P_STRING, NULL, NULL, NULL},
196 {"recvssl_cert_pass", "",
197 &tmpl.recvssl_cert, P_STRING, NULL, NULL, NULL},
198 {NULL, NULL, NULL, P_INT, NULL, NULL, NULL}
202 static gchar *accountrc_tmpl =
203 "[AccountTemplate]\n"
204 "#you can use $DEFAULTDOMAIN here\n"
205 "#domain must be defined before the variables that use it\n"
206 "#by default, domain is extracted from the hostname\n"
209 "#you can use $USERNAME for name (this is the default)\n"
212 "#you can use $LOGIN, $NAME_MAIL and $DOMAIN here \n"
213 "#$NAME_MAIL is the name without uppercase and with dots instead\n"
215 "#the default is $NAME_MAIL@$DOMAIN\n"
218 "#you can use $DOMAIN here\n"
219 "#the default organization is empty\n"
222 "#you can use $DOMAIN here \n"
223 "#the default is smtp.$DOMAIN\n"
226 "#Whether to use smtp authentication\n"
227 "#the default is 0 (no)\n"
231 "#you can use $LOGIN, $NAME_MAIL, $DOMAIN or $EMAIL here\n"
232 "#the default is empty (same as reception username)\n"
236 "#the default is empty (same as reception password)\n"
239 "#recvtype can be:\n"
242 "#5 for a local mbox file\n"
245 "#you can use $DOMAIN here \n"
246 "#the default is {pop,imap}.$DOMAIN\n"
249 "#you can use $LOGIN, $NAME_MAIL, $DOMAIN or $EMAIL here\n"
250 "#default is $LOGIN\n"
253 "#default is empty\n"
256 "#imap dir if imap (relative to the home on the server)\n"
257 "#default is empty\n"
260 "#show subscribed folders only, if imap\n"
264 "#mbox file if local\n"
265 "#you can use $LOGIN here\n"
266 "#default is /var/mail/$LOGIN\n"
269 "#mailbox name if pop3 or local\n"
270 "#relative path from the user's home\n"
271 "#default is \"Mail\"\n"
274 "#whether to use ssl on smtp connections\n"
275 "#default is 0, 1 is ssl, 2 is starttls\n"
278 "#whether to use ssl on pop or imap connections\n"
279 "#default is 0, 1 is ssl, 2 is starttls\n"
282 "#SSL client certificate path for SMTP\n"
283 "#default is empty (no certificate)\n"
286 "#SSL client certificate path for POP/IMAP\n"
287 "#default is empty (no certificate)\n"
290 "#SSL client certificate password for SMTP\n"
291 "#default is empty (no password)\n"
292 "#smtpssl_cert_pass=\n"
294 "#SSL client certificate password for POP/IMAP\n"
295 "#default is empty (no password)\n"
296 "#recvssl_cert_pass=\n"
299 static gchar *wizard_get_default_domain_name(void)
301 static gchar *domain_name = NULL;
303 if (domain_name == NULL) {
304 domain_name = g_strdup(get_domain_name());
305 if (strchr(domain_name, '.') != NULL
306 && strchr(domain_name, '.') != strrchr(domain_name, '.')
307 && strlen(strchr(domain_name, '.')) > 6) {
308 gchar *tmp = g_strdup(strchr(domain_name, '.')+1);
316 static gchar *get_name_for_mail(void)
319 if (tmpl.name == NULL)
321 name = g_utf8_strdown(tmpl.name, -1);
322 while(strstr(name, " "))
323 *strstr(name, " ")='.';
328 #define PARSE_DEFAULT(str) { \
329 gchar *tmp = NULL, *new = NULL; \
331 tmp = g_strdup(str); \
332 if (strstr(str, "$USERNAME")) { \
333 tmp = g_strdup(str); \
334 *strstr(tmp, "$USERNAME") = '\0'; \
335 new = g_strconcat(tmp, g_get_real_name(), \
336 strstr(str, "$USERNAME")+strlen("$USERNAME"), \
343 if (strstr(str, "$LOGIN")) { \
344 tmp = g_strdup(str); \
345 *strstr(tmp, "$LOGIN") = '\0'; \
346 new = g_strconcat(tmp, g_get_user_name(), \
347 strstr(str, "$LOGIN")+strlen("$LOGIN"), \
354 if (strstr(str, "$EMAIL")) { \
355 tmp = g_strdup(str); \
356 *strstr(tmp, "$EMAIL") = '\0'; \
357 new = g_strconcat(tmp, tmpl.email, \
358 strstr(str, "$EMAIL")+strlen("$EMAIL"), \
365 if (strstr(str, "$NAME_MAIL")) { \
366 tmp = g_strdup(str); \
367 *strstr(tmp, "$NAME_MAIL") = '\0'; \
368 new = g_strconcat(tmp, get_name_for_mail(), \
369 strstr(str, "$NAME_MAIL")+strlen("$NAME_MAIL"), \
376 if (strstr(str, "$DEFAULTDOMAIN")) { \
377 tmp = g_strdup(str); \
378 *strstr(tmp, "$DEFAULTDOMAIN") = '\0'; \
379 new = g_strconcat(tmp, wizard_get_default_domain_name(), \
380 strstr(str, "$DEFAULTDOMAIN")+strlen("$DEFAULTDOMAIN"), \
387 if (strstr(str, "$DOMAIN")) { \
388 tmp = g_strdup(str); \
389 *strstr(tmp, "$DOMAIN") = '\0'; \
390 new = g_strconcat(tmp, tmpl.domain, \
391 strstr(str, "$DOMAIN")+strlen("$DOMAIN"), \
400 static void wizard_read_defaults(void)
404 rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, "accountrc.tmpl", NULL);
405 if (!is_file_exist(rcpath)) {
406 str_write_to_file(accountrc_tmpl, rcpath);
409 prefs_read_config(template_params, "AccountTemplate", rcpath, NULL);
411 PARSE_DEFAULT(tmpl.domain);
412 PARSE_DEFAULT(tmpl.name);
413 PARSE_DEFAULT(tmpl.email);
414 PARSE_DEFAULT(tmpl.organization);
415 PARSE_DEFAULT(tmpl.smtpserver);
416 PARSE_DEFAULT(tmpl.smtpuser);
417 PARSE_DEFAULT(tmpl.smtppass);
418 PARSE_DEFAULT(tmpl.recvserver);
419 PARSE_DEFAULT(tmpl.recvuser);
420 PARSE_DEFAULT(tmpl.recvpass);
421 PARSE_DEFAULT(tmpl.imapdir);
422 PARSE_DEFAULT(tmpl.mboxfile);
423 PARSE_DEFAULT(tmpl.mailbox);
426 "%s, %s, %s, %s, %s, %d, %s, %s, %s, %s, %s, %s, %d, %d\n",
427 tmpl.name,tmpl.domain,tmpl.email,tmpl.organization,tmpl.smtpserver,
428 tmpl.recvtype,tmpl.recvserver,tmpl.recvuser,tmpl.recvpass,
429 tmpl.imapdir,tmpl.mboxfile,tmpl.mailbox,tmpl.smtpssl,tmpl.recvssl);
434 static void initialize_fonts(WizardWindow *wizard)
436 GtkWidget *widget = wizard->email;
437 gint size = pango_font_description_get_size(
438 gtk_widget_get_style(widget)->font_desc)
442 PangoFontDescription *bold_desc;
443 gchar *curfont = pango_font_description_to_string(widget->style->font_desc);
444 g_free(prefs_common.smallfont);
445 g_free(prefs_common.normalfont);
446 g_free(prefs_common.boldfont);
447 prefs_common.smallfont = g_strdup(curfont);
448 prefs_common.normalfont = g_strdup(curfont);
449 bold_desc = pango_font_description_from_string(curfont);
450 pango_font_description_set_weight(bold_desc, PANGO_WEIGHT_BOLD);
451 prefs_common.boldfont = pango_font_description_to_string(bold_desc);
452 pango_font_description_free(bold_desc);
455 tmp = g_strdup(prefs_common.textfont);
456 if (strrchr(tmp, ' ')) {
457 *(strrchr(tmp, ' ')) = '\0';
458 new = g_strdup_printf("%s %d", tmp, size);
459 g_free(prefs_common.textfont);
460 prefs_common.textfont = new;
464 tmp = g_strdup(prefs_common.smallfont);
465 if (strrchr(tmp, ' ')) {
466 *(strrchr(tmp, ' ')) = '\0';
467 new = g_strdup_printf("%s %d", tmp, size);
468 g_free(prefs_common.smallfont);
469 prefs_common.smallfont = new;
473 tmp = g_strdup(prefs_common.normalfont);
474 if (strrchr(tmp, ' ')) {
475 *(strrchr(tmp, ' ')) = '\0';
476 new = g_strdup_printf("%s %d", tmp, size);
477 g_free(prefs_common.normalfont);
478 prefs_common.normalfont = new;
482 tmp = g_strdup(prefs_common.boldfont);
483 if (strrchr(tmp, ' ')) {
484 *(strrchr(tmp, ' ')) = '\0';
485 new = g_strdup_printf("%s %d", tmp, size);
486 g_free(prefs_common.boldfont);
487 prefs_common.boldfont = new;
492 #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"
493 #define FACE "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAM1BMVEUAAAAcJCI\n\
494 ONl1JUi0+Z4daY2NZciPabV9ykS5kj6Wsl2ybmZOBsMjZxK2wzN3Pzczs7OsCAGN0AAAAAXRSTlM\n\
495 AQObYZgAAAAFiS0dEAIgFHUgAAAIVSURBVEjH1ZbtlqMgDIaFECoGhPu/2s0b0Lais/NzN6d1OJ7\n\
496 3yReQzrL8B5Zy3rvl9At52Pf2tv1vSMjtYj8jaa8XUyI/yn3YD6sigj/2Tf5Bn069MIsTPHvx/t5\n\
497 /3rU/6JCIY3YwGe26r/cwUfE3cFe5T28L0K5rJAUHEeYAQxs8DHojjk3M9wECU4xxjXisI8RA0gy\n\
498 oczJZJOjxiTFZVTchAnIRJrgdmEGDyFfAI3UuG5FmYTkR9RDrIC4H0SqV4pzpEcUp0HNLjwBv+jA\n\
499 dikUE5g9iBvzmu3sH2oDk4lnHd829+2Q9gj6kDqDPg7hsGwBzH02fE3ZCt6ZHmlNKIMjMeRwra5I\n\
500 ecgNoBnLGPmzaHPJIwLY8Sq2M/tLUJfj0QcqmfVXAdLSStIYF8dzWjBBb2VgvDa4mO9oc651OiUo\n\
501 BEKbZokdPATF9E9oKAjQJcJOniaPXrVZRAnVWaqIyqRoNC8ZJvgCcW8XN39RqxVP1rS8Yd4WnCdN\n\
502 aRTo2jJRDbg3vtCpEUGffgDPhqKDaSuVqYtOplFIvIcx3HUI5/MuIWl6vKyBjNlqEru8hbFXqBPA\n\
503 5TpHGIUZOePeaIyzfQ/g9Xg0opU1AvdfXM9floYhv92pPAE96OZtkPV8eivgQi9RTfwPUU36I26n\n\
504 Hy+WuCJzAT7efMSeA1TNf2/VugDz+dN139xfA5ffxGZDD+MvcP/uvyB80wzZ76wbz8gAAAABJRU5\n\
507 static void write_welcome_email(WizardWindow *wizard)
513 const gchar *mailbox = gtk_entry_get_text(GTK_ENTRY(wizard->mailbox_name));
514 Folder *folder = folder_find_from_path(mailbox);
515 FolderItem *inbox = folder ? folder->inbox:NULL;
516 gchar *file = get_tmp_file();
517 gchar enc_from_name[BUFFSIZE], enc_to_name[BUFFSIZE], enc_subject[BUFFSIZE];
519 get_rfc822_date(buf_date, sizeof(buf_date));
521 conv_encode_header_full(enc_subject, sizeof(enc_subject),
522 C_("Welcome Mail Subject", "Welcome to Claws Mail"),
523 strlen("Subject: "), FALSE, CS_INTERNAL);
524 conv_encode_header_full(enc_to_name, sizeof(enc_to_name),
525 gtk_entry_get_text(GTK_ENTRY(wizard->full_name)),
526 strlen("To: "), TRUE, CS_INTERNAL);
527 conv_encode_header_full(enc_from_name, sizeof(enc_from_name),
528 _("The Claws Mail Team"),
529 strlen("From: "), TRUE, CS_INTERNAL);
531 head = g_strdup_printf(
538 "Content-Type: text/plain; charset=UTF-8\n",
542 gtk_entry_get_text(GTK_ENTRY(wizard->email)),
543 buf_date, enc_subject, XFACE, FACE);
544 body = g_strdup_printf(
546 "Welcome to Claws Mail\n"
547 "---------------------\n"
549 "Now that you have set up your account you can fetch your\n"
550 "mail by clicking the 'Get Mail' button at the left of the\n"
553 "Claws Mail has lots of extra features accessible via plugins,\n"
554 "like anti-spam filtering and learning (via the Bogofilter or\n"
555 "SpamAssassin plugins), privacy protection (via PGP/Mime), an RSS\n"
556 "aggregator, a calendar, and much more. You can load them from\n"
557 "the menu entry '/Configuration/Plugins'.\n"
559 "You can change your Account Preferences by using the menu\n"
560 "entry '/Configuration/Preferences for current account'\n"
561 "and change the general Preferences by using\n"
562 "'/Configuration/Preferences'.\n"
564 "You can find further information in the Claws Mail manual,\n"
565 "which can be accessed by using the menu entry '/Help/Manual'\n"
566 "or online at the URL given below.\n"
574 "Mailing Lists: <%s>\n"
578 "Claws Mail is free software, released under the terms\n"
579 "of the GNU General Public License, version 3 or later, as\n"
580 "published by the Free Software Foundation, 51 Franklin Street,\n"
581 "Fifth Floor, Boston, MA 02110-1301, USA. The license can be\n"
586 "If you wish to donate to the Claws Mail project you can do\n"
588 HOMEPAGE_URI, MANUAL_URI, FAQ_URI, THEMES_URI, MAILING_LIST_URI,
589 GPL_URI, DONATE_URI);
591 msg = g_strconcat(head, body, NULL);
593 if (inbox && inbox->total_msgs == 0
594 && str_write_to_file(msg, file) >= 0) {
595 MsgFlags flags = { MSG_UNREAD|MSG_NEW, 0};
596 folder_item_add_msg(inbox, file, &flags, FALSE);
605 static gboolean wizard_write_config(WizardWindow *wizard)
607 static gboolean mailbox_ok = FALSE;
608 PrefsAccount *prefs_account = prefs_account_new();
609 GList *account_list = NULL;
610 gchar *smtp_server, *recv_server;
611 gint smtp_port, recv_port;
613 SSLType smtp_ssl_type, recv_ssl_type;
616 prefs_account->protocol = combobox_get_active_data(
617 GTK_COMBO_BOX(wizard->recv_type));
619 if (wizard->create_mailbox && prefs_account->protocol != A_IMAP4 &&
620 !strlen(gtk_entry_get_text(GTK_ENTRY(wizard->mailbox_name)))) {
621 alertpanel_error(_("Please enter the mailbox name."));
622 g_free(prefs_account);
623 gtk_notebook_set_current_page (
624 GTK_NOTEBOOK(wizard->notebook),
630 if (wizard->create_mailbox && prefs_account->protocol != A_IMAP4) {
631 mailbox_ok = setup_write_mailbox_path(wizard->mainwin,
633 GTK_ENTRY(wizard->mailbox_name)));
639 /* alertpanel done by setup_write_mailbox_path */
640 g_free(prefs_account);
641 gtk_notebook_set_current_page (
642 GTK_NOTEBOOK(wizard->notebook),
647 if (!strlen(gtk_entry_get_text(GTK_ENTRY(wizard->full_name)))
648 || !strlen(gtk_entry_get_text(GTK_ENTRY(wizard->email)))) {
649 alertpanel_error(_("Please enter your name and email address."));
650 g_free(prefs_account);
651 gtk_notebook_set_current_page (
652 GTK_NOTEBOOK(wizard->notebook),
657 if (prefs_account->protocol != A_LOCAL) {
658 if (!strlen(gtk_entry_get_text(GTK_ENTRY(wizard->recv_username)))
659 || !strlen(gtk_entry_get_text(GTK_ENTRY(wizard->recv_server)))) {
660 alertpanel_error(_("Please enter your receiving server "
662 g_free(prefs_account);
663 gtk_notebook_set_current_page (
664 GTK_NOTEBOOK(wizard->notebook),
669 if (!strlen(gtk_entry_get_text(GTK_ENTRY(wizard->recv_server)))) {
670 alertpanel_error(_("Please enter your username."));
671 g_free(prefs_account);
672 gtk_notebook_set_current_page (
673 GTK_NOTEBOOK(wizard->notebook),
679 if (!strlen(gtk_entry_get_text(GTK_ENTRY(wizard->smtp_server)))) {
680 alertpanel_error(_("Please enter your SMTP server."));
681 g_free(prefs_account);
682 gtk_notebook_set_current_page (
683 GTK_NOTEBOOK(wizard->notebook),
688 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wizard->smtp_auth))) {
689 if (prefs_account->protocol == A_LOCAL
690 && !strlen(gtk_entry_get_text(GTK_ENTRY(wizard->smtp_username)))) {
691 alertpanel_error(_("Please enter your SMTP username."));
692 g_free(prefs_account);
693 gtk_notebook_set_current_page (
694 GTK_NOTEBOOK(wizard->notebook),
697 } /* if it's not local we'll use the reception server */
700 if (prefs_account->protocol != A_LOCAL)
701 prefs_account->account_name = g_strdup_printf("%s@%s",
702 gtk_entry_get_text(GTK_ENTRY(wizard->recv_username)),
703 gtk_entry_get_text(GTK_ENTRY(wizard->recv_server)));
705 prefs_account->account_name = g_strdup_printf("%s",
706 gtk_entry_get_text(GTK_ENTRY(wizard->recv_server)));
708 recv_server = g_strdup(gtk_entry_get_text(GTK_ENTRY(wizard->recv_server)));
709 smtp_server = g_strdup(gtk_entry_get_text(GTK_ENTRY(wizard->smtp_server)));
711 if (prefs_account->protocol != A_LOCAL && strstr(recv_server, ":")) {
712 recv_port = atoi(strstr(recv_server, ":")+1);
713 *(strstr(recv_server, ":")) = '\0';
714 if (prefs_account->protocol == A_IMAP4) {
715 prefs_account->set_imapport = TRUE;
716 prefs_account->imapport = recv_port;
717 } else if (prefs_account->protocol == A_POP3) {
718 prefs_account->set_popport = TRUE;
719 prefs_account->popport = recv_port;
722 if (strstr(smtp_server, ":")) {
723 smtp_port = atoi(strstr(smtp_server, ":")+1);
724 *(strstr(smtp_server, ":")) = '\0';
725 prefs_account->set_smtpport = TRUE;
726 prefs_account->smtpport = smtp_port;
729 prefs_account->name = g_strdup(
730 gtk_entry_get_text(GTK_ENTRY(wizard->full_name)));
731 prefs_account->address = g_strdup(
732 gtk_entry_get_text(GTK_ENTRY(wizard->email)));
733 prefs_account->organization = g_strdup(
734 gtk_entry_get_text(GTK_ENTRY(wizard->organization)));
735 prefs_account->smtp_server = g_strdup(smtp_server);
737 if (wizard->create_mailbox && prefs_account->protocol != A_IMAP4) {
739 tmp = g_path_get_basename(gtk_entry_get_text(GTK_ENTRY(wizard->mailbox_name)));
740 prefs_account->inbox = g_strdup_printf("#mh/%s/inbox",
741 (!strcmp("Mail", gtk_entry_get_text(GTK_ENTRY(wizard->mailbox_name))))
744 prefs_account->local_inbox = g_strdup(prefs_account->inbox);
745 } else if (prefs_account->protocol != A_IMAP4) {
746 if (folder_get_default_inbox())
747 prefs_account->local_inbox =
748 folder_item_get_identifier(folder_get_default_inbox());
751 if (prefs_account->protocol != A_LOCAL)
752 prefs_account->recv_server = g_strdup(recv_server);
754 prefs_account->local_mbox = g_strdup(recv_server);
759 prefs_account->userid = g_strdup(
760 gtk_entry_get_text(GTK_ENTRY(wizard->recv_username)));
761 prefs_account->passwd = g_strdup(
762 gtk_entry_get_text(GTK_ENTRY(wizard->recv_password)));
764 prefs_account->smtp_userid = g_strdup(
765 gtk_entry_get_text(GTK_ENTRY(wizard->smtp_username)));
766 prefs_account->smtp_passwd = g_strdup(
767 gtk_entry_get_text(GTK_ENTRY(wizard->smtp_password)));
768 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wizard->smtp_auth))) {
769 prefs_account->use_smtp_auth = TRUE;
773 smtp_ssl_type = SSL_NONE;
774 recv_ssl_type = SSL_NONE;
776 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wizard->smtp_use_ssl))) {
777 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wizard->smtp_use_tls)))
778 smtp_ssl_type = SSL_STARTTLS;
780 smtp_ssl_type = SSL_TUNNEL;
782 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wizard->recv_use_ssl))) {
783 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wizard->recv_use_tls)))
784 recv_ssl_type = SSL_STARTTLS;
786 recv_ssl_type = SSL_TUNNEL;
789 prefs_account->ssl_smtp = smtp_ssl_type;
791 if (prefs_account->protocol == A_IMAP4)
792 prefs_account->ssl_imap = recv_ssl_type;
794 prefs_account->ssl_pop = recv_ssl_type;
796 prefs_account->out_ssl_client_cert_file = g_strdup(
797 gtk_entry_get_text(GTK_ENTRY(wizard->smtp_ssl_cert_file)));
798 prefs_account->out_ssl_client_cert_pass = g_strdup(
799 gtk_entry_get_text(GTK_ENTRY(wizard->smtp_ssl_cert_pass)));
800 prefs_account->in_ssl_client_cert_file = g_strdup(
801 gtk_entry_get_text(GTK_ENTRY(wizard->recv_ssl_cert_file)));
802 prefs_account->in_ssl_client_cert_pass = g_strdup(
803 gtk_entry_get_text(GTK_ENTRY(wizard->recv_ssl_cert_pass)));
805 if (prefs_account->protocol == A_IMAP4) {
806 gchar *directory = gtk_editable_get_chars(
807 GTK_EDITABLE(wizard->recv_imap_subdir), 0, -1);
808 if (directory && strlen(directory)) {
809 prefs_account->imap_dir = g_strdup(directory);
811 prefs_account->imap_subsonly =
812 gtk_toggle_button_get_active(
813 GTK_TOGGLE_BUTTON(wizard->subsonly_checkbtn));
817 account_list = g_list_append(account_list, prefs_account);
818 prefs_account_write_config_all(account_list);
819 prefs_account_free(prefs_account);
820 account_read_config_all();
822 initialize_fonts(wizard);
823 if (wizard->create_mailbox && prefs_account->protocol != A_IMAP4)
824 write_welcome_email(wizard);
827 plugin_load_standard_plugins();
832 static GtkWidget* create_page (WizardWindow *wizard, const char * title)
840 vbox = gtk_vbox_new (FALSE, 6);
841 gtk_container_set_border_width (GTK_CONTAINER(vbox), 10);
843 /* create the titlebar */
844 hbox = gtk_hbox_new (FALSE, 12);
845 image = stock_pixmap_widget(wizard->window,
846 STOCK_PIXMAP_CLAWS_MAIL_ICON);
847 gtk_box_pack_start (GTK_BOX(hbox), image, FALSE, FALSE, 0);
848 title_string = g_strconcat ("<span size=\"xx-large\" weight=\"ultrabold\">", title ? title : "", "</span>", NULL);
849 w = gtk_label_new (title_string);
850 gtk_label_set_use_markup (GTK_LABEL(w), TRUE);
851 g_free (title_string);
852 gtk_box_pack_start (GTK_BOX(hbox), w, FALSE, FALSE, 0);
854 /* pack the titlebar */
855 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
857 /* pack the separator */
858 gtk_box_pack_start (GTK_BOX(vbox), gtk_hseparator_new(), FALSE, FALSE, 0);
861 w = gtk_alignment_new (0, 0, 0, 0);
862 gtk_widget_set_size_request (w, 0, 6);
863 gtk_box_pack_start (GTK_BOX(vbox), w, FALSE, FALSE, 0);
868 #define PACK_BOX(hbox,text,entry) { \
869 GtkWidget *label = gtk_label_new(text); \
870 gtk_label_set_use_markup(GTK_LABEL(label), TRUE); \
871 if (GTK_IS_MISC(label)) \
872 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); \
873 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); \
874 gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0); \
877 static gchar *get_default_server(WizardWindow * wizard, const gchar *type)
879 if (!strcmp(type, "smtp")) {
880 if (!tmpl.smtpserver || !strlen(tmpl.smtpserver))
881 return g_strconcat(type, ".", tmpl.domain, NULL);
883 return g_strdup(tmpl.smtpserver);
885 if (!tmpl.recvserver || !strlen(tmpl.recvserver))
886 return g_strconcat(type, ".", tmpl.domain, NULL);
888 return g_strdup(tmpl.recvserver);
892 static gchar *get_default_account(WizardWindow * wizard)
894 gchar *result = NULL;
896 if (!tmpl.recvuser || !strlen(tmpl.recvuser)) {
897 result = gtk_editable_get_chars(
898 GTK_EDITABLE(wizard->email), 0, -1);
900 if (strstr(result, "@")) {
901 *(strstr(result,"@")) = '\0';
904 result = g_strdup(tmpl.recvuser);
909 static gchar *get_default_smtp_account(WizardWindow * wizard)
911 gchar *result = NULL;
913 if (!tmpl.smtpuser || !strlen(tmpl.smtpuser)) {
916 result = g_strdup(tmpl.smtpuser);
921 static void wizard_email_changed(GtkWidget *widget, gpointer data)
923 WizardWindow *wizard = (WizardWindow *)data;
924 RecvProtocol protocol;
926 protocol = combobox_get_active_data(GTK_COMBO_BOX(wizard->recv_type));
928 text = get_default_server(wizard, "smtp");
929 gtk_entry_set_text(GTK_ENTRY(wizard->smtp_server), text);
932 text = get_default_account(wizard);
933 gtk_entry_set_text(GTK_ENTRY(wizard->recv_username), text);
936 if (protocol == A_POP3) {
937 text = get_default_server(wizard, "pop");
938 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), text);
940 } else if (protocol == A_IMAP4) {
941 text = get_default_server(wizard, "imap");
942 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), text);
944 } else if (protocol == A_LOCAL) {
945 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), tmpl.mboxfile?tmpl.mboxfile:"");
950 static GtkWidget* user_page (WizardWindow * wizard)
952 GtkWidget *table = gtk_table_new(1,1, FALSE);
955 GtkWidget *user_table;
957 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
958 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
960 vbox = gtk_vbox_new(FALSE, VSPACING_NARROW);
961 gtk_container_set_border_width(GTK_CONTAINER(vbox), VSPACING_NARROW_2);
963 gtk_table_attach(GTK_TABLE(table), vbox, 0,1,1,2,
964 GTK_EXPAND|GTK_FILL, 0, 0, 0);
966 user_table = gtk_table_new(3, 2, FALSE);
967 gtk_table_set_row_spacings(GTK_TABLE(user_table), VSPACING_NARROW);
968 gtk_box_pack_start(GTK_BOX(vbox), user_table, FALSE, FALSE, 0);
970 label = gtk_label_new(_("<span weight=\"bold\">Your name:</span>"));
971 gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
972 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
973 gtk_table_attach(GTK_TABLE(user_table), label, 0,1,0,1,
974 GTK_FILL, 0, VSPACING_NARROW, 0);
975 wizard->full_name = gtk_entry_new();
976 gtk_entry_set_text(GTK_ENTRY(wizard->full_name), tmpl.name?tmpl.name:"");
977 gtk_table_attach(GTK_TABLE(user_table), wizard->full_name, 1,2,0,1,
978 GTK_EXPAND|GTK_FILL, 0, 0, 0);
980 label = gtk_label_new(_("<span weight=\"bold\">Your email address:</span>"));
981 gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
982 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
983 gtk_table_attach(GTK_TABLE(user_table), label, 0,1,1,2,
984 GTK_FILL, 0, VSPACING_NARROW, 0);
985 wizard->email = gtk_entry_new();
986 gtk_entry_set_text(GTK_ENTRY(wizard->email), tmpl.email?tmpl.email:"");
987 gtk_table_attach(GTK_TABLE(user_table), wizard->email, 1,2,1,2,
988 GTK_EXPAND|GTK_FILL, 0, 0, 0);
990 label = gtk_label_new(_("Your organization:"));
991 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
992 gtk_table_attach(GTK_TABLE(user_table), label, 0,1,2,3,
993 GTK_FILL, 0, VSPACING_NARROW, 0);
994 wizard->organization = gtk_entry_new();
995 gtk_entry_set_text(GTK_ENTRY(wizard->organization), tmpl.organization?tmpl.organization:"");
996 gtk_table_attach(GTK_TABLE(user_table), wizard->organization, 1,2,2,3,
997 GTK_EXPAND|GTK_FILL, 0, 0, 0);
999 g_signal_connect(G_OBJECT(wizard->email), "changed",
1000 G_CALLBACK(wizard_email_changed),
1005 static GtkWidget* mailbox_page (WizardWindow * wizard)
1007 GtkWidget *table = gtk_table_new(1,1, FALSE);
1011 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
1012 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
1014 vbox = gtk_vbox_new(FALSE, VSPACING_NARROW);
1015 gtk_container_set_border_width(GTK_CONTAINER(vbox), VSPACING_NARROW_2);
1017 gtk_table_attach(GTK_TABLE(table), vbox, 0,1,1,2,
1018 GTK_EXPAND|GTK_FILL, 0, 0, 0);
1020 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1021 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1023 wizard->mailbox_label = gtk_label_new(_("<span weight=\"bold\">Mailbox name:</span>"));
1024 gtk_label_set_use_markup(GTK_LABEL(wizard->mailbox_label), TRUE);
1025 if (GTK_IS_MISC(wizard->mailbox_label))
1026 gtk_misc_set_alignment(GTK_MISC(wizard->mailbox_label), 1, 0.5);
1027 wizard->mailbox_name = gtk_entry_new();
1029 gtk_entry_set_text(GTK_ENTRY(wizard->mailbox_name), tmpl.mailbox?tmpl.mailbox:"");
1031 CLAWS_SET_TIP(wizard->mailbox_name, _("You can also specify an absolute path, for example: "
1032 "\"/home/john/Documents/Mail\""));
1034 gtk_box_pack_start(GTK_BOX(hbox), wizard->mailbox_label, FALSE, FALSE, 0);
1035 gtk_box_pack_start(GTK_BOX(hbox), wizard->mailbox_name, TRUE, TRUE, 0);
1040 static void smtp_auth_changed (GtkWidget *btn, gpointer data)
1042 WizardWindow *wizard = (WizardWindow *)data;
1043 gboolean do_auth = gtk_toggle_button_get_active(
1044 GTK_TOGGLE_BUTTON(wizard->smtp_auth));
1045 gtk_widget_set_sensitive(wizard->smtp_username, do_auth);
1046 gtk_widget_set_sensitive(wizard->smtp_username_label, do_auth);
1047 gtk_widget_set_sensitive(wizard->smtp_password, do_auth);
1048 gtk_widget_set_sensitive(wizard->smtp_password_label, do_auth);
1052 static void cert_browse_cb(GtkWidget *widget, gpointer data)
1054 GtkEntry *dest = GTK_ENTRY(data);
1056 gchar *utf8_filename;
1058 filename = filesel_select_file_open(_("Select certificate file"), NULL);
1059 if (!filename) return;
1061 utf8_filename = g_filename_to_utf8(filename, -1, NULL, NULL, NULL);
1062 if (!utf8_filename) {
1063 g_warning("cert_browse_cb(): failed to convert character set.");
1064 utf8_filename = g_strdup(filename);
1066 gtk_entry_set_text(dest, utf8_filename);
1067 g_free(utf8_filename);
1071 static GtkWidget* smtp_page (WizardWindow * wizard)
1073 GtkWidget *table = gtk_table_new(1, 1, FALSE);
1076 GtkWidget *hbox_spc;
1077 GtkWidget *smtp_auth_table;
1081 GtkWidget *smtp_cert_table;
1085 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
1086 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
1088 vbox = gtk_vbox_new(FALSE, VSPACING_NARROW);
1089 gtk_container_set_border_width(GTK_CONTAINER(vbox), VSPACING_NARROW_2);
1091 gtk_table_attach(GTK_TABLE(table), vbox, 0,1,1,2,
1092 GTK_EXPAND|GTK_FILL, 0, 0, 0);
1094 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1095 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1096 wizard->smtp_server = gtk_entry_new();
1097 text = get_default_server(wizard, "smtp");
1098 gtk_entry_set_text(GTK_ENTRY(wizard->smtp_server), text);
1101 CLAWS_SET_TIP(wizard->smtp_server,
1102 _("You can specify the port number by appending it at the end: "
1103 "\"mail.example.com:25\""));
1105 PACK_BOX(hbox, _("<span weight=\"bold\">SMTP server address:</span>"),
1106 wizard->smtp_server);
1108 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1109 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1110 wizard->smtp_auth = gtk_check_button_new_with_label(
1111 _("Use authentication"));
1112 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wizard->smtp_auth),
1114 g_signal_connect(G_OBJECT(wizard->smtp_auth), "toggled",
1115 G_CALLBACK(smtp_auth_changed),
1117 gtk_box_pack_start(GTK_BOX(hbox), wizard->smtp_auth, FALSE, FALSE, 0);
1119 label = gtk_label_new(_("<span size=\"small\">(empty to use the same as receive)</span>"));
1120 gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
1121 SET_TOGGLE_SENSITIVITY (wizard->smtp_auth, label);
1122 gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 0);
1124 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1125 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1126 hbox_spc = gtk_hbox_new (FALSE, 0);
1127 gtk_widget_set_size_request (hbox_spc, 12, -1);
1128 gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
1129 smtp_auth_table = gtk_table_new(2, 2, FALSE);
1130 SET_TOGGLE_SENSITIVITY (wizard->smtp_auth, smtp_auth_table);
1131 gtk_box_pack_start(GTK_BOX(hbox), smtp_auth_table, TRUE, TRUE, 0);
1133 wizard->smtp_username_label = gtk_label_new(_("SMTP username:"));
1134 gtk_misc_set_alignment(GTK_MISC(wizard->smtp_username_label), 1, 0.5);
1135 gtk_table_attach(GTK_TABLE(smtp_auth_table), wizard->smtp_username_label, 0,1,0,1,
1136 GTK_FILL, 0, VSPACING_NARROW, 0);
1137 text = get_default_smtp_account(wizard);
1138 wizard->smtp_username = gtk_entry_new();
1139 gtk_entry_set_text(GTK_ENTRY(wizard->smtp_username), text);
1141 gtk_table_attach(GTK_TABLE(smtp_auth_table), wizard->smtp_username, 1,2,0,1,
1142 GTK_EXPAND|GTK_FILL, 0, 0, 0);
1144 wizard->smtp_password_label = gtk_label_new(_("SMTP password:"));
1145 gtk_misc_set_alignment(GTK_MISC(wizard->smtp_password_label), 1, 0.5);
1146 gtk_table_attach(GTK_TABLE(smtp_auth_table), wizard->smtp_password_label, 0,1,1,2,
1147 GTK_FILL, 0, VSPACING_NARROW, 0);
1148 wizard->smtp_password = gtk_entry_new();
1149 gtk_entry_set_text(GTK_ENTRY(wizard->smtp_password), tmpl.smtppass?tmpl.smtppass:"");
1150 gtk_entry_set_visibility(GTK_ENTRY(wizard->smtp_password), FALSE);
1151 gtk_table_attach(GTK_TABLE(smtp_auth_table), wizard->smtp_password, 1,2,1,2,
1152 GTK_EXPAND|GTK_FILL, 0, 0, 0);
1154 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1155 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1156 wizard->smtp_use_ssl = gtk_check_button_new_with_label(
1157 _("Use SSL to connect to SMTP server"));
1158 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wizard->smtp_use_ssl),
1160 gtk_box_pack_start(GTK_BOX(hbox), wizard->smtp_use_ssl, FALSE, FALSE, 0);
1162 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1163 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1164 hbox_spc = gtk_hbox_new (FALSE, 0);
1165 gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
1166 gtk_widget_set_size_request (hbox_spc, 12, -1);
1167 wizard->smtp_use_tls = gtk_check_button_new_with_label(
1168 _("Use SSL via STARTTLS"));
1169 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wizard->smtp_use_tls),
1171 gtk_box_pack_start(GTK_BOX(hbox), wizard->smtp_use_tls, FALSE, FALSE, 0);
1172 SET_TOGGLE_SENSITIVITY (wizard->smtp_use_ssl, wizard->smtp_use_tls);
1174 smtp_cert_table = gtk_table_new(3,3, FALSE);
1175 gtk_box_pack_start (GTK_BOX(vbox), smtp_cert_table, FALSE, FALSE, 4);
1176 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1177 hbox_spc = gtk_hbox_new (FALSE, 0);
1178 gtk_widget_set_size_request (hbox_spc, 12, -1);
1179 gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
1180 label = gtk_label_new(_("Client SSL certificate (optional)"));
1181 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
1182 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
1183 gtk_table_attach(GTK_TABLE(smtp_cert_table), hbox, 0, 3, 0, 1, GTK_FILL, 0, 0, 0);
1184 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1185 hbox_spc = gtk_hbox_new (FALSE, 0);
1186 gtk_widget_set_size_request (hbox_spc, 12, -1);
1187 gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
1188 label = gtk_label_new(_("File"));
1189 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
1190 gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
1191 gtk_table_attach(GTK_TABLE(smtp_cert_table), hbox, 0, 1, 1, 2,
1192 GTK_FILL, 0, VSPACING_NARROW, 0);
1193 wizard->smtp_ssl_cert_file = gtk_entry_new();
1194 gtk_entry_set_text(GTK_ENTRY(wizard->smtp_ssl_cert_file), tmpl.smtpssl_cert?tmpl.smtpssl_cert:"");
1195 gtk_table_attach(GTK_TABLE(smtp_cert_table), wizard->smtp_ssl_cert_file, 1, 2, 1, 2, GTK_FILL, 0, 0, 0);
1196 button = gtkut_get_browse_file_btn(_("Browse"));
1197 gtk_table_attach(GTK_TABLE(smtp_cert_table), button, 2, 3, 1, 2,
1198 GTK_FILL, 0, VSPACING_NARROW, 0);
1199 g_signal_connect(G_OBJECT(button), "clicked",
1200 G_CALLBACK(cert_browse_cb), wizard->smtp_ssl_cert_file);
1202 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1203 hbox_spc = gtk_hbox_new (FALSE, 0);
1204 gtk_widget_set_size_request (hbox_spc, 12, -1);
1205 gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
1206 label = gtk_label_new(_("Password"));
1207 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
1208 gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
1209 gtk_table_attach(GTK_TABLE(smtp_cert_table), hbox, 0, 1, 2, 3,
1210 GTK_FILL, 0, VSPACING_NARROW, 0);
1211 wizard->smtp_ssl_cert_pass = gtk_entry_new();
1212 gtk_entry_set_visibility(GTK_ENTRY(wizard->smtp_ssl_cert_pass), FALSE);
1213 gtk_entry_set_text(GTK_ENTRY(wizard->smtp_ssl_cert_pass), tmpl.smtpssl_cert_pass?tmpl.smtpssl_cert_pass:"");
1214 gtk_table_attach(GTK_TABLE(smtp_cert_table), wizard->smtp_ssl_cert_pass, 1, 2, 2, 3, GTK_FILL, 0, 0, 0);
1215 SET_TOGGLE_SENSITIVITY (wizard->smtp_use_ssl, smtp_cert_table);
1216 wizard->smtp_cert_table = smtp_cert_table;
1218 smtp_auth_changed(NULL, wizard);
1222 static void wizard_protocol_change(WizardWindow *wizard, RecvProtocol protocol)
1226 if (protocol == A_POP3) {
1227 text = get_default_server(wizard, "pop");
1228 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), text);
1229 gtk_widget_hide(wizard->recv_imap_label);
1230 gtk_widget_hide(wizard->recv_imap_subdir);
1231 gtk_widget_hide(wizard->subsonly_checkbtn);
1232 gtk_widget_show(wizard->recv_username);
1233 gtk_widget_show(wizard->recv_password);
1234 gtk_widget_show(wizard->recv_username_label);
1235 gtk_widget_show(wizard->recv_password_label);
1236 gtk_widget_hide(wizard->no_imap_warning);
1238 gtk_widget_show(wizard->recv_use_ssl);
1239 gtk_widget_show(wizard->recv_use_tls);
1240 gtk_widget_show(wizard->recv_cert_table);
1242 gtk_label_set_text(GTK_LABEL(wizard->recv_label), _("<span weight=\"bold\">Server address:</span>"));
1243 gtk_label_set_use_markup(GTK_LABEL(wizard->recv_label), TRUE);
1244 gtk_dialog_set_response_sensitive (GTK_DIALOG(wizard->window), GO_FORWARD, TRUE);
1246 if (wizard->create_mailbox) {
1247 gtk_widget_show(wizard->mailbox_label);
1248 gtk_widget_show(wizard->mailbox_name);
1250 } else if (protocol == A_IMAP4) {
1251 #ifdef HAVE_LIBETPAN
1252 text = get_default_server(wizard, "imap");
1253 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), text);
1254 gtk_widget_show(wizard->recv_imap_label);
1255 gtk_widget_show(wizard->recv_imap_subdir);
1256 gtk_widget_show(wizard->subsonly_checkbtn);
1257 gtk_widget_show(wizard->recv_username);
1258 gtk_widget_show(wizard->recv_password);
1259 gtk_widget_show(wizard->recv_username_label);
1260 gtk_widget_show(wizard->recv_password_label);
1261 gtk_widget_hide(wizard->no_imap_warning);
1263 gtk_widget_show(wizard->recv_use_ssl);
1264 gtk_widget_show(wizard->recv_use_tls);
1265 gtk_widget_show(wizard->recv_cert_table);
1267 gtk_label_set_text(GTK_LABEL(wizard->recv_label), _("<span weight=\"bold\">Server address:</span>"));
1268 gtk_label_set_use_markup(GTK_LABEL(wizard->recv_label), TRUE);
1269 gtk_dialog_set_response_sensitive (GTK_DIALOG(wizard->window), GO_FORWARD, TRUE);
1271 if (wizard->create_mailbox) {
1272 gtk_widget_hide(wizard->mailbox_label);
1273 gtk_widget_hide(wizard->mailbox_name);
1276 gtk_widget_hide(wizard->recv_imap_label);
1277 gtk_widget_hide(wizard->recv_imap_subdir);
1278 gtk_widget_hide(wizard->subsonly_checkbtn);
1279 gtk_widget_hide(wizard->recv_username);
1280 gtk_widget_hide(wizard->recv_password);
1281 gtk_widget_hide(wizard->recv_username_label);
1282 gtk_widget_hide(wizard->recv_password_label);
1283 gtk_widget_show(wizard->no_imap_warning);
1284 if (wizard->create_mailbox) {
1285 gtk_widget_hide(wizard->mailbox_label);
1286 gtk_widget_hide(wizard->mailbox_name);
1289 gtk_widget_hide(wizard->recv_use_ssl);
1290 gtk_widget_hide(wizard->recv_use_tls);
1291 gtk_widget_hide(wizard->recv_cert_table);
1293 gtk_dialog_set_response_sensitive (GTK_DIALOG(wizard->window), GO_FORWARD, FALSE);
1295 } else if (protocol == A_LOCAL) {
1296 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), tmpl.mboxfile?tmpl.mboxfile:"");
1297 gtk_label_set_text(GTK_LABEL(wizard->recv_label), _("<span weight=\"bold\">Local mailbox:</span>"));
1298 gtk_label_set_use_markup(GTK_LABEL(wizard->recv_label), TRUE);
1299 gtk_widget_hide(wizard->no_imap_warning);
1300 gtk_widget_hide(wizard->recv_imap_label);
1301 gtk_widget_hide(wizard->recv_imap_subdir);
1302 gtk_widget_hide(wizard->subsonly_checkbtn);
1303 gtk_widget_hide(wizard->recv_username);
1304 gtk_widget_hide(wizard->recv_password);
1305 gtk_widget_hide(wizard->recv_username_label);
1306 gtk_widget_hide(wizard->recv_password_label);
1308 gtk_widget_hide(wizard->recv_use_ssl);
1309 gtk_widget_hide(wizard->recv_use_tls);
1310 gtk_widget_hide(wizard->recv_cert_table);
1312 if (wizard->create_mailbox) {
1313 gtk_widget_show(wizard->mailbox_label);
1314 gtk_widget_show(wizard->mailbox_name);
1316 gtk_dialog_set_response_sensitive (GTK_DIALOG(wizard->window), GO_FORWARD, TRUE);
1320 static void wizard_protocol_changed(GtkComboBox *combo, gpointer data)
1322 WizardWindow *wizard = (WizardWindow *)data;
1323 RecvProtocol protocol = combobox_get_active_data(combo);
1325 wizard_protocol_change(wizard, protocol);
1328 static GtkWidget* recv_page (WizardWindow * wizard)
1330 GtkWidget *table = gtk_table_new(1,1, FALSE);
1333 GtkWidget *hbox_spc;
1334 GtkWidget *recv_table;
1338 GtkWidget *recv_cert_table;
1340 GtkListStore *store;
1345 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
1346 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
1348 vbox = gtk_vbox_new(FALSE, VSPACING_NARROW);
1349 gtk_container_set_border_width(GTK_CONTAINER(vbox), VSPACING_NARROW_2);
1351 gtk_table_attach(GTK_TABLE(table), vbox, 0,1,1,2,
1352 GTK_EXPAND|GTK_FILL, 0, 0, 0);
1354 recv_table = gtk_table_new(4, 2, FALSE);
1355 gtk_box_pack_start(GTK_BOX(vbox), recv_table, FALSE, FALSE, 0);
1357 label = gtk_label_new(_("<span weight=\"bold\">Server type:</span>"));
1358 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
1359 gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
1360 gtk_table_attach(GTK_TABLE(recv_table), label, 0,1,0,1,
1361 GTK_FILL, 0, VSPACING_NARROW, 0);
1362 wizard->recv_type = gtkut_sc_combobox_create(NULL, FALSE);
1363 store = GTK_LIST_STORE(gtk_combo_box_get_model(
1364 GTK_COMBO_BOX(wizard->recv_type)));
1366 COMBOBOX_ADD(store, _("POP3"), A_POP3);
1367 COMBOBOX_ADD(store, _("IMAP"), A_IMAP4);
1368 COMBOBOX_ADD(store, _("Local mbox file"), A_LOCAL);
1370 switch(tmpl.recvtype) {
1383 gtk_combo_box_set_active(GTK_COMBO_BOX (wizard->recv_type), index);
1384 g_signal_connect(G_OBJECT(wizard->recv_type), "changed",
1385 G_CALLBACK(wizard_protocol_changed),
1387 gtk_table_attach(GTK_TABLE(recv_table), wizard->recv_type, 1,2,0,1,
1388 GTK_EXPAND|GTK_FILL, 0, 0, 0);
1390 wizard->recv_label = gtk_label_new(_("<span weight=\"bold\">Server address:</span>"));
1391 gtk_misc_set_alignment(GTK_MISC(wizard->recv_label), 1, 0.5);
1392 gtk_label_set_use_markup(GTK_LABEL(wizard->recv_label), TRUE);
1393 gtk_table_attach(GTK_TABLE(recv_table), wizard->recv_label, 0,1,1,2,
1394 GTK_FILL, 0, VSPACING_NARROW, 0);
1395 wizard->recv_server = gtk_entry_new();
1396 text = get_default_server(wizard, "pop");
1397 gtk_entry_set_text(GTK_ENTRY(wizard->recv_server), text);
1400 CLAWS_SET_TIP(wizard->recv_server,
1401 _("You can specify the port number by appending it at the end: "
1402 "\"mail.example.com:110\""));
1403 gtk_table_attach(GTK_TABLE(recv_table), wizard->recv_server, 1,2,1,2,
1404 GTK_EXPAND|GTK_FILL, 0, 0, 0);
1406 wizard->recv_username_label = gtk_label_new(_("<span weight=\"bold\">Username:</span>"));
1407 gtk_misc_set_alignment(GTK_MISC(wizard->recv_username_label), 1, 0.5);
1408 gtk_label_set_use_markup(GTK_LABEL(wizard->recv_username_label), TRUE);
1409 gtk_table_attach(GTK_TABLE(recv_table), wizard->recv_username_label, 0,1,2,3,
1410 GTK_FILL, 0, VSPACING_NARROW, 0);
1411 wizard->recv_username = gtk_entry_new();
1412 text = get_default_account(wizard);
1413 gtk_entry_set_text(GTK_ENTRY(wizard->recv_username), text);
1415 gtk_table_attach(GTK_TABLE(recv_table), wizard->recv_username, 1,2,2,3,
1416 GTK_EXPAND|GTK_FILL, 0, 0, 0);
1418 wizard->recv_password_label = gtk_label_new(_("Password:"));
1419 gtk_misc_set_alignment(GTK_MISC(wizard->recv_password_label), 1, 0.5);
1420 gtk_table_attach(GTK_TABLE(recv_table), wizard->recv_password_label, 0,1,3,4,
1421 GTK_FILL, 0, VSPACING_NARROW, 0);
1422 wizard->recv_password = gtk_entry_new();
1423 gtk_entry_set_text(GTK_ENTRY(wizard->recv_password), tmpl.recvpass?tmpl.recvpass:"");
1424 gtk_entry_set_visibility(GTK_ENTRY(wizard->recv_password), FALSE);
1425 gtk_table_attach(GTK_TABLE(recv_table), wizard->recv_password, 1,2,3,4,
1426 GTK_EXPAND|GTK_FILL, 0, 0, 0);
1428 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1429 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1430 wizard->recv_use_ssl = gtk_check_button_new_with_label(
1431 _("Use SSL to connect to receiving server"));
1432 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wizard->recv_use_ssl),
1434 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_use_ssl, FALSE, FALSE, 0);
1436 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1437 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1438 hbox_spc = gtk_hbox_new (FALSE, 0);
1439 gtk_widget_set_size_request (hbox_spc, 12, -1);
1440 gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
1441 wizard->recv_use_tls = gtk_check_button_new_with_label(
1442 _("Use SSL via STARTTLS"));
1443 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wizard->recv_use_tls),
1445 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_use_tls, FALSE, FALSE, 0);
1446 SET_TOGGLE_SENSITIVITY (wizard->recv_use_ssl, wizard->recv_use_tls);
1448 recv_cert_table = gtk_table_new(3,3, FALSE);
1449 gtk_box_pack_start (GTK_BOX(vbox), recv_cert_table, FALSE, FALSE, 4);
1450 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1451 hbox_spc = gtk_hbox_new (FALSE, 0);
1452 gtk_widget_set_size_request (hbox_spc, 12, -1);
1453 gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
1454 label = gtk_label_new(_("Client SSL certificate (optional)"));
1455 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
1456 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
1457 gtk_table_attach(GTK_TABLE(recv_cert_table), hbox, 0, 3, 0, 1, GTK_FILL, 0, 0, 0);
1458 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1459 hbox_spc = gtk_hbox_new (FALSE, 0);
1460 gtk_widget_set_size_request (hbox_spc, 12, -1);
1461 gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
1462 label = gtk_label_new(_("File"));
1463 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
1464 gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
1465 gtk_table_attach(GTK_TABLE(recv_cert_table), hbox, 0, 1, 1, 2,
1466 GTK_FILL, 0, VSPACING_NARROW, 0);
1467 wizard->recv_ssl_cert_file = gtk_entry_new();
1468 gtk_entry_set_text(GTK_ENTRY(wizard->recv_ssl_cert_file), tmpl.recvssl_cert?tmpl.recvssl_cert:"");
1469 gtk_table_attach(GTK_TABLE(recv_cert_table), wizard->recv_ssl_cert_file, 1, 2, 1, 2, GTK_FILL, 0, 0, 0);
1470 button = gtkut_get_browse_file_btn(_("Browse"));
1471 gtk_table_attach(GTK_TABLE(recv_cert_table), button, 2, 3, 1, 2,
1472 GTK_FILL, 0, VSPACING_NARROW, 0);
1473 g_signal_connect(G_OBJECT(button), "clicked",
1474 G_CALLBACK(cert_browse_cb), wizard->recv_ssl_cert_file);
1476 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1477 hbox_spc = gtk_hbox_new (FALSE, 0);
1478 gtk_widget_set_size_request (hbox_spc, 12, -1);
1479 gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
1480 label = gtk_label_new(_("Password"));
1481 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
1482 gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
1483 gtk_table_attach(GTK_TABLE(recv_cert_table), hbox, 0, 1, 2, 3,
1484 GTK_FILL, 0, VSPACING_NARROW, 0);
1485 wizard->recv_ssl_cert_pass = gtk_entry_new();
1486 gtk_entry_set_visibility(GTK_ENTRY(wizard->recv_ssl_cert_pass), FALSE);
1487 gtk_entry_set_text(GTK_ENTRY(wizard->recv_ssl_cert_pass), tmpl.recvssl_cert_pass?tmpl.recvssl_cert_pass:"");
1488 gtk_table_attach(GTK_TABLE(recv_cert_table), wizard->recv_ssl_cert_pass, 1, 2, 2, 3, GTK_FILL, 0, 0, 0);
1489 SET_TOGGLE_SENSITIVITY (wizard->recv_use_ssl, recv_cert_table);
1490 wizard->recv_cert_table = recv_cert_table;
1492 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1493 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1494 wizard->recv_imap_subdir = gtk_entry_new();
1495 gtk_entry_set_text(GTK_ENTRY(wizard->recv_imap_subdir), tmpl.imapdir?tmpl.imapdir:"");
1496 wizard->recv_imap_label = gtk_label_new(_("IMAP server directory:"));
1497 gtk_misc_set_alignment(GTK_MISC(wizard->recv_imap_label), 1, 0.5);
1498 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_imap_label, FALSE, FALSE, 0);
1499 gtk_box_pack_start(GTK_BOX(hbox), wizard->recv_imap_subdir, TRUE, TRUE, 0);
1501 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1502 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1503 hbox_spc = gtk_hbox_new (FALSE, 0);
1504 gtk_widget_set_size_request (hbox_spc, 12, -1);
1505 gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
1506 wizard->subsonly_checkbtn = gtk_check_button_new_with_label(
1507 _("Show only subscribed folders"));
1508 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wizard->subsonly_checkbtn),
1510 gtk_box_pack_start(GTK_BOX(hbox), wizard->subsonly_checkbtn, FALSE, FALSE, 0);
1512 hbox = gtk_hbox_new(FALSE, VSPACING_NARROW);
1513 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1514 wizard->no_imap_warning = gtk_label_new(_(
1515 "<span weight=\"bold\">Warning: this version of Claws Mail\n"
1516 "has been built without IMAP support.</span>"));
1517 gtk_label_set_use_markup(GTK_LABEL(wizard->no_imap_warning), TRUE);
1518 gtk_box_pack_start(GTK_BOX(hbox), wizard->no_imap_warning, FALSE, FALSE, 0);
1524 wizard_response_cb (GtkDialog * dialog, int response, gpointer data)
1526 WizardWindow * wizard = (WizardWindow *)data;
1527 int current_page, num_pages;
1528 gboolean skip_mailbox_page = FALSE;
1529 gint protocol = combobox_get_active_data(GTK_COMBO_BOX(wizard->recv_type));
1531 if (protocol == A_IMAP4) {
1532 skip_mailbox_page = TRUE;
1535 num_pages = g_slist_length(wizard->pages);
1537 current_page = gtk_notebook_get_current_page (
1538 GTK_NOTEBOOK(wizard->notebook));
1539 if (response == CANCEL)
1541 wizard->result = FALSE;
1542 wizard->finished = TRUE;
1543 gtk_widget_destroy (GTK_WIDGET(dialog));
1545 else if (response == FINISHED)
1547 if (!wizard_write_config(wizard)) {
1548 current_page = gtk_notebook_get_current_page (
1549 GTK_NOTEBOOK(wizard->notebook));
1552 wizard->result = TRUE;
1553 wizard->finished = TRUE;
1554 gtk_widget_destroy (GTK_WIDGET(dialog));
1558 if (response == GO_BACK)
1560 if (current_page > 0) {
1562 if (current_page == MAILBOX_PAGE && skip_mailbox_page) {
1566 gtk_notebook_set_current_page (
1567 GTK_NOTEBOOK(wizard->notebook),
1571 else if (response == GO_FORWARD)
1573 if (current_page < (num_pages-1)) {
1575 if (current_page == MAILBOX_PAGE && skip_mailbox_page) {
1579 gtk_notebook_set_current_page (
1580 GTK_NOTEBOOK(wizard->notebook),
1585 gtk_dialog_set_response_sensitive (dialog, GO_BACK,
1587 gtk_dialog_set_response_sensitive (dialog, GO_FORWARD,
1588 current_page < (num_pages - 1));
1589 if (current_page == (num_pages -1)) {
1590 gtk_dialog_set_response_sensitive (dialog, FINISHED, TRUE);
1591 gtk_dialog_set_default_response(GTK_DIALOG(wizard->window), FINISHED);
1593 gtk_dialog_set_response_sensitive (dialog, FINISHED, FALSE);
1594 gtk_dialog_set_default_response(GTK_DIALOG(wizard->window), GO_FORWARD);
1600 static gint wizard_close_cb(GtkWidget *widget, GdkEventAny *event,
1603 WizardWindow *wizard = (WizardWindow *)data;
1604 wizard->result = FALSE;
1605 wizard->finished = TRUE;
1610 #define PACK_WARNING(text) { \
1611 label = gtk_label_new(text); \
1612 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); \
1613 gtk_box_pack_end(GTK_BOX(widget), label, FALSE, FALSE, 0); \
1616 gboolean run_wizard(MainWindow *mainwin, gboolean create_mailbox) {
1617 WizardWindow *wizard = g_new0(WizardWindow, 1);
1621 GtkWidget *scrolled_window;
1626 wizard->mainwin = mainwin;
1627 wizard->create_mailbox = create_mailbox;
1629 gtk_widget_hide(mainwin->window);
1631 wizard_read_defaults();
1633 wizard->window = gtk_dialog_new_with_buttons (_("Claws Mail Setup Wizard"),
1635 GTK_STOCK_GO_BACK, GO_BACK,
1636 GTK_STOCK_GO_FORWARD, GO_FORWARD,
1637 GTK_STOCK_SAVE, FINISHED,
1638 GTK_STOCK_CANCEL, CANCEL,
1640 gtk_widget_set_size_request(wizard->window, -1, 480);
1641 gtk_window_set_position(GTK_WINDOW(wizard->window), GTK_WIN_POS_CENTER);
1643 g_signal_connect(wizard->window, "response",
1644 G_CALLBACK(wizard_response_cb), wizard);
1645 gtk_widget_realize(wizard->window);
1646 gtk_dialog_set_default_response(GTK_DIALOG(wizard->window),
1648 gtk_dialog_set_response_sensitive(GTK_DIALOG(wizard->window),
1650 gtk_dialog_set_response_sensitive(GTK_DIALOG(wizard->window),
1652 gtk_dialog_set_response_sensitive(GTK_DIALOG(wizard->window),
1654 gtk_dialog_set_response_sensitive(GTK_DIALOG(wizard->window),
1657 wizard->notebook = gtk_notebook_new();
1658 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(wizard->notebook), FALSE);
1659 gtk_notebook_set_show_border(GTK_NOTEBOOK(wizard->notebook), FALSE);
1660 gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(wizard->window))),
1661 wizard->notebook, TRUE, TRUE, 0);
1663 wizard->pages = NULL;
1665 /*welcome page: 0 */
1667 page = create_page(wizard, _("Welcome to Claws Mail"));
1669 wizard->pages = g_slist_append(wizard->pages, page);
1670 widget = stock_pixmap_widget(wizard->window,
1671 STOCK_PIXMAP_CLAWS_MAIL_LOGO);
1673 gtk_box_pack_start (GTK_BOX(page), widget, FALSE, FALSE, 0);
1675 text = g_strdup(_("Welcome to the Claws Mail setup wizard.\n\n"
1676 "We will begin by defining some basic "
1677 "information about you and your most common "
1678 "mail options so that you can start to use "
1679 "Claws Mail in less than five minutes."));
1680 widget = gtk_label_new(text);
1681 gtk_label_set_line_wrap(GTK_LABEL(widget), TRUE);
1682 gtk_box_pack_start (GTK_BOX(page), widget, FALSE, FALSE, 0);
1688 widget = create_page (wizard, _("About You"));
1689 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
1690 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
1691 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1692 gtk_box_pack_start(GTK_BOX(widget), scrolled_window, TRUE, TRUE, 0);
1694 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window),
1696 PACK_WARNING(_("Bold fields must be completed"));
1698 wizard->pages = g_slist_append(wizard->pages, widget);
1700 /* recv+auth page: 2 */
1703 widget = create_page (wizard, _("Receiving mail"));
1704 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
1705 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
1706 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1707 gtk_box_pack_start(GTK_BOX(widget), scrolled_window, TRUE, TRUE, 0);
1709 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window),
1711 PACK_WARNING(_("Bold fields must be completed"));
1713 wizard->pages = g_slist_append(wizard->pages, widget);
1718 widget = create_page (wizard, _("Sending mail"));
1719 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
1720 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
1721 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1722 gtk_box_pack_start(GTK_BOX(widget), scrolled_window, TRUE, TRUE, 0);
1724 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window),
1726 PACK_WARNING(_("Bold fields must be completed"));
1728 wizard->pages = g_slist_append(wizard->pages, widget);
1730 /* mailbox page: 4 */
1731 if (create_mailbox) {
1734 widget = create_page (wizard, _("Saving mail on disk"));
1735 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
1736 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
1737 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1738 gtk_box_pack_start(GTK_BOX(widget), scrolled_window, TRUE, TRUE, 0);
1740 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window),
1741 mailbox_page(wizard));
1742 PACK_WARNING(_("Bold fields must be completed"));
1744 wizard->pages = g_slist_append(wizard->pages, widget);
1750 page = create_page(wizard, _("Configuration finished"));
1752 wizard->pages = g_slist_append(wizard->pages, page);
1753 widget = stock_pixmap_widget(wizard->window,
1754 STOCK_PIXMAP_CLAWS_MAIL_LOGO);
1756 gtk_box_pack_start (GTK_BOX(page), widget, FALSE, FALSE, 0);
1758 text = g_strdup(_("Claws Mail is now ready.\n"
1759 "Click Save to start."));
1760 widget = gtk_label_new(text);
1761 gtk_box_pack_start (GTK_BOX(page), widget, FALSE, FALSE, 0);
1765 for (cur = wizard->pages; cur && cur->data; cur = cur->next) {
1766 gtk_notebook_append_page (GTK_NOTEBOOK(wizard->notebook),
1767 GTK_WIDGET(cur->data), NULL);
1770 g_signal_connect(G_OBJECT(wizard->window), "delete_event",
1771 G_CALLBACK(wizard_close_cb), wizard);
1772 gtk_widget_show_all (wizard->window);
1774 gtk_widget_hide(wizard->recv_imap_label);
1775 gtk_widget_hide(wizard->recv_imap_subdir);
1776 gtk_widget_hide(wizard->subsonly_checkbtn);
1778 wizard_protocol_change(wizard, tmpl.recvtype);
1780 while (!wizard->finished)
1781 gtk_main_iteration();
1783 result = wizard->result;
1787 gtk_widget_show(mainwin->window);