Startup assistant stuff
svn path=/trunk/; revision=12145
This commit is contained in:
@ -1,3 +1,7 @@
|
||||
2001-08-16 "Big Iain" Holmes <iain@ximian.com>
|
||||
|
||||
* configure.in: Add widgets/e-timezone-dialog/Makefile
|
||||
|
||||
2001-08-16 Jason Leach <jleach@ximian.com>
|
||||
|
||||
* AUTHORS: I know what you did last summer!
|
||||
|
||||
@ -1,3 +1,13 @@
|
||||
2001-08-16 Iain Holmes <iain@ximian.com>
|
||||
|
||||
* gui/Makefile.am: Add the libetimezonedialog.a lib link
|
||||
|
||||
* gui/calendar-config.c: Change the #include for the timezone dialog
|
||||
|
||||
* gui/e-timezone-entry.c: Ditto.
|
||||
|
||||
* gui/dialogs/Makefile.am: Remove the e-timezone-dialog stuff.
|
||||
|
||||
2001-08-16 Damon Chaplin <damon@ximian.com>
|
||||
|
||||
* gui/dialogs/event-page.c: hide the timezone fields for all-day
|
||||
|
||||
@ -148,6 +148,7 @@ evolution_calendar_LDADD = \
|
||||
$(top_builddir)/libversit/libversit.la \
|
||||
$(top_builddir)/e-util/ename/libename.la \
|
||||
dialogs/libcal-dialogs.a \
|
||||
$(top_builddir)/widgets/e-timezone-dialog/libetimezonedialog.a \
|
||||
$(top_builddir)/widgets/misc/libemiscwidgets.a \
|
||||
$(EXTRA_GNOME_LIBS) \
|
||||
$(BONOBO_HTML_GNOME_LIBS) \
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
#include <libgnome/gnome-defs.h>
|
||||
#include <libgnome/gnome-config.h>
|
||||
#include <libgnomeui/gnome-dialog.h>
|
||||
#include "dialogs/e-timezone-dialog.h"
|
||||
#include <widgets/e-timezone-dialog/e-timezone-dialog.h>
|
||||
#include "component-factory.h"
|
||||
#include "calendar-commands.h"
|
||||
#include "e-tasks.h"
|
||||
|
||||
@ -59,8 +59,6 @@ libcal_dialogs_a_SOURCES = \
|
||||
delete-comp.h \
|
||||
e-delegate-dialog.c \
|
||||
e-delegate-dialog.h \
|
||||
e-timezone-dialog.c \
|
||||
e-timezone-dialog.h \
|
||||
event-editor.c \
|
||||
event-editor.h \
|
||||
event-page.c \
|
||||
@ -86,7 +84,6 @@ glade_DATA = \
|
||||
alarm-page.glade \
|
||||
cal-prefs-dialog.glade \
|
||||
e-delegate-dialog.glade \
|
||||
e-timezone-dialog.glade \
|
||||
event-page.glade \
|
||||
meeting-page.glade \
|
||||
recurrence-page.glade \
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
#include <gtk/gtkentry.h>
|
||||
#include <gtk/gtksignal.h>
|
||||
#include <gnome.h>
|
||||
#include "dialogs/e-timezone-dialog.h"
|
||||
#include <widgets/e-timezone-dialog/e-timezone-dialog.h>
|
||||
#include "e-timezone-entry.h"
|
||||
|
||||
/* The timezone icon for the button. */
|
||||
|
||||
@ -1084,6 +1084,7 @@ camel/tests/smime/Makefile
|
||||
camel/tests/stream/Makefile
|
||||
composer/Makefile
|
||||
widgets/Makefile
|
||||
widgets/e-timezone-dialog/Makefile
|
||||
widgets/meeting-time-sel/Makefile
|
||||
widgets/misc/Makefile
|
||||
widgets/menus/Makefile
|
||||
|
||||
@ -1,3 +1,22 @@
|
||||
2001-08-16 Iain Holmes <iain@ximian.com>
|
||||
|
||||
* GNOME_Evolution_Mail.oaf.in: Add the Wizard stuff.
|
||||
|
||||
* component-factory.c (component_fn): Init the Wizard factory.
|
||||
(mail_load_storages): Check service isn't NULL before it's been
|
||||
dereferenced.
|
||||
|
||||
* mail-account-gui.c (mail_account_gui_setup): Only show the top level
|
||||
widget is it's not NULL.
|
||||
Change the gtk_widget_set_usizes to gtk_widget_hides.
|
||||
|
||||
* mail-config-druid.c: Rewrite to use the EvolutionWizard stuff.
|
||||
|
||||
* mail-config-druid.h: Add stuff to the MailConfigDruid struct.
|
||||
|
||||
* mail-config.c (mail_config_get_default_account): Init the config if
|
||||
it's not been inited.
|
||||
|
||||
2001-08-16 Jason Leach <jleach@ximian.com>
|
||||
|
||||
* mail-tools.c (mail_tool_quote_message): Only starting cutting
|
||||
|
||||
@ -141,4 +141,14 @@
|
||||
</oaf_attribute>
|
||||
</oaf_server>
|
||||
|
||||
<oaf_server iid="OAFIID:GNOME_Evolution_Mail_Wizard_Factory"
|
||||
type="exe"
|
||||
location="evolution-mail">
|
||||
</oaf_server>
|
||||
|
||||
<oaf_server iid="OAFIID:GNOME_Evolution_Mail_Wizard"
|
||||
type="factory"
|
||||
location="OAFIID:GNOME_Evolution_Mail_Wizard_Factory">
|
||||
</oaf_server>
|
||||
|
||||
</oaf_info>
|
||||
|
||||
@ -32,6 +32,7 @@
|
||||
|
||||
#include "Evolution.h"
|
||||
#include "evolution-storage.h"
|
||||
#include "evolution-wizard.h"
|
||||
|
||||
#include "folder-browser-factory.h"
|
||||
#include "evolution-shell-component.h"
|
||||
@ -735,6 +736,8 @@ component_fn (BonoboGenericFactory *factory, void *closure)
|
||||
bonobo_object_add_interface (BONOBO_OBJECT (shell_component),
|
||||
BONOBO_OBJECT (destination_interface));
|
||||
|
||||
evolution_mail_config_wizard_init ();
|
||||
|
||||
evolution_shell_component_add_user_creatable_item (shell_component, "message", _("New Mail Message"), _("New _Mail Message"), 'm');
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (shell_component), "owner_set",
|
||||
@ -1002,7 +1005,7 @@ mail_load_storages (GNOME_Evolution_Shell shell, const GSList *sources, gboolean
|
||||
name = NULL;
|
||||
}
|
||||
|
||||
if (service->url == NULL || service->url[0] == '\0' || !service->enabled)
|
||||
if (service == NULL || service->url == NULL || service->url[0] == '\0' || !service->enabled)
|
||||
continue;
|
||||
|
||||
mail_load_storage_by_uri (shell, service->url, name);
|
||||
|
||||
@ -41,8 +41,8 @@ extern "C" {
|
||||
struct _MailAccountEditor {
|
||||
GnomeDialog parent;
|
||||
|
||||
MailAccountGui *gui;
|
||||
GtkNotebook *notebook;
|
||||
MailAccountGui *gui;
|
||||
GtkNotebook *notebook;
|
||||
};
|
||||
|
||||
typedef struct _MailAccountEditor MailAccountEditor;
|
||||
|
||||
@ -414,7 +414,7 @@ transport_type_changed (GtkWidget *widget, gpointer user_data)
|
||||
|
||||
provider = gtk_object_get_data (GTK_OBJECT (widget), "provider");
|
||||
gui->transport.provider = provider;
|
||||
|
||||
|
||||
frame = glade_xml_get_widget (gui->xml, "transport_frame");
|
||||
if (CAMEL_PROVIDER_ALLOWS (provider, CAMEL_URL_PART_HOST) ||
|
||||
(CAMEL_PROVIDER_ALLOWS (provider, CAMEL_URL_PART_AUTH) &&
|
||||
@ -1427,7 +1427,6 @@ mail_account_gui_setup (MailAccountGui *gui, GtkWidget *top)
|
||||
fstore = item;
|
||||
hstore = si;
|
||||
}
|
||||
|
||||
/* set the menus on the optionmenus */
|
||||
gtk_option_menu_remove_menu (gui->source.type);
|
||||
gtk_option_menu_set_menu (gui->source.type, stores);
|
||||
@ -1456,31 +1455,33 @@ mail_account_gui_setup (MailAccountGui *gui, GtkWidget *top)
|
||||
gtk_widget_set_usize (GTK_WIDGET (gui->transport.authtype),
|
||||
size_req.width, -1);
|
||||
}
|
||||
|
||||
gtk_widget_show_all (top);
|
||||
|
||||
if (top != NULL) {
|
||||
gtk_widget_show_all (top);
|
||||
}
|
||||
|
||||
/* Force some other elements to keep their current sizes even if
|
||||
* widgets are hidden
|
||||
*/
|
||||
item = glade_xml_get_widget (gui->xml, "source_frame");
|
||||
gtk_widget_set_usize (item, -1, item->allocation.height);
|
||||
gtk_widget_hide (item);
|
||||
item = glade_xml_get_widget (gui->xml, "source_auth_frame");
|
||||
gtk_widget_set_usize (item, -1, item->allocation.height);
|
||||
gtk_widget_hide (item);
|
||||
item = glade_xml_get_widget (gui->xml, "source_vbox");
|
||||
gtk_widget_set_usize (item, -1, item->allocation.height);
|
||||
gtk_widget_hide (item);
|
||||
item = glade_xml_get_widget (gui->xml, "transport_frame");
|
||||
gtk_widget_set_usize (item, -1, item->allocation.height);
|
||||
gtk_widget_hide (item);
|
||||
item = glade_xml_get_widget (gui->xml, "transport_auth_frame");
|
||||
gtk_widget_set_usize (item, -1, item->allocation.height);
|
||||
gtk_widget_hide (item);
|
||||
item = glade_xml_get_widget (gui->xml, "transport_vbox");
|
||||
gtk_widget_set_usize (item, -1, item->allocation.height);
|
||||
|
||||
gtk_widget_hide (item);
|
||||
|
||||
if (fstore)
|
||||
gtk_signal_emit_by_name (GTK_OBJECT (fstore), "activate", gui);
|
||||
|
||||
if (ftransport)
|
||||
gtk_signal_emit_by_name (GTK_OBJECT (ftransport), "activate", gui);
|
||||
|
||||
|
||||
if (source_proto) {
|
||||
setup_service (&gui->source, gui->account->source);
|
||||
gui->source.provider_type = CAMEL_PROVIDER_STORE;
|
||||
@ -1498,6 +1499,8 @@ mail_account_gui_setup (MailAccountGui *gui, GtkWidget *top)
|
||||
gui->transport.provider_type = CAMEL_PROVIDER_TRANSPORT;
|
||||
g_free (transport_proto);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
* Authors:
|
||||
* Jeffrey Stedfast <fejj@ximian.com>
|
||||
* Dan Winship <danw@ximian.com>
|
||||
* Iain Holmes <iain@ximian.com>
|
||||
*
|
||||
* Copyright 2001 Ximian, Inc. (www.ximian.com)
|
||||
*
|
||||
@ -33,6 +34,8 @@
|
||||
|
||||
#include <libgnomeui/gnome-dialog.h>
|
||||
#include <libgnomeui/gnome-dialog-util.h>
|
||||
#include <libgnomeui/gnome-druid.h>
|
||||
#include <libgnomeui/gnome-druid-page-standard.h>
|
||||
#include <glade/glade.h>
|
||||
#include <gtkhtml/gtkhtml.h>
|
||||
#include <gal/widgets/e-unicode.h>
|
||||
@ -42,11 +45,36 @@
|
||||
#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>
|
||||
static void mail_config_druid_class_init (MailConfigDruidClass *class);
|
||||
static void mail_config_druid_finalize (GtkObject *obj);
|
||||
|
||||
static GtkWindowClass *parent_class;
|
||||
|
||||
/* These globals need fixed FIXME FIXME FIXME FIXME*/
|
||||
static GHashTable *page_hash = NULL;
|
||||
static GList *page_list = NULL;
|
||||
static EvolutionWizard *account_wizard;
|
||||
|
||||
#define WIZARD_IID "OAFIID:GNOME_Evolution_Mail_Wizard_Factory"
|
||||
|
||||
typedef struct {
|
||||
MailAccountGui *gui;
|
||||
MailConfigDruidIdentity *id_page;
|
||||
|
||||
MailConfigAccount *account;
|
||||
EvolutionWizard *wizard;
|
||||
|
||||
gboolean identity_copied;
|
||||
CamelProvider *last_source;
|
||||
} MailConfigWizard;
|
||||
|
||||
GtkType
|
||||
mail_config_druid_get_type (void)
|
||||
{
|
||||
@ -85,8 +113,17 @@ static void
|
||||
mail_config_druid_finalize (GtkObject *obj)
|
||||
{
|
||||
MailConfigDruid *druid = (MailConfigDruid *) obj;
|
||||
CORBA_Environment ev;
|
||||
|
||||
gtk_object_destroy (GTK_OBJECT (druid->xml));
|
||||
|
||||
mail_account_gui_destroy (druid->gui);
|
||||
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));
|
||||
|
||||
((GtkObjectClass *)(parent_class))->finalize (obj);
|
||||
}
|
||||
|
||||
@ -161,10 +198,19 @@ create_html (const char *name)
|
||||
return scrolled;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
druid_cancel (GnomeDruid *druid, gpointer user_data)
|
||||
{
|
||||
MailConfigDruid *config = user_data;
|
||||
GNOME_Evolution_Wizard wiz;
|
||||
CORBA_Environment ev;
|
||||
|
||||
wiz = bonobo_object_corba_objref (BONOBO_OBJECT (account_wizard));
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
GNOME_Evolution_Wizard_notifyAction (wiz, 0, GNOME_Evolution_Wizard_CANCEL, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
gtk_widget_destroy (GTK_WIDGET (config));
|
||||
}
|
||||
@ -173,24 +219,16 @@ static void
|
||||
druid_finish (GnomeDruidPage *page, gpointer arg1, gpointer user_data)
|
||||
{
|
||||
MailConfigDruid *druid = user_data;
|
||||
MailAccountGui *gui = druid->gui;
|
||||
MailConfigAccount *account;
|
||||
GSList *mini;
|
||||
|
||||
/* Save the settings for that account */
|
||||
mail_account_gui_save (gui);
|
||||
if (gui->account->source)
|
||||
gui->account->source->enabled = TRUE;
|
||||
/* Load up this new account */
|
||||
account = gtk_object_get_data (GTK_OBJECT (account_wizard), "account-data");
|
||||
mini = g_slist_prepend (NULL, account);
|
||||
mail_load_storages (druid->shell, mini, TRUE);
|
||||
g_slist_free (mini);
|
||||
|
||||
/* Add the account to our list (do it early because future
|
||||
steps might want to access config->accounts) */
|
||||
mail_config_add_account (gui->account);
|
||||
|
||||
/* Write out the config info */
|
||||
mail_config_write ();
|
||||
|
||||
/* Load up this new account if necessary */
|
||||
if (gui->account->source && gui->account->source->url)
|
||||
mail_load_storage_by_uri (druid->shell, gui->account->source->url, gui->account->name);
|
||||
|
||||
gtk_object_set_data (GTK_OBJECT (account_wizard), "account-data", NULL);
|
||||
gtk_widget_destroy (GTK_WIDGET (druid));
|
||||
}
|
||||
|
||||
@ -198,45 +236,45 @@ druid_finish (GnomeDruidPage *page, gpointer arg1, gpointer user_data)
|
||||
static void
|
||||
identity_changed (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
MailConfigDruid *druid = data;
|
||||
MailConfigWizard *gui = data;
|
||||
GtkWidget *incomplete;
|
||||
gboolean next_sensitive;
|
||||
|
||||
next_sensitive = mail_account_gui_identity_complete (druid->gui, &incomplete);
|
||||
next_sensitive = mail_account_gui_identity_complete (gui->gui, &incomplete);
|
||||
|
||||
gnome_druid_set_buttons_sensitive (druid->druid, TRUE, next_sensitive, TRUE);
|
||||
evolution_wizard_set_buttons_sensitive (gui->wizard, TRUE, next_sensitive, TRUE, NULL);
|
||||
|
||||
if (!next_sensitive)
|
||||
gtk_widget_grab_focus (incomplete);
|
||||
}
|
||||
|
||||
static void
|
||||
identity_prepare (GnomeDruidPage *page, GnomeDruid *druid, gpointer data)
|
||||
identity_prepare (EvolutionWizard *wizard, gpointer data)
|
||||
{
|
||||
MailConfigDruid *config = data;
|
||||
MailConfigWizard *gui = data;
|
||||
|
||||
gtk_widget_grab_focus (GTK_WIDGET (config->gui->full_name));
|
||||
identity_changed (NULL, config);
|
||||
gtk_widget_grab_focus (GTK_WIDGET (gui->gui->full_name));
|
||||
identity_changed (NULL, data);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
identity_next (GnomeDruidPage *page, GnomeDruid *druid, gpointer data)
|
||||
identity_next (EvolutionWizard *wizard, gpointer data)
|
||||
{
|
||||
MailConfigDruid *config = data;
|
||||
MailConfigWizard *gui = data;
|
||||
|
||||
if (!config->identity_copied) {
|
||||
if (!gui->identity_copied) {
|
||||
char *username;
|
||||
|
||||
/* Copy the username part of the email address into
|
||||
* the Username field of the source and transport pages.
|
||||
*/
|
||||
username = gtk_entry_get_text (config->gui->email_address);
|
||||
username = gtk_entry_get_text (gui->gui->email_address);
|
||||
username = g_strndup (username, strcspn (username, "@"));
|
||||
gtk_entry_set_text (config->gui->source.username, username);
|
||||
gtk_entry_set_text (config->gui->transport.username, username);
|
||||
gtk_entry_set_text (gui->gui->source.username, username);
|
||||
gtk_entry_set_text (gui->gui->transport.username, username);
|
||||
g_free (username);
|
||||
|
||||
config->identity_copied = TRUE;
|
||||
gui->identity_copied = TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
@ -246,93 +284,91 @@ identity_next (GnomeDruidPage *page, GnomeDruid *druid, gpointer data)
|
||||
static void
|
||||
source_changed (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
MailConfigDruid *druid = data;
|
||||
MailConfigWizard *gui = data;
|
||||
GtkWidget *incomplete;
|
||||
gboolean next_sensitive;
|
||||
|
||||
next_sensitive = mail_account_gui_source_complete (druid->gui, &incomplete);
|
||||
next_sensitive = mail_account_gui_source_complete (gui->gui, &incomplete);
|
||||
|
||||
gnome_druid_set_buttons_sensitive (druid->druid, TRUE, next_sensitive, TRUE);
|
||||
evolution_wizard_set_buttons_sensitive (gui->wizard, TRUE, next_sensitive, TRUE, NULL);
|
||||
|
||||
if (!next_sensitive)
|
||||
gtk_widget_grab_focus (incomplete);
|
||||
}
|
||||
|
||||
static void
|
||||
source_prepare (GnomeDruidPage *page, GnomeDruid *druid, gpointer data)
|
||||
source_prepare (EvolutionWizard *wizard, gpointer data)
|
||||
{
|
||||
MailConfigDruid *config = data;
|
||||
MailConfigWizard *gui = data;
|
||||
|
||||
source_changed (NULL, config);
|
||||
source_changed (NULL, gui);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
source_next (GnomeDruidPage *page, GnomeDruid *druid, gpointer data)
|
||||
source_next (EvolutionWizard *wizard, gpointer data)
|
||||
{
|
||||
MailConfigDruid *config = data;
|
||||
MailConfigWizard *gui = data;
|
||||
GtkWidget *transport_page;
|
||||
|
||||
/* FIXME: if online, check that the data is good. */
|
||||
|
||||
if (config->gui->source.provider && config->gui->source.provider->extra_conf)
|
||||
if (gui->gui->source.provider && gui->gui->source.provider->extra_conf)
|
||||
return FALSE;
|
||||
|
||||
/* Otherwise, skip to transport page. */
|
||||
transport_page = glade_xml_get_widget (config->gui->xml, "transport_page");
|
||||
transport_page = glade_xml_get_widget (gui->gui->xml, "transport_page");
|
||||
evolution_wizard_set_page (gui->wizard, 3, NULL);
|
||||
#if 0
|
||||
gnome_druid_set_page (config->druid, GNOME_DRUID_PAGE (transport_page));
|
||||
#endif
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Extra Config Page */
|
||||
static void
|
||||
extra_prepare (GnomeDruidPage *page, GnomeDruid *druid, gpointer data)
|
||||
extra_prepare (EvolutionWizard *wizard, gpointer data)
|
||||
{
|
||||
MailConfigDruid *config = data;
|
||||
MailConfigWizard *gui = data;
|
||||
|
||||
if (config->gui->source.provider != config->last_source) {
|
||||
config->last_source = config->gui->source.provider;
|
||||
mail_account_gui_build_extra_conf (config->gui, NULL);
|
||||
if (gui->gui->source.provider != gui->last_source) {
|
||||
gui->last_source = gui->gui->source.provider;
|
||||
mail_account_gui_build_extra_conf (gui->gui, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/* Transport Page */
|
||||
static void
|
||||
transport_prepare (GnomeDruidPage *page, GnomeDruid *druid, gpointer data)
|
||||
transport_prepare (EvolutionWizard *wizard, gpointer data)
|
||||
{
|
||||
MailConfigDruid *config = data;
|
||||
MailConfigWizard *gui = data;
|
||||
GtkWidget *incomplete;
|
||||
gboolean next_sensitive;
|
||||
|
||||
next_sensitive = mail_account_gui_transport_complete (config->gui, &incomplete);
|
||||
next_sensitive = mail_account_gui_transport_complete (gui->gui, &incomplete);
|
||||
|
||||
gnome_druid_set_buttons_sensitive (config->druid, TRUE, next_sensitive, TRUE);
|
||||
evolution_wizard_set_buttons_sensitive (gui->wizard, TRUE, next_sensitive, TRUE, NULL);
|
||||
|
||||
if (!next_sensitive)
|
||||
gtk_widget_grab_focus (incomplete);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
transport_next (GnomeDruidPage *page, GnomeDruid *druid, gpointer data)
|
||||
transport_next (EvolutionWizard *wizard, gpointer data)
|
||||
{
|
||||
/* FIXME: if online, check that the data is good. */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
transport_back (GnomeDruidPage *page, GnomeDruid *druid, gpointer data)
|
||||
transport_back (EvolutionWizard *wizard, gpointer data)
|
||||
{
|
||||
MailConfigDruid *config = data;
|
||||
MailConfigWizard *gui = data;
|
||||
|
||||
if (config->gui->source.provider && config->gui->source.provider->extra_conf)
|
||||
if (gui->gui->source.provider && gui->gui->source.provider->extra_conf)
|
||||
return FALSE;
|
||||
else {
|
||||
/* jump to the source page, skipping over the extra page */
|
||||
GtkWidget *widget;
|
||||
|
||||
widget = glade_xml_get_widget (config->gui->xml, "source_page");
|
||||
gnome_druid_set_page (config->druid, GNOME_DRUID_PAGE (widget));
|
||||
|
||||
evolution_wizard_set_page (wizard, 1, NULL);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@ -340,41 +376,42 @@ transport_back (GnomeDruidPage *page, GnomeDruid *druid, gpointer data)
|
||||
static void
|
||||
transport_changed (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
transport_prepare (NULL, NULL, data);
|
||||
transport_prepare (NULL, data);
|
||||
}
|
||||
|
||||
/* Management page */
|
||||
static void
|
||||
management_check (MailConfigDruid *druid)
|
||||
management_check (MailConfigWizard *wizard)
|
||||
{
|
||||
gboolean next_sensitive;
|
||||
char *text;
|
||||
|
||||
text = gtk_entry_get_text (druid->gui->account_name);
|
||||
text = gtk_entry_get_text (wizard->gui->account_name);
|
||||
next_sensitive = text && *text;
|
||||
|
||||
gnome_druid_set_buttons_sensitive (druid->druid, TRUE, next_sensitive, TRUE);
|
||||
evolution_wizard_set_buttons_sensitive (wizard->wizard, TRUE,
|
||||
next_sensitive, TRUE, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
management_prepare (GnomeDruidPage *page, GnomeDruid *druid, gpointer data)
|
||||
management_prepare (EvolutionWizard *wizard, gpointer data)
|
||||
{
|
||||
MailConfigDruid *config = data;
|
||||
MailConfigWizard *gui = data;
|
||||
char *name;
|
||||
|
||||
name = gtk_entry_get_text (config->gui->email_address);
|
||||
name = gtk_entry_get_text (gui->gui->email_address);
|
||||
if (name && *name)
|
||||
gtk_entry_set_text (config->gui->account_name, name);
|
||||
gtk_entry_set_text (gui->gui->account_name, name);
|
||||
|
||||
management_check (config);
|
||||
management_check (gui);
|
||||
}
|
||||
|
||||
static void
|
||||
management_changed (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
MailConfigDruid *druid = data;
|
||||
MailConfigWizard *gui = data;
|
||||
|
||||
management_check (druid);
|
||||
management_check (gui);
|
||||
}
|
||||
|
||||
|
||||
@ -444,18 +481,140 @@ static struct {
|
||||
GTK_SIGNAL_FUNC (NULL) }
|
||||
};
|
||||
|
||||
static int
|
||||
page_to_num (gpointer page)
|
||||
{
|
||||
gpointer r;
|
||||
|
||||
r = g_hash_table_lookup (page_hash, page);
|
||||
if (r == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return GPOINTER_TO_INT (r);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
next_func (GnomeDruidPage *page,
|
||||
GnomeDruid *druid,
|
||||
gpointer data)
|
||||
{
|
||||
GNOME_Evolution_Wizard wiz;
|
||||
CORBA_Environment ev;
|
||||
int pagenum;
|
||||
|
||||
wiz = bonobo_object_corba_objref (BONOBO_OBJECT (account_wizard));
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
pagenum = page_to_num (page);
|
||||
GNOME_Evolution_Wizard_notifyAction (wiz, pagenum, GNOME_Evolution_Wizard_NEXT, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
prepare_func (GnomeDruidPage *page,
|
||||
GnomeDruid *druid,
|
||||
gpointer data)
|
||||
{
|
||||
GNOME_Evolution_Wizard wiz;
|
||||
CORBA_Environment ev;
|
||||
int pagenum;
|
||||
|
||||
wiz = bonobo_object_corba_objref (BONOBO_OBJECT (account_wizard));
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
pagenum = page_to_num (page);
|
||||
GNOME_Evolution_Wizard_notifyAction (wiz, pagenum, GNOME_Evolution_Wizard_PREPARE, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
back_func (GnomeDruidPage *page,
|
||||
GnomeDruid *druid,
|
||||
gpointer data)
|
||||
{
|
||||
GNOME_Evolution_Wizard wiz;
|
||||
CORBA_Environment ev;
|
||||
int pagenum;
|
||||
|
||||
wiz = bonobo_object_corba_objref (BONOBO_OBJECT (account_wizard));
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
pagenum = page_to_num (page);
|
||||
GNOME_Evolution_Wizard_notifyAction (wiz, pagenum, GNOME_Evolution_Wizard_BACK, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
finish_func (GnomeDruidPage *page,
|
||||
GnomeDruid *druid,
|
||||
gpointer data)
|
||||
{
|
||||
GNOME_Evolution_Wizard wiz;
|
||||
CORBA_Environment ev;
|
||||
int pagenum;
|
||||
|
||||
wiz = bonobo_object_corba_objref (BONOBO_OBJECT (account_wizard));
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
pagenum = page_to_num (page);
|
||||
g_print ("Hello\n");
|
||||
GNOME_Evolution_Wizard_notifyAction (wiz, 0, GNOME_Evolution_Wizard_FINISH, &ev);
|
||||
g_print ("Goodbye\n");
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
druid_finish (page, druid, data);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
wizard_listener_event (BonoboListener *listener,
|
||||
char *event_name,
|
||||
BonoboArg *event_data,
|
||||
CORBA_Environment *ev,
|
||||
MailConfigDruid *druid)
|
||||
{
|
||||
CORBA_short buttons, pagenum;
|
||||
GnomeDruidPage *page;
|
||||
|
||||
if (strcmp (event_name, EVOLUTION_WIZARD_SET_BUTTONS_SENSITIVE) == 0) {
|
||||
buttons = (int) *((CORBA_short *)event_data->_value);
|
||||
gnome_druid_set_buttons_sensitive (GNOME_DRUID (druid->druid),
|
||||
(buttons & 4) >> 2,
|
||||
(buttons & 2) >> 1,
|
||||
(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));
|
||||
} else if (strcmp (event_name, EVOLUTION_WIZARD_SET_PAGE) == 0) {
|
||||
pagenum = (int) *((CORBA_short *) event_data->_value);
|
||||
|
||||
page = g_list_nth_data (page_list, pagenum - 1);
|
||||
gnome_druid_set_page (GNOME_DRUID (druid->druid), page);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
construct (MailConfigDruid *druid)
|
||||
{
|
||||
GtkWidget *widget, *vbox;
|
||||
MailConfigAccount *account;
|
||||
GtkWidget *widget;
|
||||
GNOME_Evolution_Wizard corba_wizard;
|
||||
Bonobo_Listener corba_listener;
|
||||
CORBA_Environment ev;
|
||||
int i;
|
||||
|
||||
account = make_account ();
|
||||
druid->gui = mail_account_gui_new (account);
|
||||
|
||||
/* Start account wizard */
|
||||
CORBA_exception_init (&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);
|
||||
/* get our toplevel widget and reparent it */
|
||||
widget = glade_xml_get_widget (druid->gui->xml, "druid");
|
||||
widget = glade_xml_get_widget (druid->xml, "druid");
|
||||
gtk_widget_reparent (widget, GTK_WIDGET (druid));
|
||||
|
||||
druid->druid = GNOME_DRUID (widget);
|
||||
@ -466,74 +625,70 @@ construct (MailConfigDruid *druid)
|
||||
gtk_window_set_modal (GTK_WINDOW (druid), TRUE);
|
||||
gtk_object_set (GTK_OBJECT (druid), "type", GTK_WINDOW_DIALOG, NULL);
|
||||
|
||||
/* attach to druid page signals */
|
||||
|
||||
druid->listener = bonobo_listener_new (NULL, NULL);
|
||||
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");
|
||||
g_assert (druid->event_source != CORBA_OBJECT_NIL);
|
||||
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));
|
||||
}
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
if (page_hash != NULL) {
|
||||
g_hash_table_destroy (page_hash);
|
||||
}
|
||||
page_hash = g_hash_table_new (NULL, NULL);
|
||||
for (i = 0; pages[i].name != NULL; i++) {
|
||||
GtkWidget *page;
|
||||
GnomeDruidPageStandard *dpage;
|
||||
|
||||
page = glade_xml_get_widget (druid->gui->xml, pages[i].name);
|
||||
page = glade_xml_get_widget (druid->xml, pages[i].name);
|
||||
/* Store pages */
|
||||
g_hash_table_insert (page_hash, page, GINT_TO_POINTER (i));
|
||||
page_list = g_list_append (page_list, page);
|
||||
|
||||
if (pages[i].next_func)
|
||||
gtk_signal_connect (GTK_OBJECT (page), "next",
|
||||
pages[i].next_func, druid);
|
||||
if (pages[i].prepare_func)
|
||||
gtk_signal_connect (GTK_OBJECT (page), "prepare",
|
||||
pages[i].prepare_func, druid);
|
||||
if (pages[i].back_func)
|
||||
gtk_signal_connect (GTK_OBJECT (page), "back",
|
||||
pages[i].back_func, druid);
|
||||
if (pages[i].finish_func)
|
||||
gtk_signal_connect (GTK_OBJECT (page), "finish",
|
||||
pages[i].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) {
|
||||
Bonobo_Control control;
|
||||
GtkWidget *w;
|
||||
CORBA_Environment ev;
|
||||
|
||||
dpage = GNOME_DRUID_PAGE_STANDARD (page);
|
||||
|
||||
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));
|
||||
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);
|
||||
gtk_widget_show_all (w);
|
||||
}
|
||||
}
|
||||
gtk_signal_connect (GTK_OBJECT (druid->druid), "cancel", druid_cancel, druid);
|
||||
|
||||
/* Fill in the druid pages */
|
||||
vbox = glade_xml_get_widget (druid->gui->xml, "druid_identity_vbox");
|
||||
widget = create_html ("identity_html");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
|
||||
widget = glade_xml_get_widget (druid->gui->xml, "identity_required_frame");
|
||||
gtk_widget_reparent (widget, vbox);
|
||||
gtk_box_set_child_packing (GTK_BOX (vbox), widget, FALSE, FALSE, 0, GTK_PACK_START);
|
||||
widget = glade_xml_get_widget (druid->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);
|
||||
|
||||
vbox = glade_xml_get_widget (druid->gui->xml, "druid_source_vbox");
|
||||
widget = create_html ("source_html");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
|
||||
widget = glade_xml_get_widget (druid->gui->xml, "source_vbox");
|
||||
gtk_widget_reparent (widget, vbox);
|
||||
|
||||
vbox = glade_xml_get_widget (druid->gui->xml, "druid_extra_vbox");
|
||||
widget = create_html ("extra_html");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
|
||||
widget = glade_xml_get_widget (druid->gui->xml, "extra_vbox");
|
||||
gtk_widget_reparent (widget, vbox);
|
||||
|
||||
vbox = glade_xml_get_widget (druid->gui->xml, "druid_transport_vbox");
|
||||
widget = create_html ("transport_html");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
|
||||
widget = glade_xml_get_widget (druid->gui->xml, "transport_vbox");
|
||||
gtk_widget_reparent (widget, vbox);
|
||||
|
||||
vbox = glade_xml_get_widget (druid->gui->xml, "druid_management_vbox");
|
||||
widget = create_html ("management_html");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
|
||||
widget = glade_xml_get_widget (druid->gui->xml, "management_frame");
|
||||
gtk_widget_reparent (widget, vbox);
|
||||
|
||||
/* set up signals, etc */
|
||||
gtk_signal_connect (GTK_OBJECT (druid->gui->account_name), "changed", management_changed, druid);
|
||||
gtk_signal_connect (GTK_OBJECT (druid->gui->full_name), "changed", identity_changed, druid);
|
||||
gtk_signal_connect (GTK_OBJECT (druid->gui->email_address), "changed", identity_changed, druid);
|
||||
gtk_signal_connect (GTK_OBJECT (druid->gui->source.hostname), "changed", source_changed, druid);
|
||||
gtk_signal_connect (GTK_OBJECT (druid->gui->source.username), "changed", source_changed, druid);
|
||||
gtk_signal_connect (GTK_OBJECT (druid->gui->source.path), "changed", source_changed, druid);
|
||||
gtk_signal_connect (GTK_OBJECT (druid->gui->transport.hostname), "changed", transport_changed, druid);
|
||||
gtk_signal_connect (GTK_OBJECT (druid->gui->transport.username), "changed", transport_changed, druid);
|
||||
|
||||
mail_account_gui_setup (druid->gui, GTK_WIDGET (druid));
|
||||
|
||||
gnome_druid_set_buttons_sensitive (druid->druid, FALSE, TRUE, TRUE);
|
||||
}
|
||||
|
||||
@ -548,3 +703,253 @@ mail_config_druid_new (GNOME_Evolution_Shell shell)
|
||||
|
||||
return new;
|
||||
}
|
||||
|
||||
static BonoboControl *
|
||||
get_fn (EvolutionWizard *wizard,
|
||||
int page_num,
|
||||
void *closure)
|
||||
{
|
||||
MailConfigWizard *gui = closure;
|
||||
BonoboControl *control;
|
||||
GtkWidget *vbox, *widget;
|
||||
static gboolean first_time = TRUE;
|
||||
|
||||
if (gui->gui == NULL) {
|
||||
if (gui->account == NULL) {
|
||||
gui->account = make_account ();
|
||||
gtk_object_set_data (GTK_OBJECT (wizard), "account-data",
|
||||
gui->account);
|
||||
}
|
||||
|
||||
gui->gui = mail_account_gui_new (gui->account);
|
||||
|
||||
/* set up signals, etc */
|
||||
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->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);
|
||||
first_time = TRUE;
|
||||
}
|
||||
|
||||
/* Fill in the druid pages */
|
||||
vbox = gtk_vbox_new (FALSE, 0);
|
||||
switch (page_num) {
|
||||
case 0:
|
||||
widget = create_html ("identity_html");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
|
||||
widget = glade_xml_get_widget (gui->gui->xml, "identity_required_frame");
|
||||
gtk_widget_reparent (widget, vbox);
|
||||
gtk_box_set_child_packing (GTK_BOX (vbox), widget, FALSE, FALSE, 0, GTK_PACK_START);
|
||||
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:
|
||||
widget = create_html ("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_show (widget);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
widget = create_html ("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 = create_html ("management_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);
|
||||
gtk_widget_show (widget);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
widget = glade_xml_get_widget (gui->gui->xml, "management_frame");
|
||||
gtk_widget_reparent (widget, vbox);
|
||||
break;
|
||||
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gtk_widget_show (vbox);
|
||||
control = bonobo_control_new (vbox);
|
||||
|
||||
if (first_time) {
|
||||
mail_account_gui_setup (gui->gui, NULL);
|
||||
first_time = FALSE;
|
||||
}
|
||||
return control;
|
||||
}
|
||||
|
||||
static struct {
|
||||
GtkSignalFunc next_func;
|
||||
GtkSignalFunc prepare_func;
|
||||
GtkSignalFunc back_func;
|
||||
GtkSignalFunc finish_func;
|
||||
GtkSignalFunc help_func;
|
||||
} wizard_pages[] = {
|
||||
{ GTK_SIGNAL_FUNC (identity_next),
|
||||
GTK_SIGNAL_FUNC (identity_prepare),
|
||||
GTK_SIGNAL_FUNC (NULL),
|
||||
GTK_SIGNAL_FUNC (NULL),
|
||||
GTK_SIGNAL_FUNC (NULL) },
|
||||
{ GTK_SIGNAL_FUNC (source_next),
|
||||
GTK_SIGNAL_FUNC (source_prepare),
|
||||
GTK_SIGNAL_FUNC (NULL),
|
||||
GTK_SIGNAL_FUNC (NULL),
|
||||
GTK_SIGNAL_FUNC (NULL) },
|
||||
{ GTK_SIGNAL_FUNC (NULL),
|
||||
GTK_SIGNAL_FUNC (extra_prepare),
|
||||
GTK_SIGNAL_FUNC (NULL),
|
||||
GTK_SIGNAL_FUNC (NULL),
|
||||
GTK_SIGNAL_FUNC (NULL) },
|
||||
{ GTK_SIGNAL_FUNC (transport_next),
|
||||
GTK_SIGNAL_FUNC (transport_prepare),
|
||||
GTK_SIGNAL_FUNC (transport_back),
|
||||
GTK_SIGNAL_FUNC (NULL),
|
||||
GTK_SIGNAL_FUNC (NULL) },
|
||||
{ GTK_SIGNAL_FUNC (NULL),
|
||||
GTK_SIGNAL_FUNC (management_prepare),
|
||||
GTK_SIGNAL_FUNC (NULL),
|
||||
GTK_SIGNAL_FUNC (NULL),
|
||||
GTK_SIGNAL_FUNC (NULL) }
|
||||
};
|
||||
|
||||
static void
|
||||
wizard_next_cb (EvolutionWizard *wizard,
|
||||
int page_num,
|
||||
MailConfigWizard *gui)
|
||||
{
|
||||
if (wizard_pages[page_num].next_func != NULL) {
|
||||
wizard_pages[page_num].next_func (wizard, gui);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
wizard_prepare_cb (EvolutionWizard *wizard,
|
||||
int page_num,
|
||||
MailConfigWizard *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)
|
||||
{
|
||||
if (wizard_pages[page_num].back_func != NULL) {
|
||||
wizard_pages[page_num].back_func (wizard, gui);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
wizard_finish_cb (EvolutionWizard *wizard,
|
||||
int page_num,
|
||||
MailConfigWizard *w)
|
||||
{
|
||||
MailAccountGui *gui = w->gui;
|
||||
|
||||
/* Add the account to our list (do it first because future
|
||||
steps might want to access config->accounts) */
|
||||
mail_config_add_account (gui->account);
|
||||
|
||||
/* Save the settings for that account */
|
||||
mail_account_gui_save (gui);
|
||||
if (gui->account->source)
|
||||
gui->account->source->enabled = TRUE;
|
||||
|
||||
/* Write out the config info */
|
||||
mail_config_write ();
|
||||
mail_account_gui_destroy (gui);
|
||||
w->gui = NULL;
|
||||
w->account = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
wizard_cancel_cb (EvolutionWizard *wizard,
|
||||
int page_num,
|
||||
MailConfigWizard *gui)
|
||||
{
|
||||
mail_account_gui_destroy (gui->gui);
|
||||
gui->gui = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
wizard_help_cb (EvolutionWizard *wizard,
|
||||
int page_num,
|
||||
MailConfigWizard *gui)
|
||||
{
|
||||
}
|
||||
|
||||
static BonoboObject *
|
||||
evolution_mail_config_wizard_factory_fn (BonoboGenericFactory *factory,
|
||||
void *closure)
|
||||
{
|
||||
EvolutionWizard *wizard;
|
||||
MailConfigAccount *account;
|
||||
MailConfigWizard *gui;
|
||||
|
||||
account = make_account ();
|
||||
|
||||
gui = g_new (MailConfigWizard, 1);
|
||||
gui->account = account;
|
||||
gui->gui = NULL;
|
||||
|
||||
wizard = evolution_wizard_new (get_fn, 5, gui);
|
||||
account_wizard = wizard;
|
||||
|
||||
gtk_object_set_data (GTK_OBJECT (account_wizard), "account-data", gui);
|
||||
gui->wizard = 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));
|
||||
}
|
||||
|
||||
@ -32,6 +32,7 @@ extern "C" {
|
||||
#include <libgnomeui/gnome-file-entry.h>
|
||||
#include <glade/glade.h>
|
||||
#include <camel.h>
|
||||
#include <bonobo/bonobo-listener.h>
|
||||
#include "shell/Evolution.h"
|
||||
#include "mail-account-gui.h"
|
||||
|
||||
@ -46,10 +47,15 @@ typedef struct {
|
||||
|
||||
GnomeDruid *druid;
|
||||
MailAccountGui *gui;
|
||||
GladeXML *xml;
|
||||
|
||||
GNOME_Evolution_Shell shell;
|
||||
gboolean identity_copied;
|
||||
CamelProvider *last_source;
|
||||
|
||||
int id;
|
||||
BonoboListener *listener;
|
||||
Bonobo_EventSource *event_source;
|
||||
} MailConfigDruid;
|
||||
|
||||
typedef struct {
|
||||
@ -76,6 +82,7 @@ gint mail_config_druid_get_auto_check_minutes (MailConfigDruid *druid);
|
||||
char *mail_config_druid_get_transport_url (MailConfigDruid *druid);
|
||||
gboolean mail_config_druid_get_save_transport_password (MailConfigDruid *druid);
|
||||
gboolean mail_config_druid_get_transport_requires_auth (MailConfigDruid *druid);
|
||||
void evolution_mail_config_wizard_init (void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@ -1335,7 +1335,11 @@ const MailConfigAccount *
|
||||
mail_config_get_default_account (void)
|
||||
{
|
||||
MailConfigAccount *account;
|
||||
|
||||
|
||||
if (config == NULL) {
|
||||
mail_config_init ();
|
||||
}
|
||||
|
||||
if (!config->accounts)
|
||||
return NULL;
|
||||
|
||||
|
||||
@ -1,3 +1,16 @@
|
||||
3001-08-17 Iain Holmes <iain@ximian.com>
|
||||
|
||||
* Evolution.idl: Add Evolution-Wizard.idl
|
||||
|
||||
* Evolution-Wizard.idl: New file implementing a wizard interface.
|
||||
|
||||
* Makefile.am: Add the wizard stuff and the startup dialog stuff
|
||||
|
||||
* e-shell.c (e_shell_construct): Hide the splash screen and try to start
|
||||
the startup assistant.
|
||||
|
||||
* glade/Makefile.am: Add the evolution-startup-wizard.glade
|
||||
|
||||
2001-08-16 Jason Leach <jleach@ximian.com>
|
||||
|
||||
* e-shell-view-menu.c (authors): Add myself.
|
||||
|
||||
37
shell/Evolution-Wizard.idl
Normal file
37
shell/Evolution-Wizard.idl
Normal file
@ -0,0 +1,37 @@
|
||||
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
/*
|
||||
* Interface for a wizard done through Bonobo.
|
||||
*
|
||||
* Authors:
|
||||
* Iain Holmes <iain@ximian.com>
|
||||
*
|
||||
* Copyright (C) 2000, 2001 Ximian, Inc.
|
||||
*/
|
||||
|
||||
#include <Bonobo.idl>
|
||||
|
||||
module GNOME {
|
||||
module Evolution {
|
||||
|
||||
interface Wizard : Bonobo::Unknown {
|
||||
|
||||
readonly attribute long pageCount;
|
||||
enum Action {
|
||||
NEXT,
|
||||
PREPARE,
|
||||
BACK,
|
||||
FINISH,
|
||||
CANCEL,
|
||||
HELP
|
||||
};
|
||||
|
||||
exception NoPage {};
|
||||
|
||||
Bonobo::Control getControl (in long pagenumber)
|
||||
raises (NoPage);
|
||||
|
||||
void notifyAction (in long pagenumber, in Action action)
|
||||
raises (NoPage);
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -22,3 +22,4 @@
|
||||
#include <Evolution-Storage.idl>
|
||||
#include <Evolution-StorageSetView.idl>
|
||||
#include <Evolution-Shell.idl>
|
||||
#include <Evolution-Wizard.idl>
|
||||
|
||||
@ -69,7 +69,8 @@ eshellinclude_HEADERS = \
|
||||
evolution-shell-view.h \
|
||||
evolution-storage-listener.h \
|
||||
evolution-storage-set-view-listener.h \
|
||||
evolution-storage.h
|
||||
evolution-storage.h \
|
||||
evolution-wizard.h
|
||||
|
||||
libeshell_la_SOURCES = \
|
||||
$(IDL_GENERATED) \
|
||||
@ -85,6 +86,7 @@ libeshell_la_SOURCES = \
|
||||
evolution-storage-listener.c \
|
||||
evolution-storage-set-view-listener.c \
|
||||
evolution-storage.c \
|
||||
evolution-wizard.c \
|
||||
$(eshellinclude_HEADERS)
|
||||
|
||||
# Evolution executable
|
||||
@ -127,6 +129,7 @@ evolution_SOURCES = \
|
||||
e-shell-importer.h \
|
||||
e-shell-offline-handler.c \
|
||||
e-shell-offline-handler.h \
|
||||
e-shell-startup-wizard.c \
|
||||
e-shell-user-creatable-items-handler.c \
|
||||
e-shell-user-creatable-items-handler.h \
|
||||
e-shell-utils.c \
|
||||
@ -168,8 +171,10 @@ evolution_SOURCES = \
|
||||
evolution_LDADD = \
|
||||
libeshell.la \
|
||||
importer/libevolution-importer.la \
|
||||
$(top_builddir)/widgets/e-timezone-dialog/libetimezonedialog.a \
|
||||
$(top_builddir)/widgets/misc/libemiscwidgets.a \
|
||||
$(top_builddir)/e-util/libeutil.la \
|
||||
$(top_builddir)/libical/src/libical/libical.la \
|
||||
$(EXTRA_GNOME_LIBS) \
|
||||
$(GNOME_PRINT_LIBS) \
|
||||
$(GTKHTML_LIBS) \
|
||||
|
||||
@ -300,8 +300,9 @@ e_setup (const char *evolution_directory)
|
||||
struct stat statinfo;
|
||||
char *file;
|
||||
|
||||
if (stat (evolution_directory, &statinfo) != 0)
|
||||
if (stat (evolution_directory, &statinfo) != 0) {
|
||||
return copy_default_stuff (evolution_directory);
|
||||
}
|
||||
|
||||
if (! S_ISDIR (statinfo.st_mode)) {
|
||||
e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
|
||||
|
||||
845
shell/e-shell-startup-wizard.c
Normal file
845
shell/e-shell-startup-wizard.c
Normal file
@ -0,0 +1,845 @@
|
||||
/*
|
||||
* e-shell-startup-wizard.c
|
||||
*
|
||||
* Copyright (C) 2001 Ximian, Inc.
|
||||
*
|
||||
* Authors: Iain Holmes <iain@ximian.com>
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <gnome.h>
|
||||
#include <glade/glade.h>
|
||||
#include <liboaf/liboaf.h>
|
||||
|
||||
#include <bonobo/bonobo-object.h>
|
||||
#include <bonobo/bonobo-widget.h>
|
||||
#include <bonobo/bonobo-exception.h>
|
||||
#include <bonobo/bonobo-moniker-util.h>
|
||||
#include <bonobo-conf/bonobo-config-database.h>
|
||||
|
||||
#include <widgets/e-timezone-dialog/e-timezone-dialog.h>
|
||||
#include "importer/GNOME_Evolution_Importer.h"
|
||||
|
||||
#include <evolution-wizard.h>
|
||||
#include "Evolution.h"
|
||||
|
||||
typedef struct _TimezoneDialogPage {
|
||||
GtkWidget *page;
|
||||
GtkWidget *vbox;
|
||||
GtkObject *etd;
|
||||
} TimezoneDialogPage;
|
||||
|
||||
typedef struct _ImportDialogPage {
|
||||
GtkWidget *page;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *placeholder, *clist;
|
||||
|
||||
GList *importers;
|
||||
int running;
|
||||
} ImportDialogPage;
|
||||
|
||||
typedef struct _MailDialogPage {
|
||||
GtkWidget *page;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *widget;
|
||||
|
||||
Bonobo_Control control;
|
||||
} MailDialogPage;
|
||||
|
||||
typedef struct _SWData {
|
||||
GladeXML *wizard;
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *druid;
|
||||
|
||||
GnomeDruidPage *start, *finish;
|
||||
|
||||
MailDialogPage *id_page;
|
||||
MailDialogPage *source_page;
|
||||
MailDialogPage *extra_page;
|
||||
MailDialogPage *transport_page;
|
||||
MailDialogPage *management_page;
|
||||
|
||||
TimezoneDialogPage *timezone_page;
|
||||
ImportDialogPage *import_page;
|
||||
|
||||
gboolean cancel;
|
||||
CORBA_Object mailer;
|
||||
Bonobo_EventSource event_source;
|
||||
BonoboListener *listener;
|
||||
int id;
|
||||
|
||||
Bonobo_ConfigDatabase db;
|
||||
} SWData;
|
||||
|
||||
typedef struct _IntelligentImporterData {
|
||||
CORBA_Object object;
|
||||
Bonobo_Control control;
|
||||
GtkWidget *widget;
|
||||
|
||||
char *name;
|
||||
char *blurb;
|
||||
char *iid;
|
||||
} IntelligentImporterData;
|
||||
|
||||
typedef struct _SelectedImporterData{
|
||||
CORBA_Object importer;
|
||||
char *iid;
|
||||
} SelectedImporterData;
|
||||
|
||||
static GHashTable *page_hash;
|
||||
|
||||
static void
|
||||
druid_event_notify_cb (BonoboListener *listener,
|
||||
const char *name,
|
||||
BonoboArg *arg,
|
||||
CORBA_Environment *ev,
|
||||
SWData *data)
|
||||
{
|
||||
int buttons;
|
||||
|
||||
if (strcmp (name, EVOLUTION_WIZARD_SET_BUTTONS_SENSITIVE) == 0) {
|
||||
buttons = (int) *((CORBA_short *)arg->_value);
|
||||
gnome_druid_set_buttons_sensitive (GNOME_DRUID (data->druid),
|
||||
(buttons & 4) >> 2,
|
||||
(buttons & 2) >> 1,
|
||||
(buttons & 1));
|
||||
} else {
|
||||
g_print ("event_name: %s\n", name);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
make_mail_dialog_pages (SWData *data)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
CORBA_Object object;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
data->mailer = oaf_activate_from_id ("OAFIID:GNOME_Evolution_Mail_Wizard", 0, NULL, &ev);
|
||||
if (BONOBO_EX (&ev)) {
|
||||
g_warning ("Could not start mailer (%s)", CORBA_exception_id (&ev));
|
||||
CORBA_exception_free (&ev);
|
||||
return;
|
||||
}
|
||||
|
||||
CORBA_exception_free (&ev);
|
||||
if (data->mailer == CORBA_OBJECT_NIL) {
|
||||
g_warning ("Could not activate mailer.");
|
||||
return;
|
||||
}
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
data->event_source = Bonobo_Unknown_queryInterface (data->mailer, "IDL:Bonobo/EventSource:1.0", &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
data->listener = bonobo_listener_new (NULL, NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (data->listener), "event-notify",
|
||||
GTK_SIGNAL_FUNC (druid_event_notify_cb), data);
|
||||
object = bonobo_object_corba_objref (BONOBO_OBJECT (data->listener));
|
||||
CORBA_exception_init (&ev);
|
||||
data->id = Bonobo_EventSource_addListener (data->event_source, object, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
}
|
||||
|
||||
static int
|
||||
page_to_num (GnomeDruidPage *page)
|
||||
{
|
||||
return GPOINTER_TO_INT (g_hash_table_lookup (page_hash, page));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
next_func (GnomeDruidPage *page,
|
||||
GnomeDruid *druid,
|
||||
SWData *data)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
int pagenum;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
pagenum = page_to_num (page);
|
||||
GNOME_Evolution_Wizard_notifyAction (data->mailer, pagenum, GNOME_Evolution_Wizard_NEXT, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
prepare_func (GnomeDruidPage *page,
|
||||
GnomeDruid *druid,
|
||||
SWData *data)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
int pagenum;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
pagenum = page_to_num (page);
|
||||
GNOME_Evolution_Wizard_notifyAction (data->mailer, pagenum, GNOME_Evolution_Wizard_PREPARE, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
back_func (GnomeDruidPage *page,
|
||||
GnomeDruid *druid,
|
||||
SWData *data)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
int pagenum;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
pagenum = page_to_num (page);
|
||||
GNOME_Evolution_Wizard_notifyAction (data->mailer, pagenum, GNOME_Evolution_Wizard_BACK, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
free_importers (SWData *data)
|
||||
{
|
||||
GList *l;
|
||||
|
||||
for (l = data->import_page->importers; l; l = l->next) {
|
||||
IntelligentImporterData *iid;
|
||||
|
||||
iid = l->data;
|
||||
if (iid->object != CORBA_OBJECT_NIL) {
|
||||
bonobo_object_release_unref (iid->object, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
g_list_free (data->import_page->importers);
|
||||
}
|
||||
|
||||
static void
|
||||
start_importers (GList *p)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
|
||||
for (; p; p = p->next) {
|
||||
SelectedImporterData *sid = p->data;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
GNOME_Evolution_IntelligentImporter_importData (sid->importer, &ev);
|
||||
if (BONOBO_EX (&ev)) {
|
||||
g_warning ("Error importing %s\n%s", sid->iid,
|
||||
CORBA_exception_id (&ev));
|
||||
}
|
||||
CORBA_exception_free (&ev);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
do_import (SWData *data)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
GList *l, *selected = NULL;
|
||||
|
||||
for (l = GTK_CLIST (data->import_page->clist)->selection; l; l = l->next) {
|
||||
IntelligentImporterData *importer_data;
|
||||
SelectedImporterData *sid;
|
||||
char *iid;
|
||||
|
||||
importer_data = g_list_nth_data (data->import_page->importers, GPOINTER_TO_INT (l->data));
|
||||
iid = g_strdup (importer_data->iid);
|
||||
|
||||
sid = g_new (SelectedImporterData, 1);
|
||||
sid->iid = iid;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
sid->importer = bonobo_object_dup_ref (importer_data->object, &ev);
|
||||
if (BONOBO_EX (&ev)) {
|
||||
g_warning ("Error duplication %s\n(%s)", iid,
|
||||
CORBA_exception_id (&ev));
|
||||
g_free (iid);
|
||||
CORBA_exception_free (&ev);
|
||||
g_free (sid);
|
||||
continue;
|
||||
}
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
selected = g_list_prepend (selected, sid);
|
||||
}
|
||||
|
||||
free_importers (data);
|
||||
|
||||
if (selected != NULL) {
|
||||
start_importers (selected);
|
||||
|
||||
for (l = selected; l; l = l->next) {
|
||||
SelectedImporterData *sid = l->data;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
bonobo_object_release_unref (sid->importer, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
g_free (sid->iid);
|
||||
g_free (sid);
|
||||
}
|
||||
g_list_free (selected);
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
finish_func (GnomeDruidPage *page,
|
||||
GnomeDruid *druid,
|
||||
SWData *data)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
char *displayname, *tz;
|
||||
|
||||
/* Notify mailer */
|
||||
CORBA_exception_init (&ev);
|
||||
GNOME_Evolution_Wizard_notifyAction (data->mailer, 0, GNOME_Evolution_Wizard_FINISH, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
/* Set Timezone */
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
e_timezone_dialog_get_timezone (E_TIMEZONE_DIALOG (data->timezone_page->etd), &displayname);
|
||||
if (displayname == NULL) {
|
||||
tz = g_strdup ("");
|
||||
} else {
|
||||
tz = g_strdup (displayname);
|
||||
g_free (displayname);
|
||||
}
|
||||
|
||||
bonobo_config_set_string (data->db, "/Calendar/Display/Timezone", tz, &ev);
|
||||
g_free (tz);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
do_import (data);
|
||||
|
||||
/* Free data */
|
||||
data->cancel = FALSE;
|
||||
gtk_widget_destroy (data->dialog);
|
||||
gtk_main_quit ();
|
||||
}
|
||||
|
||||
static void
|
||||
connect_page (GtkWidget *page,
|
||||
SWData *data)
|
||||
{
|
||||
gtk_signal_connect (GTK_OBJECT (page), "next",
|
||||
GTK_SIGNAL_FUNC (next_func), data);
|
||||
gtk_signal_connect (GTK_OBJECT (page), "prepare",
|
||||
GTK_SIGNAL_FUNC (prepare_func), data);
|
||||
gtk_signal_connect (GTK_OBJECT (page), "back",
|
||||
GTK_SIGNAL_FUNC (back_func), data);
|
||||
gtk_signal_connect (GTK_OBJECT (page), "finish",
|
||||
GTK_SIGNAL_FUNC (finish_func), data);
|
||||
}
|
||||
|
||||
static MailDialogPage *
|
||||
make_identity_page (SWData *data)
|
||||
{
|
||||
MailDialogPage *page;
|
||||
CORBA_Environment ev;
|
||||
|
||||
g_return_val_if_fail (data != NULL, NULL);
|
||||
|
||||
page = g_new0 (MailDialogPage, 1);
|
||||
page->page = glade_xml_get_widget (data->wizard, "identity-page");
|
||||
g_return_val_if_fail (page->page != NULL, NULL);
|
||||
|
||||
connect_page (page->page, data);
|
||||
g_hash_table_insert (page_hash, page->page, GINT_TO_POINTER (0));
|
||||
page->vbox = GNOME_DRUID_PAGE_STANDARD (page->page)->vbox;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
page->control = GNOME_Evolution_Wizard_getControl (data->mailer, 0, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
page->widget = bonobo_widget_new_control_from_objref (page->control, CORBA_OBJECT_NIL);
|
||||
gtk_box_pack_start (GTK_BOX (page->vbox), page->widget, TRUE, TRUE, 0);
|
||||
gtk_widget_show_all (page->widget);
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
static MailDialogPage *
|
||||
make_receive_page (SWData *data)
|
||||
{
|
||||
MailDialogPage *page;
|
||||
CORBA_Environment ev;
|
||||
|
||||
g_return_val_if_fail (data != NULL, NULL);
|
||||
|
||||
page = g_new0 (MailDialogPage, 1);
|
||||
page->page = glade_xml_get_widget (data->wizard, "receive-page");
|
||||
g_return_val_if_fail (page->page != NULL, NULL);
|
||||
|
||||
connect_page (page->page, data);
|
||||
g_hash_table_insert (page_hash, page->page, GINT_TO_POINTER (1));
|
||||
page->vbox = GNOME_DRUID_PAGE_STANDARD (page->page)->vbox;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
page->control = GNOME_Evolution_Wizard_getControl (data->mailer, 1, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
page->widget = bonobo_widget_new_control_from_objref (page->control, CORBA_OBJECT_NIL);
|
||||
gtk_box_pack_start (GTK_BOX (page->vbox), page->widget, TRUE, TRUE, 0);
|
||||
gtk_widget_show_all (page->widget);
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
static MailDialogPage *
|
||||
make_extra_page (SWData *data)
|
||||
{
|
||||
MailDialogPage *page;
|
||||
CORBA_Environment ev;
|
||||
|
||||
g_return_val_if_fail (data != NULL, NULL);
|
||||
|
||||
page = g_new0 (MailDialogPage, 1);
|
||||
page->page = glade_xml_get_widget (data->wizard, "extra-page");
|
||||
g_return_val_if_fail (page->page != NULL, NULL);
|
||||
|
||||
connect_page (page->page, data);
|
||||
g_hash_table_insert (page_hash, page->page, GINT_TO_POINTER (2));
|
||||
page->vbox = GNOME_DRUID_PAGE_STANDARD (page->page)->vbox;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
page->control = GNOME_Evolution_Wizard_getControl (data->mailer, 2, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
page->widget = bonobo_widget_new_control_from_objref (page->control, CORBA_OBJECT_NIL);
|
||||
gtk_box_pack_start (GTK_BOX (page->vbox), page->widget, TRUE, TRUE, 0);
|
||||
gtk_widget_show_all (page->widget);
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
static MailDialogPage *
|
||||
make_transport_page (SWData *data)
|
||||
{
|
||||
MailDialogPage *page;
|
||||
CORBA_Environment ev;
|
||||
|
||||
g_return_val_if_fail (data != NULL, NULL);
|
||||
|
||||
page = g_new0 (MailDialogPage, 1);
|
||||
page->page = glade_xml_get_widget (data->wizard, "send-page");
|
||||
g_return_val_if_fail (page->page != NULL, NULL);
|
||||
|
||||
connect_page (page->page, data);
|
||||
g_hash_table_insert (page_hash, page->page, GINT_TO_POINTER (3));
|
||||
page->vbox = GNOME_DRUID_PAGE_STANDARD (page->page)->vbox;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
page->control = GNOME_Evolution_Wizard_getControl (data->mailer, 3, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
page->widget = bonobo_widget_new_control_from_objref (page->control, CORBA_OBJECT_NIL);
|
||||
gtk_box_pack_start (GTK_BOX (page->vbox), page->widget, TRUE, TRUE, 0);
|
||||
gtk_widget_show_all (page->widget);
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
static MailDialogPage *
|
||||
make_management_page (SWData *data)
|
||||
{
|
||||
MailDialogPage *page;
|
||||
CORBA_Environment ev;
|
||||
|
||||
g_return_val_if_fail (data != NULL, NULL);
|
||||
|
||||
page = g_new0 (MailDialogPage, 1);
|
||||
page->page = glade_xml_get_widget (data->wizard, "management-page");
|
||||
g_return_val_if_fail (page->page != NULL, NULL);
|
||||
|
||||
connect_page (page->page, data);
|
||||
g_hash_table_insert (page_hash, page->page, GINT_TO_POINTER (4));
|
||||
page->vbox = GNOME_DRUID_PAGE_STANDARD (page->page)->vbox;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
page->control = GNOME_Evolution_Wizard_getControl (data->mailer, 4, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
page->widget = bonobo_widget_new_control_from_objref (page->control, CORBA_OBJECT_NIL);
|
||||
gtk_box_pack_start (GTK_BOX (page->vbox), page->widget, TRUE, TRUE, 0);
|
||||
gtk_widget_show_all (page->widget);
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
static TimezoneDialogPage *
|
||||
make_timezone_page (SWData *data)
|
||||
{
|
||||
TimezoneDialogPage *page;
|
||||
|
||||
g_return_val_if_fail (data != NULL, NULL);
|
||||
|
||||
page = g_new0 (TimezoneDialogPage, 1);
|
||||
page->page = glade_xml_get_widget (data->wizard, "timezone-page");
|
||||
g_return_val_if_fail (page->page != NULL, NULL);
|
||||
|
||||
page->vbox = GNOME_DRUID_PAGE_STANDARD (page->page)->vbox;
|
||||
|
||||
page->etd = e_timezone_dialog_new ();
|
||||
e_timezone_dialog_reparent (page->etd, page->vbox);
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
static GList *
|
||||
get_intelligent_importers (void)
|
||||
{
|
||||
OAF_ServerInfoList *info_list;
|
||||
GList *iids_ret = NULL;
|
||||
CORBA_Environment ev;
|
||||
int i;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
info_list = oaf_query ("repo_ids.has ('IDL:GNOME/Evolution/IntelligentImporter:1.0')", NULL, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
for (i = 0; i < info_list->_length; i++) {
|
||||
const OAF_ServerInfo *info;
|
||||
|
||||
info = info_list->_buffer + i;
|
||||
iids_ret = g_list_prepend (iids_ret, g_strdup (info->iid));
|
||||
}
|
||||
|
||||
return iids_ret;
|
||||
}
|
||||
|
||||
static void
|
||||
dialog_mapped (GtkWidget *w,
|
||||
gpointer data)
|
||||
{
|
||||
while (gtk_events_pending ()) {
|
||||
gtk_main_iteration ();
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
prepare_importer_page (GnomeDruidPage *page,
|
||||
|
||||
GnomeDruid *druid,
|
||||
SWData *data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
ImportDialogPage *import;
|
||||
GList *l, *importers;
|
||||
GtkWidget *dummy;
|
||||
int running = 0;
|
||||
|
||||
dialog = gnome_message_box_new (_("Please wait...\nScanning for existing setups"), GNOME_MESSAGE_BOX_INFO, NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (dialog), "map",
|
||||
GTK_SIGNAL_FUNC (dialog_mapped), NULL);
|
||||
gtk_window_set_title (GTK_WINDOW (dialog), _("Starting Intelligent Importers"));
|
||||
gtk_widget_show_all (dialog);
|
||||
while (gtk_events_pending ()) {
|
||||
gtk_main_iteration ();
|
||||
}
|
||||
|
||||
import = data->import_page;
|
||||
importers = get_intelligent_importers ();
|
||||
if (importers == NULL) {
|
||||
/* No importers, go directly to finish, do not pass go
|
||||
Do not collect $200 */
|
||||
gnome_druid_set_page (druid, GNOME_DRUID_PAGE (data->finish))
|
||||
;
|
||||
gtk_widget_destroy (dialog);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
for (l = importers; l; l = l->next) {
|
||||
IntelligentImporterData *id;
|
||||
CORBA_Environment ev;
|
||||
gboolean can_run;
|
||||
char *text[1];
|
||||
|
||||
id = g_new0 (IntelligentImporterData, 1);
|
||||
id->iid = g_strdup (l->data);
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
id->object = oaf_activate_from_id ((char *) id->iid, 0, NULL, &ev);
|
||||
if (BONOBO_EX (&ev)) {
|
||||
g_warning ("Could not start %s:%s", id->iid,
|
||||
CORBA_exception_id (&ev));
|
||||
|
||||
CORBA_exception_free (&ev);
|
||||
/* Clean up the IID */
|
||||
g_free (id->iid);
|
||||
g_free (id);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (id->object == CORBA_OBJECT_NIL) {
|
||||
g_warning ("Could not activate component %s", id->iid);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
g_free (id->iid);
|
||||
g_free (id);
|
||||
continue;
|
||||
}
|
||||
|
||||
can_run = GNOME_Evolution_IntelligentImporter_canImport (id->object, &ev);
|
||||
if (BONOBO_EX (&ev)) {
|
||||
g_warning ("Could not call canImport(%s): %s", id->iid,
|
||||
CORBA_exception_id (&ev));
|
||||
bonobo_object_release_unref (id->object, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
g_free (id->iid);
|
||||
g_free (id);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (can_run == FALSE) {
|
||||
bonobo_object_release_unref (id->object, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
g_free (id->iid);
|
||||
g_free (id);
|
||||
continue;
|
||||
}
|
||||
|
||||
running++;
|
||||
id->name = GNOME_Evolution_IntelligentImporter__get_importername (id->object, &ev);
|
||||
if (BONOBO_EX (&ev)) {
|
||||
g_warning ("Could not get name(%s): %s", id->iid,
|
||||
CORBA_exception_id (&ev));
|
||||
bonobo_object_release_unref (id->object, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
g_free (id->iid);
|
||||
g_free (id);
|
||||
continue;
|
||||
}
|
||||
|
||||
id->blurb = GNOME_Evolution_IntelligentImporter__get_message (id->object, &ev);
|
||||
if (BONOBO_EX (&ev)) {
|
||||
g_warning ("Could not get message(%s): %s",
|
||||
id->iid, CORBA_exception_id (&ev));
|
||||
bonobo_object_release_unref (id->object, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
g_free (id->iid);
|
||||
CORBA_free (id->name);
|
||||
g_free (id);
|
||||
continue;
|
||||
}
|
||||
|
||||
id->control = Bonobo_Unknown_queryInterface (id->object,
|
||||
"IDL:Bonobo/Control:1.0", &ev);
|
||||
if (BONOBO_EX (&ev)) {
|
||||
g_warning ("Could not QI for Bonobo/Control:1.0 %s:%s",
|
||||
id->iid, CORBA_exception_id (&ev));
|
||||
bonobo_object_release_unref (id->object, &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
g_free (id->iid);
|
||||
CORBA_free (id->name);
|
||||
CORBA_free (id->blurb);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (id->control != CORBA_OBJECT_NIL) {
|
||||
id->widget = bonobo_widget_new_control_from_objref (id->control, CORBA_OBJECT_NIL);
|
||||
gtk_widget_show (id->widget);
|
||||
} else {
|
||||
id->widget = gtk_label_new ("");
|
||||
gtk_widget_show (id->widget);
|
||||
}
|
||||
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
import->importers = g_list_prepend (import->importers, id);
|
||||
gtk_notebook_prepend_page (GTK_NOTEBOOK (import->placeholder),
|
||||
id->widget, NULL);
|
||||
text[0] = id->name;
|
||||
gtk_clist_prepend (GTK_CLIST (import->clist), text);
|
||||
}
|
||||
|
||||
if (running == 0) {
|
||||
gnome_druid_set_page (druid, GNOME_DRUID_PAGE (data->finish));
|
||||
gtk_widget_destroy (dialog);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
import->running = running;
|
||||
dummy = gtk_drawing_area_new ();
|
||||
gtk_widget_show (dummy);
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (import->placeholder), dummy, NULL);
|
||||
/* Set the start to the blank page */
|
||||
gtk_notebook_set_page (GTK_NOTEBOOK (import->placeholder), running);
|
||||
|
||||
gtk_widget_destroy (dialog);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
select_row_cb (GtkCList *clist,
|
||||
int row,
|
||||
int column,
|
||||
GdkEvent *ev,
|
||||
SWData *data)
|
||||
{
|
||||
ImportDialogPage *page;
|
||||
|
||||
page = data->import_page;
|
||||
gtk_notebook_set_page (GTK_NOTEBOOK (page->placeholder), row);
|
||||
}
|
||||
|
||||
static void
|
||||
unselect_row_cb (GtkCList *clist,
|
||||
int row,
|
||||
int column,
|
||||
GdkEvent *ev,
|
||||
SWData *data)
|
||||
{
|
||||
ImportDialogPage *page;
|
||||
|
||||
page = data->import_page;
|
||||
if (clist->selection == NULL) {
|
||||
gtk_notebook_set_page (GTK_NOTEBOOK (page->placeholder), page->running);
|
||||
} else {
|
||||
gtk_notebook_set_page (GTK_NOTEBOOK (page->placeholder),
|
||||
GPOINTER_TO_INT (clist->selection->data));
|
||||
}
|
||||
}
|
||||
|
||||
static ImportDialogPage *
|
||||
make_importer_page (SWData *data)
|
||||
{
|
||||
ImportDialogPage *page;
|
||||
char *titles[1];
|
||||
GtkWidget *hbox, *sw;
|
||||
|
||||
g_return_val_if_fail (data != NULL, NULL);
|
||||
|
||||
page = g_new0 (ImportDialogPage, 1);
|
||||
page->page = glade_xml_get_widget (data->wizard, "import-page");
|
||||
g_return_val_if_fail (page->page != NULL, NULL);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (page->page), "prepare",
|
||||
GTK_SIGNAL_FUNC (prepare_importer_page), data);
|
||||
page->vbox = GNOME_DRUID_PAGE_STANDARD (page->page)->vbox;
|
||||
|
||||
titles[0] = ".";
|
||||
page->clist = gtk_clist_new_with_titles (1, titles);
|
||||
gtk_clist_column_titles_hide (GTK_CLIST (page->clist));
|
||||
gtk_clist_set_selection_mode (GTK_CLIST (page->clist), GTK_SELECTION_MULTIPLE);
|
||||
gtk_signal_connect (GTK_OBJECT (page->clist), "select-row",
|
||||
GTK_SIGNAL_FUNC (select_row_cb), data);
|
||||
gtk_signal_connect (GTK_OBJECT (page->clist), "unselect-row",
|
||||
GTK_SIGNAL_FUNC (unselect_row_cb), data);
|
||||
|
||||
hbox = gtk_hbox_new (FALSE, 2);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (hbox), 2);
|
||||
gtk_box_pack_start (GTK_BOX (page->vbox), hbox, TRUE, TRUE, 0);
|
||||
|
||||
sw = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_widget_set_usize (sw, 300, 150);
|
||||
gtk_container_add (GTK_CONTAINER (sw), page->clist);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), sw, FALSE, FALSE, 0);
|
||||
|
||||
page->placeholder = gtk_notebook_new ();
|
||||
gtk_notebook_set_show_tabs (GTK_NOTEBOOK (page->placeholder), FALSE);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), page->placeholder, TRUE, TRUE, 0);
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
static void
|
||||
startup_wizard_cancel (GnomeDruid *druid,
|
||||
SWData *data)
|
||||
{
|
||||
/* Free data */
|
||||
data->cancel = TRUE;
|
||||
gtk_widget_destroy (data->dialog);
|
||||
gtk_main_quit ();
|
||||
}
|
||||
|
||||
gboolean
|
||||
e_shell_startup_wizard_create (void)
|
||||
{
|
||||
SWData *data;
|
||||
CORBA_Environment ev;
|
||||
gboolean runbefore;
|
||||
|
||||
data = g_new0 (SWData, 1);
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
data->db = bonobo_get_object ("wombat:", "Bonobo/ConfigDatabase", &ev);
|
||||
if (BONOBO_EX (&ev) || data->db == CORBA_OBJECT_NIL) {
|
||||
g_warning ("Error starting wombat: (%s)", CORBA_exception_id (&ev));
|
||||
CORBA_exception_free (&ev);
|
||||
g_free (data);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
runbefore = bonobo_config_get_boolean (data->db, "/Shell/RunBefore", &ev);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
if (runbefore == TRUE) {
|
||||
g_print ("Already run\n");
|
||||
bonobo_object_release_unref (data->db, NULL);
|
||||
g_free (data);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
data->wizard = glade_xml_new (EVOLUTION_GLADEDIR "/evolution-startup-wizard.glade", NULL);
|
||||
g_return_val_if_fail (data->wizard != NULL, FALSE);
|
||||
data->dialog = glade_xml_get_widget (data->wizard, "startup-wizard");
|
||||
g_return_val_if_fail (data->dialog != NULL, FALSE);
|
||||
gtk_window_set_wmclass (GTK_WINDOW (data->dialog), "startup-wizard",
|
||||
"Evolution:shell");
|
||||
|
||||
page_hash = g_hash_table_new (NULL, NULL);
|
||||
data->druid = glade_xml_get_widget (data->wizard, "startup-druid");
|
||||
g_return_val_if_fail (data->druid != NULL, FALSE);
|
||||
gnome_druid_set_buttons_sensitive (GNOME_DRUID (data->druid),
|
||||
FALSE, TRUE, FALSE);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (data->druid), "cancel",
|
||||
GTK_SIGNAL_FUNC (startup_wizard_cancel), data);
|
||||
|
||||
data->start = glade_xml_get_widget (data->wizard, "start-page");
|
||||
data->finish = glade_xml_get_widget (data->wizard, "done-page");
|
||||
g_return_val_if_fail (data->start != NULL, FALSE);
|
||||
g_return_val_if_fail (data->finish != NULL, FALSE);
|
||||
gtk_signal_connect (GTK_OBJECT (data->finish), "finish",
|
||||
GTK_SIGNAL_FUNC (finish_func), data);
|
||||
|
||||
make_mail_dialog_pages (data);
|
||||
data->id_page = make_identity_page (data);
|
||||
data->source_page = make_receive_page (data);
|
||||
data->extra_page = make_extra_page (data);
|
||||
data->transport_page = make_transport_page (data);
|
||||
data->management_page = make_management_page (data);
|
||||
|
||||
data->timezone_page = make_timezone_page (data);
|
||||
data->import_page = make_importer_page (data);
|
||||
|
||||
g_return_val_if_fail (data->id_page != NULL, FALSE);
|
||||
g_return_val_if_fail (data->source_page != NULL, FALSE);
|
||||
g_return_val_if_fail (data->extra_page != NULL, FALSE);
|
||||
g_return_val_if_fail (data->transport_page != NULL, FALSE);
|
||||
g_return_val_if_fail (data->management_page != NULL, FALSE);
|
||||
g_return_val_if_fail (data->timezone_page != NULL, FALSE);
|
||||
g_return_val_if_fail (data->import_page != NULL, FALSE);
|
||||
|
||||
gnome_druid_set_buttons_sensitive (data->druid, FALSE, TRUE, TRUE);
|
||||
gtk_widget_show_all (data->dialog);
|
||||
|
||||
gtk_main ();
|
||||
|
||||
/* Sync database */
|
||||
bonobo_config_set_boolean (data->db, "/Shell/RunBefore", TRUE, &ev);
|
||||
Bonobo_ConfigDatabase_sync (data->db, &ev);
|
||||
bonobo_object_release_unref (data->db, NULL);
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
return !data->cancel;
|
||||
}
|
||||
@ -961,9 +961,24 @@ e_shell_construct (EShell *shell,
|
||||
can tell the components we are here. */
|
||||
set_owner_on_components (shell);
|
||||
|
||||
/* Run the intelligent importers to find see if any data needs
|
||||
importing. */
|
||||
intelligent_importer_init ();
|
||||
if (show_splash) {
|
||||
gtk_widget_destroy (splash);
|
||||
}
|
||||
|
||||
if (e_shell_startup_wizard_create () == FALSE) {
|
||||
/* FIXME: Need to kill all components somehow */
|
||||
exit (0);
|
||||
}
|
||||
shortcut_path = g_concat_dir_and_file (local_directory, "shortcuts.xml");
|
||||
priv->shortcuts = e_shortcuts_new (priv->storage_set,
|
||||
priv->folder_type_registry,
|
||||
shortcut_path);
|
||||
g_assert (priv->shortcuts != NULL);
|
||||
|
||||
if (e_shortcuts_get_num_groups (priv->shortcuts) == 0)
|
||||
e_shortcuts_add_default_group (priv->shortcuts);
|
||||
|
||||
g_free (shortcut_path);
|
||||
|
||||
if (show_splash)
|
||||
gtk_widget_destroy (splash);
|
||||
|
||||
394
shell/evolution-wizard.c
Normal file
394
shell/evolution-wizard.c
Normal file
@ -0,0 +1,394 @@
|
||||
/*
|
||||
* evolution-wizard.c
|
||||
*
|
||||
* Copyright (C) 2001 Ximian, Inc.
|
||||
*
|
||||
* Authors: Iain Holmes <iain@ximian.com>
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <gtk/gtksignal.h>
|
||||
#include <gtk/gtkmarshal.h>
|
||||
#include <gtk/gtktypeutils.h>
|
||||
#include <bonobo/bonobo-exception.h>
|
||||
#include <bonobo/bonobo-main.h>
|
||||
#include <bonobo/bonobo-event-source.h>
|
||||
|
||||
#include "evolution-wizard.h"
|
||||
#include "Evolution.h"
|
||||
|
||||
struct _EvolutionWizardPrivate {
|
||||
EvolutionWizardGetControlFn get_fn;
|
||||
BonoboEventSource *event_source;
|
||||
|
||||
void *closure;
|
||||
int page_count;
|
||||
};
|
||||
|
||||
enum {
|
||||
NEXT,
|
||||
PREPARE,
|
||||
BACK,
|
||||
FINISH,
|
||||
CANCEL,
|
||||
HELP,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
#define PARENT_TYPE BONOBO_X_OBJECT_TYPE
|
||||
|
||||
static GtkObjectClass *parent_class;
|
||||
static guint32 signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
static CORBA_long
|
||||
impl_GNOME_Evolution_Wizard__get_pageCount (PortableServer_Servant servant,
|
||||
CORBA_Environment *ev)
|
||||
{
|
||||
BonoboObject *bonobo_object;
|
||||
EvolutionWizard *wizard;
|
||||
EvolutionWizardPrivate *priv;
|
||||
|
||||
bonobo_object = bonobo_object_from_servant (servant);
|
||||
wizard = EVOLUTION_WIZARD (bonobo_object);
|
||||
priv = wizard->priv;
|
||||
|
||||
return priv->page_count;
|
||||
}
|
||||
|
||||
static Bonobo_Control
|
||||
impl_GNOME_Evolution_Wizard_getControl (PortableServer_Servant servant,
|
||||
CORBA_long pagenumber,
|
||||
CORBA_Environment *ev)
|
||||
{
|
||||
BonoboObject *bonobo_object;
|
||||
EvolutionWizard *wizard;
|
||||
EvolutionWizardPrivate *priv;
|
||||
BonoboControl *control;
|
||||
|
||||
bonobo_object = bonobo_object_from_servant (servant);
|
||||
wizard = EVOLUTION_WIZARD (bonobo_object);
|
||||
priv = wizard->priv;
|
||||
|
||||
if (pagenumber < 0 || pagenumber >= priv->page_count) {
|
||||
CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
|
||||
ex_GNOME_Evolution_Wizard_NoPage, NULL);
|
||||
return CORBA_OBJECT_NIL;
|
||||
}
|
||||
|
||||
control = priv->get_fn (wizard, pagenumber, priv->closure);
|
||||
if (control == NULL)
|
||||
return CORBA_OBJECT_NIL;
|
||||
|
||||
return (Bonobo_Control) CORBA_Object_duplicate (BONOBO_OBJREF (control), ev);
|
||||
}
|
||||
|
||||
static void
|
||||
impl_GNOME_Evolution_Wizard_notifyAction (PortableServer_Servant servant,
|
||||
CORBA_long pagenumber,
|
||||
GNOME_Evolution_Wizard_Action action,
|
||||
CORBA_Environment *ev)
|
||||
{
|
||||
BonoboObject *bonobo_object;
|
||||
EvolutionWizard *wizard;
|
||||
EvolutionWizardPrivate *priv;
|
||||
|
||||
bonobo_object = bonobo_object_from_servant (servant);
|
||||
wizard = EVOLUTION_WIZARD (bonobo_object);
|
||||
priv = wizard->priv;
|
||||
|
||||
if (pagenumber < 0 || pagenumber >= priv->page_count) {
|
||||
CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
|
||||
ex_GNOME_Evolution_Wizard_NoPage, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
g_print ("Emit something\n");
|
||||
switch (action) {
|
||||
case GNOME_Evolution_Wizard_NEXT:
|
||||
gtk_signal_emit (GTK_OBJECT (bonobo_object), signals[NEXT],
|
||||
pagenumber);
|
||||
break;
|
||||
|
||||
case GNOME_Evolution_Wizard_PREPARE:
|
||||
gtk_signal_emit (GTK_OBJECT (bonobo_object), signals[PREPARE],
|
||||
pagenumber);
|
||||
break;
|
||||
|
||||
case GNOME_Evolution_Wizard_BACK:
|
||||
gtk_signal_emit (GTK_OBJECT (bonobo_object), signals[BACK],
|
||||
pagenumber);
|
||||
break;
|
||||
|
||||
case GNOME_Evolution_Wizard_FINISH:
|
||||
g_print ("Emit finish\n");
|
||||
gtk_signal_emit (GTK_OBJECT (bonobo_object), signals[FINISH],
|
||||
pagenumber);
|
||||
break;
|
||||
|
||||
case GNOME_Evolution_Wizard_CANCEL:
|
||||
gtk_signal_emit (GTK_OBJECT (bonobo_object), signals[CANCEL],
|
||||
pagenumber);
|
||||
break;
|
||||
|
||||
case GNOME_Evolution_Wizard_HELP:
|
||||
gtk_signal_emit (GTK_OBJECT (bonobo_object), signals[HELP],
|
||||
pagenumber);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
evolution_wizard_destroy (GtkObject *object)
|
||||
{
|
||||
EvolutionWizard *wizard;
|
||||
|
||||
wizard = EVOLUTION_WIZARD (object);
|
||||
if (wizard->priv == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
g_free (wizard->priv);
|
||||
wizard->priv = NULL;
|
||||
|
||||
parent_class->destroy (object);
|
||||
}
|
||||
|
||||
static void
|
||||
evolution_wizard_class_init (EvolutionWizardClass *klass)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
POA_GNOME_Evolution_Wizard__epv *epv = &klass->epv;
|
||||
|
||||
object_class = GTK_OBJECT_CLASS (klass);
|
||||
object_class->destroy = evolution_wizard_destroy;
|
||||
|
||||
signals[NEXT] = gtk_signal_new ("next", GTK_RUN_FIRST,
|
||||
object_class->type,
|
||||
GTK_SIGNAL_OFFSET (EvolutionWizardClass, next),
|
||||
gtk_marshal_NONE__INT, GTK_TYPE_NONE,
|
||||
1, GTK_TYPE_INT);
|
||||
signals[PREPARE] = gtk_signal_new ("prepare", GTK_RUN_FIRST,
|
||||
object_class->type,
|
||||
GTK_SIGNAL_OFFSET (EvolutionWizardClass, prepare),
|
||||
gtk_marshal_NONE__INT, GTK_TYPE_NONE,
|
||||
1, GTK_TYPE_INT);
|
||||
signals[BACK] = gtk_signal_new ("back", GTK_RUN_FIRST,
|
||||
object_class->type,
|
||||
GTK_SIGNAL_OFFSET (EvolutionWizardClass, back),
|
||||
gtk_marshal_NONE__INT, GTK_TYPE_NONE,
|
||||
1, GTK_TYPE_INT);
|
||||
signals[FINISH] = gtk_signal_new ("finish", GTK_RUN_FIRST,
|
||||
object_class->type,
|
||||
GTK_SIGNAL_OFFSET (EvolutionWizardClass, finish),
|
||||
gtk_marshal_NONE__INT, GTK_TYPE_NONE,
|
||||
1, GTK_TYPE_INT);
|
||||
signals[CANCEL] = gtk_signal_new ("cancel", GTK_RUN_FIRST,
|
||||
object_class->type,
|
||||
GTK_SIGNAL_OFFSET (EvolutionWizardClass, cancel),
|
||||
gtk_marshal_NONE__INT, GTK_TYPE_NONE,
|
||||
1, GTK_TYPE_INT);
|
||||
signals[HELP] = gtk_signal_new ("help", GTK_RUN_FIRST,
|
||||
object_class->type,
|
||||
GTK_SIGNAL_OFFSET (EvolutionWizardClass, help),
|
||||
gtk_marshal_NONE__INT, GTK_TYPE_NONE,
|
||||
1, GTK_TYPE_INT);
|
||||
|
||||
gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL);
|
||||
|
||||
parent_class = gtk_type_class (PARENT_TYPE);
|
||||
|
||||
epv->_get_pageCount = impl_GNOME_Evolution_Wizard__get_pageCount;
|
||||
epv->getControl = impl_GNOME_Evolution_Wizard_getControl;
|
||||
epv->notifyAction = impl_GNOME_Evolution_Wizard_notifyAction;
|
||||
}
|
||||
|
||||
static void
|
||||
evolution_wizard_init (EvolutionWizard *wizard)
|
||||
{
|
||||
wizard->priv = g_new0 (EvolutionWizardPrivate, 1);
|
||||
}
|
||||
|
||||
BONOBO_X_TYPE_FUNC_FULL (EvolutionWizard, GNOME_Evolution_Wizard,
|
||||
PARENT_TYPE, evolution_wizard);
|
||||
|
||||
EvolutionWizard *
|
||||
evolution_wizard_construct (EvolutionWizard *wizard,
|
||||
BonoboEventSource *event_source,
|
||||
EvolutionWizardGetControlFn get_fn,
|
||||
int num_pages,
|
||||
void *closure)
|
||||
{
|
||||
EvolutionWizardPrivate *priv;
|
||||
|
||||
g_return_val_if_fail (BONOBO_IS_EVENT_SOURCE (event_source), NULL);
|
||||
g_return_val_if_fail (IS_EVOLUTION_WIZARD (wizard), NULL);
|
||||
|
||||
priv = wizard->priv;
|
||||
priv->get_fn = get_fn;
|
||||
priv->page_count = num_pages;
|
||||
priv->closure = closure;
|
||||
|
||||
priv->event_source = event_source;
|
||||
bonobo_object_add_interface (BONOBO_OBJECT (wizard),
|
||||
BONOBO_OBJECT (event_source));
|
||||
|
||||
return wizard;
|
||||
}
|
||||
|
||||
EvolutionWizard *
|
||||
evolution_wizard_new_full (EvolutionWizardGetControlFn get_fn,
|
||||
int num_pages,
|
||||
BonoboEventSource *event_source,
|
||||
void *closure)
|
||||
{
|
||||
EvolutionWizard *wizard;
|
||||
|
||||
g_return_val_if_fail (num_pages > 0, NULL);
|
||||
g_return_val_if_fail (BONOBO_IS_EVENT_SOURCE (event_source), NULL);
|
||||
|
||||
wizard = gtk_type_new (evolution_wizard_get_type ());
|
||||
|
||||
return evolution_wizard_construct (wizard, event_source, get_fn, num_pages, closure);
|
||||
}
|
||||
|
||||
EvolutionWizard *
|
||||
evolution_wizard_new (EvolutionWizardGetControlFn get_fn,
|
||||
int num_pages,
|
||||
void *closure)
|
||||
{
|
||||
BonoboEventSource *event_source;
|
||||
|
||||
g_return_val_if_fail (num_pages > 0, NULL);
|
||||
|
||||
event_source = bonobo_event_source_new ();
|
||||
|
||||
return evolution_wizard_new_full (get_fn, num_pages, event_source, closure);
|
||||
}
|
||||
|
||||
void
|
||||
evolution_wizard_set_buttons_sensitive (EvolutionWizard *wizard,
|
||||
gboolean back_sensitive,
|
||||
gboolean next_sensitive,
|
||||
gboolean cancel_sensitive,
|
||||
CORBA_Environment *opt_ev)
|
||||
{
|
||||
EvolutionWizardPrivate *priv;
|
||||
CORBA_Environment ev;
|
||||
CORBA_any any;
|
||||
CORBA_short s;
|
||||
|
||||
g_return_if_fail (IS_EVOLUTION_WIZARD (wizard));
|
||||
|
||||
priv = wizard->priv;
|
||||
|
||||
if (opt_ev == NULL) {
|
||||
CORBA_exception_init (&ev);
|
||||
} else {
|
||||
ev = *opt_ev;
|
||||
}
|
||||
|
||||
s = back_sensitive << 2 | next_sensitive << 1 | cancel_sensitive;
|
||||
any._type = (CORBA_TypeCode) TC_short;
|
||||
any._value = &s;
|
||||
|
||||
bonobo_event_source_notify_listeners (priv->event_source,
|
||||
EVOLUTION_WIZARD_SET_BUTTONS_SENSITIVE,
|
||||
&any, &ev);
|
||||
if (opt_ev == NULL && BONOBO_EX (&ev)) {
|
||||
g_warning ("ERROR(%s): %s", __FUNCTION__, CORBA_exception_id (&ev));
|
||||
}
|
||||
|
||||
if (opt_ev == NULL) {
|
||||
CORBA_exception_free (&ev);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
evolution_wizard_set_show_finish (EvolutionWizard *wizard,
|
||||
gboolean show_finish,
|
||||
CORBA_Environment *opt_ev)
|
||||
{
|
||||
EvolutionWizardPrivate *priv;
|
||||
CORBA_Environment ev;
|
||||
CORBA_any any;
|
||||
CORBA_boolean b;
|
||||
|
||||
g_return_if_fail (IS_EVOLUTION_WIZARD (wizard));
|
||||
|
||||
priv = wizard->priv;
|
||||
if (opt_ev == NULL) {
|
||||
CORBA_exception_init (&ev);
|
||||
} else {
|
||||
ev = *opt_ev;
|
||||
}
|
||||
|
||||
b = show_finish;
|
||||
any._type = (CORBA_TypeCode) TC_boolean;
|
||||
any._value = &b;
|
||||
|
||||
bonobo_event_source_notify_listeners (priv->event_source,
|
||||
EVOLUTION_WIZARD_SET_SHOW_FINISH,
|
||||
&any, &ev);
|
||||
if (opt_ev == NULL && BONOBO_EX (&ev)) {
|
||||
g_warning ("ERROR(%s): %s", __FUNCTION__, CORBA_exception_id (&ev));
|
||||
}
|
||||
|
||||
if (opt_ev == NULL) {
|
||||
CORBA_exception_free (&ev);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
evolution_wizard_set_page (EvolutionWizard *wizard,
|
||||
int page_number,
|
||||
CORBA_Environment *opt_ev)
|
||||
{
|
||||
EvolutionWizardPrivate *priv;
|
||||
CORBA_Environment ev;
|
||||
CORBA_any any;
|
||||
CORBA_short s;
|
||||
|
||||
g_return_if_fail (IS_EVOLUTION_WIZARD (wizard));
|
||||
|
||||
priv = wizard->priv;
|
||||
|
||||
g_return_if_fail (page_number >= 0 && page_number < priv->page_count);
|
||||
|
||||
if (opt_ev == NULL) {
|
||||
CORBA_exception_init (&ev);
|
||||
} else {
|
||||
ev = *opt_ev;
|
||||
}
|
||||
|
||||
s = page_number;
|
||||
any._type = (CORBA_TypeCode) TC_short;
|
||||
any._value = &s;
|
||||
|
||||
bonobo_event_source_notify_listeners (priv->event_source,
|
||||
EVOLUTION_WIZARD_SET_PAGE,
|
||||
&any, &ev);
|
||||
|
||||
if (opt_ev == NULL && BONOBO_EX (&ev)) {
|
||||
g_warning ("ERROR(%s): %s", __FUNCTION__, CORBA_exception_id (&ev));
|
||||
}
|
||||
|
||||
if (opt_ev == NULL) {
|
||||
CORBA_exception_free (&ev);
|
||||
}
|
||||
}
|
||||
|
||||
BonoboEventSource *
|
||||
evolution_wizard_get_event_source (EvolutionWizard *wizard)
|
||||
{
|
||||
g_return_val_if_fail (IS_EVOLUTION_WIZARD (wizard), NULL);
|
||||
|
||||
return wizard->priv->event_source;
|
||||
}
|
||||
86
shell/evolution-wizard.h
Normal file
86
shell/evolution-wizard.h
Normal file
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* evolution-wizard.h
|
||||
*
|
||||
* Copyright (C) 2001 Ximian, Inc.
|
||||
*
|
||||
* Authors: Iain Holmes <iain@ximian.com>
|
||||
*/
|
||||
|
||||
#ifndef __EVOLUTION_WIZARD_H__
|
||||
#define __EVOLUTION_WIZARD_H__
|
||||
|
||||
#include <bonobo/bonobo-control.h>
|
||||
#include <bonobo/bonobo-event-source.h>
|
||||
|
||||
#include <Evolution.h>
|
||||
|
||||
BEGIN_GNOME_DECLS
|
||||
|
||||
typedef struct _EvolutionWizard EvolutionWizard;
|
||||
typedef struct _EvolutionWizardPrivate EvolutionWizardPrivate;
|
||||
|
||||
#define EVOLUTION_WIZARD_SET_PAGE "GNOME::Evolution::Wizard_setPage"
|
||||
#define EVOLUTION_WIZARD_SET_SHOW_FINISH "GNOME::Evolution::Wizard_setShowFinish"
|
||||
#define EVOLUTION_WIZARD_SET_BUTTONS_SENSITIVE "GNOME::Evolution::Wizard_setButtonsSensitive"
|
||||
|
||||
#define EVOLUTION_WIZARD_TYPE (evolution_wizard_get_type ())
|
||||
#define EVOLUTION_WIZARD(o) (GTK_CHECK_CAST ((o), EVOLUTION_WIZARD_TYPE, EvolutionWizard))
|
||||
#define EVOLUTION_WIZARD_CLASS(k) (GTK_CHECK_CLASS_CAST((k), EVOLUTION_WIZARD_TYPE, EvolutionWizardClass))
|
||||
#define IS_EVOLUTION_WIZARD(o) (GTK_CHECK_TYPE ((o), EVOLUTION_WIZARD_TYPE))
|
||||
#define IS_EVOLUTION_WIZARD_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), EVOLUTION_WIZARD_TYPE))
|
||||
|
||||
typedef BonoboControl *(* EvolutionWizardGetControlFn) (EvolutionWizard *wizard,
|
||||
int page_number,
|
||||
void *closure);
|
||||
|
||||
struct _EvolutionWizard {
|
||||
BonoboXObject object;
|
||||
|
||||
EvolutionWizardPrivate *priv;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
BonoboXObjectClass parent_class;
|
||||
|
||||
POA_GNOME_Evolution_Wizard__epv epv;
|
||||
|
||||
void (* next) (EvolutionWizard *wizard, int page_number);
|
||||
void (* prepare) (EvolutionWizard *wizard, int page_number);
|
||||
void (* back) (EvolutionWizard *wizard, int page_number);
|
||||
void (* finish) (EvolutionWizard *wizard, int page_number);
|
||||
void (* cancel) (EvolutionWizard *wizard, int page_number);
|
||||
void (* help) (EvolutionWizard *wizard, int page_number);
|
||||
} EvolutionWizardClass;
|
||||
|
||||
GtkType evolution_wizard_get_type (void);
|
||||
|
||||
EvolutionWizard *evolution_wizard_construct (EvolutionWizard *wizard,
|
||||
BonoboEventSource *event_source,
|
||||
EvolutionWizardGetControlFn get_fn,
|
||||
int num_pages,
|
||||
void *closure);
|
||||
EvolutionWizard *evolution_wizard_new_full (EvolutionWizardGetControlFn get_fn,
|
||||
int num_pages,
|
||||
BonoboEventSource *event_source,
|
||||
void *closure);
|
||||
EvolutionWizard *evolution_wizard_new (EvolutionWizardGetControlFn get_fn,
|
||||
int num_pages,
|
||||
void *closure);
|
||||
|
||||
void evolution_wizard_set_buttons_sensitive (EvolutionWizard *wizard,
|
||||
gboolean back_sensitive,
|
||||
gboolean next_sensitive,
|
||||
gboolean cancel_sensitive,
|
||||
CORBA_Environment *opt_ev);
|
||||
void evolution_wizard_set_show_finish (EvolutionWizard *wizard,
|
||||
gboolean show_finish,
|
||||
CORBA_Environment *opt_ev);
|
||||
void evolution_wizard_set_page (EvolutionWizard *wizard,
|
||||
int page_number,
|
||||
CORBA_Environment *opt_ev);
|
||||
|
||||
BonoboEventSource * evolution_wizard_get_event_source (EvolutionWizard *wizard);
|
||||
|
||||
END_GNOME_DECLS
|
||||
|
||||
#endif /* __EVOLUTION_WIZARD_H__ */
|
||||
@ -2,6 +2,7 @@ gladedir = $(datadir)/evolution/glade
|
||||
|
||||
glade_DATA = \
|
||||
e-active-connection-dialog.glade \
|
||||
e-shell-folder-creation-dialog.glade
|
||||
e-shell-folder-creation-dialog.glade \
|
||||
evolution-startup-wizard.glade
|
||||
|
||||
EXTRA_DIST = $(glade_DATA)
|
||||
|
||||
252
shell/glade/evolution-startup-wizard.glade
Normal file
252
shell/glade/evolution-startup-wizard.glade
Normal file
@ -0,0 +1,252 @@
|
||||
<?xml version="1.0"?>
|
||||
<GTK-Interface>
|
||||
|
||||
<project>
|
||||
<name>Evolution-startup-wizard</name>
|
||||
<program_name>evolution-startup-wizard</program_name>
|
||||
<directory></directory>
|
||||
<source_directory>src</source_directory>
|
||||
<pixmaps_directory>pixmaps</pixmaps_directory>
|
||||
<language>C</language>
|
||||
<gnome_support>True</gnome_support>
|
||||
<gettext_support>True</gettext_support>
|
||||
</project>
|
||||
|
||||
<widget>
|
||||
<class>GtkWindow</class>
|
||||
<name>startup-wizard</name>
|
||||
<width>687</width>
|
||||
<height>0</height>
|
||||
<visible>False</visible>
|
||||
<title>window1</title>
|
||||
<type>GTK_WINDOW_TOPLEVEL</type>
|
||||
<position>GTK_WIN_POS_NONE</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>True</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDruid</class>
|
||||
<name>startup-druid</name>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDruidPageStart</class>
|
||||
<name>start-page</name>
|
||||
<title>First Time Startup Configuration</title>
|
||||
<text>Welcome to the Evolution first time configuration assistant.
|
||||
|
||||
This will help you:
|
||||
- configure your email settings
|
||||
- set your timezone.
|
||||
- import your old email and contacts
|
||||
|
||||
What you will need:
|
||||
- email server information (ask your email administrator for help)
|
||||
|
||||
First a directory will be created in your home directory for Evolution to
|
||||
store it's configuration settings.</text>
|
||||
<title_color>255,255,255</title_color>
|
||||
<text_color>0,0,0</text_color>
|
||||
<background_color>0,0,1</background_color>
|
||||
<logo_background_color>255,255,255</logo_background_color>
|
||||
<textbox_color>255,255,255</textbox_color>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDruidPageStandard</class>
|
||||
<name>identity-page</name>
|
||||
<title>Identity</title>
|
||||
<title_color>255,255,255</title_color>
|
||||
<background_color>0,0,1</background_color>
|
||||
<logo_background_color>255,255,255</logo_background_color>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDruidPageStandard:vbox</child_name>
|
||||
<name>druid-vbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDruidPageStandard</class>
|
||||
<name>receive-page</name>
|
||||
<title>Receiving Email</title>
|
||||
<title_color>255,255,255</title_color>
|
||||
<background_color>0,0,1</background_color>
|
||||
<logo_background_color>255,255,255</logo_background_color>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDruidPageStandard:vbox</child_name>
|
||||
<name>druid-vbox3</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDruidPageStandard</class>
|
||||
<name>extra-page</name>
|
||||
<title>Receiving Email</title>
|
||||
<title_color>255,255,255</title_color>
|
||||
<background_color>0,0,1</background_color>
|
||||
<logo_background_color>255,255,255</logo_background_color>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDruidPageStandard:vbox</child_name>
|
||||
<name>druid-vbox8</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDruidPageStandard</class>
|
||||
<name>send-page</name>
|
||||
<title>Sending Email</title>
|
||||
<title_color>255,255,255</title_color>
|
||||
<background_color>0,0,1</background_color>
|
||||
<logo_background_color>255,255,255</logo_background_color>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDruidPageStandard:vbox</child_name>
|
||||
<name>druid-vbox5</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDruidPageStandard</class>
|
||||
<name>management-page</name>
|
||||
<title>Account Management</title>
|
||||
<title_color>255,255,255</title_color>
|
||||
<background_color>0,0,1</background_color>
|
||||
<logo_background_color>255,255,255</logo_background_color>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDruidPageStandard:vbox</child_name>
|
||||
<name>druid-vbox9</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDruidPageStandard</class>
|
||||
<name>timezone-page</name>
|
||||
<title>Timezone </title>
|
||||
<title_color>255,255,255</title_color>
|
||||
<background_color>0,0,1</background_color>
|
||||
<logo_background_color>255,255,255</logo_background_color>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDruidPageStandard:vbox</child_name>
|
||||
<name>druid-vbox6</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDruidPageStandard</class>
|
||||
<name>import-page</name>
|
||||
<title>Importing Data</title>
|
||||
<title_color>255,255,255</title_color>
|
||||
<background_color>0,0,1</background_color>
|
||||
<logo_background_color>255,255,255</logo_background_color>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDruidPageStandard:vbox</child_name>
|
||||
<name>druid-vbox7</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDruidPageFinish</class>
|
||||
<name>done-page</name>
|
||||
<title>Done</title>
|
||||
<text>Your configuration is complete.</text>
|
||||
<background_color>0,0,1</background_color>
|
||||
<logo_background_color>255,255,255</logo_background_color>
|
||||
<textbox_color>255,255,255</textbox_color>
|
||||
<text_color>0,0,0</text_color>
|
||||
<title_color>255,255,255</title_color>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
</GTK-Interface>
|
||||
@ -1,3 +1,9 @@
|
||||
2001-08-18 Iain Holmes <iain@ximian.com>
|
||||
|
||||
* Makefile.am: Add the e-timezone-dialog dir.
|
||||
|
||||
* e-timezone-dialog/*: Add new files.
|
||||
|
||||
2001-08-10 Christopher James Lahey <clahey@ximian.com>
|
||||
|
||||
* menus/gal-view-menus.c (build_menus): Don't display the Define
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
|
||||
SUBDIRS = \
|
||||
e-timezone-dialog \
|
||||
misc \
|
||||
meeting-time-sel \
|
||||
menus
|
||||
|
||||
18
widgets/e-timezone-dialog/Makefile.am
Normal file
18
widgets/e-timezone-dialog/Makefile.am
Normal file
@ -0,0 +1,18 @@
|
||||
INCLUDES = \
|
||||
-I$(top_srcdir) \
|
||||
$(EXTRA_GNOME_CFLAGS) \
|
||||
-DMAP_DIR=\""$(datadir)/images/evolution"\" \
|
||||
-DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \
|
||||
-DG_LOG_DOMAIN=__FILE__
|
||||
|
||||
noinst_LIBRARIES = \
|
||||
libetimezonedialog.a
|
||||
|
||||
libetimezonedialog_a_SOURCES = \
|
||||
e-timezone-dialog.c \
|
||||
e-timezone-dialog.h
|
||||
|
||||
gladedir = $(datadir)/evolution/glade
|
||||
glade_DATA = e-timezone-dialog.glade
|
||||
|
||||
EXTRA_DIST = $(glade_DATA)
|
||||
@ -55,6 +55,7 @@ struct _ETimezoneDialogPrivate {
|
||||
|
||||
/* Widgets from the Glade file */
|
||||
GtkWidget *app;
|
||||
GtkWidget *table;
|
||||
GtkWidget *map_window;
|
||||
GtkWidget *timezone_preview;
|
||||
GtkWidget *timezone_combo;
|
||||
@ -245,6 +246,7 @@ e_timezone_dialog_construct (ETimezoneDialog *etd)
|
||||
|
||||
/* Load the content widgets */
|
||||
|
||||
g_print ("Loading: %s\n", EVOLUTION_GLADEDIR "/e-timezone-dialog.glade");
|
||||
priv->xml = glade_xml_new (EVOLUTION_GLADEDIR "/e-timezone-dialog.glade",
|
||||
NULL);
|
||||
if (!priv->xml) {
|
||||
@ -307,11 +309,13 @@ get_widgets (ETimezoneDialog *etd)
|
||||
priv->map_window = GW ("map-window");
|
||||
priv->timezone_combo = GW ("timezone-combo");
|
||||
priv->timezone_preview = GW ("timezone-preview");
|
||||
priv->table = GW ("table1");
|
||||
|
||||
return (priv->app
|
||||
&& priv->map_window
|
||||
&& priv->timezone_combo
|
||||
&& priv->timezone_preview);
|
||||
&& priv->timezone_preview
|
||||
&& priv->table);
|
||||
}
|
||||
|
||||
|
||||
@ -583,7 +587,7 @@ e_timezone_dialog_set_timezone (ETimezoneDialog *etd,
|
||||
}
|
||||
|
||||
|
||||
GtkWidget*
|
||||
GtkWidget *
|
||||
e_timezone_dialog_get_toplevel (ETimezoneDialog *etd)
|
||||
{
|
||||
ETimezoneDialogPrivate *priv;
|
||||
@ -657,3 +661,21 @@ on_combo_changed (GtkEditable *entry, ETimezoneDialog *etd)
|
||||
g_free (priv->tzid);
|
||||
priv->tzid = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* e_timezone_dialog_reparent:
|
||||
* @etd: #ETimezoneDialog.
|
||||
* @new_parent: The new parent widget.
|
||||
*
|
||||
* Takes the internal widgets out of the dialog and put them into @new_parent
|
||||
*/
|
||||
void
|
||||
e_timezone_dialog_reparent (ETimezoneDialog *etd,
|
||||
GtkWidget *new_parent)
|
||||
{
|
||||
ETimezoneDialogPrivate *priv;
|
||||
|
||||
priv = etd->priv;
|
||||
|
||||
gtk_widget_reparent (priv->table, new_parent);
|
||||
}
|
||||
Reference in New Issue
Block a user