diff options
Diffstat (limited to 'mail/mail-config-druid.c')
-rw-r--r-- | mail/mail-config-druid.c | 460 |
1 files changed, 246 insertions, 214 deletions
diff --git a/mail/mail-config-druid.c b/mail/mail-config-druid.c index c7791e3646..6afa19b642 100644 --- a/mail/mail-config-druid.c +++ b/mail/mail-config-druid.c @@ -23,7 +23,6 @@ * */ - #ifdef HAVE_CONFIG_H #include <config.h> #endif @@ -33,25 +32,29 @@ #include <string.h> #include <unistd.h> -#include <glade/glade.h> -#include <gtkhtml/gtkhtml.h> #include <libgnomeui/gnome-dialog.h> #include <libgnomeui/gnome-dialog-util.h> #include <libgnomeui/gnome-druid.h> #include <libgnomeui/gnome-druid-page-standard.h> -#include <bonobo/bonobo-exception.h> - +#include <glade/glade.h> +#include <gtkhtml/gtkhtml.h> +#include <gal/widgets/e-unicode.h> #include "mail-config-druid.h" #include "mail-config.h" #include "mail-ops.h" #include "mail.h" #include "mail-session.h" +#include <bonobo/bonobo-exception.h> +#include <bonobo/bonobo-control.h> +#include <bonobo/bonobo-widget.h> +#include <bonobo/bonobo-generic-factory.h> +#include <bonobo/bonobo-context.h> + #include <evolution-wizard.h> -#include <e-util/e-account.h> static void mail_config_druid_class_init (MailConfigDruidClass *class); -static void mail_config_druid_destroy (GtkObject *obj); +static void mail_config_druid_finalize (GtkObject *obj); static GtkWindowClass *parent_class; @@ -74,7 +77,7 @@ typedef enum { typedef struct { MailAccountGui *gui; - EAccount *account; + MailConfigAccount *account; EvolutionWizard *wizard; gboolean identity_copied; @@ -85,20 +88,20 @@ typedef struct { GtkType mail_config_druid_get_type (void) { - static GType type = 0; + static GtkType type = 0; if (!type) { - GTypeInfo type_info = { - sizeof (MailConfigDruidClass), - NULL, NULL, - (GClassInitFunc) mail_config_druid_class_init, - NULL, NULL, + GtkTypeInfo type_info = { + "MailConfigDruid", sizeof (MailConfigDruid), - 0, - (GInstanceInitFunc) NULL, + sizeof (MailConfigDruidClass), + (GtkClassInitFunc) mail_config_druid_class_init, + (GtkObjectInitFunc) NULL, + (GtkArgSetFunc) NULL, + (GtkArgGetFunc) NULL }; - - type = g_type_register_static (gtk_window_get_type (), "MailConfigDruid", &type_info, 0); + + type = gtk_type_unique (gtk_window_get_type (), &type_info); } return type; @@ -110,32 +113,28 @@ mail_config_druid_class_init (MailConfigDruidClass *class) GtkObjectClass *object_class; object_class = (GtkObjectClass *) class; - parent_class = g_type_class_ref(gtk_window_get_type ()); + parent_class = gtk_type_class (gtk_window_get_type ()); /* override methods */ - object_class->destroy = mail_config_druid_destroy; + object_class->finalize = mail_config_druid_finalize; } static void -mail_config_druid_destroy (GtkObject *obj) +mail_config_druid_finalize (GtkObject *obj) { MailConfigDruid *druid = (MailConfigDruid *) obj; CORBA_Environment ev; - if (druid->xml) { - g_object_unref(druid->xml); - druid->xml = NULL; + gtk_object_destroy (GTK_OBJECT (druid->xml)); - CORBA_exception_init (&ev); - Bonobo_EventSource_removeListener ((Bonobo_EventSource) druid->event_source, - bonobo_object_corba_objref(BONOBO_OBJECT(druid->listener)), &ev); - CORBA_exception_free (&ev); + CORBA_exception_init (&ev); + Bonobo_EventSource_removeListener ((Bonobo_EventSource) druid->event_source, druid->id, &ev); + CORBA_exception_free (&ev); - bonobo_object_release_unref ((Bonobo_Unknown) druid->event_source, &ev); - bonobo_object_unref (BONOBO_OBJECT (druid->listener)); - } + bonobo_object_release_unref ((Bonobo_Unknown) druid->event_source, &ev); + bonobo_object_unref (BONOBO_OBJECT (druid->listener)); - ((GtkObjectClass *)(parent_class))->destroy(obj); + ((GtkObjectClass *)(parent_class))->finalize (obj); } @@ -213,7 +212,7 @@ druid_finish (GnomeDruidPage *page, gpointer arg1, gpointer user_data) { MailConfigDruid *druid = user_data; - g_object_set_data(G_OBJECT(account_wizard), "account-data", NULL); + gtk_object_set_data (GTK_OBJECT (account_wizard), "account-data", NULL); if (page_list != NULL) { g_list_free (page_list); page_list = NULL; @@ -271,13 +270,12 @@ identity_next (EvolutionWizard *wizard, gpointer data) if (!gui->identity_copied) { char *username; - const char *user; - + /* Copy the username part of the email address into * the Username field of the source and transport pages. */ - user = gtk_entry_get_text (gui->gui->email_address); - username = g_strndup (user, strcspn (user, "@")); + username = gtk_entry_get_text (gui->gui->email_address); + username = g_strndup (username, strcspn (username, "@")); gtk_entry_set_text (gui->gui->source.username, username); gtk_entry_set_text (gui->gui->transport.username, username); g_free (username); @@ -398,7 +396,7 @@ static gboolean management_check (MailConfigWizard *wizard) { gboolean next_sensitive; - const char *text; + char *text; text = gtk_entry_get_text (wizard->gui->account_name); next_sensitive = text && *text; @@ -422,7 +420,7 @@ management_prepare (EvolutionWizard *wizard, gpointer data) text = gtk_entry_get_text (gui->gui->account_name); if (!text || *text == '\0') { - name = gtk_entry_get_text(gui->gui->email_address); + name = e_utf8_gtk_entry_get_text (gui->gui->email_address); if (name && *name) { if (mail_config_get_account_by_name (name)) { char *template; @@ -440,7 +438,7 @@ management_prepare (EvolutionWizard *wizard, gpointer data) } while (mail_config_get_account_by_name (name) && i != 0); } - gtk_entry_set_text(gui->gui->account_name, name); + e_utf8_gtk_entry_set_text (gui->gui->account_name, name); } } @@ -460,27 +458,24 @@ management_changed (GtkWidget *widget, gpointer data) gtk_widget_grab_focus (GTK_WIDGET (gui->gui->account_name)); } -static EAccount * +static MailConfigAccount * make_account (void) { - const char *name, *user; - EAccountService *xport; + MailConfigAccount *account; + char *name, *user; struct utsname uts; - EAccount *account; - account = e_account_new (); - account->enabled = TRUE; + account = g_new0 (MailConfigAccount, 1); + account->id = g_new0 (MailConfigIdentity, 1); name = g_get_real_name (); - account->id->name = g_strdup (name); + account->id->name = e_utf8_from_locale_string (name); user = g_get_user_name (); if (user && !uname (&uts) && strchr (uts.nodename, '.')) account->id->address = g_strdup_printf ("%s@%s", user, uts.nodename); - if ((xport = mail_config_get_default_transport ())) { - account->transport->url = g_strdup (xport->url); - account->transport->save_passwd = xport->save_passwd; - } + if (mail_config_get_default_transport ()) + account->transport = service_copy (mail_config_get_default_transport ()); return account; } @@ -492,7 +487,6 @@ static const char *pages[] = { "transport_page", "management_page", "finish_page", - "druidpagestart1", NULL }; @@ -606,8 +600,7 @@ wizard_listener_event (BonoboListener *listener, gnome_druid_set_buttons_sensitive (GNOME_DRUID (druid->druid), (buttons & 4) >> 2, (buttons & 2) >> 1, - (buttons & 1), - FALSE); + (buttons & 1)); } else if (strcmp (event_name, EVOLUTION_WIZARD_SET_SHOW_FINISH) == 0) { gnome_druid_set_show_finish (GNOME_DRUID (druid->druid), (gboolean) *((CORBA_boolean *)event_data->_value)); @@ -630,11 +623,11 @@ construct (MailConfigDruid *druid) /* Start account wizard */ CORBA_exception_init (&ev); - corba_wizard = bonobo_activation_activate_from_id ("OAFIID:GNOME_Evolution_Mail_Wizard", 0, NULL, &ev); + corba_wizard = oaf_activate_from_id ("OAFIID:GNOME_Evolution_Mail_Wizard", 0, NULL, &ev); CORBA_exception_free (&ev); g_assert (account_wizard != NULL); - druid->xml = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", NULL, NULL); + druid->xml = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", NULL); /* get our toplevel widget and reparent it */ widget = glade_xml_get_widget (druid->xml, "druid"); gtk_widget_reparent (widget, GTK_WIDGET (druid)); @@ -645,17 +638,17 @@ construct (MailConfigDruid *druid) gtk_window_set_title (GTK_WINDOW (druid), _("Evolution Account Assistant")); gtk_window_set_policy (GTK_WINDOW (druid), FALSE, TRUE, FALSE); gtk_window_set_modal (GTK_WINDOW (druid), FALSE); - g_object_set (G_OBJECT (druid), "type", GTK_WINDOW_TOPLEVEL, NULL); + gtk_object_set (GTK_OBJECT (druid), "type", GTK_WINDOW_DIALOG, NULL); druid->listener = bonobo_listener_new (NULL, NULL); - g_signal_connect(druid->listener, "event-notify", - G_CALLBACK (wizard_listener_event), druid); + gtk_signal_connect (GTK_OBJECT (druid->listener), "event-notify", + GTK_SIGNAL_FUNC (wizard_listener_event), druid); corba_listener = bonobo_object_corba_objref (BONOBO_OBJECT (druid->listener)); CORBA_exception_init (&ev); druid->event_source = (Bonobo_Unknown) bonobo_object_query_interface ( - BONOBO_OBJECT (account_wizard), "IDL:Bonobo/EventSource:1.0", NULL); + BONOBO_OBJECT (account_wizard), "IDL:Bonobo/EventSource:1.0"); g_assert (druid->event_source != CORBA_OBJECT_NIL); - Bonobo_EventSource_addListener ((Bonobo_EventSource) druid->event_source, corba_listener, &ev); + druid->id = Bonobo_EventSource_addListener ((Bonobo_EventSource) druid->event_source, corba_listener, &ev); if (BONOBO_EX (&ev)) { g_warning ("Error adding listener (%s)", CORBA_exception_id (&ev)); @@ -675,12 +668,17 @@ construct (MailConfigDruid *druid) g_hash_table_insert (page_hash, page, GINT_TO_POINTER (i)); page_list = g_list_append (page_list, page); - g_signal_connect(page, "next", G_CALLBACK (next_func), druid); - g_signal_connect(page, "prepare", G_CALLBACK (prepare_func), druid); - g_signal_connect(page, "back", G_CALLBACK (back_func), druid); - g_signal_connect(page, "finish", G_CALLBACK (finish_func), druid); + gtk_signal_connect (GTK_OBJECT (page), "next", + GTK_SIGNAL_FUNC (next_func), druid); + gtk_signal_connect (GTK_OBJECT (page), "prepare", + GTK_SIGNAL_FUNC (prepare_func), druid); + gtk_signal_connect (GTK_OBJECT (page), "back", + GTK_SIGNAL_FUNC (back_func), druid); + + gtk_signal_connect (GTK_OBJECT (page), "finish", + GTK_SIGNAL_FUNC (finish_func), druid); - if (i < 5) { + if (i != 5) { Bonobo_Control control; GtkWidget *w; CORBA_Environment ev; @@ -690,20 +688,22 @@ construct (MailConfigDruid *druid) CORBA_exception_init (&ev); control = GNOME_Evolution_Wizard_getControl (corba_wizard, i, &ev); if (BONOBO_EX (&ev)) { - g_warning ("Error getting page %d: %s", i, CORBA_exception_id (&ev)); + g_warning ("Error getting page %d: %s", i, + CORBA_exception_id (&ev)); CORBA_exception_free (&ev); continue; } - w = bonobo_widget_new_control_from_objref (control, CORBA_OBJECT_NIL); - gtk_box_pack_start (GTK_BOX (dpage->vbox), w, TRUE, TRUE, 0); + w = bonobo_widget_new_control_from_objref (control, + CORBA_OBJECT_NIL); + gtk_box_pack_start (GTK_BOX (dpage->vbox), w, TRUE, + TRUE, 0); + gtk_widget_show_all (w); } - gtk_widget_show_all (page); - } - g_signal_connect(druid->druid, "cancel", G_CALLBACK(druid_cancel), druid); + gtk_signal_connect (GTK_OBJECT (druid->druid), "cancel", druid_cancel, druid); - gnome_druid_set_buttons_sensitive (druid->druid, FALSE, TRUE, TRUE, FALSE); + gnome_druid_set_buttons_sensitive (druid->druid, FALSE, TRUE, TRUE); } MailConfigDruid * @@ -711,7 +711,7 @@ mail_config_druid_new (GNOME_Evolution_Shell shell) { MailConfigDruid *new; - new = (MailConfigDruid *) g_object_new(mail_config_druid_get_type(), NULL); + new = (MailConfigDruid *) gtk_type_new (mail_config_druid_get_type ()); construct (new); new->shell = shell; @@ -764,74 +764,75 @@ management_activate_cb (GtkEntry *ent, gpointer user_data) static BonoboControl * get_fn (EvolutionWizard *wizard, - int page_num, - void *closure) + int page_num, + void *closure) { - MailConfigWizard *gui = closure; - BonoboControl *control; - GtkWidget *vbox, *widget; + MailConfigWizard *gui = closure; + BonoboControl *control; + GtkWidget *vbox, *widget; static gboolean first_time = TRUE; - if (gui->gui == NULL) { + if (gui->gui == NULL) { if (gui->account == NULL) { gui->account = make_account (); - g_object_set_data ((GObject *) wizard, "account-data", gui->account); + gtk_object_set_data (GTK_OBJECT (wizard), "account-data", + gui->account); } gui->gui = mail_account_gui_new (gui->account, NULL); /* set up signals, etc */ - g_signal_connect (gui->gui->account_name, "changed", - G_CALLBACK (management_changed), gui); - g_signal_connect (gui->gui->full_name, "changed", - G_CALLBACK (identity_changed), gui); - g_signal_connect (gui->gui->email_address, "changed", - G_CALLBACK (identity_changed), gui); - g_signal_connect (gui->gui->reply_to,"changed", - G_CALLBACK (identity_changed), gui); - g_signal_connect (gui->gui->source.hostname, "changed", - G_CALLBACK (source_changed), gui); - g_signal_connect (gui->gui->source.username, "changed", - G_CALLBACK (source_changed), gui); - g_signal_connect (gui->gui->source.path, "changed", - G_CALLBACK (source_changed), gui); - g_signal_connect (gui->gui->transport.hostname, "changed", - G_CALLBACK (transport_changed), gui); - g_signal_connect (gui->gui->transport.username, "changed", - G_CALLBACK (transport_changed), gui); - g_signal_connect (gui->gui->transport_needs_auth, "toggled", - G_CALLBACK (transport_changed), gui); - - g_signal_connect (gui->gui->account_name, "activate", - G_CALLBACK (management_activate_cb), gui); - - g_signal_connect (gui->gui->full_name, "activate", - G_CALLBACK (identity_activate_cb), gui); - g_signal_connect (gui->gui->email_address, "activate", - G_CALLBACK (identity_activate_cb), gui); - g_signal_connect (gui->gui->reply_to,"activate", - G_CALLBACK (identity_activate_cb), gui); - g_signal_connect (gui->gui->organization, "activate", - G_CALLBACK (identity_activate_cb), gui); - - g_signal_connect (gui->gui->source.hostname, "activate", - G_CALLBACK (source_activate_cb), gui); - g_signal_connect (gui->gui->source.username, "activate", - G_CALLBACK (source_activate_cb), gui); - g_signal_connect (gui->gui->source.path, "activate", - G_CALLBACK (source_activate_cb), gui); - - g_signal_connect (gui->gui->transport.hostname, "activate", - G_CALLBACK (transport_activate_cb), gui); - g_signal_connect (gui->gui->transport.username, "activate", - G_CALLBACK (transport_activate_cb), gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->account_name), + "changed", management_changed, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->full_name), + "changed", identity_changed, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->email_address), + "changed", identity_changed, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->reply_to), + "changed", identity_changed, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->source.hostname), + "changed", source_changed, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->source.username), + "changed", source_changed, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->source.path), + "changed", source_changed, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->transport.hostname), + "changed", transport_changed, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->transport.username), + "changed", transport_changed, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->transport_needs_auth), + "toggled", transport_changed, gui); + + gtk_signal_connect (GTK_OBJECT (gui->gui->account_name), + "activate", management_activate_cb, gui); + + gtk_signal_connect (GTK_OBJECT (gui->gui->full_name), + "activate", identity_activate_cb, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->email_address), + "activate", identity_activate_cb, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->reply_to), + "activate", identity_activate_cb, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->organization), + "activate", identity_activate_cb, gui); + + gtk_signal_connect (GTK_OBJECT (gui->gui->source.hostname), + "activate", source_activate_cb, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->source.username), + "activate", source_activate_cb, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->source.path), + "activate", source_activate_cb, gui); + + gtk_signal_connect (GTK_OBJECT (gui->gui->transport.hostname), + "activate", transport_activate_cb, gui); + gtk_signal_connect (GTK_OBJECT (gui->gui->transport.username), + "activate", transport_activate_cb, gui); first_time = TRUE; - } + } - /* Fill in the druid pages */ + /* Fill in the druid pages */ vbox = gtk_vbox_new (FALSE, 0); - switch (page_num) { - case 0: + switch (page_num) { + case 0: widget = create_label ("identity_html"); gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); widget = glade_xml_get_widget (gui->gui->xml, "identity_required_frame"); @@ -840,89 +841,93 @@ get_fn (EvolutionWizard *wizard, widget = glade_xml_get_widget (gui->gui->xml, "identity_optional_frame"); gtk_widget_reparent (widget, vbox); gtk_box_set_child_packing (GTK_BOX (vbox), widget, FALSE, FALSE, 0, GTK_PACK_START); - break; - case 1: + break; + + case 1: widget = create_label ("source_html"); gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); widget = glade_xml_get_widget (gui->gui->xml, "source_vbox"); - gtk_widget_reparent (widget, vbox); + gtk_widget_reparent (widget, vbox); gtk_widget_show (widget); - break; - case 2: + break; + + case 2: widget = create_label ("extra_html"); gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); - widget = glade_xml_get_widget (gui->gui->xml, "extra_vbox"); - gtk_widget_reparent (widget, vbox); - break; - case 3: + widget = glade_xml_get_widget (gui->gui->xml, "extra_vbox"); + gtk_widget_reparent (widget, vbox); + break; + + case 3: widget = create_label ("transport_html"); gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); - widget = glade_xml_get_widget (gui->gui->xml, "transport_vbox"); - gtk_widget_reparent (widget, vbox); + widget = glade_xml_get_widget (gui->gui->xml, "transport_vbox"); + gtk_widget_reparent (widget, vbox); gtk_widget_show (widget); - break; - case 4: + break; + + case 4: widget = glade_xml_get_widget (gui->gui->xml, "management_frame"); gtk_widget_reparent (widget, vbox); break; - default: - return NULL; - } + + default: + return NULL; + } - gtk_widget_show (vbox); - control = bonobo_control_new (vbox); + gtk_widget_show (vbox); + control = bonobo_control_new (vbox); if (first_time) { mail_account_gui_setup (gui->gui, NULL); first_time = FALSE; } - return control; + return control; } typedef gboolean (*NextFunc)(EvolutionWizard *wizard, gpointer data); -typedef void (*PrepFunc)(EvolutionWizard *wizard, gpointer data); static struct { - NextFunc next_func; - PrepFunc prepare_func; - NextFunc back_func; - GtkSignalFunc finish_func; - GtkSignalFunc help_func; + NextFunc next_func; + GtkSignalFunc prepare_func; + NextFunc back_func; + GtkSignalFunc finish_func; + GtkSignalFunc help_func; } wizard_pages[] = { - { identity_next, - identity_prepare, - NULL, - G_CALLBACK (NULL), - G_CALLBACK (NULL) }, - { source_next, - source_prepare, - NULL, - G_CALLBACK (NULL), - G_CALLBACK (NULL) }, - { NULL, - extra_prepare, - NULL, - G_CALLBACK (NULL), - G_CALLBACK (NULL) }, - { transport_next, - transport_prepare, - transport_back, - G_CALLBACK (NULL), - G_CALLBACK (NULL) }, - { NULL, - management_prepare, - NULL, - G_CALLBACK (NULL), - G_CALLBACK (NULL) } + { identity_next, + GTK_SIGNAL_FUNC (identity_prepare), + NULL, + GTK_SIGNAL_FUNC (NULL), + GTK_SIGNAL_FUNC (NULL) }, + { source_next, + GTK_SIGNAL_FUNC (source_prepare), + NULL, + GTK_SIGNAL_FUNC (NULL), + GTK_SIGNAL_FUNC (NULL) }, + { NULL, + GTK_SIGNAL_FUNC (extra_prepare), + NULL, + GTK_SIGNAL_FUNC (NULL), + GTK_SIGNAL_FUNC (NULL) }, + { transport_next, + GTK_SIGNAL_FUNC (transport_prepare), + transport_back, + GTK_SIGNAL_FUNC (NULL), + GTK_SIGNAL_FUNC (NULL) }, + { NULL, + GTK_SIGNAL_FUNC (management_prepare), + NULL, + GTK_SIGNAL_FUNC (NULL), + GTK_SIGNAL_FUNC (NULL) } }; static void wizard_next_cb (EvolutionWizard *wizard, - int page_num, - MailConfigWizard *gui) + int page_num, + MailConfigWizard *gui) { - if (wizard_pages[page_num].next_func == NULL + if (wizard_pages[page_num].next_func == NULL || !(wizard_pages[page_num].next_func (wizard, gui))) { if (page_num < 5-1) { evolution_wizard_set_page(wizard, page_num+1, NULL); @@ -932,26 +937,26 @@ wizard_next_cb (EvolutionWizard *wizard, static void wizard_prepare_cb (EvolutionWizard *wizard, - int page_num, - MailConfigWizard *gui) + int page_num, + MailConfigWizard *gui) { - if (wizard_pages[page_num].prepare_func != NULL) { - wizard_pages[page_num].prepare_func (wizard, gui); - } + if (wizard_pages[page_num].prepare_func != NULL) { + wizard_pages[page_num].prepare_func (wizard, gui); + } } static void wizard_back_cb (EvolutionWizard *wizard, - int page_num, - MailConfigWizard *gui) + int page_num, + MailConfigWizard *gui) { if (page_num >= 5) evolution_wizard_set_page(wizard, 4, NULL); - else if (wizard_pages[page_num].back_func == NULL + else if (wizard_pages[page_num].back_func == NULL || !(wizard_pages[page_num].back_func (wizard, gui))) { if (page_num > 0) evolution_wizard_set_page(wizard, page_num-1, NULL); - } + } } static void @@ -960,12 +965,15 @@ wizard_finish_cb (EvolutionWizard *wizard, MailConfigWizard *w) { MailAccountGui *gui = w->gui; - + /* Save the settings for that account */ if (mail_account_gui_save (gui) == FALSE) /* problem. Um, how to keep the druid alive? */ return; + if (gui->account->source) + gui->account->source->enabled = TRUE; + /* Write out the config info */ mail_config_write (); mail_account_gui_destroy (gui); @@ -975,8 +983,8 @@ wizard_finish_cb (EvolutionWizard *wizard, static void wizard_cancel_cb (EvolutionWizard *wizard, - int page_num, - MailConfigWizard *gui) + int page_num, + MailConfigWizard *gui) { mail_account_gui_destroy (gui->gui); gui->gui = NULL; @@ -984,8 +992,8 @@ wizard_cancel_cb (EvolutionWizard *wizard, static void wizard_help_cb (EvolutionWizard *wizard, - int page_num, - MailConfigWizard *gui) + int page_num, + MailConfigWizard *gui) { } @@ -1001,35 +1009,59 @@ wizard_free (MailConfigWizard *wizard) g_free (wizard); } -BonoboObject * -evolution_mail_config_wizard_new (void) +static BonoboObject * +evolution_mail_config_wizard_factory_fn (BonoboGenericFactory *factory, + void *closure) { EvolutionWizard *wizard; - MailConfigWizard *gui; - EAccount *account; + MailConfigAccount *account; + MailConfigWizard *gui; - account = make_account (); + account = make_account (); - gui = g_new (MailConfigWizard, 1); + gui = g_new (MailConfigWizard, 1); gui->gui = NULL; - gui->account = account; + gui->account = account; gui->identity_copied = FALSE; gui->last_source = NULL; gui->page = MAIL_CONFIG_WIZARD_PAGE_NONE; - wizard = evolution_wizard_new (get_fn, 5, gui); + wizard = evolution_wizard_new (get_fn, 5, gui); account_wizard = wizard; - g_object_set_data_full ((GObject *) account_wizard, "account-data", gui, - (GDestroyNotify) wizard_free); + gtk_object_set_data_full (GTK_OBJECT (account_wizard), + "account-data", gui, + (GtkDestroyNotify) wizard_free); gui->wizard = wizard; - g_signal_connect (wizard, "next", G_CALLBACK (wizard_next_cb), gui); - g_signal_connect (wizard, "prepare", G_CALLBACK (wizard_prepare_cb), gui); - g_signal_connect (wizard, "back", G_CALLBACK (wizard_back_cb), gui); - g_signal_connect (wizard, "finish", G_CALLBACK (wizard_finish_cb), gui); - g_signal_connect (wizard, "cancel", G_CALLBACK (wizard_cancel_cb), gui); - g_signal_connect (wizard, "help", G_CALLBACK (wizard_help_cb), gui); - - return BONOBO_OBJECT (wizard); + gtk_signal_connect (GTK_OBJECT (wizard), "next", + GTK_SIGNAL_FUNC (wizard_next_cb), gui); + gtk_signal_connect (GTK_OBJECT (wizard), "prepare", + GTK_SIGNAL_FUNC (wizard_prepare_cb), gui); + gtk_signal_connect (GTK_OBJECT (wizard), "back", + GTK_SIGNAL_FUNC (wizard_back_cb), gui); + gtk_signal_connect (GTK_OBJECT (wizard), "finish", + GTK_SIGNAL_FUNC (wizard_finish_cb), gui); + gtk_signal_connect (GTK_OBJECT (wizard), "cancel", + GTK_SIGNAL_FUNC (wizard_cancel_cb), gui); + gtk_signal_connect (GTK_OBJECT (wizard), "help", + GTK_SIGNAL_FUNC (wizard_help_cb), gui); + + return BONOBO_OBJECT (wizard); +} + +void +evolution_mail_config_wizard_init (void) +{ + BonoboGenericFactory *factory; + + factory = bonobo_generic_factory_new (WIZARD_IID, + evolution_mail_config_wizard_factory_fn, NULL); + + if (factory == NULL) { + g_warning ("Error starting factory"); + return; + } + + bonobo_running_context_auto_exit_unref (BONOBO_OBJECT (factory)); } |