675c8776af78229b63d44b2ee92f4be9c581eebf
diff --git a/ChangeLog b/ChangeLog
index 0b320ce..7cd7e8d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2008-01-07  Steve Frécinaux  <code@istique.net>
+
+	* src/gui/assistant.cpp:
+	* src/gui/assistant.h:
+	New EkigaAssistant based on GtkAssistant instead of GnomeDruid.
+
+	* src/endpoints/ekiga.h:
+	* src/endpoints/ekiga.h:
+	Renamed GetDruidWindow into GetAssistantWindow and use EkigaAssistant.
+
+	* src/gui/druid.cpp:
+	* src/gui/druid.h:
+	* lib/druid/*:
+	Removed since they are not needed anymore.
+
+	* src/gui/main.cpp:
+	* src/gui/conf.cpp:
+	* src/devices/videoinput.cpp:
+	* src/devices/audio.cpp:
+	* src/Makefile.am:
+	* lib/Makefile.am:
+	* configure.ac:
+	Adapt for above changes.
+
 2008-01-06  Matthias Schneider  <ma30002000@yahoo.de>
 
 	* src/endpoints/opal-call.cpp:
diff --git a/configure.ac b/configure.ac
index 53c2b98..a0990f6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -660,7 +660,6 @@ src/ekiga-config-tool
 AC_PACKAGE_NAME.schemas.in
 AC_PACKAGE_NAME.desktop.in
 lib/Makefile
-lib/druid/Makefile
 lib/gmconf/Makefile
 lib/gui/Makefile
 lib/pixops/Makefile
diff --git a/lib/Makefile.am b/lib/Makefile.am
index bd8372a..e0fe46b 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -1,9 +1,5 @@
 SUBDIRS = gmconf gui toolbox platform engine
 
-if !HAVE_GNOME
-SUBDIRS += druid
-endif
-
 if !WIN32
 SUBDIRS += pixops
 endif
diff --git a/lib/druid/Makefile.am b/lib/druid/Makefile.am
deleted file mode 100644
index 3ca473b..0000000
--- a/lib/druid/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-noinst_LTLIBRARIES = libdruid.la
-
-libdruid_la_SOURCES =					\
-			gnome-druid.c			\
-			gnome-druid.h			\
-			gnome-druid-page.c		\
-			gnome-druid-page.h		\
-			gnome-druid-page-edge.c		\
-			gnome-druid-page-edge.h		\
-			gnome-druid-page-standard.c	\
-			gnome-druid-page-standard.h
-
-INCLUDES =						\
-	-I$(top_srcdir) 				
-
-AM_CFLAGS = $(GTK_CFLAGS) $(GLIB_CFLAGS)
-
-libdruid_la_LDFLAGS = -export-dynamic $(GTK_LIBS) $(GLIB_LIBS)
-libdruid_la_LIDADD = 
diff --git a/lib/druid/Readme b/lib/druid/Readme
deleted file mode 100644
index e57cda3..0000000
--- a/lib/druid/Readme
+++ /dev/null
@@ -1,2 +0,0 @@
-The code in this directory has been copied by J. Puydt from libgnomeui 2.4.0.1,
-and lightly modified not to depend on anything else than gtk+.
\ No newline at end of file
diff --git a/lib/druid/gnome-druid-page-edge.c b/lib/druid/gnome-druid-page-edge.c
deleted file mode 100644
index 720be3d..0000000
--- a/lib/druid/gnome-druid-page-edge.c
+++ /dev/null
@@ -1,649 +0,0 @@
-/* gnome-druid-page-edge.c
- * Copyright (C) 1999  Red Hat, Inc.
- *
- * All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-/*
-  @NOTATION@
-*/
-
-/*
- * FIXME (for gnome 2.2):
- *
- * This widget needs properties like GnomeDruidPageStandard
- */
-#include "gnome-druid.h"
-
-#include "gnome-druid-page-edge.h"
-
-struct _GnomeDruidPageEdgePrivate
-{
-	GtkWidget *background;
-	GtkWidget *top_watermark;
-	GtkWidget *side_watermark;
-	GtkWidget *title_label;
-	GtkWidget *logo;
-	GtkWidget *text_label;
-	GtkWidget *contents;
-
-	gboolean background_color_set : 1;
-	gboolean textbox_color_set : 1;
-	gboolean logo_background_color_set : 1;
-	gboolean title_color_set : 1;
-	gboolean text_color_set : 1;
-};
-
-static void gnome_druid_page_edge_destroy 	(GtkObject                      *object);
-static void gnome_druid_page_edge_finalize 	(GObject                        *object);
-static void gnome_druid_page_edge_set_color     (GnomeDruidPageEdge             *druid_page_edge);
-static void gnome_druid_page_edge_style_set     (GtkWidget                      *widget,
-						 GtkStyle                       *old_style);
-static void gnome_druid_page_edge_realize       (GtkWidget                      *widget);
-static void gnome_druid_page_edge_prepare	(GnomeDruidPage		        *page,
-						 GtkWidget                      *druid);
-
-#define LOGO_WIDTH 50.0
-#define DRUID_PAGE_HEIGHT 318
-#define DRUID_PAGE_WIDTH 516
-#define DRUID_PAGE_LEFT_WIDTH 100.0
-
-GNOME_CLASS_BOILERPLATE (GnomeDruidPageEdge, gnome_druid_page_edge,
-			 GnomeDruidPage, GNOME_TYPE_DRUID_PAGE,
-			 GNOME_REGISTER_TYPE);
-
-static void
-gnome_druid_page_edge_class_init (GnomeDruidPageEdgeClass *klass)
-{
-	GtkObjectClass *object_class;
-	GObjectClass *gobject_class;
-	GtkWidgetClass *widget_class;
-	GnomeDruidPageClass *page_class;
-
-	object_class = (GtkObjectClass*) klass;
-	gobject_class = (GObjectClass*) klass;
-	widget_class = (GtkWidgetClass*) klass;
-	page_class = (GnomeDruidPageClass*) klass;
-
-	object_class->destroy = gnome_druid_page_edge_destroy;
-	gobject_class->finalize = gnome_druid_page_edge_finalize;
-	widget_class->style_set = gnome_druid_page_edge_style_set;
-	widget_class->realize = gnome_druid_page_edge_realize;
-
-	page_class->prepare = gnome_druid_page_edge_prepare;
-}
-
-static void
-gnome_druid_page_edge_instance_init (GnomeDruidPageEdge *page)
-{
-	GtkWidget *table;
-	GtkWidget *box;
-	GnomeDruidPageEdgePrivate *priv;
-
-	priv = g_new0(GnomeDruidPageEdgePrivate, 1);
-	page->_priv = priv;
-
-	/* FIXME: we should be a windowed widget, so we can set the
-	 * background style on ourself rather than doing this eventbox
-	 * hack */
-	priv->background = gtk_event_box_new ();
-	gtk_container_add (GTK_CONTAINER (page), priv->background);
-	gtk_widget_show (priv->background);
-
-	table = gtk_table_new (2, 2, FALSE);
-	gtk_container_add (GTK_CONTAINER (priv->background), table);
-	gtk_widget_show (table);
-
-	/* top bar watermark */
-	priv->top_watermark = gtk_image_new ();
-	gtk_misc_set_alignment (GTK_MISC (priv->top_watermark), 0.0, 0.0);
-	gtk_widget_show (priv->top_watermark);
-
-	/* title label */
-	priv->title_label = gtk_label_new (NULL);
-	gtk_misc_set_alignment (GTK_MISC (priv->title_label), 0.0, 0.5);
-	gtk_widget_show (priv->title_label);
-
-	/* top bar logo */
-	priv->logo = gtk_image_new ();
-	gtk_misc_set_alignment (GTK_MISC (priv->logo), 1.0, 0.5);
-	gtk_widget_show (priv->logo);
-
-	box = gtk_hbox_new (FALSE, 0);
-	gtk_widget_show (box);
-
-	/* side watermark */
-	priv->side_watermark = gtk_image_new ();
-	gtk_misc_set_alignment (GTK_MISC (priv->side_watermark), 0.0, 1.0);
-	gtk_widget_set_size_request (priv->side_watermark, DRUID_PAGE_LEFT_WIDTH, -1);
-	gtk_box_pack_start (GTK_BOX (box), priv->side_watermark,
-			    FALSE, TRUE, 0);
-	gtk_widget_show (priv->side_watermark);
-
-	/* contents event box (used for styles) */
-	priv->contents = gtk_event_box_new ();
-	gtk_box_pack_start (GTK_BOX (box), priv->contents,
-			    TRUE, TRUE, 0);
-	gtk_widget_show (priv->contents);
-
-	/* contents label */
-	priv->text_label = gtk_label_new (NULL);
-	gtk_label_set_line_wrap (GTK_LABEL (priv->text_label), TRUE);
-	gtk_misc_set_alignment (GTK_MISC (priv->text_label), 0.5, 0.5);
-	gtk_container_add (GTK_CONTAINER (priv->contents), priv->text_label);
-	gtk_widget_show (priv->text_label);
-
-	gtk_table_attach (GTK_TABLE (table),
-			  priv->logo,
-			  1, 2, 0, 1,
-			  GTK_FILL, GTK_FILL,
-			  5, 5);
-
-	gtk_table_attach (GTK_TABLE (table),
-			  priv->title_label,
-			  0, 1, 0, 1,
-			  GTK_EXPAND | GTK_FILL,
-			  GTK_FILL,
-			  5, 5);
-
-	gtk_table_attach (GTK_TABLE (table),
-			  priv->top_watermark,
-			  0, 2, 0, 1,
-			  GTK_EXPAND | GTK_FILL,
-			  GTK_FILL,
-			  0, 0);
-
-	gtk_table_attach (GTK_TABLE (table),
-			  box,
-			  0, 2, 1, 2,
-			  GTK_EXPAND | GTK_FILL,
-			  GTK_EXPAND | GTK_FILL,
-			  0, 0);
-
-}
-
-/**
- * gnome_druid_page_edge_construct:
- * @druid_page_edge: A #GnomeDruidPageEdge instance.
- * @position: The position of @druid_page_edge within the druid.
- * @antialiased: Unused in the current implementation. Set to %FALSE.
- * @title: The title of the page.
- * @text: The text in the body of the page.
- * @logo: The logo on the page.
- * @watermark: The watermark on the side of the page.
- * @top_watermark: The watermark on the top of the page.
- *
- * Description: Useful for subclassing and language bindings, this function
- * fills the given pieces of information into the existing @druid_page_edge.
- **/
-void
-gnome_druid_page_edge_construct (GnomeDruidPageEdge *druid_page_edge,
-				 GnomeEdgePosition   position,
-				 gboolean            antialiased,
-				 const gchar        *title,
-				 const gchar        *text,
-				 GdkPixbuf          *logo,
-				 GdkPixbuf          *watermark,
-				 GdkPixbuf          *top_watermark)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_EDGE (druid_page_edge));
-	g_return_if_fail (position >= GNOME_EDGE_START &&
-			  position < GNOME_EDGE_LAST);
-
-	druid_page_edge->position = position;
-
-	if (title)
-		gnome_druid_page_edge_set_title (druid_page_edge, title);
-
-	if (text)
-		gnome_druid_page_edge_set_text  (druid_page_edge, text);
-
-	if (logo)
-		gnome_druid_page_edge_set_logo (druid_page_edge, logo);
-
-	if (watermark)
-		gnome_druid_page_edge_set_watermark (druid_page_edge, watermark);
-
-	if (top_watermark)
-		gnome_druid_page_edge_set_top_watermark (druid_page_edge, top_watermark);
-}
-
-static void
-gnome_druid_page_edge_destroy(GtkObject *object)
-{
-	GnomeDruidPageEdge *druid_page_edge = GNOME_DRUID_PAGE_EDGE(object);
-
-	/* remember, destroy can be run multiple times! */
-
-	if (druid_page_edge->logo_image != NULL)
-		g_object_unref (G_OBJECT (druid_page_edge->logo_image));
-	druid_page_edge->logo_image = NULL;
-
-	if (druid_page_edge->watermark_image != NULL)
-		g_object_unref (G_OBJECT (druid_page_edge->watermark_image));
-	druid_page_edge->watermark_image = NULL;
-
-	GNOME_CALL_PARENT (GTK_OBJECT_CLASS, destroy, (object));
-}
-
-static void
-gnome_druid_page_edge_finalize(GObject *object)
-{
-	GnomeDruidPageEdge *druid_page_edge = GNOME_DRUID_PAGE_EDGE(object);
-
-	g_free (druid_page_edge->text);
-	druid_page_edge->text = NULL;
-	g_free (druid_page_edge->title);
-	druid_page_edge->title = NULL;
-
-	g_free (druid_page_edge->_priv);
-	druid_page_edge->_priv = NULL;
-
-	GNOME_CALL_PARENT (G_OBJECT_CLASS, finalize, (object));
-}
-
-static void
-gnome_druid_page_edge_set_color (GnomeDruidPageEdge *page)
-{
-	GnomeDruidPageEdgePrivate *priv = page->_priv;
-	GtkWidget *widget = GTK_WIDGET (page);
-	
-	if (!priv->background_color_set)
-		page->background_color = widget->style->bg[GTK_STATE_SELECTED];
-
-	if (!priv->textbox_color_set)
-		page->textbox_color = widget->style->bg[GTK_STATE_PRELIGHT];
-
-	if (!priv->logo_background_color_set)
-		page->logo_background_color = widget->style->bg[GTK_STATE_SELECTED];
-
-	if (!priv->title_color_set)
-		page->title_color = widget->style->fg[GTK_STATE_SELECTED];
-
-	if (!priv->text_color_set)
-		page->text_color = widget->style->fg[GTK_STATE_PRELIGHT];
-
-	gtk_widget_modify_bg (priv->background, GTK_STATE_NORMAL, &page->background_color);
-	gtk_widget_modify_bg (priv->contents, GTK_STATE_NORMAL, &page->textbox_color);
-	gtk_widget_modify_bg (priv->logo, GTK_STATE_NORMAL, &page->logo_background_color);
-	gtk_widget_modify_fg (priv->title_label, GTK_STATE_NORMAL, &page->title_color);
-	gtk_widget_modify_fg (priv->text_label, GTK_STATE_NORMAL, &page->text_color);
-}
-
-static void
-gnome_druid_page_edge_prepare (GnomeDruidPage *page,
-			       GtkWidget *druid)
-{
-	switch (GNOME_DRUID_PAGE_EDGE (page)->position) {
-	case GNOME_EDGE_START:
-		gnome_druid_set_buttons_sensitive (GNOME_DRUID (druid), FALSE, TRUE, TRUE, TRUE);
-		gnome_druid_set_show_finish (GNOME_DRUID (druid), FALSE);
-		if (GTK_IS_WINDOW (gtk_widget_get_toplevel (druid)))
-			gtk_widget_grab_default (GNOME_DRUID (druid)->next);
-		break;
-	case GNOME_EDGE_FINISH:
-		gnome_druid_set_buttons_sensitive (GNOME_DRUID (druid), TRUE, FALSE, TRUE, TRUE);
-		gnome_druid_set_show_finish (GNOME_DRUID (druid), TRUE);
-		if (GTK_IS_WINDOW (gtk_widget_get_toplevel (druid)))
-			gtk_widget_grab_default (GNOME_DRUID (druid)->finish);
-		break;
-	case GNOME_EDGE_OTHER:
-		gnome_druid_set_buttons_sensitive (GNOME_DRUID (druid), TRUE, TRUE, TRUE, TRUE);
-		gnome_druid_set_show_finish (GNOME_DRUID (druid), FALSE);
-	default:
-		break;
-	}
-}
-
-/**
- * gnome_druid_page_edge_new:
- * @position: Position in druid.
- *
- * Description: Creates a new GnomeDruidPageEdge widget.
- *
- * Returns: #GtkWidget pointer to a new #GnomeDruidPageEdge.
- **/
-/* Public functions */
-GtkWidget *
-gnome_druid_page_edge_new (GnomeEdgePosition position)
-{
-	GnomeDruidPageEdge *retval;
-
-	g_return_val_if_fail (position >= GNOME_EDGE_START &&
-			      position < GNOME_EDGE_LAST, NULL);
-
-	retval = g_object_new (GNOME_TYPE_DRUID_PAGE_EDGE, NULL);
-
-	gnome_druid_page_edge_construct (retval,
-					 position,
-					 FALSE,
-					 NULL,
-					 NULL,
-					 NULL,
-					 NULL,
-					 NULL);
-
-	return GTK_WIDGET (retval);
-}
-
-/**
- * gnome_druid_page_edge_new_aa:
- * @position: Position in druid.
- *
- * Description: Creates a new GnomeDruidPageEdge widget.  The
- * internal canvas is created in an antialiased mode.
- *
- * Returns: #GtkWidget pointer to a new #GnomeDruidPageEdge.
- **/
-/* Public functions */
-GtkWidget *
-gnome_druid_page_edge_new_aa (GnomeEdgePosition position)
-{
-	GnomeDruidPageEdge *retval;
-
-	g_return_val_if_fail (position >= GNOME_EDGE_START &&
-			      position < GNOME_EDGE_LAST, NULL);
-
-	retval = g_object_new (GNOME_TYPE_DRUID_PAGE_EDGE, NULL);
-
-	gnome_druid_page_edge_construct (retval,
-					 position,
-					 TRUE,
-					 NULL,
-					 NULL,
-					 NULL,
-					 NULL,
-					 NULL);
-
-	return GTK_WIDGET (retval);
-}
-
-/**
- * gnome_druid_page_edge_new_with_vals:
- * @position: Position in druid.
- * @antialiased: Use an antialiased canvas
- * @title: The title.
- * @text: The introduction text.
- * @logo: The logo in the upper right corner.
- * @watermark: The watermark on the left.
- * @top_watermark: The watermark on the left.
- *
- * This will create a new GNOME Druid Edge page, with the values given.  It is
- * acceptable for any of them to be %NULL.  Position should be
- * %GNOME_EDGE_START, %GNOME_EDGE_FINISH or %GNOME_EDGE_OTHER.
- *
- * Returns: #GtkWidget pointer to a new #GnomeDruidPageEdge.
- **/
-GtkWidget *
-gnome_druid_page_edge_new_with_vals (GnomeEdgePosition position,
-				     gboolean antialiased,
-				     const gchar *title,
-				     const gchar* text,
-				     GdkPixbuf *logo,
-				     GdkPixbuf *watermark,
-				     GdkPixbuf *top_watermark)
-{
-	GnomeDruidPageEdge *retval;
-
-	g_return_val_if_fail (position >= GNOME_EDGE_START &&
-			      position < GNOME_EDGE_LAST, NULL);
-
-	retval = g_object_new (GNOME_TYPE_DRUID_PAGE_EDGE, NULL);
-
-	gnome_druid_page_edge_construct (retval,
-					 position,
-					 antialiased,
-					 title,
-					 text,
-					 logo,
-					 watermark,
-					 top_watermark);
-	return GTK_WIDGET (retval);
-}
-
-/**
- * gnome_druid_page_edge_set_bg_color:
- * @druid_page_edge: A @GnomeDruidPageEdge instance.
- * @color: The new background color.
- *
- * Description:  This will set the background color to be the @color.  You do
- * not need to allocate the color, as the @druid_page_edge will do it for you.
- **/
-void
-gnome_druid_page_edge_set_bg_color      (GnomeDruidPageEdge *druid_page_edge,
-					 GdkColor *color)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_EDGE (druid_page_edge));
-	g_return_if_fail (color != NULL);
-
-	druid_page_edge->background_color = *color;
-	druid_page_edge->_priv->background_color_set = TRUE;
-
-	gtk_widget_modify_bg (druid_page_edge->_priv->background, GTK_STATE_NORMAL, color);
-}
-
-/**
- * gnome_druid_page_edge_set_textbox_color
- * @druid_page_edge: A @GnomeDruidPageEdge instance.
- * @color: The new textbox color.
- *
- * Sets the color of the background in the main text area of the page.
- */
-void
-gnome_druid_page_edge_set_textbox_color (GnomeDruidPageEdge *druid_page_edge,
-					 GdkColor *color)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_EDGE (druid_page_edge));
-	g_return_if_fail (color != NULL);
-
-	druid_page_edge->textbox_color = *color;
-	druid_page_edge->_priv->textbox_color_set = TRUE;
-
-	gtk_widget_modify_bg (druid_page_edge->_priv->contents, GTK_STATE_NORMAL, color);
-}
-
-/**
- * gnome_druid_page_edge_set_logo_bg_color
- * @druid_page_edge: A @GnomeDruidPageEdge instance.
- * @color: The new color of the logo's background.
- *
- * Set the color behind the druid page's logo.
- */
-void
-gnome_druid_page_edge_set_logo_bg_color (GnomeDruidPageEdge *druid_page_edge,
-					 GdkColor *color)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_EDGE (druid_page_edge));
-	g_return_if_fail (color != NULL);
-
-	druid_page_edge->logo_background_color = *color;
-	druid_page_edge->_priv->logo_background_color_set = TRUE;
-
-	gtk_widget_modify_bg (druid_page_edge->_priv->logo, GTK_STATE_NORMAL, color);
-}
-
-/**
- * gnome_druid_page_edge_set_title_color
- * @druid_page_edge: A @GnomeDruidPageEdge instance.
- * @color: The color of the title text.
- *
- * Sets the color of the title text on the current page.
- */
-void
-gnome_druid_page_edge_set_title_color   (GnomeDruidPageEdge *druid_page_edge,
-					 GdkColor *color)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_EDGE (druid_page_edge));
-	g_return_if_fail (color != NULL);
-
-	druid_page_edge->title_color = *color;
-	druid_page_edge->_priv->title_color_set = 1;
-
-	gtk_widget_modify_fg (druid_page_edge->_priv->title_label, GTK_STATE_NORMAL, color);
-}
-
-/**
- * gnome_druid_page_edge_set_text_color
- * @druid_page_edge: A @GnomeDruidPageEdge instance.
- * @color: The new test color.
- *
- * Sets the color of the text in the body of the druid page.
- */
-void
-gnome_druid_page_edge_set_text_color    (GnomeDruidPageEdge *druid_page_edge,
-					 GdkColor *color)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_EDGE (druid_page_edge));
-	g_return_if_fail (color != NULL);
-
-	druid_page_edge->text_color = *color;
-	druid_page_edge->_priv->text_color_set = TRUE;
-
-	gtk_widget_modify_fg (druid_page_edge->_priv->text_label, GTK_STATE_NORMAL, color);
-}
-
-/**
- * gnome_druid_page_edge_set_text
- * @druid_page_edge: A @GnomeDruidPageEdge instance.
- * @text: The text contents.
- *
- * Sets the contents of the text portion of the druid page.
- */
-void
-gnome_druid_page_edge_set_text (GnomeDruidPageEdge *druid_page_edge,
-				const gchar *text)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_EDGE (druid_page_edge));
-
-	g_free (druid_page_edge->text);
-	druid_page_edge->text = g_strdup (text);
-	gtk_label_set_text (GTK_LABEL (druid_page_edge->_priv->text_label), text);
-}
-
-/**
- * gnome_druid_page_edge_set_title
- * @druid_page_edge: A @GnomeDruidPageEdge instance.
- * @title: The title text
- *
- * Sets the contents of the page's title text.
- */
-void
-gnome_druid_page_edge_set_title         (GnomeDruidPageEdge *druid_page_edge,
-					 const gchar *title)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_EDGE (druid_page_edge));
-
-	g_free (druid_page_edge->title);
-	druid_page_edge->title = g_strconcat ("<span size=\"xx-large\" weight=\"ultrabold\">",
-					      title ? title : "", "</span>", NULL);
-	gtk_label_set_text (GTK_LABEL (druid_page_edge->_priv->title_label),
-			    druid_page_edge->title);
-	gtk_label_set_use_markup (GTK_LABEL (druid_page_edge->_priv->title_label), TRUE);
-}
-
-/**
- * gnome_druid_page_edge_set_logo:
- * @druid_page_edge: A @GnomeDruidPageEdge instance.
- * @logo_image: The #GdkPixbuf to use as a logo.
- *
- * Description:  Sets a #GdkPixbuf as the logo in the top right corner.
- * If %NULL, then no logo will be displayed.
- **/
-void
-gnome_druid_page_edge_set_logo (GnomeDruidPageEdge *druid_page_edge,
-				GdkPixbuf *logo_image)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_EDGE (druid_page_edge));
-
-	if (druid_page_edge->logo_image != NULL)
-		g_object_unref (G_OBJECT (druid_page_edge->logo_image));
-
-	druid_page_edge->logo_image = logo_image;
-	if (logo_image != NULL )
-		g_object_ref (G_OBJECT (logo_image));
-	gtk_image_set_from_pixbuf (GTK_IMAGE (druid_page_edge->_priv->logo), logo_image);
-}
-
-/**
- * gnome_druid_page_edge_set_watermark:
- * @druid_page_edge: A @GnomeDruidPageEdge instance.
- * @watermark: The #GdkPixbuf to use as a watermark.
- *
- * Description: Sets a #GdkPixbuf as the watermark on the left strip on the
- * druid. If @watermark is %NULL, it is reset to the normal color.
- **/
-void
-gnome_druid_page_edge_set_watermark (GnomeDruidPageEdge *druid_page_edge,
-				     GdkPixbuf *watermark)
-{
-	int width = 0;
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_EDGE (druid_page_edge));
-
-	if (druid_page_edge->watermark_image != NULL)
-		g_object_unref (G_OBJECT (druid_page_edge->watermark_image));
-
-	druid_page_edge->watermark_image = watermark;
-	if (watermark != NULL )
-		g_object_ref (G_OBJECT (watermark));
-	gtk_image_set_from_pixbuf (GTK_IMAGE (druid_page_edge->_priv->side_watermark), watermark);
-
-	if (watermark)
-		width = gdk_pixbuf_get_width (watermark);
-
-	gtk_widget_set_size_request (druid_page_edge->_priv->side_watermark,
-				     width ? -1 : DRUID_PAGE_LEFT_WIDTH, -1);
-}
-
-/**
- * gnome_druid_page_edge_set_top_watermark:
- * @druid_page_edge: the #GnomeDruidPageEdge to work on
- * @top_watermark_image: The #GdkPixbuf to use as a top watermark
- *
- * Description:  Sets a #GdkPixbuf as the watermark on top of the top
- * strip on the druid.  If @top_watermark_image is %NULL, it is reset
- * to the normal color.
- **/
-void
-gnome_druid_page_edge_set_top_watermark (GnomeDruidPageEdge *druid_page_edge,
-					 GdkPixbuf *top_watermark_image)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_EDGE (druid_page_edge));
-
-	if (druid_page_edge->top_watermark_image)
-		g_object_unref (G_OBJECT (druid_page_edge->top_watermark_image));
-
-	druid_page_edge->top_watermark_image = top_watermark_image;
-	if (top_watermark_image != NULL)
-		g_object_ref (G_OBJECT (top_watermark_image));
-	gtk_image_set_from_pixbuf (GTK_IMAGE (druid_page_edge->_priv->top_watermark), 
-				   top_watermark_image);
-}
-
-static void
-gnome_druid_page_edge_style_set (GtkWidget *widget,
-				  GtkStyle *old_style)
-{
-	GNOME_CALL_PARENT (GTK_WIDGET_CLASS, style_set, (widget, old_style));
-	gnome_druid_page_edge_set_color (GNOME_DRUID_PAGE_EDGE (widget));
-}
-
-static void
-gnome_druid_page_edge_realize (GtkWidget *widget)
-{
-	GNOME_CALL_PARENT (GTK_WIDGET_CLASS, realize, (widget));
-	gnome_druid_page_edge_set_color (GNOME_DRUID_PAGE_EDGE (widget));
-}
diff --git a/lib/druid/gnome-druid-page-edge.h b/lib/druid/gnome-druid-page-edge.h
deleted file mode 100644
index 10f0be1..0000000
--- a/lib/druid/gnome-druid-page-edge.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/* gnome-druid-page-edge.h
- * Copyright (C) 1999  Red Hat, Inc.
- *
- * All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-/*
-  @NOTATION@
-*/
-#ifndef __GNOME_DRUID_PAGE_EDGE_H__
-#define __GNOME_DRUID_PAGE_EDGE_H__
-
-#include <gtk/gtk.h>
-#include "gnome-druid-page.h"
-
-G_BEGIN_DECLS
-
-#define GNOME_TYPE_DRUID_PAGE_EDGE            (gnome_druid_page_edge_get_type ())
-#define GNOME_DRUID_PAGE_EDGE(obj)            (GTK_CHECK_CAST ((obj), GNOME_TYPE_DRUID_PAGE_EDGE, GnomeDruidPageEdge))
-#define GNOME_DRUID_PAGE_EDGE_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GNOME_TYPE_DRUID_PAGE_EDGE, GnomeDruidPageEdgeClass))
-#define GNOME_IS_DRUID_PAGE_EDGE(obj)         (GTK_CHECK_TYPE ((obj), GNOME_TYPE_DRUID_PAGE_EDGE))
-#define GNOME_IS_DRUID_PAGE_EDGE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_DRUID_PAGE_EDGE))
-#define GNOME_DRUID_PAGE_EDGE_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), GNOME_TYPE_DRUID_PAGE_EDGE, GnomeDruidPageEdgeClass))
-
-/**
- * GnomeEdgePosition:
- * @GNOME_EDGE_START: The current page is at the beginning of the druid.
- * @GNOME_EDGE_FINISH: The current page is at the end of the druid.
- * @GNOME_EDGE_OTHER: The current page is neither the first nor the last page
- * (usually not required).
- * @GNOME_EDGE_LAST: Used internally to indicate the last value of the
- * enumeration. This should not be passed in to any function expecting a
- * #GnomeEdgePosition value.
- *
- * Used to pass around information about the position of a #GnomeDruidPage
- * within the overall #GnomeDruid. This enables the correct "surrounding"
- * content for the page to be drawn.
- */
-typedef enum {
-  /* update structure when adding enums */
-	GNOME_EDGE_START,
-	GNOME_EDGE_FINISH,
-	GNOME_EDGE_OTHER,
-	GNOME_EDGE_LAST /* for counting purposes */
-} GnomeEdgePosition;
-
-
-typedef struct _GnomeDruidPageEdge        GnomeDruidPageEdge;
-typedef struct _GnomeDruidPageEdgePrivate GnomeDruidPageEdgePrivate;
-typedef struct _GnomeDruidPageEdgeClass   GnomeDruidPageEdgeClass;
-
-/**
- * GnomeDruidPageEdge:
- * @title: The current title of the displayed page.
- * @text: The current text of the displayed page.
- * @logo_image: The logo of the displayed page.
- * @watermark_image: The watermark on the left side of the displayed page.
- * @top_watermark_image: The watermark on the top of the displayed page.
- * @background_color: The color of the edge of the current page (outside the
- * text area).
- * @textbox_color: The color of the textbox area of the displayed page.
- * @logo_background_color: The background color of the displayed page's logo.
- * @title_color: The color of the title text.
- * @text_color: The color of the body text.
- * @position: The position of the current page within the druid (a
- * #GnomeEdgePosition value).
- *
- * A widget holding information about the overall look of the currently
- * displaying druid page.
- */
-struct _GnomeDruidPageEdge
-{
-	GnomeDruidPage parent;
-
-	/*< public >*/
-	gchar *title;
-	gchar *text;
-	GdkPixbuf *logo_image;
-	GdkPixbuf *watermark_image;
-	GdkPixbuf *top_watermark_image;
-
-	GdkColor background_color;
-	GdkColor textbox_color;
-	GdkColor logo_background_color;
-	GdkColor title_color;
-	GdkColor text_color;
-
-	GnomeEdgePosition position : 2;
-
-	/*< private >*/
-	GnomeDruidPageEdgePrivate *_priv;
-};
-
-struct _GnomeDruidPageEdgeClass
-{
-	GnomeDruidPageClass parent_class;
-
-	/* Padding for possible expansion */
-	gpointer padding1;
-	gpointer padding2;
-};
-
-GType      gnome_druid_page_edge_get_type          (void) G_GNUC_CONST;
-GtkWidget *gnome_druid_page_edge_new               (GnomeEdgePosition   position);
-GtkWidget *gnome_druid_page_edge_new_aa            (GnomeEdgePosition   position);
-GtkWidget *gnome_druid_page_edge_new_with_vals     (GnomeEdgePosition   position,
-						    gboolean            antialiased,
-						    const gchar        *title,
-						    const gchar        *text,
-						    GdkPixbuf          *logo,
-						    GdkPixbuf          *watermark,
-						    GdkPixbuf	       *top_watermark);
-void       gnome_druid_page_edge_construct         (GnomeDruidPageEdge *druid_page_edge,
-						    GnomeEdgePosition   position,
-						    gboolean            antialiased,
-						    const gchar        *title,
-						    const gchar        *text,
-						    GdkPixbuf          *logo,
-						    GdkPixbuf          *watermark,
-						    GdkPixbuf          *top_watermark);
-void       gnome_druid_page_edge_set_bg_color      (GnomeDruidPageEdge *druid_page_edge,
-						    GdkColor           *color);
-void       gnome_druid_page_edge_set_textbox_color (GnomeDruidPageEdge *druid_page_edge,
-						    GdkColor           *color);
-void       gnome_druid_page_edge_set_logo_bg_color (GnomeDruidPageEdge *druid_page_edge,
-						    GdkColor           *color);
-void       gnome_druid_page_edge_set_title_color   (GnomeDruidPageEdge *druid_page_edge,
-						    GdkColor           *color);
-void       gnome_druid_page_edge_set_text_color    (GnomeDruidPageEdge *druid_page_edge,
-						    GdkColor           *color);
-void       gnome_druid_page_edge_set_text          (GnomeDruidPageEdge *druid_page_edge,
-						    const gchar        *text);
-void       gnome_druid_page_edge_set_title         (GnomeDruidPageEdge *druid_page_edge,
-						    const gchar        *title);
-void       gnome_druid_page_edge_set_logo          (GnomeDruidPageEdge *druid_page_edge,
-						    GdkPixbuf          *logo_image);
-void       gnome_druid_page_edge_set_watermark     (GnomeDruidPageEdge *druid_page_edge,
-						    GdkPixbuf          *watermark);
-void       gnome_druid_page_edge_set_top_watermark (GnomeDruidPageEdge *druid_page_edge,
-						    GdkPixbuf          *top_watermark_image);
-
-G_END_DECLS
-
-#endif /* __GNOME_DRUID_PAGE_EDGE_H__ */
diff --git a/lib/druid/gnome-druid-page-standard.c b/lib/druid/gnome-druid-page-standard.c
deleted file mode 100644
index 7c576db..0000000
--- a/lib/druid/gnome-druid-page-standard.c
+++ /dev/null
@@ -1,788 +0,0 @@
-/* gnome-druid-page-standard.c
- * Copyright (C) 1999  Red Hat, Inc.
- * Copyright (C) 2001  James M. Cape <jcape@ignore-your.tv>
- * Copyright (C) 2001  Jonathan Blandford <jrb@alum.mit.edu>
- * All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "gnome-druid.h"
-
-/* FIXME-orig: Are these includes needed */
-#include <gtk/gtklabel.h>
-#include <gtk/gtklayout.h>
-#include <gtk/gtkimage.h>
-#include <gtk/gtkeventbox.h>
-#include <gtk/gtkvbox.h>
-#include <gtk/gtkhbox.h>
-#include <string.h>
-#include "gnome-druid-page-standard.h"
-
-struct _GnomeDruidPageStandardPrivate
-{
-	GtkWidget *background;
-	GtkWidget *watermark;
-	GtkWidget *logo;
-	GtkWidget *title_label;
-
-	GtkWidget *evbox;
-
-	guint title_foreground_set : 1;
-	guint background_set : 1;
-	guint logo_background_set : 1;
-	guint contents_background_set : 1;
-};
-
-
-static void gnome_druid_page_standard_get_property  (GObject                     *object,
-						     guint                        prop_id,
-						     GValue                      *value,
-						     GParamSpec                  *pspec);
-static void gnome_druid_page_standard_set_property  (GObject                     *object,
-						     guint                        prop_id,
-						     const GValue                *value,
-						     GParamSpec                  *pspec);
-static void gnome_druid_page_standard_finalize      (GObject                     *widget);
-static void gnome_druid_page_standard_destroy       (GtkObject                   *object);
-static void gnome_druid_page_standard_realize       (GtkWidget                   *widget);
-static void gnome_druid_page_standard_style_set     (GtkWidget                   *widget,
-						     GtkStyle                    *old_style);
-static void gnome_druid_page_standard_prepare       (GnomeDruidPage              *page,
-						     GtkWidget                   *druid);
-static void gnome_druid_page_standard_set_color     (GnomeDruidPageStandard      *druid_page_standard);
-
-enum {
-	PROP_0,
-	PROP_TITLE,
-	PROP_LOGO,
-	PROP_TOP_WATERMARK,
-	PROP_TITLE_FOREGROUND,
-	PROP_TITLE_FOREGROUND_GDK,
-	PROP_TITLE_FOREGROUND_SET,
-	PROP_BACKGROUND,
-	PROP_BACKGROUND_GDK,
-	PROP_BACKGROUND_SET,
-	PROP_LOGO_BACKGROUND,
-	PROP_LOGO_BACKGROUND_GDK,
-	PROP_LOGO_BACKGROUND_SET,
-	PROP_CONTENTS_BACKGROUND,
-	PROP_CONTENTS_BACKGROUND_GDK,
-	PROP_CONTENTS_BACKGROUND_SET,
-};
-
-GNOME_CLASS_BOILERPLATE (GnomeDruidPageStandard, gnome_druid_page_standard,
-			 GnomeDruidPage, GNOME_TYPE_DRUID_PAGE,
-			 GNOME_REGISTER_TYPE)
-
-static void
-gnome_druid_page_standard_class_init (GnomeDruidPageStandardClass *class)
-{
-	GtkObjectClass *object_class;
-	GObjectClass *gobject_class;
-	GtkWidgetClass *widget_class;
-	GnomeDruidPageClass *druid_page_class;
-
-	object_class = (GtkObjectClass*) class;
-	gobject_class = (GObjectClass*) class;
-	widget_class = (GtkWidgetClass*) class;
-	druid_page_class = (GnomeDruidPageClass*) class;
-
-	gobject_class->get_property = gnome_druid_page_standard_get_property;
-	gobject_class->set_property = gnome_druid_page_standard_set_property;
-	gobject_class->finalize = gnome_druid_page_standard_finalize;
-	object_class->destroy = gnome_druid_page_standard_destroy;
-	widget_class->realize = gnome_druid_page_standard_realize;
-	widget_class->style_set = gnome_druid_page_standard_style_set;
-	druid_page_class->prepare = gnome_druid_page_standard_prepare;
-
-	g_object_class_install_property (gobject_class,
-					 PROP_TITLE,
-					 g_param_spec_string ("title",
-							      "Title",
-							      "Title of the druid",
-							      NULL,
-							      G_PARAM_READWRITE));
-
-	g_object_class_install_property (gobject_class,
-					 PROP_LOGO,
-					 g_param_spec_object ("logo",
-							      "Logo",
-							      "Logo image",
-							      GDK_TYPE_PIXBUF,
-							      G_PARAM_READWRITE));
-
-	g_object_class_install_property (gobject_class,
-					 PROP_TOP_WATERMARK,
-					 g_param_spec_object ("top_watermark",
-							      "Top Watermark",
-							      "Watermark image for the top",
-							      GDK_TYPE_PIXBUF,
-							      G_PARAM_READWRITE));
-
-	g_object_class_install_property (gobject_class,
-					 PROP_TITLE_FOREGROUND,
-					 g_param_spec_string ("title_foreground",
-							      "Title Foreground",
-							      "Foreground color of the title",
-							      NULL,
-							      G_PARAM_WRITABLE));
-
-	g_object_class_install_property (gobject_class,
-					 PROP_TITLE_FOREGROUND_GDK,
-					 g_param_spec_boxed ("title_foreground_gdk",
-							     "Title Foreground Color",
-							     "Foreground color of the title as a GdkColor",
-							     GDK_TYPE_COLOR,
-							     G_PARAM_READWRITE));
-
-	g_object_class_install_property (gobject_class,
-					 PROP_TITLE_FOREGROUND_SET,
-					 g_param_spec_boolean ("title_foreground_set",
-							       "Title Foreground color set",
-							       "Foreground color of the title is set",
-							       FALSE,
-							       G_PARAM_READWRITE));
-
-	g_object_class_install_property (gobject_class,
-					 PROP_BACKGROUND,
-					 g_param_spec_string ("background",
-							      "Background Color",
-							      "Background color",
-							      NULL,
-							      G_PARAM_WRITABLE));
-
-	g_object_class_install_property (gobject_class,
-					 PROP_BACKGROUND_GDK,
-					 g_param_spec_boxed ("background_gdk",
-							     "Background Color",
-							     "Background color as a GdkColor",
-							     GDK_TYPE_COLOR,
-							     G_PARAM_READWRITE));
-
-	g_object_class_install_property (gobject_class,
-					 PROP_BACKGROUND_SET,
-					 g_param_spec_boolean ("background_set",
-							       "Background color set",
-							       "Background color is set",
-							       FALSE,
-							       G_PARAM_READWRITE));
-
-	g_object_class_install_property (gobject_class,
-					 PROP_LOGO_BACKGROUND,
-					 g_param_spec_string ("logo_background",
-							      "Logo Background Color",
-							      "Logo Background color",
-							      NULL,
-							      G_PARAM_WRITABLE));
-
-	g_object_class_install_property (gobject_class,
-					 PROP_LOGO_BACKGROUND_GDK,
-					 g_param_spec_boxed ("logo_background_gdk",
-							     "Logo Background Color",
-							     "Logo Background color as a GdkColor",
-							     GDK_TYPE_COLOR,
-							     G_PARAM_READWRITE));
-
-	g_object_class_install_property (gobject_class,
-					 PROP_LOGO_BACKGROUND_SET,
-					 g_param_spec_boolean ("logo_background_set",
-							       "Logo Background color set",
-							       "Logo Background color is set",
-							       FALSE,
-							       G_PARAM_READWRITE));
-}
-
-static void
-gnome_druid_page_standard_instance_init (GnomeDruidPageStandard *druid_page_standard)
-{
-	GtkWidget *table;
-
-	druid_page_standard->_priv = g_new0(GnomeDruidPageStandardPrivate, 1);
-
-	/* FIXME: we should be a windowed widget, so we can set the
-	 * style on ourself rather than doing this eventbox hack 
-	 */
-
-	/* Top bar background */
-	druid_page_standard->_priv->background = gtk_event_box_new ();
-	gtk_container_add (GTK_CONTAINER (druid_page_standard),
-			   druid_page_standard->_priv->background);
-	gtk_widget_show (druid_page_standard->_priv->background);
-
-	/* Top bar layout widget */
-	table = gtk_table_new (2, 2, FALSE);
-	gtk_container_add (GTK_CONTAINER (druid_page_standard->_priv->background),
-			   table);
-	gtk_widget_show (table);
-
-	/* Top Bar Watermark */
-	druid_page_standard->_priv->watermark = gtk_image_new ();
-	gtk_misc_set_alignment (GTK_MISC (druid_page_standard->_priv->watermark), 0.0, 0.0);
-	gtk_widget_show (druid_page_standard->_priv->watermark);
-	
-	/* Title label */
-	druid_page_standard->_priv->title_label = gtk_label_new (NULL);
-	gtk_misc_set_alignment (GTK_MISC (druid_page_standard->_priv->title_label), 0.0, 0.5);
-	gtk_widget_show (druid_page_standard->_priv->title_label);
-
-	/* Top bar logo*/
-	druid_page_standard->_priv->logo = gtk_image_new ();
-	gtk_misc_set_alignment (GTK_MISC (druid_page_standard->_priv->logo), 1.0, 0.5);
-	gtk_widget_show (druid_page_standard->_priv->logo);
-
-	/* Contents Event Box (used for styles) */
-	druid_page_standard->_priv->evbox = gtk_event_box_new ();
-	gtk_widget_show (druid_page_standard->_priv->evbox);
-
-	/* Contents Vbox */
-	druid_page_standard->vbox = gtk_vbox_new (FALSE, 6);
-	gtk_container_set_border_width (GTK_CONTAINER (druid_page_standard->vbox), 16);
-	gtk_container_add (GTK_CONTAINER (druid_page_standard->_priv->evbox), druid_page_standard->vbox);
-	gtk_widget_show (druid_page_standard->vbox);
-
-	/* do this order exactly, so that it displays with the correct
-	 * z-ordering */
-	gtk_table_attach (GTK_TABLE (table),
-			  druid_page_standard->_priv->logo,
-			  1, 2, 0, 1,
-			  GTK_FILL, GTK_FILL,
-			  5, 5);
-
-	gtk_table_attach (GTK_TABLE (table),
-			  druid_page_standard->_priv->title_label,
-			  0, 1, 0, 1,
-			  GTK_EXPAND | GTK_FILL,
-			  GTK_FILL,
-			  5, 5);
-
-	gtk_table_attach (GTK_TABLE (table),
-			  druid_page_standard->_priv->watermark,
-			  0, 2, 0, 1, 
-			  GTK_EXPAND | GTK_FILL,
-			  GTK_FILL,
-			  0, 0);
-
-	gtk_table_attach (GTK_TABLE (table),
-			  druid_page_standard->_priv->evbox,
-			  0, 2, 1, 2,
-			  GTK_EXPAND | GTK_FILL,
-			  GTK_EXPAND | GTK_FILL,
-			  1, 1);
-}
-
-static void
-gnome_druid_page_standard_get_property (GObject    *object,
-					guint       prop_id,
-					GValue     *value,
-					GParamSpec *pspec)
-{
-	GnomeDruidPageStandard *druid_page_standard = GNOME_DRUID_PAGE_STANDARD (object);
-
-	switch (prop_id) {
-	case PROP_TITLE:
-		g_value_set_string (value, druid_page_standard->title);
-		break;
-	case PROP_LOGO:
-		g_value_set_object (value, druid_page_standard->logo);
-		break;
-	case PROP_TOP_WATERMARK:
-		g_value_set_object (value, druid_page_standard->top_watermark);
-		break;
-	case PROP_TITLE_FOREGROUND_GDK:
-		g_value_set_boxed (value, &druid_page_standard->title_foreground);
-		break;
-	case PROP_TITLE_FOREGROUND_SET:
-		g_value_set_boolean (value, druid_page_standard->_priv->title_foreground_set);
-		break;
-	case PROP_BACKGROUND_GDK:
-		g_value_set_boxed (value, &druid_page_standard->background);
-		break;
-	case PROP_BACKGROUND_SET:
-		g_value_set_boolean (value, druid_page_standard->_priv->background_set);
-		break;
-	case PROP_LOGO_BACKGROUND_GDK:
-		g_value_set_boxed (value, &druid_page_standard->logo_background);
-		break;
-	case PROP_LOGO_BACKGROUND_SET:
-		g_value_set_boolean (value, druid_page_standard->_priv->logo_background_set);
-		break;
-	case PROP_CONTENTS_BACKGROUND_GDK:
-		g_value_set_boxed (value, &druid_page_standard->contents_background);
-		break;
-	case PROP_CONTENTS_BACKGROUND_SET:
-		g_value_set_boolean (value, druid_page_standard->_priv->contents_background_set);
-		break;
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-static void
-gnome_druid_page_standard_set_property (GObject      *object,
-					guint         prop_id,
-					const GValue *value,
-					GParamSpec   *pspec)
-{
-	GnomeDruidPageStandard *druid_page_standard;
-	GdkColor color;
-
-	druid_page_standard = GNOME_DRUID_PAGE_STANDARD (object);
-
-	switch (prop_id) {
-	case PROP_TITLE:
-		gnome_druid_page_standard_set_title (druid_page_standard, g_value_get_string (value));
-		break;
-	case PROP_LOGO:
-		gnome_druid_page_standard_set_logo (druid_page_standard, g_value_get_object (value));
-		break;
-	case PROP_TOP_WATERMARK:
-		gnome_druid_page_standard_set_top_watermark (druid_page_standard, g_value_get_object (value));
-		break;
-	case PROP_TITLE_FOREGROUND:
-	case PROP_TITLE_FOREGROUND_GDK:
-		if (prop_id == PROP_TITLE_FOREGROUND_GDK)
-			color = *((GdkColor *)g_value_get_boxed (value));
-		else if (! gdk_color_parse (g_value_get_string (value), &color)) {
-			g_warning ("Don't know color `%s'", g_value_get_string (value));
-			break;
-		}
-		gnome_druid_page_standard_set_title_foreground (druid_page_standard, &color);
-		break;
-	case PROP_TITLE_FOREGROUND_SET:
-		druid_page_standard->_priv->title_foreground_set = g_value_get_boolean (value);
-		break;
-	case PROP_BACKGROUND:
-	case PROP_BACKGROUND_GDK:
-		if (prop_id == PROP_BACKGROUND_GDK)
-			color = *((GdkColor *)g_value_get_boxed (value));
-		else if (! gdk_color_parse (g_value_get_string (value), &color)) {
-			g_warning ("Don't know color `%s'", g_value_get_string (value));
-			break;
-		}
-		gnome_druid_page_standard_set_background (druid_page_standard, &color);
-		break;
-	case PROP_BACKGROUND_SET:
-		druid_page_standard->_priv->background_set = g_value_get_boolean (value);
-		break;
-	case PROP_LOGO_BACKGROUND:
-	case PROP_LOGO_BACKGROUND_GDK:
-		if (prop_id == PROP_LOGO_BACKGROUND_GDK)
-			color = *((GdkColor *)g_value_get_boxed (value));
-		else if (! gdk_color_parse (g_value_get_string (value), &color)) {
-			g_warning ("Don't know color `%s'", g_value_get_string (value));
-			break;
-		}
-		gnome_druid_page_standard_set_logo_background (druid_page_standard, &color);
-		break;
-	case PROP_LOGO_BACKGROUND_SET:
-		druid_page_standard->_priv->logo_background_set = g_value_get_boolean (value);
-		break;
-	case PROP_CONTENTS_BACKGROUND:
-	case PROP_CONTENTS_BACKGROUND_GDK:
-		if (prop_id == PROP_CONTENTS_BACKGROUND_GDK)
-			color = *((GdkColor *)g_value_get_boxed (value));
-		else if (! gdk_color_parse (g_value_get_string (value), &color)) {
-			g_warning ("Don't know color `%s'", g_value_get_string (value));
-			break;
-		}
-		gnome_druid_page_standard_set_contents_background (druid_page_standard, &color);
-		break;
-	case PROP_CONTENTS_BACKGROUND_SET:
-		druid_page_standard->_priv->contents_background_set = g_value_get_boolean (value);
-		break;
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-static void
-gnome_druid_page_standard_finalize (GObject *object)
-{
-	GnomeDruidPageStandard *druid_page_standard = GNOME_DRUID_PAGE_STANDARD(object);
-
-	g_free (druid_page_standard->title);
-	druid_page_standard->title = NULL;
-
-	g_free (druid_page_standard->_priv);
-	druid_page_standard->_priv = NULL;
-
-	GNOME_CALL_PARENT (G_OBJECT_CLASS, finalize, (object));
-}
-
-
-static void
-gnome_druid_page_standard_destroy (GtkObject *object)
-{
-	GnomeDruidPageStandard *druid_page_standard = GNOME_DRUID_PAGE_STANDARD (object);
-
-	/* remember, destroy can be run multiple times! */
-
-	if (druid_page_standard->logo != NULL)
-		g_object_unref (G_OBJECT (druid_page_standard->logo));
-	druid_page_standard->logo = NULL;
-
-	if (druid_page_standard->top_watermark != NULL)
-		g_object_unref (G_OBJECT (druid_page_standard->top_watermark));
-	druid_page_standard->top_watermark = NULL;
-
-	GNOME_CALL_PARENT (GTK_OBJECT_CLASS, destroy, (object));
-}
-
-static void
-gnome_druid_page_standard_realize (GtkWidget *widget)
-{
-	GnomeDruidPageStandard *druid_page_standard = GNOME_DRUID_PAGE_STANDARD (widget);
-
-	GNOME_CALL_PARENT (GTK_WIDGET_CLASS, realize, (widget));
-	
-	gnome_druid_page_standard_set_color (druid_page_standard);
-}
-
-static void
-gnome_druid_page_standard_style_set (GtkWidget *widget,
-				     GtkStyle  *old_style)
-{
-	GnomeDruidPageStandard *druid_page_standard = GNOME_DRUID_PAGE_STANDARD (widget);
-
-	GNOME_CALL_PARENT (GTK_WIDGET_CLASS, style_set, (widget, old_style));
-	
-	gnome_druid_page_standard_set_color (druid_page_standard);
-}
-
-static void
-gnome_druid_page_standard_prepare (GnomeDruidPage *page,
-				   GtkWidget *druid)
-{
-	gnome_druid_set_buttons_sensitive (GNOME_DRUID (druid), TRUE, TRUE, TRUE, TRUE);
-	gnome_druid_set_show_finish (GNOME_DRUID (druid), FALSE);
-	if (GTK_IS_WINDOW (gtk_widget_get_toplevel (druid)))
-		gtk_widget_grab_default (GNOME_DRUID (druid)->next);
-}
-
-/**
- * gnome_druid_page_standard_new
- *
- * Construct a new #GnomeDruidPageStandard.
- *
- * Returns: A new #GnomeDruidPageStandard as a #GtkWidget pointer.
- */
-GtkWidget *
-gnome_druid_page_standard_new (void)
-{
-	GnomeDruidPageStandard *retval;
-
-	retval = g_object_new (GNOME_TYPE_DRUID_PAGE_STANDARD, NULL);
-
-	return GTK_WIDGET (retval);
-}
-
-/**
- * gnome_druid_page_standard_new_with_vals:
- * @title: The title of the druid page.
- * @logo: The logo to put on the druid page.
- * @top_watermark: The watermark to put at the top of the druid page.
- *
- * Like gnome_druid_page_standard_new(), but allows the caller to fill in some
- * of the values at the same time.
- *
- * Returns: A new #GnomeDruidPageStandard as a #GtkWidget pointer.
- */
-GtkWidget *
-gnome_druid_page_standard_new_with_vals (const gchar *title,
-					 GdkPixbuf   *logo,
-					 GdkPixbuf   *top_watermark)
-{
-	GnomeDruidPageStandard *retval;
-
-	retval = g_object_new (GNOME_TYPE_DRUID_PAGE_STANDARD, NULL);
-
-	gnome_druid_page_standard_set_title (retval, title);
-	gnome_druid_page_standard_set_logo (retval, logo);
-	gnome_druid_page_standard_set_top_watermark (retval, top_watermark);
-	return GTK_WIDGET (retval);
-}
-
-
-
-/**
- * gnome_druid_page_standard_set_title:
- * @druid_page_standard: A #GnomeDruidPageStandard instance.
- * @title: The string to use as the new title text.
- *
- * Description:  Sets the title to the value of @title.
- **/
-void
-gnome_druid_page_standard_set_title (GnomeDruidPageStandard *druid_page_standard,
-				     const gchar            *title)
-{
-	gchar *title_string;
-	g_return_if_fail (druid_page_standard != NULL);
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_STANDARD (druid_page_standard));
-
-	g_free (druid_page_standard->title);
-	druid_page_standard->title = g_strdup (title);
-	title_string = g_strconcat ("<span size=\"xx-large\" weight=\"ultrabold\">",
-				    title ? title : "", "</span>", NULL);
-	gtk_label_set_label (GTK_LABEL (druid_page_standard->_priv->title_label), title_string);
-	gtk_label_set_use_markup (GTK_LABEL (druid_page_standard->_priv->title_label), TRUE);
-	g_free (title_string);
-	g_object_notify (G_OBJECT (druid_page_standard), "title");
-}
-
-
-/**
- * gnome_druid_page_standard_set_logo:
- * @druid_page_standard: A #GnomeDruidPageStandard instance.
- * @logo_image: The #GdkPixbuf to use as a logo.
- *
- * Description:  Sets a #GdkPixbuf as the logo in the top right corner.
- * If %NULL, then no logo will be displayed.
- **/
-void
-gnome_druid_page_standard_set_logo (GnomeDruidPageStandard *druid_page_standard,
-				    GdkPixbuf              *logo_image)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_STANDARD (druid_page_standard));
-
-	if (logo_image != NULL)
-		g_object_ref (G_OBJECT (logo_image));
-	if (druid_page_standard->logo)
-		g_object_unref (G_OBJECT (druid_page_standard->logo));
-
-	druid_page_standard->logo = logo_image;
-	gtk_image_set_from_pixbuf (GTK_IMAGE (druid_page_standard->_priv->logo), logo_image);
-	g_object_notify (G_OBJECT (druid_page_standard), "logo");
-}
-
-
-
-/**
- * gnome_druid_page_standard_set_top_watermark:
- * @druid_page_standard: A #GnomeDruidPageStandard instance.
- * @top_watermark_image: The #GdkPixbuf to use as a top watermark.
- *
- * Description:  Sets a #GdkPixbuf as the watermark on top of the top
- * strip on the druid.  If #top_watermark_image is %NULL, it is reset
- * to the normal color.
- **/
-void
-gnome_druid_page_standard_set_top_watermark (GnomeDruidPageStandard *druid_page_standard,
-					     GdkPixbuf              *top_watermark_image)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_STANDARD (druid_page_standard));
-
-	if (top_watermark_image != NULL)
-		g_object_ref (G_OBJECT (top_watermark_image));
-	if (druid_page_standard->top_watermark)
-		g_object_unref (G_OBJECT (druid_page_standard->top_watermark));
-
-	druid_page_standard->top_watermark = top_watermark_image;
-
-	gtk_image_set_from_pixbuf (GTK_IMAGE (druid_page_standard->_priv->watermark), top_watermark_image);
-	g_object_notify (G_OBJECT (druid_page_standard), "top_watermark");
-}
-
-/**
- * gnome_druid_page_standard_set_title_foreground:
- * @druid_page_standard: A #GnomeDruidPageStandard instance.
- * @color: The new color of the title text.
- *
- * Sets the title text to the specified color.
- */
-void
-gnome_druid_page_standard_set_title_foreground (GnomeDruidPageStandard *druid_page_standard,
-						GdkColor               *color)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_STANDARD (druid_page_standard));
-	g_return_if_fail (color != NULL);
-
-	druid_page_standard->title_foreground = *color;
-
-	gtk_widget_modify_fg (druid_page_standard->_priv->title_label, GTK_STATE_NORMAL, color);
-
-	g_object_notify (G_OBJECT (druid_page_standard), "title_foreground");
-	if (druid_page_standard->_priv->title_foreground_set == FALSE) {
-		druid_page_standard->_priv->title_foreground_set = TRUE;
-		g_object_notify (G_OBJECT (druid_page_standard), "title_foreground_set");
-	}
-}
-
-/**
- * gnome_druid_page_standard_set_background:
- * @druid_page_standard: A #GnomeDruidPageStandard instance.
- * @color: The new background color.
- *
- * Sets the background color of the top section of the druid page to @color.
- */
-void
-gnome_druid_page_standard_set_background (GnomeDruidPageStandard *druid_page_standard,
-					  GdkColor               *color)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_STANDARD (druid_page_standard));
-	g_return_if_fail (color != NULL);
-
-	druid_page_standard->background = *color;
-
-	gtk_widget_modify_bg (druid_page_standard->_priv->background, GTK_STATE_NORMAL, color);
-	g_object_notify (G_OBJECT (druid_page_standard), "background");
-	if (druid_page_standard->_priv->background_set == FALSE) {
-		druid_page_standard->_priv->background_set = TRUE;
-		g_object_notify (G_OBJECT (druid_page_standard), "background_set");
-	}
-}
-
-/**
- * gnome_druid_page_standard_set_logo_background:
- * @druid_page_standard: A #GnomeDruidPageStandard instance.
- * @color: The new color for the logo background.
- *
- * Sets the background of the logo to @color.
- */
-void
-gnome_druid_page_standard_set_logo_background (GnomeDruidPageStandard *druid_page_standard,
-					       GdkColor               *color)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_STANDARD (druid_page_standard));
-	g_return_if_fail (color != NULL);
-
-	druid_page_standard->logo_background = *color;
-
-	gtk_widget_modify_bg (druid_page_standard->_priv->logo, GTK_STATE_NORMAL, color);
-	g_object_notify (G_OBJECT (druid_page_standard), "logo_background");
-	if (druid_page_standard->_priv->logo_background_set == FALSE) {
-		druid_page_standard->_priv->logo_background_set = TRUE;
-		g_object_notify (G_OBJECT (druid_page_standard), "logo_background_set");
-	}
-}
-
-
-/**
- * gnome_druid_page_standard_set_contents_background:
- * @druid_page_standard: A #GnomeDruidPageStandard instance.
- * @color: The new color for the main body's background.
- *
- * Sets the color of the main contents section's background to @color.
- */
-void
-gnome_druid_page_standard_set_contents_background (GnomeDruidPageStandard *druid_page_standard,
-					       GdkColor               *color)
-{
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_STANDARD (druid_page_standard));
-	g_return_if_fail (color != NULL);
-
-	druid_page_standard->contents_background = *color;
-
-	gtk_widget_modify_bg (druid_page_standard->_priv->evbox, GTK_STATE_NORMAL, color);
-
-	g_object_notify (G_OBJECT (druid_page_standard), "contents_background");
-	if (druid_page_standard->_priv->contents_background_set == FALSE) {
-		druid_page_standard->_priv->contents_background_set = TRUE;
-		g_object_notify (G_OBJECT (druid_page_standard), "contents_background_set");
-	}
-}
-
-
-/**
- * gnome_druid_page_standard_append_item:
- * @druid_page_standard: A #GnomeDruidPageStandard instance.
- * @question: The text to place above the item.
- * @item: The #GtkWidget to be included.
- * @additional_info: The text to be placed below the item in a smaller
- * font.
- *
- * Description: Convenience function to add a #GtkWidget to the
- * #GnomeDruidPageStandard vbox. This function creates a new contents section
- * that has the @question text followed by the @item widget and then the
- * @addition_info text, all stacked vertically from top to bottom. 
- *
- * The @item widget could be something like a set of radio checkbuttons
- * requesting a choice from the user.
- **/
-void
-gnome_druid_page_standard_append_item (GnomeDruidPageStandard *druid_page_standard,
-                                       const gchar            *question,
-                                       GtkWidget              *item,
-                                       const gchar            *additional_info)
-{
-	GtkWidget *q_label;
-	GtkWidget *a_label;
-	GtkWidget *vbox;
-	gchar *a_text;
-
-	g_return_if_fail (GNOME_IS_DRUID_PAGE_STANDARD (druid_page_standard));
-	g_return_if_fail (GTK_IS_WIDGET (item));
-
-	/* Create the vbox to hold the three new items */
-	vbox = gtk_vbox_new (FALSE, 4);
-	gtk_box_pack_start (GTK_BOX (druid_page_standard->vbox), vbox, FALSE, FALSE, 0);
-	gtk_widget_show (vbox);
-
-	/* Create the question label if question is not empty */
-	if (question != NULL && strcmp (question, "") != 0) {
-		q_label = gtk_label_new (NULL);
-		gtk_label_set_label (GTK_LABEL (q_label),question);
-		gtk_label_set_use_markup (GTK_LABEL (q_label), TRUE);
-		gtk_label_set_use_underline (GTK_LABEL (q_label), TRUE);
-		gtk_label_set_mnemonic_widget (GTK_LABEL (q_label), item);
-		gtk_label_set_justify (GTK_LABEL (q_label), GTK_JUSTIFY_LEFT);
-		gtk_misc_set_alignment (GTK_MISC (q_label), 0.0, 0.5);
-		gtk_box_pack_start (GTK_BOX (vbox), q_label, FALSE, FALSE, 0);
-		gtk_widget_show (q_label);
-	}
-
-	/* Append/show the item */
-	gtk_box_pack_start (GTK_BOX (vbox), item, FALSE, FALSE, 0);
-	gtk_widget_show (item);
-
-	/* Create the "additional info" label if additional_info is not empty */
-	if (additional_info != NULL && additional_info[0] != '\000') {
-		a_text = g_strconcat ("<span size=\"small\">", additional_info, "</span>", NULL);
-		a_label = gtk_label_new (NULL);
-		gtk_label_set_label (GTK_LABEL (a_label), a_text);
-		gtk_label_set_use_markup (GTK_LABEL (a_label), TRUE);
-		g_free (a_text);
-		gtk_label_set_justify (GTK_LABEL (a_label), GTK_JUSTIFY_LEFT);
-		gtk_misc_set_alignment (GTK_MISC (a_label), 0.0, 0.5);
-		gtk_misc_set_padding (GTK_MISC (a_label), 24, 0);
-		gtk_box_pack_start (GTK_BOX (vbox), a_label, FALSE, FALSE, 0);
-		gtk_widget_show (a_label);
-	}
-}
-
-static void
-gnome_druid_page_standard_set_color (GnomeDruidPageStandard *druid_page_standard)
-{
-	GtkWidget *widget = GTK_WIDGET (druid_page_standard);
-	if (druid_page_standard->_priv->background_set == FALSE) {
-		druid_page_standard->background = widget->style->bg[GTK_STATE_SELECTED];
-	}
-	if (druid_page_standard->_priv->logo_background_set == FALSE) {
-		druid_page_standard->logo_background = widget->style->bg[GTK_STATE_SELECTED];
-	}
-	if (druid_page_standard->_priv->title_foreground_set == FALSE) {
-		druid_page_standard->title_foreground = widget->style->fg[GTK_STATE_SELECTED];
-	}
-	if (druid_page_standard->_priv->contents_background_set == FALSE) {
-		druid_page_standard->contents_background = widget->style->bg[GTK_STATE_PRELIGHT];
-	}
-
-	gtk_widget_modify_fg (druid_page_standard->_priv->title_label, GTK_STATE_NORMAL, &(druid_page_standard->title_foreground));
-	gtk_widget_modify_bg (druid_page_standard->_priv->background, GTK_STATE_NORMAL, &(druid_page_standard->background));
-	gtk_widget_modify_bg (druid_page_standard->_priv->evbox, GTK_STATE_NORMAL,&(druid_page_standard->contents_background));
-}
diff --git a/lib/druid/gnome-druid-page-standard.h b/lib/druid/gnome-druid-page-standard.h
deleted file mode 100644
index 9a8b158..0000000
--- a/lib/druid/gnome-druid-page-standard.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/* gnome-druid-page-standard.h
- * Copyright (C) 1999  Red Hat, Inc.
- * Copyright (C) 2001  James M. Cape <jcape@ignore-your.tv>
- * All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-/*
-  @NOTATION@
-*/
-#ifndef __GNOME_DRUID_PAGE_STANDARD_H__
-#define __GNOME_DRUID_PAGE_STANDARD_H__
-
-#include <gtk/gtk.h>
-#include "gnome-druid-page.h"
-
-G_BEGIN_DECLS
-
-#define GNOME_TYPE_DRUID_PAGE_STANDARD            (gnome_druid_page_standard_get_type ())
-#define GNOME_DRUID_PAGE_STANDARD(obj)            (GTK_CHECK_CAST ((obj), GNOME_TYPE_DRUID_PAGE_STANDARD, GnomeDruidPageStandard))
-#define GNOME_DRUID_PAGE_STANDARD_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GNOME_TYPE_DRUID_PAGE_STANDARD, GnomeDruidPageStandardClass))
-#define GNOME_IS_DRUID_PAGE_STANDARD(obj)         (GTK_CHECK_TYPE ((obj), GNOME_TYPE_DRUID_PAGE_STANDARD))
-#define GNOME_IS_DRUID_PAGE_STANDARD_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_DRUID_PAGE_STANDARD))
-#define GNOME_DRUID_PAGE_STANDARD_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), GNOME_TYPE_DRUID_PAGE_STANDARD, GnomeDruidPageStandardClass))
-
-
-typedef struct _GnomeDruidPageStandard        GnomeDruidPageStandard;
-typedef struct _GnomeDruidPageStandardPrivate GnomeDruidPageStandardPrivate;
-typedef struct _GnomeDruidPageStandardClass   GnomeDruidPageStandardClass;
-
-/**
- * GnomeDruidPageStandard
- * @vbox: A packing widget that holds the contents of the page.
- * @title: The title of the displayed page.
- * @logo: The logo of the displayed page.
- * @top_watermark: The watermark at the top of the displated page.
- * @title_foreground: The color of the title text.
- * @background: The color of the background of the top section and title.
- * @logo_background: The background color of the logo.
- * @contents_background: The background color of the contents section.
- *
- * A widget representing pages that are not initial or terminal pages of a
- * druid.
- */
-struct _GnomeDruidPageStandard
-{
-	GnomeDruidPage parent;
-
-	/*< public >*/
-	GtkWidget *vbox;
-	gchar *title;
-	GdkPixbuf *logo;
-	GdkPixbuf *top_watermark;
-	GdkColor title_foreground;
-	GdkColor background;
-	GdkColor logo_background;
-	GdkColor contents_background;
-	
-	/*< private >*/
-	GnomeDruidPageStandardPrivate *_priv;
-};
-struct _GnomeDruidPageStandardClass
-{
-	GnomeDruidPageClass parent_class;
-
-	/* Padding for possible expansion */
-	gpointer padding1;
-	gpointer padding2;
-};
-
-#ifndef GNOME_DISABLE_DEPRECATED
-
-#define gnome_druid_page_standard_set_bg_color      gnome_druid_page_standard_set_background
-#define gnome_druid_page_standard_set_logo_bg_color gnome_druid_page_standard_set_logo_background
-#define gnome_druid_page_standard_set_title_color   gnome_druid_page_standard_set_title_foreground
-
-#endif
-
-
-GType      gnome_druid_page_standard_get_type                (void) G_GNUC_CONST;
-GtkWidget *gnome_druid_page_standard_new                     (void);
-GtkWidget *gnome_druid_page_standard_new_with_vals           (const gchar            *title,
-							      GdkPixbuf              *logo,
-							      GdkPixbuf              *top_watermark);
-
-void       gnome_druid_page_standard_set_title               (GnomeDruidPageStandard *druid_page_standard,
-							      const gchar            *title);
-void       gnome_druid_page_standard_set_logo                (GnomeDruidPageStandard *druid_page_standard,
-							      GdkPixbuf              *logo_image);
-void       gnome_druid_page_standard_set_top_watermark       (GnomeDruidPageStandard *druid_page_standard,
-							      GdkPixbuf              *top_watermark_image);
-void       gnome_druid_page_standard_set_title_foreground    (GnomeDruidPageStandard *druid_page_standard,
-							      GdkColor               *color);
-void       gnome_druid_page_standard_set_background          (GnomeDruidPageStandard *druid_page_standard,
-							      GdkColor               *color);
-void       gnome_druid_page_standard_set_logo_background     (GnomeDruidPageStandard *druid_page_standard,
-							      GdkColor               *color);
-void       gnome_druid_page_standard_set_contents_background (GnomeDruidPageStandard *druid_page_standard,
-							      GdkColor               *color);
-
-/* Convenience Function */
-void       gnome_druid_page_standard_append_item             (GnomeDruidPageStandard *druid_page_standard,
-							      const gchar            *question,
-							      GtkWidget              *item,
-							      const gchar            *additional_info);
-
-G_END_DECLS
-
-#endif /* __GNOME_DRUID_PAGE_STANDARD_H__ */
-
diff --git a/lib/druid/gnome-druid-page.c b/lib/druid/gnome-druid-page.c
deleted file mode 100644
index c5f1891..0000000
--- a/lib/druid/gnome-druid-page.c
+++ /dev/null
@@ -1,412 +0,0 @@
-/* gnome-druid-page.c
- * Copyright (C) 1999 Red Hat, Inc.
- * All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-/*
-  @NOTATION@
-*/
-
-#include "gnome-druid-page.h"
-
-enum {
-	NEXT,
-	PREPARE,
-	BACK,
-	FINISH,
-	CANCEL,
-	CONFIGURE_CANVAS,
-	LAST_SIGNAL
-};
-
-static void gnome_druid_page_size_request       (GtkWidget               *widget,
-						 GtkRequisition          *requisition);
-static void gnome_druid_page_size_allocate      (GtkWidget		 *widget,
-						 GtkAllocation           *allocation);
-static gint gnome_druid_page_expose             (GtkWidget               *widget,
-						 GdkEventExpose          *event);
-static void gnome_druid_page_realize            (GtkWidget		 *widget);
-
-
-static guint druid_page_signals[LAST_SIGNAL] = { 0 };
-
-GNOME_CLASS_BOILERPLATE (GnomeDruidPage, gnome_druid_page,
-			 GtkBin, GTK_TYPE_BIN, GNOME_REGISTER_TYPE)
-     
-     
-void _gnome_marshal_BOOLEAN__OBJECT (GClosure     *closure,
-				     GValue       *return_value,
-				     guint         n_param_values,
-				     const GValue *param_values,
-				     gpointer      invocation_hint,
-				     gpointer      marshal_data);
-
-
-static void
-gnome_druid_page_class_init (GnomeDruidPageClass *class)
-{
-	GtkObjectClass *object_class;
-	GtkWidgetClass *widget_class;
-
-	object_class = (GtkObjectClass*) class;
-	widget_class = (GtkWidgetClass*) class;
-
-	druid_page_signals[NEXT] =
-		g_signal_new ("next",
-			      G_TYPE_FROM_CLASS (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (GnomeDruidPageClass, next),
-			      NULL, NULL,
-			      _gnome_marshal_BOOLEAN__OBJECT,
-			      G_TYPE_BOOLEAN, 1,
-			      GTK_TYPE_WIDGET);
-	druid_page_signals[PREPARE] =
-		g_signal_new ("prepare",
-			      G_TYPE_FROM_CLASS (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (GnomeDruidPageClass, prepare),
-			      NULL, NULL,
-			      g_cclosure_marshal_VOID__OBJECT,
-			      G_TYPE_NONE, 1,
-			      GTK_TYPE_WIDGET);
-	druid_page_signals[BACK] =
-		g_signal_new ("back",
-			      G_TYPE_FROM_CLASS (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (GnomeDruidPageClass, back),
-			      NULL, NULL,
-			      _gnome_marshal_BOOLEAN__OBJECT,
-			      G_TYPE_BOOLEAN, 1,
-			      GTK_TYPE_WIDGET);
-	druid_page_signals[FINISH] =
-		g_signal_new ("finish",
-			      G_TYPE_FROM_CLASS (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (GnomeDruidPageClass, finish),
-			      NULL, NULL,
-			      g_cclosure_marshal_VOID__OBJECT,
-			      G_TYPE_NONE, 1,
-			      GTK_TYPE_WIDGET);
-	druid_page_signals[CANCEL] =
-		g_signal_new ("cancel",
-			      G_TYPE_FROM_CLASS (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (GnomeDruidPageClass, cancel),
-			      NULL, NULL,
-			      _gnome_marshal_BOOLEAN__OBJECT,
-			      G_TYPE_BOOLEAN, 1,
-			      GTK_TYPE_WIDGET);
-
-	widget_class->size_request = gnome_druid_page_size_request;
-	widget_class->size_allocate = gnome_druid_page_size_allocate;
-	widget_class->expose_event = gnome_druid_page_expose;
-	widget_class->realize = gnome_druid_page_realize;
-
-	class->next = NULL;
-	class->prepare = NULL;
-	class->back = NULL;
-	class->finish = NULL;
-}
-
-static void
-gnome_druid_page_instance_init (GnomeDruidPage *druid_page)
-{
-	/* enable if you add privates, also add a destructor */
-	/*druid_page->_priv = g_new0 (GnomeDruidPagePrivate, 1);*/
-	druid_page->_priv = NULL;
-
-	GTK_WIDGET_UNSET_FLAGS (druid_page, GTK_NO_WINDOW);
-}
-
-static void
-gnome_druid_page_size_request (GtkWidget *widget,
-			       GtkRequisition *requisition)
-{
-	GtkBin *bin;
-
-	g_return_if_fail (widget != NULL);
-	g_return_if_fail (GNOME_IS_DRUID_PAGE (widget));
-	g_return_if_fail (requisition != NULL);
-	bin = GTK_BIN (widget);
-	requisition->width = GTK_CONTAINER (widget)->border_width * 2;
-	requisition->height = GTK_CONTAINER (widget)->border_width * 2;
-
-	if (bin->child && GTK_WIDGET_VISIBLE (bin->child)) {
-		GtkRequisition child_requisition;
-
-		gtk_widget_size_request (bin->child, &child_requisition);
-
-		requisition->width += child_requisition.width;
-		requisition->height += child_requisition.height;
-	}
-}
-static void
-gnome_druid_page_size_allocate (GtkWidget *widget,
-				GtkAllocation *allocation)
-{
-	GtkBin *bin;
-	GtkAllocation child_allocation;
-
-	g_return_if_fail (widget != NULL);
-	g_return_if_fail (GNOME_IS_DRUID_PAGE (widget));
-	g_return_if_fail (allocation != NULL);
-	widget->allocation = *allocation;
-	bin = GTK_BIN (widget);
-
-	child_allocation.x = 0;
-	child_allocation.y = 0;
-	child_allocation.width = MAX (allocation->width - GTK_CONTAINER (widget)->border_width * 2, 0);
-	child_allocation.height = MAX (allocation->height - GTK_CONTAINER (widget)->border_width * 2, 0);
-
-	if (GTK_WIDGET_REALIZED (widget)) {
-		gdk_window_move_resize (widget->window,
-					allocation->x + GTK_CONTAINER (widget)->border_width,
-					allocation->y + GTK_CONTAINER (widget)->border_width,
-					child_allocation.width,
-					child_allocation.height);
-	}
-	if (bin->child) {
-		gtk_widget_size_allocate (bin->child, &child_allocation);
-	}
-}
-static void
-gnome_druid_page_paint (GtkWidget     *widget,
-			GdkRectangle *area)
-{
-	gtk_paint_flat_box (widget->style, widget->window, GTK_STATE_NORMAL,
-			    GTK_SHADOW_NONE, area, widget, "base", 0, 0, -1, -1);
-}
-
-static gint
-gnome_druid_page_expose (GtkWidget               *widget,
-			 GdkEventExpose          *event)
-{
-	g_return_val_if_fail (widget != NULL, FALSE);
-	g_return_val_if_fail (GNOME_IS_DRUID_PAGE (widget), FALSE);
-	g_return_val_if_fail (event != NULL, FALSE);
-
-	if (!GTK_WIDGET_APP_PAINTABLE (widget))
-		gnome_druid_page_paint (widget, &event->area);
-
-	if (GTK_WIDGET_DRAWABLE (widget)) {
-		return GNOME_CALL_PARENT_WITH_DEFAULT
-			(GTK_WIDGET_CLASS, expose_event, (widget, event), FALSE);
-	}
-
-	return FALSE;
-}
-
-static void
-gnome_druid_page_realize (GtkWidget *widget)
-{
-	GdkWindowAttr attributes;
-	gint attributes_mask;
-	gint border_width;
-	g_return_if_fail (widget != NULL);
-	g_return_if_fail (GNOME_IS_DRUID_PAGE (widget));
-
-	GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
-
-	border_width = GTK_CONTAINER (widget)->border_width;
-
-	attributes.x = widget->allocation.x + border_width;
-	attributes.y = widget->allocation.y + border_width;
-	attributes.width = widget->allocation.width - 2*border_width;
-	attributes.height = widget->allocation.height - 2*border_width;
-	attributes.window_type = GDK_WINDOW_CHILD;
-	attributes.wclass = GDK_INPUT_OUTPUT;
-	attributes.visual = gtk_widget_get_visual (widget);
-	attributes.colormap = gtk_widget_get_colormap (widget);
-	attributes.event_mask = gtk_widget_get_events (widget)
-		| GDK_BUTTON_MOTION_MASK
-		| GDK_BUTTON_PRESS_MASK
-		| GDK_BUTTON_RELEASE_MASK
-		| GDK_EXPOSURE_MASK
-		| GDK_ENTER_NOTIFY_MASK
-		| GDK_LEAVE_NOTIFY_MASK;
-
-	attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
-
-	widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask);
-	gdk_window_set_user_data (widget->window, widget);
-	gdk_window_set_back_pixmap (widget->window, NULL, FALSE);
-
-	widget->style = gtk_style_attach (widget->style, widget->window);
-	gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
-}
-
-
-/**
- * gnome_druid_page_new:
- *
- * Creates a new #GnomeDruidPage.
- *
- * Returns: The newly created #GnomeDruidPage.
- **/
-GtkWidget *
-gnome_druid_page_new (void)
-{
-     GtkWidget *widget = g_object_new (GNOME_TYPE_DRUID_PAGE, NULL);
-
-     return widget;
-}
-
-/**
- * gnome_druid_page_next:
- * @druid_page: A DruidPage widget.
- *
- * Description: This will emit the "next" signal for that particular page.  It
- * is called by gnome-druid exclusively.  It is expected that non-linear Druid's
- * will override this signal and return TRUE if it handles changing pages.
- *
- * Return value: This function will return FALSE by default.
- **/
-/* Public functions */
-gboolean
-gnome_druid_page_next     (GnomeDruidPage *druid_page)
-{
-	gboolean retval = FALSE;
-
-	g_return_val_if_fail (druid_page != NULL, FALSE);
-	g_return_val_if_fail (GNOME_IS_DRUID_PAGE (druid_page), FALSE);
-
-	g_signal_emit (druid_page, druid_page_signals [NEXT], 0,
-		       GTK_WIDGET (druid_page)->parent,
-		       &retval);
-
-	return retval;
-}
-/**
- * gnome_druid_page_prepare:
- * @druid_page: A DruidPage widget.
- *
- * Description: This emits the "prepare" signal for the page.  It is called by
- * gnome-druid exclusively. This function is called immediately prior to a druid
- * page being shown so that it can "prepare" for display.
- **/
-void
-gnome_druid_page_prepare  (GnomeDruidPage *druid_page)
-{
-	g_return_if_fail (druid_page != NULL);
-	g_return_if_fail (GNOME_IS_DRUID_PAGE (druid_page));
-
-	g_signal_emit (druid_page, druid_page_signals [PREPARE], 0,
-		       GTK_WIDGET (druid_page)->parent);
-}
-/**
- * gnome_druid_page_back:
- * @druid_page: A DruidPage widget.
- *
- * Description: This will emit the "back" signal for that particular page.  It
- * is called by gnome-druid exclusively.  It is expected that non-linear Druid's
- * will override this signal and return TRUE if it handles changing pages.
- *
- * Return value: This function will return FALSE by default.
- **/
-gboolean
-gnome_druid_page_back     (GnomeDruidPage *druid_page)
-{
-	gboolean retval = FALSE;
-
-	g_return_val_if_fail (druid_page != NULL, FALSE);
-	g_return_val_if_fail (GNOME_IS_DRUID_PAGE (druid_page), FALSE);
-
-	g_signal_emit (druid_page, druid_page_signals [BACK], 0,
-		       GTK_WIDGET (druid_page)->parent,
-		       &retval);
-
-	return retval;
-}
-/**
- * gnome_druid_page_finish:
- * @druid_page: A DruidPage widget.
- *
- * Description: This emits the "finish" signal for the page.  It is called by
- * gnome-druid exclusively.
- **/
-void
-gnome_druid_page_finish   (GnomeDruidPage *druid_page)
-{
-	g_return_if_fail (druid_page != NULL);
-	g_return_if_fail (GNOME_IS_DRUID_PAGE (druid_page));
-
-	g_signal_emit (druid_page, druid_page_signals [FINISH], 0,
-		       GTK_WIDGET (druid_page)->parent);
-}
-/**
- * gnome_druid_page_cancel:
- * @druid_page: A DruidPage widget.
- *
- * Description: This will emit the "cancel" signal for that particular page.  It
- * is called by gnome-druid exclusively.  It is expected that a Druid will
- * override this signal and return TRUE if it does not want to exit.
- *
- * Return value: This function will return FALSE by default.
- **/
-gboolean
-gnome_druid_page_cancel   (GnomeDruidPage *druid_page)
-{
-	gboolean retval = FALSE;
-
-	g_return_val_if_fail (druid_page != NULL, FALSE);
-	g_return_val_if_fail (GNOME_IS_DRUID_PAGE (druid_page), FALSE);
-
-	g_signal_emit (druid_page, druid_page_signals [CANCEL], 0,
-		       GTK_WIDGET (druid_page)->parent,
-		       &retval);
-
-	return retval;
-}
-
-#define g_marshal_value_peek_object(v)   g_value_get_object (v)
-void
-_gnome_marshal_BOOLEAN__OBJECT (GClosure     *closure,
-                                GValue       *return_value,
-                                guint         n_param_values,
-                                const GValue *param_values,
-                                gpointer      invocation_hint,
-                                gpointer      marshal_data)
-{
-  typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT) (gpointer     data1,
-                                                    gpointer     arg_1,
-                                                    gpointer     data2);
-  register GMarshalFunc_BOOLEAN__OBJECT callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gboolean v_return;
-  
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 2);
-  
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_BOOLEAN__OBJECT) (marshal_data ? marshal_data : cc->callback);
-  
-  v_return = callback (data1,
-                       g_marshal_value_peek_object (param_values + 1),
-                       data2);
-  
-  g_value_set_boolean (return_value, v_return);
-}
diff --git a/lib/druid/gnome-druid-page.h b/lib/druid/gnome-druid-page.h
deleted file mode 100644
index 399cc51..0000000
--- a/lib/druid/gnome-druid-page.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* gnome-druid-page.h
- * Copyright (C) 1999  Red Hat, Inc.
- * All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-/*
-  @NOTATION@
-*/
-#ifndef __GNOME_DRUID_PAGE_H__
-#define __GNOME_DRUID_PAGE_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define GNOME_REGISTER_TYPE(type, type_as_function, corba_type,         \
-                            parent_type, parent_type_macro)             \
-        g_type_register_static (parent_type_macro, #type, &object_info, 0)
-#define GNOME_CLASS_BOILERPLATE(type, type_as_function,          \
-                           parent_type, parent_type_macro,              \
-                           register_type_macro)                         \
-static void type_as_function ## _class_init    (type ## Class *klass);  \
-static void type_as_function ## _instance_init (type          *object); \
-static parent_type ## Class *parent_class = NULL;                       \
-static void                                                             \
-type_as_function ## _class_init_trampoline (gpointer klass,             \
-                                            gpointer data)              \
-{                                                                       \
-        parent_class = (parent_type ## Class *)g_type_class_ref (       \
-                parent_type_macro);                                     \
-        type_as_function ## _class_init ((type ## Class *)klass);       \
-}                                                                       \
-GType                                                                   \
-type_as_function ## _get_type (void)                                    \
-{                                                                       \
-        static GType object_type = 0;                                   \
-        if (object_type == 0) {                                         \
-                static const GTypeInfo object_info = {                  \
-                    sizeof (type ## Class),                             \
-                    NULL,               /* base_init */                 \
-                    NULL,               /* base_finalize */             \
-                    type_as_function ## _class_init_trampoline,         \
-                    NULL,               /* class_finalize */            \
-                    NULL,               /* class_data */                \
-                    sizeof (type),                                      \
-                    0,                  /* n_preallocs */               \
-                    (GInstanceInitFunc) type_as_function ## _instance_init \
-                };                                                      \
-                object_type = register_type_macro                       \
-                        (type, type_as_function, type,            \
-                         parent_type, parent_type_macro);               \
-        }                                                               \
-        return object_type;                                             \
-}
-#define GNOME_CALL_PARENT_WITH_DEFAULT(parent_class_cast,              \
-                                        name, args, def_return)         \
-        ((parent_class_cast(parent_class)->name != NULL) ?              \
-         parent_class_cast(parent_class)->name args : def_return)
-
-
-
-#define GNOME_TYPE_DRUID_PAGE            (gnome_druid_page_get_type ())
-#define GNOME_DRUID_PAGE(obj)            (GTK_CHECK_CAST ((obj), GNOME_TYPE_DRUID_PAGE, GnomeDruidPage))
-#define GNOME_DRUID_PAGE_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GNOME_TYPE_DRUID_PAGE, GnomeDruidPageClass))
-#define GNOME_IS_DRUID_PAGE(obj)         (GTK_CHECK_TYPE ((obj), GNOME_TYPE_DRUID_PAGE))
-#define GNOME_IS_DRUID_PAGE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_DRUID_PAGE))
-#define GNOME_DRUID_PAGE_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), GNOME_TYPE_DRUID_PAGE, GnomeDruidPageClass))
-
-
-typedef struct _GnomeDruidPage        GnomeDruidPage;
-typedef struct _GnomeDruidPagePrivate GnomeDruidPagePrivate;
-typedef struct _GnomeDruidPageClass   GnomeDruidPageClass;
-
-struct _GnomeDruidPage
-{
-	GtkBin parent;
-
-	/*< private >*/
-	GnomeDruidPagePrivate *_priv;
-};
-struct _GnomeDruidPageClass
-{
-	GtkBinClass parent_class;
-
-	gboolean (*next)	(GnomeDruidPage *druid_page, GtkWidget *druid);
-	void     (*prepare)	(GnomeDruidPage *druid_page, GtkWidget *druid);
-	gboolean (*back)	(GnomeDruidPage *druid_page, GtkWidget *druid);
-	void     (*finish)	(GnomeDruidPage *druid_page, GtkWidget *druid);
-	gboolean (*cancel)	(GnomeDruidPage *druid_page, GtkWidget *druid);
-
-	/* Signal used for relaying out the canvas */
-	void     (*configure_canvas) (GnomeDruidPage *druid_page);
-
-	/* virtual */
-	void	 (*set_sidebar_shown) (GnomeDruidPage *druid_page,
-				       gboolean sidebar_shown);
-
-	/* Padding for possible expansion */
-	gpointer padding1;
-	gpointer padding2;
-};
-
-
-GType      gnome_druid_page_get_type            (void) G_GNUC_CONST;
-GtkWidget *gnome_druid_page_new                 (void);
-/* These are really to be only called from GnomeDruid */
-gboolean   gnome_druid_page_next                (GnomeDruidPage *druid_page);
-void       gnome_druid_page_prepare             (GnomeDruidPage *druid_page);
-gboolean   gnome_druid_page_back                (GnomeDruidPage *druid_page);
-gboolean   gnome_druid_page_cancel              (GnomeDruidPage *druid_page);
-void       gnome_druid_page_finish              (GnomeDruidPage *druid_page);
-
-G_END_DECLS
-
-#endif /* __GNOME_DRUID_PAGE_H__ */
-
-
-
-
diff --git a/lib/druid/gnome-druid.c b/lib/druid/gnome-druid.c
deleted file mode 100644
index 37eb257..0000000
--- a/lib/druid/gnome-druid.c
+++ /dev/null
@@ -1,1051 +0,0 @@
-/* gnome-druid.c
- * Copyright (C) 1999 Red Hat, Inc.
- * All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-/*
-  @NOTATION@
-*/
-
-#include "gnome-druid.h"
-
-struct _GnomeDruidPrivate
-{
-	GnomeDruidPage *current;
-	GList *children;
-
-	GtkWidget *bbox;
-
-	gboolean show_finish : 1; /* if TRUE, then we are showing the finish button instead of the next button */
-	gboolean show_help : 1;
-};
-
-enum {
-	CANCEL,
-	HELP,
-	LAST_SIGNAL
-};
-enum {
-  PROP_0,
-  PROP_SHOW_FINISH,
-  PROP_SHOW_HELP,
-};
-
-
-static void    gnome_druid_destroy         (GtkObject       *object);
-static void    gnome_druid_finalize        (GObject         *object);
-static void    gnome_druid_set_property    (GObject         *object,
-					    guint            prop_id,
-					    const GValue    *value,
-					    GParamSpec      *pspec);
-static void    gnome_druid_get_property    (GObject         *object,
-					    guint            prop_id,
-					    GValue          *value,
-					    GParamSpec      *pspec);
-static void    gnome_druid_size_request    (GtkWidget       *widget,
-					    GtkRequisition  *requisition);
-static void    gnome_druid_size_allocate   (GtkWidget       *widget,
-					    GtkAllocation   *allocation);
-static gint    gnome_druid_expose          (GtkWidget       *widget,
-					    GdkEventExpose  *event);
-static void    gnome_druid_map             (GtkWidget       *widget);
-static void    gnome_druid_unmap           (GtkWidget       *widget);
-static GtkType gnome_druid_child_type      (GtkContainer    *container);
-static void    gnome_druid_add             (GtkContainer    *widget,
-					    GtkWidget       *page);
-static void    gnome_druid_remove          (GtkContainer    *widget,
-					    GtkWidget       *child);
-static void    gnome_druid_forall          (GtkContainer    *container,
-					    gboolean         include_internals,
-					    GtkCallback      callback,
-					    gpointer         callback_data);
-static void    gnome_druid_back_callback   (GtkWidget       *button,
-					    GnomeDruid      *druid);
-static void    gnome_druid_next_callback   (GtkWidget       *button,
-					    GnomeDruid      *druid);
-static void    gnome_druid_cancel_callback (GtkWidget       *button,
-					    GtkWidget       *druid);
-static void    gnome_druid_help_callback   (GtkWidget       *button,
-					    GnomeDruid      *druid);
-
-
-static guint druid_signals[LAST_SIGNAL] = { 0 };
-
-/* define the _get_type method and parent_class */
-GNOME_CLASS_BOILERPLATE(GnomeDruid, gnome_druid, 
-			GtkContainer, GTK_TYPE_CONTAINER, GNOME_REGISTER_TYPE)
-
-static void
-gnome_druid_class_init (GnomeDruidClass *klass)
-{
-	GtkObjectClass *object_class;
-	GObjectClass *gobject_class;
-	GtkWidgetClass *widget_class;
-	GtkContainerClass *container_class;
-
-	object_class = (GtkObjectClass*) klass;
-	gobject_class = (GObjectClass*) klass;
-	widget_class = (GtkWidgetClass*) klass;
-	container_class = (GtkContainerClass*) klass;
-
-	druid_signals[CANCEL] =
-		g_signal_new ("cancel",
-			      G_TYPE_FROM_CLASS (gobject_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (GnomeDruidClass, cancel),
-			      NULL, NULL,
-			      g_cclosure_marshal_VOID__VOID,
-			      G_TYPE_NONE, 0);
-
-	druid_signals[HELP] =
-		g_signal_new ("help",
-			      G_TYPE_FROM_CLASS (gobject_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (GnomeDruidClass, help),
-			      NULL, NULL,
-			      g_cclosure_marshal_VOID__VOID,
-			      G_TYPE_NONE, 0);
-
-	object_class->destroy = gnome_druid_destroy;
-	gobject_class->set_property = gnome_druid_set_property;
-	gobject_class->get_property = gnome_druid_get_property;
-	gobject_class->finalize = gnome_druid_finalize;
-	widget_class->size_request = gnome_druid_size_request;
-	widget_class->size_allocate = gnome_druid_size_allocate;
-	widget_class->map = gnome_druid_map;
-	widget_class->unmap = gnome_druid_unmap;
-	widget_class->expose_event = gnome_druid_expose;
-
-	container_class->forall = gnome_druid_forall;
-	container_class->add = gnome_druid_add;
-	container_class->remove = gnome_druid_remove;
-	container_class->child_type = gnome_druid_child_type;
-
-
-	g_object_class_install_property (gobject_class,
-					 PROP_SHOW_FINISH,
-					 g_param_spec_boolean ("show_finish",
-							       "Show Finish",
-							       "Show the 'Finish' button instead of the 'Next' button",
-							       FALSE,
-							       G_PARAM_READWRITE));
-
-	g_object_class_install_property (gobject_class,
-					 PROP_SHOW_HELP,
-					 g_param_spec_boolean ("show_help",
-							       "Show Help",
-							       "Show the 'Help' button",
-							       FALSE,
-							       G_PARAM_READWRITE));
-}
-
-static void
-gnome_druid_instance_init (GnomeDruid *druid)
-{
-	druid->_priv = g_new0(GnomeDruidPrivate, 1);
-
-	/* set the default border width */
-	GTK_CONTAINER (druid)->border_width = GNOME_PAD_SMALL;
-
-	/* set up the buttons */
-	GTK_WIDGET_SET_FLAGS (GTK_WIDGET (druid), GTK_NO_WINDOW);
-	druid->back = gtk_button_new_from_stock (GTK_STOCK_GO_BACK);
-	GTK_WIDGET_SET_FLAGS (druid->back, GTK_CAN_DEFAULT);
-	druid->next = gtk_button_new_from_stock (GTK_STOCK_GO_FORWARD);
-	GTK_WIDGET_SET_FLAGS (druid->next, GTK_CAN_DEFAULT);
-	druid->cancel = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
-	GTK_WIDGET_SET_FLAGS (druid->cancel, GTK_CAN_DEFAULT);
-	druid->finish = gtk_button_new_from_stock (GTK_STOCK_APPLY);
-	GTK_WIDGET_SET_FLAGS (druid->finish, GTK_CAN_DEFAULT);
-	druid->help = gtk_button_new_from_stock (GTK_STOCK_HELP);
-	GTK_WIDGET_SET_FLAGS (druid->help, GTK_CAN_DEFAULT);
-	gtk_widget_show (druid->back);
-	gtk_widget_show (druid->next);
-	gtk_widget_show (druid->cancel);
-
-	druid->_priv->bbox = gtk_hbutton_box_new ();
-	gtk_button_box_set_layout (GTK_BUTTON_BOX (druid->_priv->bbox),
-				   GTK_BUTTONBOX_END);
-	/* FIXME: use a style property for these */
-	gtk_box_set_spacing (GTK_BOX (druid->_priv->bbox), 10);
-	gtk_container_set_border_width (GTK_CONTAINER (druid->_priv->bbox), 5);
-	gtk_widget_set_parent (druid->_priv->bbox, GTK_WIDGET (druid));
-	gtk_widget_show (druid->_priv->bbox);
-
-	gtk_box_pack_end (GTK_BOX (druid->_priv->bbox), druid->help,
-			  FALSE, TRUE, 0);
-	gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (druid->_priv->bbox),
-					    druid->help, TRUE);
-
-	gtk_box_pack_end (GTK_BOX (druid->_priv->bbox), druid->cancel,
-			  FALSE, TRUE, 0);
-
-	gtk_box_pack_end (GTK_BOX (druid->_priv->bbox), druid->back,
-			  FALSE, TRUE, 0);
-
-	gtk_box_pack_end (GTK_BOX (druid->_priv->bbox), druid->next,
-			  FALSE, TRUE, 0);
-
-	gtk_box_pack_end (GTK_BOX (druid->_priv->bbox), druid->finish,
-			  FALSE, TRUE, 0);
-
-	/* other flags */
-	druid->_priv->current = NULL;
-	druid->_priv->children = NULL;
-	druid->_priv->show_finish = FALSE;
-	druid->_priv->show_help = FALSE;
-
-	g_signal_connect (druid->back, "clicked",
-			  G_CALLBACK (gnome_druid_back_callback), druid);
-	g_signal_connect (druid->next, "clicked",
-			  G_CALLBACK (gnome_druid_next_callback), druid);
-	g_signal_connect (druid->cancel, "clicked",
-			  G_CALLBACK (gnome_druid_cancel_callback), druid);
-	g_signal_connect (druid->finish, "clicked",
-			  G_CALLBACK (gnome_druid_next_callback), druid);
-	g_signal_connect (druid->help, "clicked",
-			  G_CALLBACK (gnome_druid_help_callback), druid);
-
-	gtk_widget_grab_focus (druid->next);
-}
-
-
-
-static void
-gnome_druid_destroy (GtkObject *object)
-{
-	GnomeDruid *druid;
-
-	/* remember, destroy can be run multiple times! */
-
-	g_return_if_fail (object != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (object));
-
-	druid = GNOME_DRUID (object);
-
-	if(druid->_priv->bbox) {
-		gtk_widget_destroy (druid->_priv->bbox);
-		druid->_priv->bbox = NULL;
-		druid->back = NULL;
-		druid->next = NULL;
-		druid->cancel = NULL;
-		druid->finish = NULL;
-		druid->help = NULL;
-	}
-
-	/* Remove all children, we set current to NULL so
-	 * that the remove code doesn't try to do anything funny */
-	druid->_priv->current = NULL;
-	while (druid->_priv->children != NULL) {
-		GnomeDruidPage *child = druid->_priv->children->data;
-		gtk_container_remove (GTK_CONTAINER (druid), GTK_WIDGET(child));
-	}
-
-	GNOME_CALL_PARENT (GTK_OBJECT_CLASS, destroy, (object));
-}
-
-static void
-gnome_druid_finalize (GObject *object)
-{
-	GnomeDruid *druid;
-
-	g_return_if_fail (object != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (object));
-
-	druid = GNOME_DRUID (object);
-
-	g_free(druid->_priv);
-	druid->_priv = NULL;
-
-	GNOME_CALL_PARENT (G_OBJECT_CLASS, finalize, (object));
-}
-
-static void
-gnome_druid_set_property (GObject      *object,
-			  guint         prop_id,
-			  const GValue *value,
-			  GParamSpec   *pspec)
-{
-  switch (prop_id)
-    {
-    case PROP_SHOW_FINISH:
-      gnome_druid_set_show_finish (GNOME_DRUID (object), g_value_get_boolean (value));
-      break;
-    case PROP_SHOW_HELP:
-      gnome_druid_set_show_help (GNOME_DRUID (object), g_value_get_boolean (value));
-      break;
-    default:
-      break;
-    }
-}
-
-static void
-gnome_druid_get_property (GObject    *object,
-			  guint       prop_id,
-			  GValue     *value,
-			  GParamSpec *pspec)
-{
-	switch (prop_id)
-	{
-	case PROP_SHOW_FINISH:
-		g_value_set_boolean (value, GNOME_DRUID (object)->_priv->show_finish);
-		break;
-	case PROP_SHOW_HELP:
-		g_value_set_boolean (value, GNOME_DRUID (object)->_priv->show_help);
-		break;
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-static void
-gnome_druid_size_request (GtkWidget *widget,
-			  GtkRequisition *requisition)
-{
-	guint16 temp_width, temp_height;
-	GList *list;
-	GnomeDruid *druid;
-	GtkRequisition child_requisition;
-	GnomeDruidPage *child;
-	int border;
-
-	g_return_if_fail (widget != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (widget));
-
-	druid = GNOME_DRUID (widget);
-	temp_height = temp_width = 0;
-
-	border = GTK_CONTAINER(widget)->border_width;
-
-	/* We find the maximum size of all children widgets */
-	for (list = druid->_priv->children; list; list = list->next) {
-		child = GNOME_DRUID_PAGE (list->data);
-		if (GTK_WIDGET_VISIBLE (child)) {
-			gtk_widget_size_request (GTK_WIDGET (child), &child_requisition);
-			temp_width = MAX (temp_width, child_requisition.width);
-			temp_height = MAX (temp_height, child_requisition.height);
-			if (GTK_WIDGET_MAPPED (child) && child != druid->_priv->current)
-				gtk_widget_unmap (GTK_WIDGET(child));
-		}
-	}
-
-        requisition->width = temp_width + 2 * border;
-        requisition->height = temp_height + 2 * border;
-
-#if 0
-	/* In an Attempt to show how the widgets are packed,
-	 * here's a little diagram.
-	 *
-	 * [  Help  ] ------------- [  Back  ] [  Next  ]    [ Cancel ]
-	 *             /
-	 *     This part needs to be at least 1 button width.
-	 *     In addition, there is 1/4 X Button width between Cancel and Next,
-	 *     and a GNOME_PAD_SMALL between Next and Back.
-	 */
-	/* our_button width is temp_width and temp_height */
-	temp_height = 0;
-	temp_width = 0;
-
-	gtk_widget_size_request (druid->back, &child_requisition);
-	temp_width = MAX (temp_width, child_requisition.width);
-	temp_height = MAX (temp_height, child_requisition.height);
-
-	gtk_widget_size_request (druid->next, &child_requisition);
-	temp_width = MAX (temp_width, child_requisition.width);
-	temp_height = MAX (temp_height, child_requisition.height);
-
-	gtk_widget_size_request (druid->cancel, &child_requisition);
-	temp_width = MAX (temp_width, child_requisition.width);
-	temp_height = MAX (temp_height, child_requisition.height);
-
-	gtk_widget_size_request (druid->finish, &child_requisition);
-	temp_width = MAX (temp_width, child_requisition.width);
-	temp_height = MAX (temp_height, child_requisition.height);
-
-	gtk_widget_size_request (druid->help, &child_requisition);
-	temp_width = MAX (temp_width, child_requisition.width);
-	temp_height = MAX (temp_height, child_requisition.height);
-
-	temp_width += border * 2;
-	temp_height += GNOME_PAD_SMALL;
-
-	temp_width = temp_width * 21/4  + GNOME_PAD_SMALL * 3;
-#endif
-
-	gtk_widget_size_request (druid->_priv->bbox, &child_requisition);
-
-	/* pick which is bigger, the buttons, or the GnomeDruidPages */
-	requisition->width = MAX (child_requisition.width, requisition->width);
-	requisition->height += child_requisition.height + GNOME_PAD_SMALL * 2;
-}
-
-static void
-gnome_druid_size_allocate (GtkWidget *widget,
-			   GtkAllocation *allocation)
-{
-	GnomeDruid *druid;
-	GtkAllocation child_allocation;
-	gint button_height;
-	GList *list;
-	int border;
-
-	g_return_if_fail (widget != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (widget));
-
-	druid = GNOME_DRUID (widget);
-	widget->allocation = *allocation;
-
-	border = GTK_CONTAINER(widget)->border_width;
-
-#if 0
-	/* deal with the buttons */
-	child_allocation.width = child_allocation.height = 0;
-	child_allocation.width = druid->back->requisition.width;
-	child_allocation.height = druid->back->requisition.height;
-	child_allocation.width = MAX (child_allocation.width,
-				      druid->next->requisition.width);
-	child_allocation.height = MAX (child_allocation.height,
-				       druid->next->requisition.height);
-	child_allocation.width = MAX (child_allocation.width,
-				      druid->cancel->requisition.width);
-	child_allocation.height = MAX (child_allocation.height,
-				       druid->cancel->requisition.height);
-	child_allocation.width = MAX (child_allocation.width,
-				      druid->help->requisition.width);
-	child_allocation.height = MAX (child_allocation.height,
-				       druid->help->requisition.height);
-
-	child_allocation.height += GNOME_PAD_SMALL;
-	button_height = child_allocation.height;
-	child_allocation.width += 2 * GNOME_PAD_SMALL;
-	child_allocation.x = allocation->x + allocation->width - GNOME_PAD_SMALL - child_allocation.width;
-	child_allocation.y = allocation->y + allocation->height - GNOME_PAD_SMALL - child_allocation.height;
-	gtk_widget_size_allocate (druid->cancel, &child_allocation);
-	child_allocation.x -= (child_allocation.width * 5 / 4);
-	gtk_widget_size_allocate (druid->next, &child_allocation);
-	gtk_widget_size_allocate (druid->finish, &child_allocation);
-	child_allocation.x -= (GNOME_PAD_SMALL + child_allocation.width);
-	gtk_widget_size_allocate (druid->back, &child_allocation);
-	child_allocation.x = allocation->x + border;
-	gtk_widget_size_allocate (druid->help, &child_allocation);
-#endif
-	button_height = druid->_priv->bbox->requisition.height;
-	child_allocation.x = allocation->x;
-	child_allocation.y = allocation->y + allocation->height - button_height;
-	child_allocation.height = button_height;
-	child_allocation.width = allocation->width;
-	gtk_widget_size_allocate (druid->_priv->bbox, &child_allocation);
-
-	/* Put up the GnomeDruidPage */
-	child_allocation.x = allocation->x + border;
-	child_allocation.y = allocation->y + border;
-	child_allocation.width =
-		((allocation->width - 2 * border) > 0) ?
-		(allocation->width - 2 * border):0;
-	child_allocation.height =
-		((allocation->height - 2 * border - GNOME_PAD_SMALL - button_height) > 0) ?
-		(allocation->height - 2 * border - GNOME_PAD_SMALL - button_height):0;
-	for (list = druid->_priv->children; list; list=list->next) {
-		GtkWidget *widget = GTK_WIDGET (list->data);
-		if (GTK_WIDGET_VISIBLE (widget)) {
-			gtk_widget_size_allocate (widget, &child_allocation);
-		}
-	}
-}
-
-static GtkType
-gnome_druid_child_type (GtkContainer *container)
-{
-	return GNOME_TYPE_DRUID_PAGE;
-}
-
-static void
-gnome_druid_map (GtkWidget *widget)
-{
-	GnomeDruid *druid;
-
-	g_return_if_fail (widget != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (widget));
-
-	druid = GNOME_DRUID (widget);
-	GTK_WIDGET_SET_FLAGS (druid, GTK_MAPPED);
-
-#if 0
-	gtk_widget_map (druid->back);
-	if (druid->_priv->show_finish)
-		gtk_widget_map (druid->finish);
-	else
-		gtk_widget_map (druid->next);
-	if (druid->_priv->show_help)
-		gtk_widget_map (druid->help);
-	gtk_widget_map (druid->cancel);
-#endif
-	gtk_widget_map (druid->_priv->bbox);
-	if (druid->_priv->current &&
-	    GTK_WIDGET_VISIBLE (druid->_priv->current) &&
-	    !GTK_WIDGET_MAPPED (druid->_priv->current)) {
-		gtk_widget_map (GTK_WIDGET (druid->_priv->current));
-	}
-}
-
-static void
-gnome_druid_unmap (GtkWidget *widget)
-{
-	GnomeDruid *druid;
-
-	g_return_if_fail (widget != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (widget));
-
-	druid = GNOME_DRUID (widget);
-	GTK_WIDGET_UNSET_FLAGS (druid, GTK_MAPPED);
-#if 0
-	gtk_widget_unmap (druid->back);
-	if (druid->_priv->show_finish)
-		gtk_widget_unmap (druid->finish);
-	else
-		gtk_widget_unmap (druid->next);
-	gtk_widget_unmap (druid->cancel);
-	if (druid->_priv->show_help)
-		gtk_widget_unmap (druid->help);
-#endif
-	gtk_widget_unmap (druid->_priv->bbox);
-	if (druid->_priv->current &&
-	    GTK_WIDGET_VISIBLE (druid->_priv->current) &&
-	    GTK_WIDGET_MAPPED (druid->_priv->current))
-		gtk_widget_unmap (GTK_WIDGET (druid->_priv->current));
-}
-static void
-gnome_druid_add (GtkContainer *widget,
-		 GtkWidget *page)
-{
-	g_return_if_fail (widget != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (widget));
-	g_return_if_fail (page != NULL);
-	g_return_if_fail (GNOME_IS_DRUID_PAGE (page));
-
-	gnome_druid_append_page (GNOME_DRUID (widget), GNOME_DRUID_PAGE (page));
-}
-static void
-gnome_druid_remove (GtkContainer *widget,
-		    GtkWidget *child)
-{
-	GnomeDruid *druid;
-	GList *list;
-
-	g_return_if_fail (widget != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (widget));
-	g_return_if_fail (child != NULL);
-
-	druid = GNOME_DRUID (widget);
-
-	list = g_list_find (druid->_priv->children, child);
-	/* Is it a page? */
-	if (list != NULL) {
-		/* If we are mapped and visible, we want to deal with changing the page. */
-		if ((GTK_WIDGET_MAPPED (GTK_WIDGET (widget))) &&
-		    (list->data == (gpointer) druid->_priv->current) &&
-		    (list->next != NULL)) {
-			gnome_druid_set_page (druid, GNOME_DRUID_PAGE (list->next->data));
-		}
-	}
-	druid->_priv->children = g_list_remove (druid->_priv->children, child);
-	gtk_widget_unparent (child);
-}
-
-static void
-gnome_druid_forall (GtkContainer *container,
-		    gboolean      include_internals,
-		    GtkCallback   callback,
-		    gpointer      callback_data)
-{
-	GnomeDruid *druid;
-	GnomeDruidPage *child;
-	GList *children;
-
-	g_return_if_fail (container != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (container));
-	g_return_if_fail (callback != NULL);
-
-	druid = GNOME_DRUID (container);
-
-	children = druid->_priv->children;
-	while (children) {
-		child = children->data;
-		children = children->next;
-
-		(* callback) (GTK_WIDGET (child), callback_data);
-	}
-	if (include_internals) {
-		/* FIXME: should this be gtk_contianer_forall() ? */
-		(* callback) (druid->_priv->bbox, callback_data);
-#if 0
-		(* callback) (druid->back, callback_data);
-		(* callback) (druid->next, callback_data);
-		(* callback) (druid->cancel, callback_data);
-		(* callback) (druid->finish, callback_data);
-		(* callback) (druid->help, callback_data);
-#endif
-	}
-}
-
-static gint
-gnome_druid_expose (GtkWidget      *widget,
-		    GdkEventExpose *event)
-{
-	GnomeDruid *druid;
-	GtkWidget *child;
-	GList *children;
-
-	g_return_val_if_fail (widget != NULL, FALSE);
-	g_return_val_if_fail (GNOME_IS_DRUID (widget), FALSE);
-	g_return_val_if_fail (event != NULL, FALSE);
-
-	if (GTK_WIDGET_DRAWABLE (widget)) {
-		druid = GNOME_DRUID (widget);
-		children = druid->_priv->children;
-
-		while (children) {
-			child = GTK_WIDGET (children->data);
-			children = children->next;
-
-			gtk_container_propagate_expose (GTK_CONTAINER (widget),
-							child, event);
-		}
-		gtk_container_propagate_expose (GTK_CONTAINER (widget),
-						druid->_priv->bbox, event);
-#if 0
-		gtk_container_propagate_expose (GTK_CONTAINER (widget),
-						druid->back, event);
-		gtk_container_propagate_expose (GTK_CONTAINER (widget),
-						druid->next, event);
-		gtk_container_propagate_expose (GTK_CONTAINER (widget),
-						druid->cancel, event);
-		gtk_container_propagate_expose (GTK_CONTAINER (widget),
-						druid->finish, event);
-		gtk_container_propagate_expose (GTK_CONTAINER (widget),
-						druid->help, event);
-#endif
-	}
-	return FALSE;
-}
-
-static void
-gnome_druid_back_callback (GtkWidget *button, GnomeDruid *druid)
-{
-	GList *list;
-	g_return_if_fail (druid->_priv->current != NULL);
-
-	if (gnome_druid_page_back (druid->_priv->current))
-		return;
-
-	/* Make sure that we have a next list item */
-	list = g_list_find (druid->_priv->children, druid->_priv->current);
-	g_return_if_fail (list->prev != NULL);
-	gnome_druid_set_page (druid, GNOME_DRUID_PAGE (list->prev->data));
-}
-static void
-gnome_druid_next_callback (GtkWidget *button, GnomeDruid *druid)
-{
-	GList *list;
-	g_return_if_fail (druid->_priv->current != NULL);
-
-	if (druid->_priv->show_finish == FALSE) {
-		if (gnome_druid_page_next (druid->_priv->current))
-			return;
-
-		/* Make sure that we have a next list item */
-		list = g_list_find (druid->_priv->children,
-				    druid->_priv->current);
-		/* this would be a bug */
-		g_assert (list != NULL);
-
-		list = list->next;
-		while (list != NULL &&
-		        ! GTK_WIDGET_VISIBLE (list->data))
-			list = list->next;
-
-		if ( ! list)
-			return;
-
-		gnome_druid_set_page (druid, GNOME_DRUID_PAGE (list->data));
-	} else {
-		gnome_druid_page_finish (druid->_priv->current);
-	}
-}
-static void
-gnome_druid_cancel_callback (GtkWidget *button, GtkWidget *druid)
-{
-     if (GNOME_DRUID (druid)->_priv->current) {
-	     if (gnome_druid_page_cancel (GNOME_DRUID (druid)->_priv->current))
-		     return;
-
-	     g_signal_emit (druid, druid_signals [CANCEL], 0);
-     }
-}
-
-static void
-gnome_druid_help_callback (GtkWidget  *button,
-			   GnomeDruid *druid)
-{
-	g_signal_emit (druid, druid_signals [HELP], 0);
-}
-
-/* Public Functions */
-/**
- * gnome_druid_new:
- *
- * Description: Creates a new #GnomeDruid widget.  You need to add this
- * to a dialog yourself, it is not a dialog.
- *
- * Returns:  A new #GnomeDruid widget
- **/
-GtkWidget *
-gnome_druid_new (void)
-{
-	return g_object_new (GNOME_TYPE_DRUID, NULL);
-}
-
-/**
- * gnome_druid_new_with_window:
- * @title: A title of the window.
- * @parent: The parent of this window (transient_for).
- * @close_on_cancel: %TRUE if the window should be closed when cancel is
- * pressed.
- * @window: Optional return of the #GtkWindow created.
- *
- * Description: Creates a new #GnomeDruid widget. It also creates a new
- * toplevel window with the title of @title (which can be %NULL) and a parent
- * of @parent (which also can be %NULL). The window and the druid will both be
- * shown.  If you need the window widget pointer you can optionally get it
- * through the last argument.  When the druid gets destroyed, so will the
- * window that is created here.
- *
- * Returns:  A new #GnomeDruid widget.
- **/
-GtkWidget *
-gnome_druid_new_with_window (const char *title,
-			     GtkWindow *parent,
-			     gboolean close_on_cancel,
-			     GtkWidget **window)
-{
-	GtkWidget *druid = g_object_new (GNOME_TYPE_DRUID, NULL);
-
-	/* make sure we always set window to NULL, even in
-	 * case of precondition errors */
-	if (window != NULL)
-		*window = NULL;
-
-	g_return_val_if_fail (parent == NULL ||
-			      GTK_IS_WINDOW (parent),
-			      NULL);
-
-	gnome_druid_construct_with_window (GNOME_DRUID (druid),
-					   title,
-					   parent,
-					   close_on_cancel,
-					   window);
-
-	return druid;
-}
-
-/**
- * gnome_druid_construct_with_window:
- * @druid: The #GnomeDruid.
- * @title: A title of the window.
- * @parent: The parent of this window (transient_for).
- * @close_on_cancel: %TRUE if the window should be closed when cancel is
- * pressed.
- * @window: Optional return of the #GtkWindow created.
- *
- * Description: Creates a new toplevel window with the title of @title (which
- * can be %NULL) and a parent of @parent (which also can be %NULL).  The @druid
- * will be placed inside this window. The window and the druid will both be
- * shown. If you need the window widget pointer you can optionally get it
- * through the last argument. When the druid gets destroyed, so will the
- * window that is created here.
- *
- * See also gnome_druid_new_with_window().
- **/
-void
-gnome_druid_construct_with_window (GnomeDruid *druid,
-				   const char *title,
-				   GtkWindow *parent,
-				   gboolean close_on_cancel,
-				   GtkWidget **window)
-{
-	GtkWidget *win;
-
-	/* make sure we always set window to NULL, even in
-	 * case of precondition errors */
-	if (window != NULL)
-		*window = NULL;
-
-	g_return_if_fail (druid != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (druid));
-	g_return_if_fail (parent == NULL ||
-			  GTK_IS_WINDOW (parent));
-
-	win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-
-	if (title != NULL)
-		gtk_window_set_title (GTK_WINDOW (win), title);
-	if (parent != NULL)
-		gtk_window_set_transient_for (GTK_WINDOW (win),
-					      parent);
-
-	gtk_widget_show (GTK_WIDGET (druid));
-
-	gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (druid));
-
-	gtk_widget_show (win);
-
-	if (close_on_cancel) {
-		g_signal_connect_object (druid, "cancel",
-					 G_CALLBACK (gtk_widget_destroy),
-					 win,
-					 G_CONNECT_SWAPPED);
-	}
-
-	/* When the druid gets destroyed so does the window */
-	g_signal_connect_object (druid, "destroy",
-				 G_CALLBACK (gtk_widget_destroy),
-				 win,
-				 G_CONNECT_SWAPPED);
-
-	/* return the window */
-	if (window != NULL)
-		*window = win;
-}
-
-
-/**
- * gnome_druid_set_buttons_sensitive
- * @druid: A Druid.
- * @back_sensitive: %TRUE if the back button is sensitive.
- * @next_sensitive: %TRUE if the next button is sensitive.
- * @cancel_sensitive: %TRUE if the cancel button is sensitive.
- * @help_sensitive: %TRUE if the help button is sensitive.
- *
- * Description: Sets the sensitivity of @druid's control-buttons.  If the
- * variables are %TRUE, then they will be clickable. This function is used
- * primarily by the actual GnomeDruidPage widgets.
- **/
-
-void
-gnome_druid_set_buttons_sensitive (GnomeDruid *druid,
-				   gboolean back_sensitive,
-				   gboolean next_sensitive,
-				   gboolean cancel_sensitive,
-				   gboolean help_sensitive)
-{
-	g_return_if_fail (druid != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (druid));
-
-	gtk_widget_set_sensitive (druid->back, back_sensitive);
-	gtk_widget_set_sensitive (druid->next, next_sensitive);
-	gtk_widget_set_sensitive (druid->cancel, cancel_sensitive);
-	gtk_widget_set_sensitive (druid->help, help_sensitive);
-}
-
-/**
- * gnome_druid_set_show_finish
- * @druid: A #GnomeDruid widget.
- * @show_finish: If %TRUE, then the "Next" button is changed to be "Finish"
- *
- * Used to specify if @druid is currently showing the last page of the sequence
- * (and hence should display "Finish", rather than "Next").
- **/
-void
-gnome_druid_set_show_finish (GnomeDruid *druid,
-			     gboolean    show_finish)
-{
-	g_return_if_fail (GNOME_IS_DRUID (druid));
-
-	if ((show_finish?TRUE:FALSE) == druid->_priv->show_finish)
-		return;
-
-	if (show_finish) {
-		gtk_widget_hide (druid->next);
-		gtk_widget_show (druid->finish);
-	} else {
-		gtk_widget_hide (druid->finish);
-		gtk_widget_show (druid->next);
-	}
-	druid->_priv->show_finish = show_finish?TRUE:FALSE;
-}
-
-/**
- * gnome_druid_set_show_help
- * @druid: A #GnomeDruid.
- * @show_help: %TRUE, if the "Help" button is to be shown, %FALSE otherwise.
- *
- * Sets the "Help" button on the druid to be visible in the lower left corner of
- * the widget, if @show_help is %TRUE.
- **/
-void
-gnome_druid_set_show_help (GnomeDruid *druid,
-			   gboolean    show_help)
-{
-	g_return_if_fail (GNOME_IS_DRUID (druid));
-
-	if ((show_help?TRUE:FALSE) == druid->_priv->show_help)
-		return;
-
-	if (show_help) {
-		gtk_widget_show (druid->help);
-	} else {
-		gtk_widget_hide (druid->help);
-	}
-	druid->_priv->show_help = show_help?TRUE:FALSE;
-}
-
-
-/**
- * gnome_druid_prepend_page:
- * @druid: A Druid widget.
- * @page: The page to be inserted.
- *
- * Description: This will prepend a GnomeDruidPage into the internal list of
- * pages that the @druid has. Since #GnomeDruid is just a container, you will
- * need to also call gtk_widget_show() on the page, otherwise the page will not
- * be shown.
- **/
-void
-gnome_druid_prepend_page (GnomeDruid *druid,
-			  GnomeDruidPage *page)
-{
-	g_return_if_fail (druid != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (druid));
-	g_return_if_fail (page != NULL);
-	g_return_if_fail (GNOME_IS_DRUID_PAGE (page));
-
-	gnome_druid_insert_page (druid, NULL, page);
-}
-/**
- * gnome_druid_insert_page:
- * @druid: A #GnomeDruid widget.
- * @back_page: The page prior to the page to be inserted.
- * @page: The page to insert.
- *
- * Description: This will insert @page after @back_page into the list of
- * internal pages that the @druid has.  If @back_page is not present in the
- * list or %NULL, @page will be prepended to the list.  Since #GnomeDruid is
- * just a container, you will need to also call gtk_widget_show() on the page,
- * otherwise the page will not be shown.
- **/
-void
-gnome_druid_insert_page (GnomeDruid *druid,
-			 GnomeDruidPage *back_page,
-			 GnomeDruidPage *page)
-{
-	GList *list;
-
-	g_return_if_fail (druid != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (druid));
-	g_return_if_fail (page != NULL);
-	g_return_if_fail (GNOME_IS_DRUID_PAGE (page));
-
-	list = g_list_find (druid->_priv->children, back_page);
-	if (list == NULL) {
-		druid->_priv->children = g_list_prepend (druid->_priv->children, page);
-	} else {
-		GList *new_el = g_list_alloc ();
-		new_el->next = list->next;
-		new_el->prev = list;
-		if (new_el->next)
-			new_el->next->prev = new_el;
-		new_el->prev->next = new_el;
-		new_el->data = (gpointer) page;
-	}
-	gtk_widget_set_parent (GTK_WIDGET (page), GTK_WIDGET (druid));
-
-	if (GTK_WIDGET_REALIZED (GTK_WIDGET (druid)))
-		gtk_widget_realize (GTK_WIDGET (page));
-
-	if (GTK_WIDGET_VISIBLE (GTK_WIDGET (druid)) && GTK_WIDGET_VISIBLE (GTK_WIDGET (page))) {
-		if (GTK_WIDGET_MAPPED (GTK_WIDGET (page)))
-			gtk_widget_unmap (GTK_WIDGET (page));
-		gtk_widget_queue_resize (GTK_WIDGET (druid));
-	}
-
-	/* if it's the first and only page, we want to bring it to the foreground. */
-	if (druid->_priv->children->next == NULL)
-		gnome_druid_set_page (druid, page);
-}
-
-/**
- * gnome_druid_append_page:
- * @druid: A #GnomeDruid widget.
- * @page: The #GnomeDruidPage to be appended.
- *
- * Description: This will append @page onto the end of the internal list.
- * Since #GnomeDruid is just a container, you will need to also call
- * gtk_widget_show() on the page, otherwise the page will not be shown.
- **/
-void
-gnome_druid_append_page (GnomeDruid *druid,
-			 GnomeDruidPage *page)
-{
-	GList *list;
-	g_return_if_fail (druid != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (druid));
-	g_return_if_fail (page != NULL);
-	g_return_if_fail (GNOME_IS_DRUID_PAGE (page));
-
-	list = g_list_last (druid->_priv->children);
-	if (list) {
-		gnome_druid_insert_page (druid, GNOME_DRUID_PAGE (list->data), page);
-	} else {
-		gnome_druid_insert_page (druid, NULL, page);
-	}
-}
-/**
- * gnome_druid_set_page:
- * @druid: A #GnomeDruid widget.
- * @page: The #GnomeDruidPage to be brought to the foreground.
- *
- * Description: This will make @page the currently showing page in the druid.
- * @page must already be in the druid.
- **/
-void
-gnome_druid_set_page (GnomeDruid *druid,
-		      GnomeDruidPage *page)
-{
-	GList *list;
-	GtkWidget *old = NULL;
-	g_return_if_fail (druid != NULL);
-	g_return_if_fail (GNOME_IS_DRUID (druid));
-	g_return_if_fail (page != NULL);
-	g_return_if_fail (GNOME_IS_DRUID_PAGE (page));
-
-	if (druid->_priv->current == page)
-	     return;
-	list = g_list_find (druid->_priv->children, page);
-	g_return_if_fail (list != NULL);
-
-	if ((druid->_priv->current) && (GTK_WIDGET_VISIBLE (druid->_priv->current)) && (GTK_WIDGET_MAPPED (druid))) {
-		old = GTK_WIDGET (druid->_priv->current);
-	}
-	druid->_priv->current = GNOME_DRUID_PAGE (list->data);
-	gnome_druid_page_prepare (druid->_priv->current);
-	if (GTK_WIDGET_VISIBLE (druid->_priv->current) && (GTK_WIDGET_MAPPED (druid))) {
-		gtk_widget_map (GTK_WIDGET (druid->_priv->current));
-	}
-	if (old && GTK_WIDGET_MAPPED (old))
-	  gtk_widget_unmap (old);
-}
diff --git a/lib/druid/gnome-druid.h b/lib/druid/gnome-druid.h
deleted file mode 100644
index 86795e4..0000000
--- a/lib/druid/gnome-druid.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/* gnome-druid.h
- * Copyright (C) 1999  Red Hat, Inc.
- * All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-/*
-  @NOTATION@
-*/
-/* TODO: allow setting bgcolor for all pages globally */
-#ifndef __GNOME_DRUID_H__
-#define __GNOME_DRUID_H__
-
-#include <gtk/gtk.h>
-#include <glib-object.h>
-#include "gnome-druid-page.h"
-
-G_BEGIN_DECLS
-
-#define GNOME_PAD_SMALL    4
-#define GNOME_CALL_PARENT(parent_class_cast, name, args)               \
-        ((parent_class_cast(parent_class)->name != NULL) ?              \
-         parent_class_cast(parent_class)->name args : (void)0)
-#define GNOME_REGISTER_TYPE(type, type_as_function, corba_type,         \
-                            parent_type, parent_type_macro)             \
-        g_type_register_static (parent_type_macro, #type, &object_info, 0)
-#define GNOME_CLASS_BOILERPLATE(type, type_as_function,          \
-                           parent_type, parent_type_macro,              \
-                           register_type_macro)                         \
-static void type_as_function ## _class_init    (type ## Class *klass);  \
-static void type_as_function ## _instance_init (type          *object); \
-static parent_type ## Class *parent_class = NULL;                       \
-static void                                                             \
-type_as_function ## _class_init_trampoline (gpointer klass,             \
-                                            gpointer data)              \
-{                                                                       \
-        parent_class = (parent_type ## Class *)g_type_class_ref (       \
-                parent_type_macro);                                     \
-        type_as_function ## _class_init ((type ## Class *)klass);       \
-}                                                                       \
-GType                                                                   \
-type_as_function ## _get_type (void)                                    \
-{                                                                       \
-        static GType object_type = 0;                                   \
-        if (object_type == 0) {                                         \
-                static const GTypeInfo object_info = {                  \
-                    sizeof (type ## Class),                             \
-                    NULL,               /* base_init */                 \
-                    NULL,               /* base_finalize */             \
-                    type_as_function ## _class_init_trampoline,         \
-                    NULL,               /* class_finalize */            \
-                    NULL,               /* class_data */                \
-                    sizeof (type),                                      \
-                    0,                  /* n_preallocs */               \
-                    (GInstanceInitFunc) type_as_function ## _instance_init \
-                };                                                      \
-                object_type = register_type_macro                       \
-                        (type, type_as_function, type,            \
-                         parent_type, parent_type_macro);               \
-        }                                                               \
-        return object_type;                                             \
-}
-
-#define GNOME_TYPE_DRUID            (gnome_druid_get_type ())
-#define GNOME_DRUID(obj)            (GTK_CHECK_CAST ((obj), GNOME_TYPE_DRUID, GnomeDruid))
-#define GNOME_DRUID_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GNOME_TYPE_DRUID, GnomeDruidClass))
-#define GNOME_IS_DRUID(obj)         (GTK_CHECK_TYPE ((obj), GNOME_TYPE_DRUID))
-#define GNOME_IS_DRUID_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_DRUID))
-#define GNOME_DRUID_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), GNOME_TYPE_DRUID, GnomeDruidClass))
-
-
-typedef struct _GnomeDruid        GnomeDruid;
-typedef struct _GnomeDruidPrivate GnomeDruidPrivate;
-typedef struct _GnomeDruidClass   GnomeDruidClass;
-
-struct _GnomeDruid
-{
-	GtkContainer parent;
-	GtkWidget *help;
-	GtkWidget *back;
-	GtkWidget *next;
-	GtkWidget *cancel;
-	GtkWidget *finish;
-
-	/*< private >*/
-	GnomeDruidPrivate *_priv;
-};
-struct _GnomeDruidClass
-{
-	GtkContainerClass parent_class;
-	
-	void     (*cancel)	(GnomeDruid *druid);
-	void     (*help)	(GnomeDruid *druid);
-
-	/* Padding for possible expansion */
-	gpointer padding1;
-	gpointer padding2;
-};
-
-
-GType      gnome_druid_get_type              (void) G_GNUC_CONST;
-GtkWidget *gnome_druid_new                   (void);
-void	   gnome_druid_set_buttons_sensitive (GnomeDruid *druid,
-					      gboolean back_sensitive,
-					      gboolean next_sensitive,
-					      gboolean cancel_sensitive,
-					      gboolean help_sensitive);
-void	   gnome_druid_set_show_finish       (GnomeDruid *druid, gboolean show_finish);
-void	   gnome_druid_set_show_help         (GnomeDruid *druid, gboolean show_help);
-void       gnome_druid_prepend_page          (GnomeDruid *druid, GnomeDruidPage *page);
-void       gnome_druid_insert_page           (GnomeDruid *druid, GnomeDruidPage *back_page, GnomeDruidPage *page);
-void       gnome_druid_append_page           (GnomeDruid *druid, GnomeDruidPage *page);
-void	   gnome_druid_set_page              (GnomeDruid *druid, GnomeDruidPage *page);
-
-/* Pure sugar, methods for making new druids with a window already */
-GtkWidget *gnome_druid_new_with_window       (const char *title,
-					      GtkWindow *parent,
-					      gboolean close_on_cancel,
-					      GtkWidget **window);
-void       gnome_druid_construct_with_window (GnomeDruid *druid,
-					      const char *title,
-					      GtkWindow *parent,
-					      gboolean close_on_cancel,
-					      GtkWidget **window);
-
-G_END_DECLS
-
-#endif /* __GNOME_DRUID_H__ */
diff --git a/src/Makefile.am b/src/Makefile.am
index a62ade8..f9b55b4 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -41,8 +41,8 @@ ekiga_SOURCES +=			\
 	gui/conf.cpp			\
 	gui/dialpad.h			\
 	gui/dialpad.cpp			\
-	gui/druid.h			\
-	gui/druid.cpp			\
+	gui/assistant.h			\
+	gui/assistant.cpp		\
 	gui/main.h			\
 	gui/main.cpp			\
 	gui/misc.h			\
diff --git a/src/devices/audio.cpp b/src/devices/audio.cpp
index 5c02937..1ba564a 100644
--- a/src/devices/audio.cpp
+++ b/src/devices/audio.cpp
@@ -42,7 +42,6 @@
 #include "audio.h"
 #include "manager.h"
 #include "misc.h"
-#include "druid.h"
 
 #include "gmlevelmeter.h"
 #include "gmdialog.h"
@@ -80,9 +79,6 @@ static void dialog_response_cb (GtkWidget *widget,
 {
   g_return_if_fail (data);
 
-
-  gm_druid_window_set_test_buttons_sensitivity (GTK_WIDGET (data), FALSE);
-
   gtk_widget_hide (widget);
 }
 
@@ -246,7 +242,7 @@ GMAudioRP::~GMAudioRP ()
 
 void GMAudioRP::Main ()
 {
-  GtkWidget *druid_window = NULL;
+  GtkWidget *assistant_window = NULL;
   
   PSoundChannel *channel = NULL;
   
@@ -265,8 +261,8 @@ void GMAudioRP::Main ()
   PWaitAndSignal m(quit_mutex);
   thread_sync_point.Signal ();
 
-  druid_window = GnomeMeeting::Process ()->GetDruidWindow ();
-    
+  assistant_window = GnomeMeeting::Process ()->GetAssistantWindow ();
+
   buffer = (char *) malloc (640);
   memset (buffer, '0', sizeof (buffer));
   
@@ -295,9 +291,9 @@ void GMAudioRP::Main ()
 
     gdk_threads_enter ();  
     if (is_encoding)
-      gnomemeeting_error_dialog (GTK_WINDOW (druid_window), _("Failed to open the device"), _("Impossible to open the selected audio device (%s) for recording. Please check your audio setup, the permissions and that the device is not busy."), (const char *) device_name);
+      gnomemeeting_error_dialog (GTK_WINDOW (assistant_window), _("Failed to open the device"), _("Impossible to open the selected audio device (%s) for recording. Please check your audio setup, the permissions and that the device is not busy."), (const char *) device_name);
     else
-      gnomemeeting_error_dialog (GTK_WINDOW (druid_window), _("Failed to open the device"), _("Impossible to open the selected audio device (%s) for playing. Please check your audio setup, the permissions and that the device is not busy."), (const char *) device_name);
+      gnomemeeting_error_dialog (GTK_WINDOW (assistant_window), _("Failed to open the device"), _("Impossible to open the selected audio device (%s) for playing. Please check your audio setup, the permissions and that the device is not busy."), (const char *) device_name);
     gdk_threads_leave ();  
   }
   else {
@@ -313,7 +309,7 @@ void GMAudioRP::Main ()
 	if (!channel->Read ((void *) buffer, 640)) {
       
 	  gdk_threads_enter ();  
-	  gnomemeeting_error_dialog (GTK_WINDOW (druid_window), _("Cannot use the audio device"), _("The selected audio device (%s) was successfully opened but it is impossible to read data from this device. Please check your audio setup."), (const char*) device_name);
+	  gnomemeeting_error_dialog (GTK_WINDOW (assistant_window), _("Cannot use the audio device"), _("The selected audio device (%s) was successfully opened but it is impossible to read data from this device. Please check your audio setup."), (const char*) device_name);
 	  gdk_threads_leave ();  
 
 	  stop = TRUE;
@@ -382,7 +378,7 @@ void GMAudioRP::Main ()
 	  if (!channel->Write ((void *) buffer, 640)) {
       
 	    gdk_threads_enter ();  
-	    gnomemeeting_error_dialog (GTK_WINDOW (druid_window), _("Cannot use the audio device"), _("The selected audio device (%s) was successfully opened but it is impossible to write data to this device. Please check your audio setup."), (const char*) device_name);
+	    gnomemeeting_error_dialog (GTK_WINDOW (assistant_window), _("Cannot use the audio device"), _("The selected audio device (%s) was successfully opened but it is impossible to write data to this device. Please check your audio setup."), (const char*) device_name);
 	    gdk_threads_leave ();  
 
 	    stop = TRUE;
@@ -462,15 +458,14 @@ GMAudioTester::~GMAudioTester ()
 
 void GMAudioTester::Main ()
 {
-  GtkWidget *druid_window = NULL;
+  GtkWidget *assistant_window = NULL;
   
   GMAudioRP *_player = NULL;
   GMAudioRP *_recorder = NULL;
 
   gchar *msg = NULL;
 
-  druid_window = GnomeMeeting::Process ()->GetDruidWindow ();
-
+  assistant_window = GnomeMeeting::Process ()->GetAssistantWindow ();
 
   PWaitAndSignal m(quit_mutex);
   thread_sync_point.Signal ();
@@ -491,7 +486,7 @@ void GMAudioTester::Main ()
   gdk_threads_enter ();
   test_dialog =
     gtk_dialog_new_with_buttons ("Audio test running",
-				 GTK_WINDOW (druid_window),
+				 GTK_WINDOW (assistant_window),
 				 (GtkDialogFlags) (GTK_DIALOG_MODAL),
 				 GTK_STOCK_OK,
 				 GTK_RESPONSE_ACCEPT,
@@ -519,10 +514,10 @@ void GMAudioTester::Main ()
 		    G_CALLBACK (gtk_widget_hide_on_delete), NULL);
   g_signal_connect (G_OBJECT (test_dialog), "response",
 		    G_CALLBACK (dialog_response_cb), 
-		    druid_window);
+		    assistant_window);
 
   gtk_window_set_transient_for (GTK_WINDOW (test_dialog),
-				GTK_WINDOW (druid_window));
+				GTK_WINDOW (assistant_window));
   gtk_widget_show_all (GTK_DIALOG (test_dialog)->vbox);
   gdk_threads_leave ();
 
diff --git a/src/devices/videoinput.cpp b/src/devices/videoinput.cpp
index f066563..83903bc 100644
--- a/src/devices/videoinput.cpp
+++ b/src/devices/videoinput.cpp
@@ -43,7 +43,6 @@
 #include "ekiga.h"
 #include "misc.h"
 #include "main.h"
-#include "druid.h"
 
 #include "gmdialog.h"
 #include "gmconf.h"
@@ -533,7 +532,7 @@ GMVideoTester::~GMVideoTester ()
 
 void GMVideoTester::Main ()
 {
-  GtkWidget *druid_window = NULL;
+  GtkWidget *assistant_window = NULL;
 
   PVideoInputDevice *grabber = NULL;
   
@@ -545,8 +544,8 @@ void GMVideoTester::Main ()
   gchar *dialog_msg = NULL;
   gchar *tmp = NULL;
 
-  druid_window = GnomeMeeting::Process ()->GetDruidWindow (); 
-  
+  assistant_window = GnomeMeeting::Process ()->GetAssistantWindow (); 
+
   PWaitAndSignal m(quit_mutex);
   thread_sync_point.Signal ();
 
@@ -559,7 +558,7 @@ void GMVideoTester::Main ()
   gdk_threads_enter ();
   test_dialog =
     gtk_dialog_new_with_buttons ("Video test running",
-				 GTK_WINDOW (druid_window),
+				 GTK_WINDOW (assistant_window),
 				 (GtkDialogFlags) (GTK_DIALOG_MODAL),
 				 GTK_STOCK_OK,
 				 GTK_RESPONSE_ACCEPT,
@@ -583,7 +582,7 @@ void GMVideoTester::Main ()
 		    G_CALLBACK (gtk_widget_hide_on_delete), NULL);
 
   gtk_window_set_transient_for (GTK_WINDOW (test_dialog),
-				GTK_WINDOW (druid_window));
+				GTK_WINDOW (assistant_window));
   gtk_widget_show_all (GTK_DIALOG (test_dialog)->vbox);
   gnomemeeting_threads_dialog_show (test_dialog);
   gdk_threads_leave ();
@@ -677,7 +676,7 @@ void GMVideoTester::Main ()
     }
 
     gdk_threads_enter ();
-    gnomemeeting_error_dialog (GTK_WINDOW (druid_window),
+    gnomemeeting_error_dialog (GTK_WINDOW (assistant_window),
 			       _("Failed to open the device"),
 			       "%s", dialog_msg);
     gdk_threads_leave ();
@@ -686,7 +685,6 @@ void GMVideoTester::Main ()
   }
 
   gdk_threads_enter ();
-  gm_druid_window_set_test_buttons_sensitivity (druid_window, FALSE);
   if (test_dialog)
     gnomemeeting_threads_widget_destroy (test_dialog);
   gdk_threads_leave ();
diff --git a/src/endpoints/ekiga.cpp b/src/endpoints/ekiga.cpp
index 83fbb7f..16fa180 100644
--- a/src/endpoints/ekiga.cpp
+++ b/src/endpoints/ekiga.cpp
@@ -44,7 +44,7 @@
 #include "urlhandler.h"
 #include "preferences.h"
 #include "chat-window.h"
-#include "druid.h"
+#include "assistant.h"
 #include "tools.h"
 #include "statusicon.h"
 #include "main.h"
@@ -105,9 +105,9 @@ GnomeMeeting::Exit ()
     gtk_widget_destroy (main_window);
   main_window = NULL;
   
-  if (druid_window)
-    gtk_widget_destroy (druid_window);
-  druid_window = NULL;
+  if (assistant_window)
+    gtk_widget_destroy (assistant_window);
+  assistant_window = NULL;
   
   if (accounts_window)
     gtk_widget_destroy (accounts_window);
@@ -404,9 +404,9 @@ GnomeMeeting::GetPrefsWindow ()
 
 
 GtkWidget *
-GnomeMeeting::GetDruidWindow ()
+GnomeMeeting::GetAssistantWindow ()
 {
-  return druid_window;
+  return assistant_window;
 }
 
 
@@ -444,7 +444,7 @@ void GnomeMeeting::BuildGUI ()
   gtk_window_set_default_icon_name (GM_ICON_LOGO);
   pc2phone_window = gm_pc2phone_window_new (*service_core);
   prefs_window = gm_prefs_window_new ();  
-  druid_window = gm_druid_window_new (*service_core);
+  assistant_window = ekiga_assistant_new (service_core);
   accounts_window = gm_accounts_window_new (*service_core);
 
   main_window = gm_main_window_new (*service_core);
diff --git a/src/endpoints/ekiga.h b/src/endpoints/ekiga.h
index 486decc..d75f5a4 100644
--- a/src/endpoints/ekiga.h
+++ b/src/endpoints/ekiga.h
@@ -161,10 +161,10 @@ class GnomeMeeting : public PProcess
  
   
   /* DESCRIPTION  :  /
-   * BEHAVIOR     :  Returns a pointer to the druid window GMObject.
+   * BEHAVIOR     :  Returns a pointer to the assistant window.
    * PRE          :  /
    */
-  GtkWidget *GetDruidWindow ();
+  GtkWidget *GetAssistantWindow ();
 
   
   /* DESCRIPTION  :  /
@@ -297,7 +297,7 @@ class GnomeMeeting : public PProcess
   /* The different components of the GUI */
   GtkWidget *main_window;
   GtkWidget *history_window;
-  GtkWidget *druid_window;
+  GtkWidget *assistant_window;
   GtkWidget *prefs_window;
   GtkWidget *pc2phone_window;
   GtkWidget *accounts_window;
diff --git a/src/gui/assistant.cpp b/src/gui/assistant.cpp
new file mode 100644
index 0000000..25fddac
--- /dev/null
+++ b/src/gui/assistant.cpp
@@ -0,0 +1,1159 @@
+/* Ekiga -- A VoIP and Video-Conferencing application
+ * Copyright (C) 2000-2006 Damien Sandras
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ *
+ * Ekiga is licensed under the GPL license and as a special exception,
+ * you have permission to link or otherwise combine this program with the
+ * programs OPAL, OpenH323 and PWLIB, and distribute the combination,
+ * without applying the requirements of the GNU GPL to the OPAL, OpenH323
+ * and PWLIB programs, as long as you do follow the requirements of the
+ * GNU GPL for all the rest of the software thus combined.
+ */
+
+
+/*
+ *                         druid.cpp  -  description
+ *                         --------------------------
+ *   begin                : Mon May 1 2002
+ *   copyright            : (C) 2000-2006 by Damien Sandras
+ *                          (C) 2008 by Steve Frécinaux
+ *   description          : This file contains all the functions needed to
+ *                          build the druid.
+ */
+
+#include "config.h"
+
+#include "framework/services.h"
+#include "ekiga.h"
+#include "gmconf.h"
+#include "misc.h"
+#include "devices/audio.h"
+#include "toolbox/toolbox.h"
+#include "assistant.h"
+
+G_DEFINE_TYPE(EkigaAssistant, ekiga_assistant, GTK_TYPE_ASSISTANT)
+
+struct _EkigaAssistantPrivate
+{
+  Ekiga::ServiceCore *core;
+  GdkPixbuf *icon;
+
+  GtkWidget *welcome_page;
+  GtkWidget *personal_data_page;
+  GtkWidget *ekiga_net_page;
+  GtkWidget *connection_type_page;
+  GtkWidget *audio_manager_page;
+  GtkWidget *audio_devices_page;
+  GtkWidget *video_manager_page;
+  GtkWidget *summary_page;
+
+  GtkWidget *name;
+
+  GtkWidget *username;
+  GtkWidget *password;
+  GtkWidget *skip_ekiga_net;
+
+  GtkWidget *connection_type;
+
+  GtkWidget *audio_manager;
+
+  GtkWidget *audio_player;
+  GtkWidget *audio_recorder;
+
+  GtkWidget *video_manager;
+
+  GtkListStore *summary_model;
+};
+
+/* presenting the network connectoin type to the user */
+enum {
+  CNX_LABEL_COLUMN,
+  CNX_CODE_COLUMN
+};
+
+enum {
+  SUMMARY_KEY_COLUMN,
+  SUMMARY_VALUE_COLUMN
+};
+
+static GtkWidget *
+create_page (EkigaAssistant       *assistant,
+             const gchar          *title,
+             GtkAssistantPageType  page_type)
+{
+  GtkWidget *vbox;
+
+  vbox = gtk_vbox_new (FALSE, 6);
+
+  gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);
+
+  gtk_assistant_append_page (GTK_ASSISTANT (assistant), vbox);
+  gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), vbox, title);
+  gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), vbox, page_type);
+  gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), vbox, assistant->priv->icon);
+
+  if (page_type != GTK_ASSISTANT_PAGE_CONTENT)
+    gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), vbox, TRUE);
+
+  return vbox;
+}
+
+static void
+set_current_page_complete (GtkAssistant *assistant,
+                           gboolean      complete)
+{
+  gint page_number;
+  GtkWidget *current_page;
+
+  page_number = gtk_assistant_get_current_page (assistant);
+  current_page = gtk_assistant_get_nth_page (assistant, page_number);
+  gtk_assistant_set_page_complete (assistant, current_page, complete);
+}
+
+static void
+update_combo_box (GtkComboBox         *combo_box,
+                  const gchar * const *options,
+                  const gchar         *default_value)
+{
+  int i;
+  GtkTreeModel *model;
+  int selected;
+
+  g_return_if_fail (options != NULL);
+
+  model = gtk_combo_box_get_model (combo_box);
+  gtk_list_store_clear (GTK_LIST_STORE (model));
+
+  selected = 0;
+  for (i = 0; options[i]; i++) {
+    if (default_value && strcmp (options[i], default_value) == 0)
+      selected = i;
+
+    gtk_combo_box_append_text (combo_box, options[i]);
+  }
+
+  gtk_combo_box_set_active(combo_box, selected);
+}
+
+
+/****************
+ * Welcome page *
+ ****************/
+
+static void
+create_welcome_page (EkigaAssistant *assistant)
+{
+  GtkWidget *label;
+
+  label = gtk_label_new (_("This is the Ekiga general configuration assistant. "
+                           "The following steps will set up Ekiga by asking "
+                           "a few simple questions.\n\nOnce you have completed "
+                           "these steps, you can always change them later by "
+                           "selecting Preferences in the Edit menu."));
+  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+  gtk_widget_show (label);
+  gtk_assistant_append_page (GTK_ASSISTANT (assistant), label);
+  gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), label, _("Welcome in Ekiga"));
+  gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), label, GTK_ASSISTANT_PAGE_INTRO);
+  gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), label, assistant->priv->icon);
+  gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), label, TRUE);
+
+  assistant->priv->welcome_page = label;
+}
+
+/**********************
+ * Personal data page *
+ **********************/
+
+static void
+name_changed_cb (GtkEntry     *entry,
+                 GtkAssistant *assistant)
+{
+  gchar **couple;
+  gboolean complete;
+
+  couple = g_strsplit (gtk_entry_get_text (entry), " ", 2);
+
+  complete = couple && couple[0] && couple[1]
+          && !PString (couple[0]).Trim ().IsEmpty ()
+          && !PString (couple[1]).Trim ().IsEmpty ();
+  set_current_page_complete (assistant, complete);
+
+  g_strfreev (couple);
+}
+
+
+static void
+create_personal_data_page (EkigaAssistant *assistant)
+{
+  GtkWidget *vbox;
+  GtkWidget *label;
+  gchar *text;
+
+  vbox = create_page (assistant, _("Personal Information"), GTK_ASSISTANT_PAGE_CONTENT);
+
+  /* The user fields */
+  label = gtk_label_new (_("Please enter your first name and your surname:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  assistant->priv->name = gtk_entry_new ();
+  gtk_entry_set_activates_default (GTK_ENTRY (assistant->priv->name), TRUE);
+  gtk_box_pack_start (GTK_BOX (vbox), assistant->priv->name, FALSE, FALSE, 0);
+
+  label = gtk_label_new (NULL);
+  text = g_strdup_printf ("<i>%s</i>", _("Your first name and surname will be "
+                          "used when connecting to other VoIP and "
+                          "videoconferencing software."));
+  gtk_label_set_markup (GTK_LABEL (label), text);
+  g_free (text);
+  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
+
+  g_signal_connect (G_OBJECT (assistant->priv->name), "changed",
+                    G_CALLBACK (name_changed_cb), assistant);
+
+  assistant->priv->personal_data_page = vbox;
+  gtk_widget_show_all (vbox);
+}
+
+static void
+prepare_personal_data_page (EkigaAssistant *assistant)
+{
+  gchar *firstname;
+  gchar *lastname;
+  gchar *text;
+
+  firstname = gm_conf_get_string (PERSONAL_DATA_KEY "firstname");
+  lastname = gm_conf_get_string (PERSONAL_DATA_KEY "lastname");
+
+  text = gnomemeeting_create_fullname (firstname, lastname);
+  if (text) {
+    gtk_entry_set_text (GTK_ENTRY (assistant->priv->name), text);
+    g_free (text);
+  }
+
+  g_free (firstname);
+  g_free (lastname);
+}
+
+static void
+apply_personal_data_page (EkigaAssistant *assistant)
+{
+  GtkEntry *entry = GTK_ENTRY (assistant->priv->name);
+  gchar **couple = g_strsplit (gtk_entry_get_text (entry), " ", 2);
+
+  if (couple && couple[0])
+    gm_conf_set_string (PERSONAL_DATA_KEY "firstname", couple[0]);
+  if (couple && couple[1])
+    gm_conf_set_string (PERSONAL_DATA_KEY "lastname", couple[1]);
+
+  g_free (couple);
+}
+
+/******************
+ * Ekiga.net page *
+ ******************/
+
+static void
+ekiga_net_button_clicked_cb (G_GNUC_UNUSED GtkWidget *button,
+                             G_GNUC_UNUSED gpointer data)
+{
+  gm_open_uri ("http://www.ekiga.net");
+}
+
+static void
+ekiga_net_info_changed_cb (G_GNUC_UNUSED GtkWidget *w,
+                           EkigaAssistant *assistant)
+{
+  gboolean complete;
+
+  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (assistant->priv->skip_ekiga_net)))
+    complete = TRUE;
+  else {
+    const char *username = gtk_entry_get_text (GTK_ENTRY (assistant->priv->username));
+    const char *password = gtk_entry_get_text (GTK_ENTRY (assistant->priv->password));
+    complete = strcmp(username, "") != 0 && strcmp(password, "") != 0;
+  }
+
+  set_current_page_complete (GTK_ASSISTANT (assistant), complete);
+}
+
+static void
+create_ekiga_net_page (EkigaAssistant *assistant)
+{
+  GtkWidget *vbox;
+  GtkWidget *label;
+  gchar *text;
+  GtkWidget *button;
+  GtkWidget *align;
+
+  vbox = create_page (assistant, _("ekiga.net Account"), GTK_ASSISTANT_PAGE_CONTENT);
+
+  label = gtk_label_new (_("Please enter your username:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  assistant->priv->username = gtk_entry_new ();
+  gtk_entry_set_activates_default (GTK_ENTRY (assistant->priv->username), TRUE);
+  gtk_box_pack_start (GTK_BOX (vbox), assistant->priv->username, FALSE, FALSE, 0);
+
+  label = gtk_label_new (_("Please enter your password:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  assistant->priv->password = gtk_entry_new ();
+  gtk_entry_set_activates_default (GTK_ENTRY (assistant->priv->password), TRUE);
+  gtk_entry_set_visibility (GTK_ENTRY (assistant->priv->password), FALSE);
+  gtk_box_pack_start (GTK_BOX (vbox), assistant->priv->password, FALSE, FALSE, 0);
+
+  label = gtk_label_new (NULL);
+  text = g_strdup_printf ("<i>%s</i>", _("The username and password are used "
+                          "to login to your existing account at the ekiga.net "
+                          "free SIP service. If you do not have an ekiga.net "
+                          "SIP address yet, you may first create an account "
+                          "below. This will provide a SIP address that allows "
+                          "people to call you.\n\nYou may skip this step if "
+                          "you use an alternative SIP service, or if you "
+                          "would prefer to specify the login details later."));
+  gtk_label_set_markup (GTK_LABEL (label), text);
+  g_free (text);
+  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
+
+  button = gtk_button_new ();
+  label = gtk_label_new (NULL);
+  text = g_strdup_printf ("<span foreground=\"blue\"><u>%s</u></span>",
+                          _("Get an ekiga.net SIP account"));
+  gtk_label_set_markup (GTK_LABEL (label), text);
+  g_free (text);
+  gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
+  gtk_container_add (GTK_CONTAINER (button), label);
+  gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (button), FALSE, FALSE, 10);
+  g_signal_connect (button, "clicked",
+                    G_CALLBACK (ekiga_net_button_clicked_cb), NULL);
+
+  assistant->priv->skip_ekiga_net = gtk_check_button_new ();
+  label = gtk_label_new (_("I do not want to sign up for the ekiga.net free service"));
+  gtk_container_add (GTK_CONTAINER (assistant->priv->skip_ekiga_net), label);
+  align = gtk_alignment_new (0, 1.0, 0, 0);
+  gtk_container_add (GTK_CONTAINER (align), assistant->priv->skip_ekiga_net);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
+
+  g_signal_connect (assistant->priv->username, "changed",
+                    G_CALLBACK (ekiga_net_info_changed_cb), assistant);
+  g_signal_connect (assistant->priv->password, "changed",
+                    G_CALLBACK (ekiga_net_info_changed_cb), assistant);
+  g_signal_connect (assistant->priv->skip_ekiga_net, "toggled",
+                    G_CALLBACK (ekiga_net_info_changed_cb), assistant);
+
+  assistant->priv->ekiga_net_page = vbox;
+  gtk_widget_show_all (vbox);
+}
+
+static void
+prepare_ekiga_net_page (EkigaAssistant *assistant)
+{
+  GmAccount *account = gnomemeeting_get_account ("ekiga.net");
+
+  if (account && account->username)
+    gtk_entry_set_text (GTK_ENTRY (assistant->priv->username), account->username);
+  if (account && account->password)
+    gtk_entry_set_text (GTK_ENTRY (assistant->priv->password), account->password);
+
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (assistant->priv->skip_ekiga_net),
+                                FALSE);
+
+  set_current_page_complete (GTK_ASSISTANT (assistant),
+                             account->username && account->password);
+}
+
+static void
+apply_ekiga_net_page (EkigaAssistant *assistant)
+{
+  GmAccount *account = gnomemeeting_get_account ("ekiga.net");
+  GMManager *manager;
+  gboolean new_account = FALSE;
+
+  if (account == NULL) {
+    account = gm_account_new ();
+    account->default_account = TRUE;
+    account->account_name = g_strdup ("ekiga.net SIP Service");
+    account->host = g_strdup ("ekiga.net");
+    account->domain = g_strdup ("ekiga.net");
+    account->protocol_name = g_strdup ("SIP");
+
+    new_account = TRUE;
+  }
+
+  if (account->auth_username)
+    g_free (account->auth_username);
+  if (account->username)
+    g_free (account->username);
+  if (account->password)
+    g_free (account->password);
+
+  account->username =
+    g_strdup (gtk_entry_get_text (GTK_ENTRY (assistant->priv->username)));
+  account->auth_username =
+    g_strdup (gtk_entry_get_text (GTK_ENTRY (assistant->priv->username)));
+  account->password =
+    g_strdup (gtk_entry_get_text (GTK_ENTRY (assistant->priv->password)));
+  account->enabled =
+    !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (assistant->priv->skip_ekiga_net));
+
+  /* If creating a new account, add it only if the user wants to use GM.NET,
+   * and make it the default account */
+  if (new_account) {
+    if (account->enabled)
+      gnomemeeting_account_add (account);
+  }
+  else {
+    /* Modify the account, do not set it as default */
+    gnomemeeting_account_modify (account);
+  }
+
+  /* Register the current Endpoint to GnomeMeeting.NET */
+  gdk_threads_leave ();
+  if (account->enabled) {
+    manager = dynamic_cast<GMManager *> (assistant->priv->core->get ("opal-component"));
+    manager->Register (account);
+  }
+  gdk_threads_enter ();
+
+  gm_account_delete (account);
+}
+
+/************************
+ * Connection type page *
+ ************************/
+
+static void
+create_connection_type_page (EkigaAssistant *assistant)
+{
+  GtkWidget *vbox;
+  GtkWidget *label;
+  gchar *text;
+
+  GtkListStore *store;
+  GtkCellRenderer *cell;
+  GtkTreeIter iter;
+
+  vbox = create_page (assistant, _("Connection Type"), GTK_ASSISTANT_PAGE_CONTENT);
+
+  /* The connection type */
+  label = gtk_label_new (_("Please choose your connection type:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
+  assistant->priv->connection_type = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
+  g_object_unref (store);
+  cell = gtk_cell_renderer_text_new ();
+  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (assistant->priv->connection_type), cell, TRUE);
+  gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (assistant->priv->connection_type), cell,
+                                  "text", CNX_LABEL_COLUMN,
+                                  NULL);
+  gtk_box_pack_start (GTK_BOX (vbox), assistant->priv->connection_type, FALSE, FALSE, 0);
+
+  /* Fill the model with available connection types */
+  gtk_list_store_append (store, &iter);
+  gtk_list_store_set (store, &iter,
+                      CNX_LABEL_COLUMN, _("56k Modem"),
+                      CNX_CODE_COLUMN, NET_PSTN,
+                      -1);
+  gtk_list_store_append (store, &iter);
+  gtk_list_store_set (store, &iter,
+                      CNX_LABEL_COLUMN, _("ISDN"),
+                      CNX_CODE_COLUMN, NET_ISDN,
+                      -1);
+  gtk_list_store_append (store, &iter);
+  gtk_list_store_set (store, &iter,
+                      CNX_LABEL_COLUMN, _("xDSL/Cable"),
+                      CNX_CODE_COLUMN, NET_DSL,
+                      -1);
+  gtk_list_store_append (store, &iter);
+  gtk_list_store_set (store, &iter,
+                      CNX_LABEL_COLUMN, _("T1/LAN"),
+                      CNX_CODE_COLUMN, NET_LAN,
+                      -1);
+  gtk_list_store_append (store, &iter);
+  gtk_list_store_set (store, &iter,
+                      CNX_LABEL_COLUMN, _("Keep current settings"),
+                      CNX_CODE_COLUMN, NET_CUSTOM,
+                      -1);
+
+  label = gtk_label_new (NULL);
+  text = g_strdup_printf ("<i>%s</i>", _("The connection type will permit "
+                          "determining the best quality settings that Ekiga "
+                          "will use during calls. You can later change the "
+                          "settings individually in the preferences window."));
+  gtk_label_set_markup (GTK_LABEL (label), text);
+  g_free (text);
+  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
+
+  assistant->priv->connection_type_page = vbox;
+  gtk_widget_show_all (vbox);
+  gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), vbox, TRUE);
+}
+
+static void
+prepare_connection_type_page (EkigaAssistant *assistant)
+{
+  GtkComboBox *combo_box = GTK_COMBO_BOX (assistant->priv->connection_type);
+  GtkTreeModel *model = gtk_combo_box_get_model (combo_box);
+  GtkTreeIter iter;
+  gint connection_type = gm_conf_get_int (GENERAL_KEY "kind_of_net");
+
+  if (gtk_tree_model_get_iter_first (model, &iter)) {
+    do {
+      gint code;
+      gtk_tree_model_get (model, &iter, CNX_CODE_COLUMN, &code, -1);
+      if (code == connection_type) {
+        gtk_combo_box_set_active_iter (combo_box, &iter);
+        break;
+      }
+    } while (gtk_tree_model_iter_next (model, &iter));
+  }
+}
+
+static void
+apply_connection_type_page (EkigaAssistant *assistant)
+{
+  GtkComboBox *combo_box = GTK_COMBO_BOX (assistant->priv->connection_type);
+  GtkTreeModel *model = gtk_combo_box_get_model (combo_box);
+  GtkTreeIter iter;
+  gint connection_type = NET_CUSTOM;
+
+  if (gtk_combo_box_get_active_iter (combo_box, &iter))
+    gtk_tree_model_get (model, &iter, CNX_CODE_COLUMN, &connection_type, -1);
+
+  /* Set the connection quality settings */
+  switch (connection_type) {
+    case NET_PSTN:
+      gm_conf_set_int (VIDEO_CODECS_KEY "frame_rate", 5);
+      gm_conf_set_int (VIDEO_CODECS_KEY "maximum_video_tx_bitrate", 8);
+      gm_conf_set_bool (VIDEO_CODECS_KEY "enable_video", FALSE);
+      break;
+
+    case NET_ISDN:
+      gm_conf_set_int (VIDEO_CODECS_KEY "frame_rate", 10);
+      gm_conf_set_int (VIDEO_CODECS_KEY "maximum_video_tx_bitrate", 16);
+      gm_conf_set_bool (VIDEO_CODECS_KEY "enable_video", FALSE);
+      break;
+
+    case NET_DSL:
+      gm_conf_set_int (VIDEO_CODECS_KEY "frame_rate", 15);
+      gm_conf_set_int (VIDEO_CODECS_KEY "maximum_video_tx_bitrate", 64);
+      gm_conf_set_bool (VIDEO_CODECS_KEY "enable_video", TRUE);
+      break;
+
+    case NET_LAN:
+      gm_conf_set_int (VIDEO_CODECS_KEY "frame_rate", 25);
+      gm_conf_set_int (VIDEO_CODECS_KEY "maximum_video_tx_bitrate", 800);
+      gm_conf_set_bool (VIDEO_CODECS_KEY "enable_video", TRUE);
+      break;
+
+    case NET_CUSTOM:
+    default:
+      break; /* don't touch anything */
+  }
+
+  gm_conf_set_int (GENERAL_KEY "kind_of_net", connection_type);
+}
+
+/**********************
+ * Audio manager page *
+ **********************/
+
+static void
+create_audio_manager_page (EkigaAssistant *assistant)
+{
+  GtkWidget *vbox;
+  GtkWidget *label;
+  gchar *text;
+
+  vbox = create_page (assistant, _("Audio Manager"), GTK_ASSISTANT_PAGE_CONTENT);
+
+  label = gtk_label_new (_("Please choose your audio manager:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  assistant->priv->audio_manager = gtk_combo_box_new_text ();
+  gtk_box_pack_start (GTK_BOX (vbox), assistant->priv->audio_manager, FALSE, FALSE, 0);
+
+  label = gtk_label_new (NULL);
+#ifdef WIN32
+  text = g_strdup_printf ("<i>%s</i>", _("The audio manager is the plugin that "
+                          "will manage your audio devices. WindowsMultimedia "
+                          "is probably the best choice when available."));
+#else
+  text = g_strdup_printf ("<i>%s</i>", _("The audio manager is the plugin that "
+                          "will manage your audio devices. ALSA is probably "
+                          "the best choice when available."));
+#endif
+  gtk_label_set_markup (GTK_LABEL (label), text);
+  g_free (text);
+  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
+
+  assistant->priv->audio_manager_page = vbox;
+  gtk_widget_show_all (vbox);
+  gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), vbox, TRUE);
+}
+
+static void
+prepare_audio_manager_page (EkigaAssistant *assistant)
+{
+  char **array;
+  gchar *audio_manager;
+
+  array = GnomeMeeting::Process ()->GetAudioPlugins ().ToCharArray ();
+  audio_manager = gm_conf_get_string (AUDIO_DEVICES_KEY "plugin");
+
+  update_combo_box (GTK_COMBO_BOX (assistant->priv->audio_manager),
+                    array, audio_manager);
+  free (array);
+}
+
+static void
+apply_audio_manager_page (EkigaAssistant *assistant)
+{
+  GtkComboBox *combo_box;
+  gchar *audio_manager;
+
+  combo_box = GTK_COMBO_BOX (assistant->priv->audio_manager);
+  audio_manager = gtk_combo_box_get_active_text (combo_box);
+  if (audio_manager) {
+    gm_conf_set_string (AUDIO_DEVICES_KEY "plugin", audio_manager);
+    g_free (audio_manager);
+  }
+}
+
+/**********************
+ * Audio devices page *
+ **********************/
+
+static void
+create_audio_devices_page (EkigaAssistant *assistant)
+{
+  GtkWidget *vbox;
+  GtkWidget *label;
+  gchar *text;
+
+  vbox = create_page (assistant, _("Audio Devices"), GTK_ASSISTANT_PAGE_CONTENT);
+
+  label = gtk_label_new (_("Please choose the audio output device:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  assistant->priv->audio_player = gtk_combo_box_new_text ();
+  gtk_box_pack_start (GTK_BOX (vbox), assistant->priv->audio_player, FALSE, FALSE, 0);
+
+  label = gtk_label_new (NULL);
+  text = g_strdup_printf ("<i>%s</i>", _("The audio output device is the device "
+                          " managed by the audio manager that will be used to "
+                          "play audio."));
+  gtk_label_set_markup (GTK_LABEL (label), text);
+  g_free (text);
+  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
+
+  label = gtk_label_new ("");
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  label = gtk_label_new (_("Please choose the audio input device:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  assistant->priv->audio_recorder = gtk_combo_box_new_text ();
+  gtk_box_pack_start (GTK_BOX (vbox), assistant->priv->audio_recorder, FALSE, FALSE, 0);
+
+  label = gtk_label_new (NULL);
+  text = g_strdup_printf ("<i>%s</i>", _("The audio input device is the device "
+                          "managed by the audio manager that will be used to "
+                          "record your voice."));
+  gtk_label_set_markup (GTK_LABEL (label), text);
+  g_free (text);
+  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
+
+  label = gtk_label_new ("");
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  assistant->priv->audio_devices_page = vbox;
+  gtk_widget_show_all (vbox);
+  gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), vbox, TRUE);
+}
+
+static void
+prepare_audio_devices_page (EkigaAssistant *assistant)
+{
+  GMManager *manager;
+  gchar *audio_manager;
+  gchar *player;
+  gchar *recorder;
+  PStringArray devices;
+  char **array;
+
+  manager = dynamic_cast<GMManager *> (assistant->priv->core->get ("opal-component"));
+
+  audio_manager = gtk_combo_box_get_active_text (GTK_COMBO_BOX (assistant->priv->audio_manager));
+
+  player = gm_conf_get_string (AUDIO_DEVICES_KEY "output_device");
+  recorder = gm_conf_get_string (AUDIO_DEVICES_KEY "input_device");
+
+  /* FIXME: We should use DetectDevices, however DetectDevices
+   * works only for the currently selected audio and video plugins,
+   * not for a random one.
+   */
+  gnomemeeting_sound_daemons_suspend ();
+
+  devices = PSoundChannel::GetDeviceNames (audio_manager, PSoundChannel::Player);
+  if (devices.GetSize () == 0)
+    devices += PString (_("No device found"));
+
+  array = devices.ToCharArray ();
+  update_combo_box (GTK_COMBO_BOX (assistant->priv->audio_player), array, player);
+  free (array);
+
+  devices = PSoundChannel::GetDeviceNames (audio_manager, PSoundChannel::Recorder);
+  if (devices.GetSize () == 0)
+    devices += PString (_("No device found"));
+
+  array = devices.ToCharArray ();
+  update_combo_box (GTK_COMBO_BOX (assistant->priv->audio_recorder), array, player);
+  free (array);
+
+  gnomemeeting_sound_daemons_resume ();
+
+  g_free (player);
+  g_free (recorder);
+}
+
+static void
+apply_audio_devices_page (EkigaAssistant *assistant)
+{
+  GtkComboBox *combo_box;
+  gchar *device;
+
+  combo_box = GTK_COMBO_BOX (assistant->priv->audio_player);
+  device = gtk_combo_box_get_active_text (combo_box);
+  if (device) {
+    gm_conf_set_string (AUDIO_DEVICES_KEY "output_device", device);
+    g_free (device);
+  }
+
+  combo_box = GTK_COMBO_BOX (assistant->priv->audio_recorder);
+  device = gtk_combo_box_get_active_text (combo_box);
+  if (device) {
+    gm_conf_set_string (AUDIO_DEVICES_KEY "input_device", device);
+    g_free (device);
+  }
+
+}
+
+/**********************
+ * Video manager page *
+ **********************/
+
+static void
+create_video_manager_page (EkigaAssistant *assistant)
+{
+  GtkWidget *vbox;
+  GtkWidget *label;
+  gchar *text;
+
+  vbox = create_page (assistant, _("Video manager"), GTK_ASSISTANT_PAGE_CONTENT);
+
+  label = gtk_label_new (_("Please choose your video manager:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  assistant->priv->video_manager = gtk_combo_box_new_text ();
+  gtk_box_pack_start (GTK_BOX (vbox), assistant->priv->video_manager, FALSE, FALSE, 0);
+
+  label = gtk_label_new (NULL);
+  text = g_strdup_printf ("<i>%s</i>", _("The video manager is the plugin that "
+                          "will manage your video devices, Video4Linux is the "
+                          "most common choice if you own a webcam."));
+  gtk_label_set_markup (GTK_LABEL (label), text);
+  g_free (text);
+  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
+
+  assistant->priv->video_manager_page = vbox;
+  gtk_widget_show_all (vbox);
+  gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), vbox, TRUE);
+}
+
+static void
+prepare_video_manager_page (EkigaAssistant *assistant)
+{
+  char **array;
+  gchar *video_manager;
+
+  array = GnomeMeeting::Process ()->GetVideoPlugins ().ToCharArray ();
+  video_manager = gm_conf_get_string (VIDEO_DEVICES_KEY "plugin");
+
+  update_combo_box (GTK_COMBO_BOX (assistant->priv->video_manager),
+                    array, video_manager);
+  free (array);
+}
+
+static void
+apply_video_manager_page (EkigaAssistant *assistant)
+{
+  GtkComboBox *combo_box;
+  gchar *video_manager;
+
+  combo_box = GTK_COMBO_BOX (assistant->priv->video_manager);
+  video_manager = gtk_combo_box_get_active_text (combo_box);
+  if (video_manager) {
+    gm_conf_set_string (VIDEO_DEVICES_KEY "plugin", video_manager);
+    g_free (video_manager);
+  }
+}
+
+/****************
+ * Summary page *
+ ****************/
+
+static void
+create_summary_page (EkigaAssistant *assistant)
+{
+  GtkWidget *vbox;
+  GtkWidget *label;
+  GtkWidget *sw;
+  GtkWidget *tree;
+  GtkTreeViewColumn *column;
+  GtkCellRenderer *cell;
+
+  vbox = create_page (assistant, _("Configuration Complete"), GTK_ASSISTANT_PAGE_CONFIRM);
+
+  label = gtk_label_new (_("You have now finished the Ekiga configuration. All "
+                         "the settings can be changed in the Ekiga preferences. "
+                         "Enjoy!"));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  label = gtk_label_new (_("Configuration summary:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  GtkWidget *align = gtk_alignment_new (0.5, 0.0, 0.0, 1.0);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
+
+  sw = gtk_scrolled_window_new (NULL, NULL);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN);
+  gtk_container_add (GTK_CONTAINER (align), sw);
+
+  assistant->priv->summary_model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
+
+  tree = gtk_tree_view_new ();
+  gtk_tree_view_set_model (GTK_TREE_VIEW (tree),
+                           GTK_TREE_MODEL (assistant->priv->summary_model));
+  gtk_container_add (GTK_CONTAINER (sw), tree);
+
+  cell = gtk_cell_renderer_text_new ();
+  column = gtk_tree_view_column_new_with_attributes ("Option", cell,
+                                                     "text", SUMMARY_KEY_COLUMN,
+                                                     NULL);
+  gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
+
+  cell = gtk_cell_renderer_text_new ();
+  column = gtk_tree_view_column_new_with_attributes ("Value", cell,
+                                                     "text", SUMMARY_VALUE_COLUMN,
+                                                     NULL);
+  gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
+
+  assistant->priv->summary_page = vbox;
+  gtk_widget_show_all (vbox);
+}
+
+static void prepare_summary_page (EkigaAssistant *assistant)
+{
+  GtkListStore *model = assistant->priv->summary_model;
+  GtkTreeIter iter;
+  GtkTreeIter citer;
+  gchar *value;
+
+  gtk_list_store_clear (model);
+
+  /* The full name */
+  gtk_list_store_append (model, &iter);
+  gtk_list_store_set (model, &iter,
+                      SUMMARY_KEY_COLUMN, "Full name",
+                      SUMMARY_VALUE_COLUMN, gtk_entry_get_text (GTK_ENTRY (assistant->priv->name)),
+                      -1);
+
+  /* The user name */
+  gtk_list_store_append (model, &iter);
+  gtk_list_store_set (model, &iter,
+                      SUMMARY_KEY_COLUMN, "Username",
+                      SUMMARY_VALUE_COLUMN, gtk_entry_get_text (GTK_ENTRY (assistant->priv->username)),
+                      -1);
+
+  /* The connection type */
+  if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (assistant->priv->connection_type), &citer)) {
+    GtkTreeModel *cmodel = gtk_combo_box_get_model (GTK_COMBO_BOX (assistant->priv->connection_type));
+    gtk_tree_model_get (cmodel, &citer, CNX_LABEL_COLUMN, &value, -1);
+
+    gtk_list_store_append (model, &iter);
+    gtk_list_store_set (model, &iter,
+                        SUMMARY_KEY_COLUMN, "Connection type",
+                        SUMMARY_VALUE_COLUMN, value,
+                        -1);
+    g_free (value);
+  }
+
+  /* The audio manager */
+  gtk_list_store_append (model, &iter);
+  value = gtk_combo_box_get_active_text (GTK_COMBO_BOX (assistant->priv->audio_manager));
+  gtk_list_store_set (model, &iter,
+                      SUMMARY_KEY_COLUMN, "Audio manager",
+                      SUMMARY_VALUE_COLUMN, value,
+                      -1);
+  g_free (value);
+
+  /* The audio playing device */
+  gtk_list_store_append (model, &iter);
+  value = gtk_combo_box_get_active_text (GTK_COMBO_BOX (assistant->priv->audio_player));
+  gtk_list_store_set (model, &iter,
+                      SUMMARY_KEY_COLUMN, "Audio player",
+                      SUMMARY_VALUE_COLUMN, value,
+                      -1);
+  g_free (value);
+
+  /* The audio recording device */
+  gtk_list_store_append (model, &iter);
+  value = gtk_combo_box_get_active_text (GTK_COMBO_BOX (assistant->priv->audio_recorder));
+  gtk_list_store_set (model, &iter,
+                      SUMMARY_KEY_COLUMN, "Audio recorder",
+                      SUMMARY_VALUE_COLUMN, value,
+                      -1);
+  g_free (value);
+
+  /* The video manager */
+  gtk_list_store_append (model, &iter);
+  value = gtk_combo_box_get_active_text (GTK_COMBO_BOX (assistant->priv->video_manager));
+  gtk_list_store_set (model, &iter,
+                      SUMMARY_KEY_COLUMN, "Video manager",
+                      SUMMARY_VALUE_COLUMN, value,
+                      -1);
+  g_free (value);
+
+  /* The ekiga.org account */
+  gtk_list_store_append (model, &iter);
+  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (assistant->priv->skip_ekiga_net))) {
+    value = g_strdup_printf ("sip:%s@ekiga.net",
+                             gtk_entry_get_text (GTK_ENTRY (assistant->priv->username)));
+    gtk_list_store_set (model, &iter,
+                        SUMMARY_KEY_COLUMN, "SIP URI",
+                        SUMMARY_VALUE_COLUMN, value,
+                        -1);
+    g_free (value);
+  }
+  else {
+    gtk_list_store_set (model, &iter,
+                        SUMMARY_KEY_COLUMN, "SIP URI",
+                        SUMMARY_VALUE_COLUMN, "None",
+                        -1);
+  }
+}
+
+/****************
+ * Window stuff *
+ ****************/
+
+static void
+ekiga_assistant_init (EkigaAssistant *assistant)
+{
+  assistant->priv = G_TYPE_INSTANCE_GET_PRIVATE (assistant, EKIGA_TYPE_ASSISTANT,
+                                                 EkigaAssistantPrivate);
+
+  gtk_window_set_default_size (GTK_WINDOW (assistant), 500, 300);
+  gtk_window_set_position (GTK_WINDOW (assistant), GTK_WIN_POS_CENTER);
+  gtk_container_set_border_width (GTK_CONTAINER (assistant), 12);
+
+  assistant->priv->icon = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
+                                                    "ekiga", 48,
+                                                    (GtkIconLookupFlags) 0, NULL);
+
+  create_welcome_page (assistant);
+  create_personal_data_page (assistant);
+  create_ekiga_net_page (assistant);
+  create_connection_type_page (assistant);
+  create_audio_manager_page (assistant);
+  create_audio_devices_page (assistant);
+  create_video_manager_page (assistant);
+  create_summary_page (assistant);
+
+  /* FIXME: what the hell is it needed for? */
+  g_object_set_data (G_OBJECT (assistant), "window_name", (gpointer) "assistant");
+}
+
+static void
+ekiga_assistant_prepare (GtkAssistant *gtkassistant,
+                         GtkWidget    *page)
+{
+  EkigaAssistant *assistant = EKIGA_ASSISTANT (gtkassistant);
+  gchar *title;
+
+  title = g_strdup_printf (_("Ekiga Configuration Assistant (%d of %d)"),
+                           gtk_assistant_get_current_page (gtkassistant) + 1,
+                           gtk_assistant_get_n_pages (gtkassistant));
+
+  gtk_window_set_title (GTK_WINDOW (assistant), title);
+  g_free (title);
+
+  if (page == assistant->priv->personal_data_page) {
+    prepare_personal_data_page (assistant);
+    return;
+  }
+
+  if (page == assistant->priv->ekiga_net_page) {
+    prepare_ekiga_net_page (assistant);
+    return;
+  }
+
+  if (page == assistant->priv->connection_type_page) {
+    prepare_connection_type_page (assistant);
+    return;
+  }
+
+  if (page == assistant->priv->audio_manager_page) {
+    prepare_audio_manager_page (assistant);
+    return;
+  }
+
+  if (page == assistant->priv->audio_devices_page) {
+    prepare_audio_devices_page (assistant);
+    return;
+  }
+
+  if (page == assistant->priv->video_manager_page) {
+    prepare_video_manager_page (assistant);
+    return;
+  }
+
+  if (page == assistant->priv->summary_page) {
+    prepare_summary_page (assistant);
+    return;
+  }
+}
+
+static void
+ekiga_assistant_apply (GtkAssistant *gtkassistant)
+{
+  EkigaAssistant *assistant = EKIGA_ASSISTANT (gtkassistant);
+
+  GMManager *manager;
+
+  GtkWidget *main_window;
+  GtkWidget *prefs_window;
+
+  const int schema_version = MAJOR_VERSION * 1000
+                           + MINOR_VERSION * 10
+                           + BUILD_NUMBER;
+
+  apply_personal_data_page (assistant);
+  apply_ekiga_net_page (assistant);
+  apply_connection_type_page (assistant);
+  apply_audio_manager_page (assistant);
+  apply_audio_devices_page (assistant);
+  apply_video_manager_page (assistant);
+
+  manager = dynamic_cast<GMManager *> (assistant->priv->core->get ("opal-component"));
+  main_window = GnomeMeeting::Process ()->GetMainWindow ();
+
+  /* Hide the druid and show the main Ekiga window */
+  gtk_widget_hide (GTK_WIDGET (assistant));
+  gtk_assistant_set_current_page (gtkassistant, 0);
+  gnomemeeting_window_show (main_window);
+
+  /* Will be done through the config if the manager changes, but not
+     if the manager doesn't change */
+  gdk_threads_leave ();
+  GnomeMeeting::Process ()->DetectDevices ();
+  gdk_threads_enter ();
+
+  /* Update the version number */
+  gm_conf_set_int (GENERAL_KEY "version", schema_version);
+}
+
+static void
+ekiga_assistant_cancel (GtkAssistant *gtkassistant)
+{
+  GtkWidget *main_window;
+
+  main_window = GnomeMeeting::Process ()->GetMainWindow ();
+
+  gtk_widget_hide (GTK_WIDGET (gtkassistant));
+  gtk_assistant_set_current_page (gtkassistant, 0);
+  gnomemeeting_window_show (main_window);
+}
+
+static void
+ekiga_assistant_finalize (GObject *object)
+{
+  EkigaAssistant *assistant = EKIGA_ASSISTANT (object);
+
+  g_object_unref (assistant->priv->icon);
+}
+
+static void
+ekiga_assistant_class_init (EkigaAssistantClass *klass)
+{
+  GtkAssistantClass *assistant_class = GTK_ASSISTANT_CLASS (klass);
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  assistant_class->prepare = ekiga_assistant_prepare;
+  assistant_class->apply = ekiga_assistant_apply;
+  assistant_class->cancel = ekiga_assistant_cancel;
+
+  object_class->finalize = ekiga_assistant_finalize;
+
+  g_type_class_add_private (klass, sizeof (EkigaAssistantPrivate));
+}
+
+GtkWidget *
+ekiga_assistant_new (Ekiga::ServiceCore *core)
+{
+  EkigaAssistant *assistant;
+
+  assistant = EKIGA_ASSISTANT (g_object_new (EKIGA_TYPE_ASSISTANT, NULL));
+  assistant->priv->core = core;
+
+  /* FIXME: move this into the caller */
+  g_signal_connect (assistant, "cancel",
+                    G_CALLBACK (gtk_widget_hide), NULL);
+
+  return GTK_WIDGET (assistant);
+}
+
+/* ex:set ts=2 sw=2 et: */
diff --git a/src/gui/assistant.h b/src/gui/assistant.h
new file mode 100644
index 0000000..31954eb
--- /dev/null
+++ b/src/gui/assistant.h
@@ -0,0 +1,78 @@
+/* Ekiga -- A VoIP and Video-Conferencing application
+ * Copyright (C) 2000-2006 Damien Sandras
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ *
+ * Ekiga is licensed under the GPL license and as a special exception,
+ * you have permission to link or otherwise combine this program with the
+ * programs OPAL, OpenH323 and PWLIB, and distribute the combination,
+ * without applying the requirements of the GNU GPL to the OPAL, OpenH323
+ * and PWLIB programs, as long as you do follow the requirements of the
+ * GNU GPL for all the rest of the software thus combined.
+ */
+
+
+/*
+ *                         druid.h  -  description
+ *                         -----------------------
+ *   begin                : Mon May 1 2002
+ *   copyright            : (C) 2000-2006 by Damien Sandras
+ *                          (C) 2008 by Steve Frécinaux
+ *   description          : This file contains all the functions needed to
+ *                          build the assistant.
+ */
+
+
+#ifndef __EKIGA_ASSISTANT_H__
+#define __EKIGA_ASSISTANT_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+enum {
+  NET_PSTN,
+  NET_ISDN,
+  NET_DSL,
+  NET_LAN,
+  NET_CUSTOM
+};
+
+#define EKIGA_TYPE_ASSISTANT               (ekiga_assistant_get_type ())
+#define EKIGA_ASSISTANT(obj)               (G_TYPE_CHECK_INSTANCE_CAST ((obj), EKIGA_TYPE_ASSISTANT, EkigaAssistant))
+#define EKIGA_ASSISTANT_CLASS(klass)       (G_TYPE_CHECK_CLASS_CAST ((klass), EKIGA_TYPE_ASSISTANT, EkigaAssistantClass))
+#define EKIGA_IS_ASSISTANT(obj)            (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EKIGA_TYPE_ASSISTANT))
+#define EKIGA_IS_ASSISTANT_CLASS(klass)    (G_TYPE_CHECK_CLASS_TYPE ((klass), EKIGA_TYPE_ASSISTANT))
+
+typedef struct _EkigaAssistantPrivate       EkigaAssistantPrivate;
+typedef struct _EkigaAssistant              EkigaAssistant;
+
+struct _EkigaAssistant {
+  GtkAssistant           parent;
+  EkigaAssistantPrivate *priv;
+};
+
+typedef GtkAssistantClass EkigaAssistantClass;
+
+GType        ekiga_assistant_get_type   ();
+GtkWidget   *ekiga_assistant_new        (Ekiga::ServiceCore *core);
+
+
+G_END_DECLS
+
+#endif /* __EKIGA_ASSISTANT_H__ */
+
+/* ex:set ts=2 sw=2 et: */
diff --git a/src/gui/conf.cpp b/src/gui/conf.cpp
index 52a0801..25853ee 100644
--- a/src/gui/conf.cpp
+++ b/src/gui/conf.cpp
@@ -51,7 +51,7 @@
 
 #include "ekiga.h"
 #include "preferences.h"
-#include "druid.h"
+#include "assistant.h"
 #include "accounts.h"
 #include "main.h"
 #include "misc.h"
diff --git a/src/gui/druid.cpp b/src/gui/druid.cpp
deleted file mode 100644
index fe0b7b0..0000000
--- a/src/gui/druid.cpp
+++ /dev/null
@@ -1,1736 +0,0 @@
-
-/* Ekiga -- A VoIP and Video-Conferencing application
- * Copyright (C) 2000-2006 Damien Sandras
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- *
- * Ekiga is licensed under the GPL license and as a special exception,
- * you have permission to link or otherwise combine this program with the
- * programs OPAL, OpenH323 and PWLIB, and distribute the combination,
- * without applying the requirements of the GNU GPL to the OPAL, OpenH323
- * and PWLIB programs, as long as you do follow the requirements of the
- * GNU GPL for all the rest of the software thus combined.
- */
-
-
-/*
- *                         druid.cpp  -  description
- *                         --------------------------
- *   begin                : Mon May 1 2002
- *   copyright            : (C) 2000-2006 by Damien Sandras
- *   description          : This file contains all the functions needed to
- *                          build the druid.
- */
-
-
-#include "config.h"
-
-#include "druid.h"
-#include "ekiga.h"
-#include "preferences.h"
-#include "audio.h"
-#include "misc.h"
-#include "callbacks.h"
-
-#include "gmdialog.h"
-#include "gmstockicons.h"
-#include "gmconf.h"
-
-#include "toolbox/toolbox.h"
-
-#ifdef WIN32
-#include "platform/winpaths.h"
-#endif
-
-#ifndef HAVE_GNOME
-#include "druid/gnome-druid.h"
-#include "druid/gnome-druid-page-edge.h"
-#include "druid/gnome-druid-page-standard.h"
-#else
-#undef _
-#undef N_
-#include <gnome.h>
-#endif
-
-
-/* Private data for the GmObject */
-struct _GmDruidWindow
-{
-  _GmDruidWindow (Ekiga::ServiceCore & _core) : core (_core) {};
-
-  GnomeDruid *druid;
-  GtkWidget *audio_test_button;
-  GtkWidget *video_test_button;
-  GtkWidget *kind_of_net;
-  GtkWidget *progress;
-  GtkWidget *audio_manager;
-  GtkWidget *video_manager;
-  GtkWidget *audio_player;
-  GtkWidget *audio_recorder;
-  GtkWidget *name;
-  GtkWidget *use_gnomemeeting_net;
-  GtkWidget *username;
-  GtkWidget *password;
-  GnomeDruidPageEdge *page_edge;
-
-  Ekiga::ServiceCore &core;
-};
-
-
-typedef struct _GmDruidWindow GmDruidWindow;
-
-#define GM_DRUID_WINDOW(x) (GmDruidWindow *) (x)
-
-/* make the page numbering less magic */
-enum {
-  PAGE_ZERO, /* doesn't exist */
-  PAGE_FIRST,
-  PAGE_PERSONAL_DATA,
-  PAGE_EKIGA_DOT_NET,
-  PAGE_CONNECTION_TYPE,
-  PAGE_AUDIO_MANAGER,
-  PAGE_AUDIO_DEVICES,
-  PAGE_VIDEO_MANAGER,
-  PAGE_VIDEO_DEVICES,
-  PAGE_LAST
-};
-
-/* presenting the kind of net to the user */
-enum {
-  COLUMN_NET_COMMENT,
-  COLUMN_NET_CODE
-};
-
-/* presenting a translated video device name to the user */
-enum {
-  COLUMN_VIDEO_DEVICE_RAW,
-  COLUMN_VIDEO_DEVICE_TRANSLATED  
-};
-
-/* Declarations */
-
-/* GUI functions */
-
-/* DESCRIPTION  : /
- * BEHAVIOR     : Frees a GmDruidWindow and its content.
- * PRE          : A non-NULL pointer to a GmDruidWindow.
- */
-static void gm_dw_destroy (gpointer d);
-
-
-/* DESCRIPTION  : /
- * BEHAVIOR     : Returns a pointer to the private GmDruidWindow
- *                used by the druid window GMObject.
- * PRE          : The given GtkWidget pointer must be a druid window GMObject.
- */
-static GmDruidWindow *gm_dw_get_dw (GtkWidget *druid_window);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Checks if the "Next" button of the "Personal Information"
- *                 druid page can be sensitive or not. It will if the name
- *                 field is ok.
- * PRE          :  The druid window GMObject.
- */
-static void gm_dw_check_name (GtkWidget *druid_window);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Checks if the "Next" button of the "gnomemeeting_net URL"
- *                 druid page can be sensitive or not. It will if all fields
- *                 are not empty, or if registering is disabled.
- * PRE          :  The druid window GMObject.
- */
-static void gm_dw_check_gnomemeeting_net (GtkWidget *druid_window);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Updates the given GtkComboBox with the given array and
- * 		   sets the default value.
- * PRE          :  /
- */
-static void gm_dw_combo_box_update (GtkWidget *combo_box,
-				      gchar **options,
-				      gchar *default_value);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Retrieves the data from the various fields of the druid 
- * 		   window GMObject and fills the parameters in.
- * PRE          :  A valid pointer to the druid window GMObject.
- */
-static void gm_dw_get_all_data (GtkWidget *druid_window,
-				gchar *&name,
-				gchar *&username,
-				gchar *&connection_type,
-				gchar *&audio_manager,
-				gchar *&player,
-				gchar *&recorder,
-				gchar *&video_manager,
-				gchar *&video_recorder);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Init the welcome page.
- * PRE          :  A valid pointer to the druid window GMObject. Followed by
- * 		   the current page number.
- */
-static void gm_dw_init_welcome_page (GtkWidget *druid_window, 
-				     int t);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Init the personal data page.
- * PRE          :  A valid pointer to the druid window GMObject. Followed by
- * 		   the current page number and the total pages number.
- */
-static void gm_dw_init_personal_data_page (GtkWidget *druid_window, 
-					   int p,
-					   int t);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Init the GnomeMeeting.NET url page.
- * PRE          :  A valid pointer to the druid window GMObject. Followed by
- * 		   the current page number and the total pages number.
- */
-static void gm_dw_init_gnomemeeting_net_page (GtkWidget *druid_window,
-					      int p,
-					      int t);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Init the connection type page.
- * PRE          :  A valid pointer to the druid window GMObject. Followed by
- * 		   the current page number and the total pages number.
- */
-static void gm_dw_init_connection_type_page (GtkWidget *druid_window,
-					     int p,
-					     int t);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Init the audio plugin page.
- * PRE          :  A valid pointer to the druid window GMObject. Followed by
- * 		   the current page number and the total pages number.
- */
-static void gm_dw_init_audio_manager_page (GtkWidget *druid_window,
-					   int p,
-					   int t);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Init the audio devices page.
- * PRE          :  A valid pointer to the druid window GMObject. Followed by
- * 		   the current page number and the total page number.
- */
-static void gm_dw_init_audio_devices_page (GtkWidget *druid_window,
-					   int p,
-					   int t);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Init the video manager page.
- * PRE          :  A valid pointer to the druid window GMObject. Followed by
- * 		   the current page number and the total pages number.
- */
-static void gm_dw_init_video_manager_page (GtkWidget *druid_window,
-					   int p,
-					   int t);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Init the summary page.
- * PRE          :  A valid pointer to the druid window GMObject. Followed by
- * 		   the total pages number.
- */
-static void gm_dw_init_final_page (GtkWidget *druid_window,
-				   int t);
-
-
-/* GTK Callbacks */
-
-/* DESCRIPTION  : Timeout function called with delay of 2 seconds to update
- * 		  the kind_of_net GConf key to avoid collision with
- * 		  other notifiers triggered when video gconf related keys
- * 		  are updated (leading to kind_of_net being set to 5). 
- * 		  Ugly hack.
- * BEHAVIOR     : Updates the key.
- * PRE          : GPOINTER_TO_INT (data) = a NET_* value
- */
-static gint kind_of_net_hack_cb (gpointer data);
-
-
-/* DESCRIPTION  : Callback called when the audio test button is clicked in the
- * 		  druid window GMObject.
- * BEHAVIOR     : Start or stop the GMManager Audio Tester following
- * 		  the toggle is active or not.
- * PRE          : A valid pointer to a valid druid window GMObject.
- */
-static void audio_test_button_clicked_cb (GtkWidget *w,
-					  gpointer data);
-
-
-/* DESCRIPTION  :  This callback is called when the user clicks on Cancel.
- * BEHAVIOR     :  Hides the druid and shows GM.
- * PRE          :  A valid pointer to a valid druid window GMObject.
- */
-static void cancel_cb (GtkWidget *w,
-		       gpointer data);
-
-
-/* DESCRIPTION  :  This callback is called when the user clicks on finish.
- * BEHAVIOR     :  Destroys the druid, update config settings and update
- *                 the internal structures for devices and the corresponding
- *                 prefs window menus. Displays a welcome message.
- * PRE          :  A valid pointer to a valid druid window GMObject.
- */
-static void finish_cb (GnomeDruidPage *p,
-		       GtkWidget *w,
-		       gpointer data);
-
-
-/* DESCRIPTION  :  This callback is called when the user destroys the druid.
- * BEHAVIOR     :  Exits. 
- * PRE          :  A Valid pointer to a valid druid window GMObject. 
- */
-static void delete_event_cb (GtkWidget *w,
-			     GdkEventAny *ev,
-			     gpointer data);
-
-
-/* DESCRIPTION  :  Called when the user changes an info in the Personal
- *                 Information page.
- * BEHAVIOR     :  Checks if the "Next" button of the "Personal Information"
- *                 druid page can be sensitive or not. It will if the name
- *                 field is ok.
- * PRE          :  The druid window GMObject.
- */
-static void name_changed_cb (GtkWidget *w,
-			     gpointer data);
-
-
-/* DESCRIPTION  :  Called when the user changes info in the gnomemeeting.net 
- * 		   account page.
- * BEHAVIOR     :  Checks if the "Next" button of the druid page can be 
- * 		   sensitive or not. It will if both fields are not empty
- *                 or if registering is disabled.
- * PRE          :  The druid window GMObject.
- */
-static void info_changed_cb (GtkWidget *w,
-			     gpointer data);
-
-
-/* DESCRIPTION  :  Called when the user changes the registering toggle.
- * BEHAVIOR     :  Checks if the "Next" button of the druid page
- *                 can be sensitive or not. It will if all fields
- *                 are ok, or if registering is disabled. (Calls the above
- *                 function).
- * PRE          :  The druid window GMObject.
- */
-static void use_gnomemeeting_net_toggled_cb (GtkToggleButton *b,
-					     gpointer data);
-
-
-/* DESCRIPTION  :  Called when the user switches from one page to another.
- * BEHAVIOR     :  Updates the Back/Next buttons accordingly following
- * 		   if all fields are correct or not.
- * PRE          :  /
- */
-static void prepare_welcome_page_cb (GnomeDruidPage *page,
-				     GnomeDruid *druid,
-				     gpointer data);
-
-
-/* DESCRIPTION  :  Called when the user switches from one page to another.
- * BEHAVIOR     :  Updates the Back/Next buttons accordingly following
- * 		   if all fields are correct or not. Updates the fields
- * 		   contents for all pages of the druid following the current
- * 		   preferences.
- * PRE          :  The druid window GMObject.
- */
-static void prepare_personal_data_page_cb (GnomeDruidPage *page,
-					   GnomeDruid *druid,
-					   gpointer data);
-
-
-/* DESCRIPTION  :  Called when the user switches from one page to another.
- * BEHAVIOR     :  Updates the Back/Next buttons accordingly following
- * 		   if all fields are correct (not register and 
- * 		   no username/password, or
- * 		   register and an username/password specified).
- * PRE          :  The druid window GMObject.
- */
-static void prepare_gnomemeeting_net_page_cb (GnomeDruidPage *page,
-					      GnomeDruid *druid,
-					      gpointer data);
-
-
-/* DESCRIPTION  :  Called when the user switches from one page to another.
- * BEHAVIOR     :  Updates the Back/Next buttons accordingly following
- * 		   if all fields are correct or not. Updates the audio
- * 		   devices list following the audio manager choosen at the
- * 		   previous page.
- * PRE          :  The druid window GMObject.
- */
-static void prepare_audio_devices_page_cb (GnomeDruidPage *page,
-					   GnomeDruid *druid,
-					   gpointer data);
-
-
-/* DESCRIPTION  :  Called when the user switches from one page to another.
- * BEHAVIOR     :  Updates the Back/Next buttons accordingly following
- * 		   if all fields are correct or not. Prepares the summary
- * 		   of preferences.
- * PRE          :  The druid window GMObject.
- */
-static void prepare_final_page_cb (GnomeDruidPage *page,
-				   GnomeDruid *druid,
-				   gpointer data);
-
-
-/* DESCRIPTION  :  Called when the user clicks on an URL to get a SIP account.
- * BEHAVIOR     :  Fires up a browser.
- * PRE          :  /
- */
-static void gnomemeeting_net_consult_cb (GtkWidget *button,
-					 gpointer data);
-
-
-static void 
-gm_dw_destroy (gpointer d)
-{
-  GmDruidWindow *dw = NULL;
-  
-  g_return_if_fail (d != NULL);
- 
-  dw = GM_DRUID_WINDOW (d);
-  
-  delete (dw);
-}
-
-
-GmDruidWindow *
-gm_dw_get_dw (GtkWidget *druid_window)
-{
-    g_return_val_if_fail (druid_window != NULL, NULL);
-
-      return GM_DRUID_WINDOW (g_object_get_data (G_OBJECT (druid_window), "GMObject"));
-}
-
-
-static void 
-gm_dw_check_name (GtkWidget *druid_window)
-{
-  GmDruidWindow *dw = NULL;
-  
-  gchar ** couple = NULL;
-
-  g_return_if_fail (druid_window != NULL);
-
-  dw = gm_dw_get_dw (druid_window);
-  
-  couple = g_strsplit (gtk_entry_get_text (GTK_ENTRY (dw->name)), " ", 2);
-  
-  if (couple && couple [0] && couple [1]
-      && !PString (couple [0]).Trim ().IsEmpty ()
-      && !PString (couple [1]).Trim ().IsEmpty ()) 
-    gnome_druid_set_buttons_sensitive (dw->druid, TRUE, TRUE, TRUE, FALSE);
-  else
-    gnome_druid_set_buttons_sensitive (dw->druid, TRUE, FALSE, TRUE, FALSE);
-}
-
-
-static void 
-gm_dw_check_gnomemeeting_net (GtkWidget *druid_window)
-{
-  GmDruidWindow *dw = NULL;
-  
-  const char *username = NULL;
-  const char *password = NULL;
-  
-  bool correct = FALSE;
-
-  g_return_if_fail (druid_window != NULL);
-
-  dw = gm_dw_get_dw (druid_window); 
-
-  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dw->use_gnomemeeting_net)))
-    correct = TRUE;
-  else {    
-
-    username = gtk_entry_get_text (GTK_ENTRY (dw->username));
-    password = gtk_entry_get_text (GTK_ENTRY (dw->password));
-    correct = (strcmp (username, "") && strcmp (password, ""));
-  }
-   
-  if (correct)
-    gnome_druid_set_buttons_sensitive (dw->druid, TRUE, TRUE, TRUE, FALSE);
-  else
-    gnome_druid_set_buttons_sensitive (dw->druid, TRUE, FALSE, TRUE, FALSE);
-}
-
-
-static void
-gm_dw_combo_box_update (GtkWidget *combo_box,
-			  gchar **options,
-			  gchar *default_value)
-{
-  int history = -1;
-  int cpt = 0;
-
-  GtkTreeModel *model = NULL;
-
-  g_return_if_fail (options != NULL);
-
-  model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo_box));
-  gtk_list_store_clear (GTK_LIST_STORE (model));
-  
-  if (!options)
-    return;
-
-  while (options [cpt]) {
-
-    if (default_value && !strcmp (options [cpt], default_value)) 
-      history = cpt;
-
-    gtk_combo_box_append_text ( GTK_COMBO_BOX (combo_box), options [cpt]);
-
-    cpt++;
-  }
-
-  if (history != -1)
-    gtk_combo_box_set_active( GTK_COMBO_BOX (combo_box), history);
-  else
-    gtk_combo_box_set_active( GTK_COMBO_BOX (combo_box), 0);
-
-  gtk_combo_box_set_focus_on_click (GTK_COMBO_BOX (combo_box), FALSE);
-}
-
-
-static void
-gm_dw_get_all_data (GtkWidget *druid_window,
-		    gchar * &name,
-		    gchar * &username,
-		    gchar * &connection_type,
-		    gchar * &audio_manager,
-		    gchar * &player,
-		    gchar * &recorder,
-		    gchar * &video_manager,
-		    gchar * &/*video_recorder*/)
-{
-  GmDruidWindow *dw = NULL;
-  GtkTreeIter iter;
-  GtkTreeModel *model = NULL;
-  
-  g_return_if_fail (druid_window != NULL);
-  
-  dw = gm_dw_get_dw (druid_window);
-  
-  name = (gchar *) gtk_entry_get_text (GTK_ENTRY (dw->name));
-  username = (gchar *) gtk_entry_get_text (GTK_ENTRY (dw->username));
-  
-  if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (dw->kind_of_net), &iter)) {
-
-    model = gtk_combo_box_get_model (GTK_COMBO_BOX (dw->kind_of_net));
-    gtk_tree_model_get (model, &iter,
-  	  	        COLUMN_NET_COMMENT, &connection_type,
-		        -1);
-  }
-
-  audio_manager = 
-    gtk_combo_box_get_active_text (GTK_COMBO_BOX (dw->audio_manager));
-
-  video_manager = 
-    gtk_combo_box_get_active_text (GTK_COMBO_BOX (dw->video_manager));
-
-  player = 
-    gtk_combo_box_get_active_text (GTK_COMBO_BOX (dw->audio_player));
-
-  recorder = 
-    gtk_combo_box_get_active_text (GTK_COMBO_BOX (dw->audio_recorder));
-}
-
-
-static void
-gm_dw_init_welcome_page (GtkWidget *druid_window,
-			 int t)
-{
-  GmDruidWindow *dw = NULL;
-
-  gchar *title = NULL;
-
-  static const gchar text[] =
-    N_
-    ("This is the Ekiga general configuration assistant. "
-     "The following steps will set up Ekiga by asking "
-     "a few simple questions.\n\nOnce you have completed "
-     "these steps, you can always change them later by "
-     "selecting Preferences in the Edit menu.");
-
-
-  g_return_if_fail (druid_window != NULL);
-
-  dw = gm_dw_get_dw (druid_window);
-
-  
-  title = g_strdup_printf (_("Configuration Assistant - page 1/%d"), t);
-  
-  dw->page_edge =
-    GNOME_DRUID_PAGE_EDGE (gnome_druid_page_edge_new_aa (GNOME_EDGE_START));
-  gnome_druid_page_edge_set_title (dw->page_edge, title);
-			   
-  gnome_druid_page_edge_set_text (dw->page_edge, _(text));
-  
-  gnome_druid_append_page (dw->druid, GNOME_DRUID_PAGE (dw->page_edge));
-  gnome_druid_set_page (dw->druid, GNOME_DRUID_PAGE (dw->page_edge));
-  
-  g_signal_connect_after (G_OBJECT (dw->page_edge), "prepare",
-			  G_CALLBACK (prepare_welcome_page_cb), 
-			  druid_window);
-
-  g_free (title);
-}
-
-
-static void 
-gm_dw_init_personal_data_page (GtkWidget *druid_window,
-			       int p, 
-			       int t)
-{
-  GmDruidWindow *dw = NULL;
-  
-  GtkWidget *label = NULL;
-  GtkWidget *vbox = NULL;
-
-  gchar *title = NULL;
-  gchar *text = NULL;
-  
-  GtkWidget *page = NULL;
-
-
-  g_return_if_fail (druid_window != NULL);
-
-  dw = gm_dw_get_dw (druid_window);
-
-  
-  page = gnome_druid_page_standard_new ();
-
-  title = g_strdup_printf (_("Personal Information - page %d/%d"), p, t);
-  gnome_druid_page_standard_set_title (GNOME_DRUID_PAGE_STANDARD (page),
-				       title);
-  g_free (title);
-  
-  gnome_druid_append_page (dw->druid, GNOME_DRUID_PAGE (page));
-
-  
-  /* Start packing widgets */
-  vbox = gtk_vbox_new (FALSE, 2);
-
-  
-  /* The user fields */
-  label = gtk_label_new (_("Please enter your first name and your surname:"));
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
-
-  dw->name = gtk_entry_new ();
-  gtk_entry_set_activates_default (GTK_ENTRY (dw->name), TRUE);
-  gtk_box_pack_start (GTK_BOX (vbox), dw->name, FALSE, FALSE, 0);
-
-  label = gtk_label_new (NULL);
-  text = g_strdup_printf ("<i>%s</i>", _("Your first name and surname will be used when connecting to other VoIP and videoconferencing software."));
-  gtk_label_set_markup (GTK_LABEL (label), text);
-  g_free (text);
-  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
-
-  g_signal_connect (G_OBJECT (dw->name), "changed",
-		    G_CALLBACK (name_changed_cb), 
-		    druid_window);
-
-  g_signal_connect_after (G_OBJECT (page), "prepare",
-			  G_CALLBACK (prepare_personal_data_page_cb), 
-			  druid_window);
-  
-  gtk_box_pack_start (GTK_BOX (GNOME_DRUID_PAGE_STANDARD (page)->vbox),
-		      GTK_WIDGET (vbox), 
-		      TRUE, TRUE, 8);
-}
-
-
-static void 
-gm_dw_init_gnomemeeting_net_page (GtkWidget *druid_window,
-				  int p,
-				  int t)
-{
-  GmDruidWindow *dw = NULL;
-  
-  GtkWidget *button = NULL;
-  GtkWidget *label = NULL;
-  GtkWidget *vbox = NULL;
-  GtkWidget *align = NULL;
-  
-  gchar *title = NULL;
-  gchar *text = NULL;
-  
-  GtkWidget *page = NULL;
-
-
-  g_return_if_fail (druid_window != NULL);
-
-  dw = gm_dw_get_dw (druid_window);
-
-
-  page = gnome_druid_page_standard_new ();
-
-  title = g_strdup_printf (_("ekiga.net Account - page %d/%d"), p, t);
-  gnome_druid_page_standard_set_title (GNOME_DRUID_PAGE_STANDARD (page),
-				       title);
-  g_free (title);
-				
-  gnome_druid_append_page (dw->druid, GNOME_DRUID_PAGE (page));
-
-  
-  /* Start packing widgets */
-  vbox = gtk_vbox_new (FALSE, 2);
-
-  label = gtk_label_new (_("Please enter your username:"));
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
-
-  dw->username = gtk_entry_new ();
-  gtk_entry_set_activates_default (GTK_ENTRY (dw->username), TRUE);
-  gtk_box_pack_start (GTK_BOX (vbox), dw->username, FALSE, FALSE, 0);
-  
-  label = gtk_label_new (_("Please enter your password:"));
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
-
-  dw->password = gtk_entry_new ();
-  gtk_entry_set_activates_default (GTK_ENTRY (dw->password), TRUE);
-  gtk_entry_set_visibility (GTK_ENTRY (dw->password), FALSE);
-  gtk_box_pack_start (GTK_BOX (vbox), dw->password, FALSE, FALSE, 0);
-
-
-  label = gtk_label_new (NULL);
-  text = g_strdup_printf ("<i>%s</i>", _("The username and password are used to login to your existing account at the ekiga.net free SIP service. If you do not have an ekiga.net SIP address yet, you may first create an account below. This will provide a SIP address that allows people to call you.\n\nYou may skip this step if you use an alternative SIP service, or if you would prefer to specify the login details later."));
-  gtk_label_set_markup (GTK_LABEL (label), text);
-  g_free (text);
-  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
-
-  button = gtk_button_new ();
-  label = gtk_label_new (NULL);
-  text = g_strdup_printf ("<span foreground=\"blue\"><u>%s</u></span>",
-			 _("Get an ekiga.net SIP account"));
-  gtk_label_set_markup (GTK_LABEL (label), text);
-  g_free (text);
-  gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
-  gtk_container_add (GTK_CONTAINER (button), label);
-  gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (button), FALSE, FALSE, 10);
-  g_signal_connect (GTK_OBJECT (button), "clicked",
-		    G_CALLBACK (gnomemeeting_net_consult_cb), NULL);
-
-  dw->use_gnomemeeting_net = gtk_check_button_new ();
-  label = gtk_label_new (_("I do not want to sign up for the ekiga.net free service"));
-  gtk_container_add (GTK_CONTAINER (dw->use_gnomemeeting_net), label);
-  align = gtk_alignment_new (0, 1.0, 0, 0);
-  gtk_container_add (GTK_CONTAINER (align), dw->use_gnomemeeting_net);
-  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
-
-  g_signal_connect (G_OBJECT (dw->username), "changed",
-		    G_CALLBACK (info_changed_cb), 
-		    druid_window);
-
-  g_signal_connect (G_OBJECT (dw->password), "changed",
-		    G_CALLBACK (info_changed_cb), 
-		    druid_window);
-
-  g_signal_connect (G_OBJECT (dw->use_gnomemeeting_net), "toggled",
-		    G_CALLBACK (use_gnomemeeting_net_toggled_cb), 
-		    druid_window);
-
-  g_signal_connect_after (G_OBJECT (page), "prepare",
-			  G_CALLBACK (prepare_gnomemeeting_net_page_cb), 
-			  druid_window);
-  
-  gtk_box_pack_start (GTK_BOX (GNOME_DRUID_PAGE_STANDARD (page)->vbox),
-		      GTK_WIDGET (vbox), 
-		      TRUE, TRUE, 8);
-}
-
-
-static void 
-gm_dw_init_connection_type_page (GtkWidget *druid_window,
-				 int p, 
-				 int t)
-{
-  GmDruidWindow *dw = NULL;
-  
-  GtkWidget *vbox = NULL;
-  GtkWidget *label = NULL;
-
-  gchar *title = NULL;
-  gchar *text = NULL;
-
-  GtkListStore *store = NULL;
-  GtkCellRenderer *cell = NULL;
-  
-  GnomeDruidPageStandard *page_standard = NULL;
-
-
-  g_return_if_fail (druid_window != NULL);
-  
-  dw = gm_dw_get_dw (druid_window);
-
-  
-  /* Get data */
-  page_standard = 
-    GNOME_DRUID_PAGE_STANDARD (gnome_druid_page_standard_new ());
-  
-  title = g_strdup_printf (_("Connection Type - page %d/%d"), p, t);
-  gnome_druid_page_standard_set_title (page_standard, title);
-  g_free (title);
-
-  gnome_druid_append_page (dw->druid, GNOME_DRUID_PAGE (page_standard));
-
-
-  /* Start packing widgets */
-  vbox = gtk_vbox_new (FALSE, 2);
-
-
-  /* The connection type */
-  label = gtk_label_new (_("Please choose your connection type:"));
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
-  
-  store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
-  dw->kind_of_net = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
-  g_object_unref (store);
-  cell = gtk_cell_renderer_text_new ();
-  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (dw->kind_of_net), cell, TRUE);
-  gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (dw->kind_of_net), cell,
-                                  "text", COLUMN_NET_COMMENT,
-                                  NULL);
-  gtk_box_pack_start (GTK_BOX (vbox), dw->kind_of_net, FALSE, FALSE, 0);
-
-  label = gtk_label_new (NULL);
-  text = g_strdup_printf ("<i>%s</i>", _("The connection type will permit determining the best quality settings that Ekiga will use during calls. You can later change the settings individually in the preferences window."));
-  gtk_label_set_markup (GTK_LABEL (label), text);
-  g_free (text);
-  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
-
-  gtk_box_pack_start (GTK_BOX (page_standard->vbox), GTK_WIDGET (vbox), 
-		      TRUE, TRUE, 8);
-}
-
-
-static void 
-gm_dw_init_audio_manager_page (GtkWidget *druid_window,
-			       int p,
-			       int t)
-{
-  GmDruidWindow *dw = NULL;
-  
-  GtkWidget *label = NULL;
-  GtkWidget *vbox = NULL;
-
-  gchar *title = NULL;
-  gchar *text = NULL;
-  
-  GnomeDruidPageStandard *page_standard = NULL;
-
-
-  g_return_if_fail (druid_window != NULL);
-
-  dw = gm_dw_get_dw (druid_window);
-  
-
-  /* Get data */  
-  page_standard = 
-    GNOME_DRUID_PAGE_STANDARD (gnome_druid_page_standard_new ());
-  
-  title = g_strdup_printf (_("Audio Manager - page %d/%d"), p, t);
-  gnome_druid_page_standard_set_title (page_standard, title);
-  g_free (title);
-
-  gnome_druid_append_page (dw->druid, GNOME_DRUID_PAGE (page_standard));
-
-
-  /* Start packing widgets */
-  vbox = gtk_vbox_new (FALSE, 2);
-
-
-  /* The Audio devices */
-  label = gtk_label_new (_("Please choose your audio manager:"));
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
-  
-  dw->audio_manager = gtk_combo_box_new_text ();
-  gtk_box_pack_start (GTK_BOX (vbox), dw->audio_manager, FALSE, FALSE, 0);
-
-  label = gtk_label_new (NULL);
-#ifdef WIN32
-  text = g_strdup_printf ("<i>%s</i>", _("The audio manager is the plugin that will manage your audio devices. WindowsMultimedia is probably the best choice when available."));
-#else
-  text = g_strdup_printf ("<i>%s</i>", _("The audio manager is the plugin that will manage your audio devices. ALSA is probably the best choice when available."));
-#endif
-  gtk_label_set_markup (GTK_LABEL (label), text);
-  g_free (text);
-  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
-
-
-  gtk_box_pack_start (GTK_BOX (page_standard->vbox), GTK_WIDGET (vbox), 
-		      TRUE, TRUE, 8);
-}
-
-
-static void 
-gm_dw_init_audio_devices_page (GtkWidget *druid_window, 
-			       int p, 
-			       int t)
-{
-  GmDruidWindow *dw = NULL;
-  
-  GtkWidget *align = NULL;
-  GtkWidget *vbox = NULL;
-  GtkWidget *label = NULL;
-
-  gchar *title = NULL;
-  gchar *text = NULL;
-  
-  GnomeDruidPageStandard *page_standard = NULL;
-
-
-  g_return_if_fail (druid_window);
-
-  dw = gm_dw_get_dw (druid_window);
-
-  
-  /* Get data */
-  page_standard = 
-    GNOME_DRUID_PAGE_STANDARD (gnome_druid_page_standard_new ());
-  
-  title = g_strdup_printf (_("Audio Devices - page %d/%d"), p, t);
-  gnome_druid_page_standard_set_title (page_standard, title);
-  g_free (title);
-
-  gnome_druid_append_page (dw->druid, GNOME_DRUID_PAGE (page_standard));
-
-
-  /* Start packing widgets */
-  vbox = gtk_vbox_new (FALSE, 2);
-
-
-  /* The Audio devices */
-  label = gtk_label_new (_("Please choose the audio output device:"));
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
-  
-  dw->audio_player = gtk_combo_box_new_text ();
-  gtk_box_pack_start (GTK_BOX (vbox), dw->audio_player, FALSE, FALSE, 0);
-
-  label = gtk_label_new (NULL);
-  text = g_strdup_printf ("<i>%s</i>", _("The audio output device is the device managed by the audio manager that will be used to play audio."));
-  gtk_label_set_markup (GTK_LABEL (label), text);
-  g_free (text);
-  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
-
-  label = gtk_label_new (" ");
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
-
-  label = gtk_label_new (_("Please choose the audio input device:"));
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
-  
-  dw->audio_recorder = gtk_combo_box_new_text ();
-  gtk_box_pack_start (GTK_BOX (vbox), dw->audio_recorder, FALSE, FALSE, 0);
-
-  label = gtk_label_new (NULL);
-  text = g_strdup_printf ("<i>%s</i>", _("The audio input device is the device managed by the audio manager that will be used to record your voice."));
-  gtk_label_set_markup (GTK_LABEL (label), text);
-  g_free (text);
-  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
-
-
-  label = gtk_label_new (" ");
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
-
-  
-  align = gtk_alignment_new (1.0, 0, 0, 0);
-  dw->audio_test_button =
-    gtk_toggle_button_new_with_label (_("Test Settings"));
-//  gtk_container_add (GTK_CONTAINER (align), dw->audio_test_button);
-//  gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
-  
-  g_signal_connect (G_OBJECT (dw->audio_test_button), "clicked",
-		    GTK_SIGNAL_FUNC (audio_test_button_clicked_cb),
-		    (gpointer) druid_window);
-
-  g_signal_connect_after (G_OBJECT (page_standard), "prepare",
-			  G_CALLBACK (prepare_audio_devices_page_cb), 
-			  druid_window);
-
-
-  /**/
-  gtk_box_pack_start (GTK_BOX (page_standard->vbox), GTK_WIDGET (vbox), 
-		      TRUE, TRUE, 8);
-}
-
-
-static void 
-gm_dw_init_video_manager_page (GtkWidget *druid_window, 
-			       int p, 
-			       int t)
-{
-  GmDruidWindow *dw = NULL;
-  
-  GtkWidget *label = NULL;
-  GtkWidget *vbox = NULL;
-
-  gchar *title = NULL;
-  gchar *text = NULL;
-  
-  GnomeDruidPageStandard *page_standard = NULL;
-
-
-  g_return_if_fail (druid_window != NULL);
-
-  dw = gm_dw_get_dw (druid_window);
-
-  
-  /* Get data */
-  page_standard = 
-    GNOME_DRUID_PAGE_STANDARD (gnome_druid_page_standard_new ());
-  
-  title = g_strdup_printf (_("Video Manager - page %d/%d"), p, t);
-  gnome_druid_page_standard_set_title (page_standard, title);
-  g_free (title);
-
-  gnome_druid_append_page (dw->druid, GNOME_DRUID_PAGE (page_standard));
-
-
-  /* Start packing widgets */
-  vbox = gtk_vbox_new (FALSE, 2);
-
-
-  /* The Audio devices */
-  label = gtk_label_new (_("Please choose your video manager:"));
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
-  
-  dw->video_manager = gtk_combo_box_new_text ();
-  gtk_box_pack_start (GTK_BOX (vbox), dw->video_manager, FALSE, FALSE, 0);
-
-  label = gtk_label_new (NULL);
-  text = g_strdup_printf ("<i>%s</i>", _("The video manager is the plugin that will manage your video devices, Video4Linux is the most common choice if you own a webcam."));
-  gtk_label_set_markup (GTK_LABEL (label), text);
-  g_free (text);
-  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
-
-  gtk_box_pack_start (GTK_BOX (page_standard->vbox), GTK_WIDGET (vbox), 
-		      TRUE, TRUE, 8);
-}
-
-
-static void
-gm_dw_init_final_page (GtkWidget *druid_window, 
-		       int t)
-{
-  GmDruidWindow *dw = NULL;
-  
-  gchar *title = NULL;
-
-  GnomeDruidPageEdge *page_final = NULL;
-
-  g_return_if_fail (druid_window != NULL);
-
-  dw = gm_dw_get_dw (druid_window);
-
-
-  page_final =
-    GNOME_DRUID_PAGE_EDGE (gnome_druid_page_edge_new (GNOME_EDGE_FINISH));
-  
-  title = g_strdup_printf (_("Configuration complete - page %d/%d"), t, t);
-  gnome_druid_page_edge_set_title (page_final, title);
-
-  gnome_druid_append_page (dw->druid, GNOME_DRUID_PAGE (page_final));
-
-  g_signal_connect_after (G_OBJECT (page_final), "prepare",
-			  G_CALLBACK (prepare_final_page_cb), 
-			  druid_window);  
-
-  g_signal_connect (G_OBJECT (page_final), "finish",
-		    G_CALLBACK (finish_cb), 
-		    druid_window);
-
-  g_free (title);
-}
-
-
-/* GTK Callbacks */
-static gint
-kind_of_net_hack_cb (gpointer data)
-{
-  gm_conf_set_int (GENERAL_KEY "kind_of_net", 
-		   GPOINTER_TO_INT (data));
-
-  return FALSE;
-}
-
-
-static void
-audio_test_button_clicked_cb (GtkWidget *w,
-			      gpointer data)
-{ 
-  GtkWidget *druid_window = NULL;
-  
-  gchar *name = NULL;
-  gchar *con_type = NULL;
-  gchar *mail = NULL;
-  gchar *audio_manager = NULL;
-  gchar *player = NULL;
-  gchar *recorder = NULL;
-  gchar *video_manager = NULL;
-  gchar *video_recorder = NULL;
-  
-
-  g_return_if_fail (data != NULL);
-  
-  druid_window = GTK_WIDGET (data);
-
-  gm_dw_get_all_data (druid_window, 
-		      name, 
-		      mail, 
-		      con_type, 
-		      audio_manager, 
-		      player,
-		      recorder, 
-		      video_manager, 
-		      video_recorder);
-
-
-  if (GTK_TOGGLE_BUTTON (w)->active) {
-
-    /* Try to prevent a crossed mutex deadlock */
-    gdk_threads_leave ();
-    GnomeMeeting::Process ()->StartAudioTester (audio_manager, player, recorder);
-    gdk_threads_enter ();
-  }
-  else {
-
-    gdk_threads_leave ();
-    GnomeMeeting::Process ()->StopAudioTester ();
-    gdk_threads_enter ();
-  }
-}
-
-
-static void 
-cancel_cb (G_GNUC_UNUSED GtkWidget *w,
-	   gpointer data)
-{
-  GtkWidget *main_window = NULL;
-  
-  GmDruidWindow *dw = NULL;
-
-  g_return_if_fail (data != NULL);
-
-  dw = gm_dw_get_dw (GTK_WIDGET (data));
-  
-  main_window = GnomeMeeting::Process ()->GetMainWindow ();
-
-  gnome_druid_set_page (dw->druid, GNOME_DRUID_PAGE (dw->page_edge));
-  gnomemeeting_window_hide (GTK_WIDGET (data));
-  
-  gnomemeeting_window_show (main_window);
-}
-
-
-static void 
-finish_cb (G_GNUC_UNUSED GnomeDruidPage *p,
-	   G_GNUC_UNUSED GtkWidget *w,
-	   gpointer data)
-{
-  GmDruidWindow *dw = NULL;
-  GmAccount *account = NULL;
-
-  GMManager *ep = NULL;
-  
-  GtkWidget *druid_window = NULL;
-  GtkWidget *main_window = NULL;
-  GtkWidget *prefs_window = NULL;
-  
-  GtkTreeIter iter;
-  GtkTreeModel *store = NULL;
-  gint kind_of_net = NET_CUSTOM;
-  int version = 0;
-
-  bool new_account = FALSE;
-  
-  gchar *name = NULL;
-  gchar **couple = NULL;
-  gchar *con_type = NULL;
-  gchar *mail = NULL;
-  gchar *audio_manager = NULL;
-  gchar *player = NULL;
-  gchar *recorder = NULL;
-  gchar *video_manager = NULL;
-  gchar *video_recorder = NULL;
-
-  PStringArray audio_input_devices;
-  PStringArray audio_output_devices;
-  PStringArray video_input_devices;
-
-  
-  g_return_if_fail (data != NULL);
-  
-  druid_window = GTK_WIDGET (data);
-
-  
-  main_window = GnomeMeeting::Process ()->GetMainWindow ();
-  prefs_window = GnomeMeeting::Process ()->GetPrefsWindow ();
-
-  dw = gm_dw_get_dw (druid_window);
-
-  ep = dynamic_cast<GMManager *> (dw->core.get ("opal-component"));
-
-  if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (dw->kind_of_net), &iter)) {
-    
-    store = gtk_combo_box_get_model (GTK_COMBO_BOX (dw->kind_of_net));
-    gtk_tree_model_get (store, &iter,
-		        COLUMN_NET_CODE, &kind_of_net,
-		        -1);
-  }
-
-  gm_dw_get_all_data (druid_window, 
-		      name, 
-		      mail, 
-		      con_type, 
-		      audio_manager, 
-		      player,
-		      recorder, 
-		      video_manager, 
-		      video_recorder);
-
-  
-  /* Set the personal data: firstname, lastname and mail
-     and GnomeMeeting.NET registering
-  */
-  if (name)
-    couple = g_strsplit (name, " ", 2);
-
-  if (couple && couple [0])
-    gm_conf_set_string (PERSONAL_DATA_KEY "firstname", couple [0]);
-  if (couple && couple [1])
-    gm_conf_set_string (PERSONAL_DATA_KEY "lastname", couple [1]);
-
-
-  /* GnomeMeeting.NET */
-  account = gnomemeeting_get_account ("ekiga.net");
-  if (account == NULL) {
-
-    account = gm_account_new ();
-    account->default_account = TRUE;
-    account->account_name = g_strdup ("ekiga.net SIP Service");
-    account->host = g_strdup ("ekiga.net");
-    account->domain = g_strdup ("ekiga.net");
-    account->protocol_name = g_strdup ("SIP");
-  
-    new_account = TRUE;
-  }
-
-  if (account->auth_username)
-    g_free (account->auth_username);
-  if (account->username)
-    g_free (account->username);
-  if (account->password)
-    g_free (account->password);
-
-  account->username = 
-    g_strdup (gtk_entry_get_text (GTK_ENTRY (dw->username)));
-  account->auth_username = 
-    g_strdup (gtk_entry_get_text (GTK_ENTRY (dw->username)));
-  account->password = 
-    g_strdup (gtk_entry_get_text (GTK_ENTRY (dw->password)));
-  account->enabled =
-    !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dw->use_gnomemeeting_net));
-
-  /* If creating a new account, add it only if the user wants to use GM.NET,
-   * and make it the default account */
-  if (new_account) {
-   
-    if (account->enabled) 
-      gnomemeeting_account_add (account);
-  }
-  else { 
-
-    /* Modify the account, do not set it as default */
-    gnomemeeting_account_modify (account);
-  }
-    
-  /* Register the current Endpoint to GnomeMeeting.NET */
-  gdk_threads_leave ();
-  if (account->enabled)
-    ep->Register (account);
-  gdk_threads_enter ();
-
-  /* Set the right devices and managers */
-  if (audio_manager)
-    gm_conf_set_string (AUDIO_DEVICES_KEY "plugin", audio_manager);
-  if (player)
-    gm_conf_set_string (AUDIO_DEVICES_KEY "output_device", player);
-  if (recorder)
-    gm_conf_set_string (AUDIO_DEVICES_KEY "input_device", recorder);
-  if (video_manager)
-    gm_conf_set_string (VIDEO_DEVICES_KEY "plugin", video_manager);
-  if (video_recorder) 
-    gm_conf_set_string (VIDEO_DEVICES_KEY "input_device", video_recorder);
-  
-
-  /* Set the connection quality settings */
-  switch (kind_of_net) {
-  case NET_PSTN:
-    
-    gm_conf_set_int (VIDEO_CODECS_KEY "frame_rate", 5);
-    gm_conf_set_int (VIDEO_CODECS_KEY "maximum_video_tx_bitrate", 8);
-    gm_conf_set_bool (VIDEO_CODECS_KEY "enable_video", FALSE);
-    break;
-  case NET_ISDN:
-    
-    gm_conf_set_int (VIDEO_CODECS_KEY "frame_rate", 10);
-    gm_conf_set_int (VIDEO_CODECS_KEY "maximum_video_tx_bitrate", 16);
-    gm_conf_set_bool (VIDEO_CODECS_KEY "enable_video", FALSE);
-    break;
-  case NET_DSL:
-    
-    gm_conf_set_int (VIDEO_CODECS_KEY "frame_rate", 15);
-    gm_conf_set_int (VIDEO_CODECS_KEY "maximum_video_tx_bitrate", 64);
-    gm_conf_set_bool (VIDEO_CODECS_KEY "enable_video", TRUE);
-    break;
-  case NET_LAN:
-    
-    gm_conf_set_int (VIDEO_CODECS_KEY "frame_rate", 25);
-    gm_conf_set_int (VIDEO_CODECS_KEY "maximum_video_tx_bitrate", 800);
-    gm_conf_set_bool (VIDEO_CODECS_KEY "enable_video", TRUE);
-    break;
-  case NET_CUSTOM:
-  default:
-    break; /* don't touch anything */
-  }  
-
-  g_timeout_add (2000, 
-		 (GtkFunction) kind_of_net_hack_cb,
-		 GINT_TO_POINTER (kind_of_net));
-
-  /* Hide the druid and show GnomeMeeting */
-  gnomemeeting_window_hide (druid_window);
-  gnome_druid_set_page (dw->druid, GNOME_DRUID_PAGE (dw->page_edge));
-  gnomemeeting_window_show (main_window);
-
-  /* Will be done through the config if the manager changes, but not
-     if the manager doesn't change */
-  gdk_threads_leave ();
-  GnomeMeeting::Process ()->DetectDevices ();  
-  gdk_threads_enter ();
-  
-
-  /* Update the version number */
-  version = MAJOR_VERSION*1000+MINOR_VERSION*10+BUILD_NUMBER;
-    
-  gm_conf_set_int (GENERAL_KEY "version", version);
-
-
-  /* Free memory */
-  gm_account_delete (account);
-}
-
-
-static void 
-delete_event_cb (GtkWidget *w,
-		 G_GNUC_UNUSED GdkEventAny *ev,
-		 gpointer data)
-{
-  cancel_cb (w, data);
-}
-
-
-static void
-name_changed_cb (G_GNUC_UNUSED GtkWidget *w,
-		 gpointer data)
-{
-  g_return_if_fail (data != NULL);
-
-  gm_dw_check_name (GTK_WIDGET (data));
-}
-
-
-static void
-info_changed_cb (G_GNUC_UNUSED GtkWidget *w, 
-		 gpointer data)
-{
-  g_return_if_fail (data != NULL);
-
-  gm_dw_check_gnomemeeting_net (GTK_WIDGET (data));
-}
-
-
-static void
-use_gnomemeeting_net_toggled_cb (G_GNUC_UNUSED GtkToggleButton *b,
-				 gpointer data)
-{
-  g_return_if_fail (data != NULL);
-
-  gm_dw_check_gnomemeeting_net (GTK_WIDGET (data));
-}
-
-
-static void 
-prepare_welcome_page_cb (G_GNUC_UNUSED GnomeDruidPage *page,
-			 GnomeDruid *druid,
-			 G_GNUC_UNUSED gpointer data)
-{
-  gnome_druid_set_buttons_sensitive (druid, FALSE, TRUE, TRUE, FALSE);
-}
-
-
-static void
-prepare_personal_data_page_cb (GnomeDruidPage *page,
-			       GnomeDruid *druid, 
-			       gpointer data)
-{
-  GmDruidWindow *dw = NULL;
-  GmAccount *account = NULL;
-  
-  PStringArray devs;
-  
-  gchar *firstname = NULL;
-  gchar *lastname = NULL;
-  gchar *mail = NULL;
-  gchar *text = NULL;
-  int kind_of_net = 0;
-  gchar *audio_manager = NULL;
-  gchar *video_manager = NULL;
-  char **array = NULL;
-  GtkTreeIter iter;
-  GtkListStore *store = NULL;
- 
-
-  /* Get the data */
-  g_return_if_fail (page != NULL && druid != NULL && data != NULL);
-
-  dw = gm_dw_get_dw (GTK_WIDGET (data));
-
-  account = gnomemeeting_get_account ("ekiga.net");
-  firstname = gm_conf_get_string (PERSONAL_DATA_KEY "firstname");
-  lastname = gm_conf_get_string (PERSONAL_DATA_KEY "lastname");
-  kind_of_net = gm_conf_get_int (GENERAL_KEY "kind_of_net");
-  
-  if (!strcmp (gtk_entry_get_text (GTK_ENTRY (dw->name)), "")) {
-    
-    text = gnomemeeting_create_fullname (firstname, lastname);
-    if (text) 
-      gtk_entry_set_text (GTK_ENTRY (dw->name), text);
-    g_free (text);
-  }
-  gtk_widget_grab_focus (GTK_WIDGET (dw->name));
-  
-  if (account && account->username)
-    gtk_entry_set_text (GTK_ENTRY (dw->username), account->username);
-  if (account && account->password)
-    gtk_entry_set_text (GTK_ENTRY (dw->password), account->password);
-  
-  store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (dw->kind_of_net)));
-  gtk_list_store_append (store, &iter);
-  gtk_list_store_set (store, &iter,
-		      COLUMN_NET_COMMENT, _("56k Modem"),
-		      COLUMN_NET_CODE, NET_PSTN,
-		      -1);
-  if (kind_of_net == NET_PSTN)
-    gtk_combo_box_set_active_iter (GTK_COMBO_BOX (dw->kind_of_net), &iter);
-  gtk_list_store_append (store, &iter);
-  gtk_list_store_set (store, &iter,
-		      COLUMN_NET_COMMENT, _("ISDN"),
-		      COLUMN_NET_CODE, NET_ISDN,
-		      -1);
-  if (kind_of_net == NET_ISDN)
-    gtk_combo_box_set_active_iter (GTK_COMBO_BOX (dw->kind_of_net), &iter);
-  gtk_list_store_append (store, &iter);
-  gtk_list_store_set (store, &iter,
-		      COLUMN_NET_COMMENT, _("xDSL/Cable"),
-		      COLUMN_NET_CODE, NET_DSL,
-		      -1);
-  if (kind_of_net == NET_DSL)
-    gtk_combo_box_set_active_iter (GTK_COMBO_BOX (dw->kind_of_net), &iter);
-  gtk_list_store_append (store, &iter);
-  gtk_list_store_set (store, &iter,
-		      COLUMN_NET_COMMENT, _("T1/LAN"),
-		      COLUMN_NET_CODE, NET_LAN,
-		      -1);
-  if (kind_of_net == NET_LAN)
-    gtk_combo_box_set_active_iter (GTK_COMBO_BOX (dw->kind_of_net), &iter);
-  gtk_list_store_append (store, &iter);
-  gtk_list_store_set (store, &iter,
-		      COLUMN_NET_COMMENT, _("Keep current settings"),
-		      COLUMN_NET_CODE, NET_CUSTOM,
-		      -1);
-  if (kind_of_net == NET_CUSTOM)
-    gtk_combo_box_set_active_iter (GTK_COMBO_BOX (dw->kind_of_net), &iter);
-  
-  devs = GnomeMeeting::Process ()->GetAudioPlugins ();
-  array = devs.ToCharArray ();
-  audio_manager = gm_conf_get_string (AUDIO_DEVICES_KEY "plugin");
-  gm_dw_combo_box_update (dw->audio_manager, array, audio_manager);
-  free (array);
-  
-  devs = GnomeMeeting::Process ()->GetVideoPlugins ();
-  array = devs.ToCharArray ();
-  video_manager = gm_conf_get_string (VIDEO_DEVICES_KEY "plugin");
-  gm_dw_combo_box_update (dw->video_manager, array, video_manager);
-  free (array);
-  
-  GTK_TOGGLE_BUTTON (dw->use_gnomemeeting_net)->active = FALSE;
-  
-  gm_dw_check_name (GTK_WIDGET (data));
-  
-  g_free (video_manager);
-  g_free (audio_manager);    
-  g_free (mail);
-  g_free (firstname);
-  g_free (lastname);
-
-}
-
-
-static void 
-prepare_gnomemeeting_net_page_cb (GnomeDruidPage *page, 
-				  GnomeDruid *druid, 
-				  gpointer data)
-{
-  GmDruidWindow *dw = NULL;
-  
-  
-  /* Get the data */
-  g_return_if_fail (page != NULL && druid != NULL && data != NULL);
-
-  dw = gm_dw_get_dw (GTK_WIDGET (data));
-
-  gtk_widget_grab_focus (GTK_WIDGET (dw->username));
-
-  gm_dw_check_gnomemeeting_net (GTK_WIDGET (data));
-}
-
-
-static void
-prepare_audio_devices_page_cb (GnomeDruidPage *page, 
-			       GnomeDruid *druid,
-			       gpointer data)
-{
-  GmDruidWindow *dw = NULL;
-
-  GMManager *ep = NULL;
-
-  gchar *audio_manager = NULL;
-  gchar *player = NULL;
-  gchar *recorder = NULL;
-  PStringArray devices;
-  char **array = NULL;
-
-
-  /* Get the data */
-  g_return_if_fail (page != NULL && druid != NULL && data != NULL);
-
-  dw = gm_dw_get_dw (GTK_WIDGET (data));
-
-  ep = dynamic_cast<GMManager *> (dw->core.get ("opal-component"));
-  
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dw->audio_test_button),
-				FALSE);
-  gtk_widget_set_sensitive (GTK_WIDGET (dw->audio_test_button), TRUE);
-  
-  if (dw->audio_manager)
-    audio_manager = 
-      gtk_combo_box_get_active_text (GTK_COMBO_BOX (dw->audio_manager));
-	
-  player = gm_conf_get_string (AUDIO_DEVICES_KEY "output_device");
-  recorder = gm_conf_get_string (AUDIO_DEVICES_KEY "input_device");
-    
-
-  /* FIXME: We should use DetectDevices, however DetectDevices
-   * works only for the currently selected audio and video plugins,
-   * not for a random one.
-   */
-  gnomemeeting_sound_daemons_suspend ();
-  devices = PSoundChannel::GetDeviceNames (audio_manager,
-					   PSoundChannel::Player);
-  if (devices.GetSize () == 0) {
-    
-    devices += PString (_("No device found"));
-    gtk_widget_set_sensitive (GTK_WIDGET (dw->audio_test_button), FALSE);
-  }
-  
-  array = devices.ToCharArray ();
-  gm_dw_combo_box_update (dw->audio_player, array, player);
-  free (array);
-
-  devices = PSoundChannel::GetDeviceNames (audio_manager,
-					   PSoundChannel::Recorder);
-  if (devices.GetSize () == 0) {
-    
-    devices += PString (_("No device found"));
-    gtk_widget_set_sensitive (GTK_WIDGET (dw->audio_test_button), FALSE);
-  }
-  
-  array = devices.ToCharArray ();
-  gm_dw_combo_box_update (dw->audio_recorder, array, recorder);
-  free (array);
-  gnomemeeting_sound_daemons_resume ();
-
-  g_free (player);
-  g_free (recorder);
-  
-  if (ep->GetCallingState () != GMManager::Standby)
-    gtk_widget_set_sensitive (GTK_WIDGET (dw->audio_test_button), FALSE);
-}
-
-
-static void
-prepare_final_page_cb (GnomeDruidPage *page,
-		       GnomeDruid *druid,
-		       gpointer data)
-{
-  GmDruidWindow *dw = NULL;
-  
-  gchar *name = NULL;
-  gchar *username = NULL;
-  gchar *text = NULL;
-  gchar *connection_type = NULL;
-  gchar *player = NULL;
-  gchar *recorder = NULL;
-  gchar *video_recorder = NULL;
-  gchar *video_manager = NULL;
-  gchar *audio_manager = NULL;
-  gchar *gnomemeeting_net_url = NULL;
-  
-  PStringArray devices;
-  
-
-  /* Get the data */
-  g_return_if_fail (page != NULL && druid != NULL && data != NULL);
-
-  dw = gm_dw_get_dw (GTK_WIDGET (data));
-
-  gm_dw_get_all_data (GTK_WIDGET (data), 
-		      name, 
-		      username, 
-		      connection_type, 
-		      audio_manager,
-		      player, 
-		      recorder, 
-		      video_manager, 
-		      video_recorder);
-
-  gnomemeeting_net_url = g_strdup_printf ("sip:%s@ekiga.net", username);
-    
-  text = g_strdup_printf (_("You have now finished the Ekiga configuration. All the settings can be changed in the Ekiga preferences. Enjoy!\n\n\nConfiguration summary:\n\nUsername: %s\nConnection type: %s\nAudio manager: %s\nAudio player: %s\nAudio recorder: %s\nVideo manager: %s\nVideo input: %s\nSIP URI: %s\n"), name, connection_type, audio_manager, player, recorder, video_manager, video_recorder, !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dw->use_gnomemeeting_net)) ? gnomemeeting_net_url : _("None"));
-  gnome_druid_page_edge_set_text (GNOME_DRUID_PAGE_EDGE (page), text);
-  
-  g_free (gnomemeeting_net_url);
-  g_free (text);
-}
-
-
-static void
-gnomemeeting_net_consult_cb (G_GNUC_UNUSED GtkWidget *button,
-			     G_GNUC_UNUSED gpointer data)
-{
-  gm_open_uri ("http://www.ekiga.net");
-}
-
-
-/* Functions */
-GtkWidget *
-gm_druid_window_new (Ekiga::ServiceCore &core)
-{
-  GtkWidget *window = NULL;
-  GmDruidWindow *dw = NULL;
-
-  
-  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  g_object_set_data_full (G_OBJECT (window), "window_name",
-			  g_strdup ("druid_window"), g_free); 
-  
-  gtk_window_set_title (GTK_WINDOW (window), 
-			_("First Time Configuration Assistant"));
-  gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
-
-
-  dw = new GmDruidWindow (core);
-  g_object_set_data_full (G_OBJECT (window), "GMObject",
-			  (gpointer) dw, 
-			  gm_dw_destroy);
-
-  dw->druid = GNOME_DRUID (gnome_druid_new ());
-
-  gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (dw->druid));
-
-  /* Create the different pages */
-  gm_dw_init_welcome_page (window, PAGE_LAST);
-  gm_dw_init_personal_data_page (window, PAGE_PERSONAL_DATA, PAGE_LAST);
-  gm_dw_init_gnomemeeting_net_page (window, PAGE_EKIGA_DOT_NET, PAGE_LAST);
-  gm_dw_init_connection_type_page (window, PAGE_CONNECTION_TYPE, PAGE_LAST);
-  gm_dw_init_audio_manager_page (window, PAGE_AUDIO_MANAGER, PAGE_LAST);
-  gm_dw_init_audio_devices_page (window, PAGE_AUDIO_DEVICES, PAGE_LAST);
-  gm_dw_init_video_manager_page (window, PAGE_VIDEO_MANAGER, PAGE_LAST);
-  gm_dw_init_final_page (window, PAGE_LAST);
-
-  g_signal_connect (G_OBJECT (dw->druid), "cancel",
-		    G_CALLBACK (cancel_cb), 
-		    window);
-
-  g_signal_connect (G_OBJECT (window), "delete_event",
-		    G_CALLBACK (delete_event_cb), 
-		    window);
-
-  gtk_widget_show_all (GTK_WIDGET (dw->druid));
-
-  return window;
-}
-
-
-void 
-gm_druid_window_set_test_buttons_sensitivity (GtkWidget *druid,
-					      gboolean value)
-{
-  GmDruidWindow *dw = NULL;
-
-  dw = gm_dw_get_dw (druid);
-
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dw->audio_test_button),
-				value);
-}
diff --git a/src/gui/druid.h b/src/gui/druid.h
deleted file mode 100644
index 5463e1e..0000000
--- a/src/gui/druid.h
+++ /dev/null
@@ -1,66 +0,0 @@
-
-/* Ekiga -- A VoIP and Video-Conferencing application
- * Copyright (C) 2000-2006 Damien Sandras
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- *
- * Ekiga is licensed under the GPL license and as a special exception,
- * you have permission to link or otherwise combine this program with the
- * programs OPAL, OpenH323 and PWLIB, and distribute the combination,
- * without applying the requirements of the GNU GPL to the OPAL, OpenH323
- * and PWLIB programs, as long as you do follow the requirements of the
- * GNU GPL for all the rest of the software thus combined.
- */
-
-
-/*
- *                         druid.h  -  description
- *                         -----------------------
- *   begin                : Mon May 1 2002
- *   copyright            : (C) 2000-2006 by Damien Sandras
- *   description          : This file contains all the functions needed to
- *                          build the druid.
- */
-
-#include "common.h"
-
-#include "services.h"
-
-
-/* the various kind of net known to the druid:
- */
-enum {
-  NET_PSTN,
-  NET_ISDN,
-  NET_DSL,
-  NET_LAN,
-  NET_CUSTOM
-};
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Builds the "First time configuration druid" and returns it.
- * PRE          :  /
- */
-GtkWidget *gm_druid_window_new (Ekiga::ServiceCore &core);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Makes the device test buttons active/inactive
- * PRE          :  /
- */
-void gm_druid_window_set_test_buttons_sensitivity (GtkWidget *druid,
-						   gboolean value);
diff --git a/src/gui/main.cpp b/src/gui/main.cpp
index 977efda..f1ebd1e 100644
--- a/src/gui/main.cpp
+++ b/src/gui/main.cpp
@@ -1221,7 +1221,7 @@ gm_mw_init_menu (GtkWidget *main_window)
   GtkFrontend *gtk_frontend = NULL;
   
   GtkWidget *addressbook_window = NULL;
-  GtkWidget *druid_window = NULL;
+  GtkWidget *assistant_window = NULL;
   GtkWidget *prefs_window = NULL;
   GtkWidget *accounts_window = NULL;
   GtkWidget *pc2phone_window = NULL;
@@ -1235,7 +1235,7 @@ gm_mw_init_menu (GtkWidget *main_window)
   services = GnomeMeeting::Process ()->GetServiceCore ();
   gtk_frontend = dynamic_cast<GtkFrontend *>(services->get ("gtk-frontend"));
   addressbook_window = GTK_WIDGET (gtk_frontend->get_addressbook_window ()); 
-  druid_window = GnomeMeeting::Process ()->GetDruidWindow ();
+  assistant_window = GnomeMeeting::Process ()->GetAssistantWindow ();
   prefs_window = GnomeMeeting::Process ()->GetPrefsWindow ();
   accounts_window = GnomeMeeting::Process ()->GetAccountsWindow ();
   pc2phone_window = GnomeMeeting::Process ()->GetPC2PhoneWindow ();
@@ -1340,11 +1340,11 @@ gm_mw_init_menu (GtkWidget *main_window)
 
       GTK_MENU_NEW (_("_Edit")),
 
-      GTK_MENU_ENTRY("configuration_druid", _("Configuration Druid"),
-		     _("Run the configuration druid"),
+      GTK_MENU_ENTRY("configuration_assistant", _("Configuration Assistant"),
+		     _("Run the configuration assistant"),
 		     NULL, 0, 
 		     GTK_SIGNAL_FUNC (show_window_cb),
-		     (gpointer) druid_window, TRUE),
+		     (gpointer) assistant_window, TRUE),
 
       GTK_MENU_SEPARATOR,
       
@@ -4131,7 +4131,7 @@ main (int argc,
   GOptionContext *context = NULL;
 
   GtkWidget *main_window = NULL;
-  GtkWidget *druid_window = NULL;
+  GtkWidget *assistant_window = NULL;
 
   GtkWidget *dialog = NULL;
   
@@ -4261,7 +4261,7 @@ main (int argc,
    * is a fatal error.
    */
   main_window = GnomeMeeting::Process ()->GetMainWindow ();
-  druid_window = GnomeMeeting::Process ()->GetDruidWindow ();
+  assistant_window = GnomeMeeting::Process ()->GetAssistantWindow ();
   GmMainWindow *mw = gm_mw_get_mw (main_window); //TODO no gm_mw_get_mw here
   Ekiga::CallCore *call_core = dynamic_cast<Ekiga::CallCore *> (mw->core.get ("call-core"));
   if (error == -1) {
@@ -4270,7 +4270,7 @@ main (int argc,
         < 1000 * MAJOR_VERSION + 10 * MINOR_VERSION + BUILD_NUMBER) {
 
       gnomemeeting_conf_upgrade ();
-      gtk_widget_show_all (GTK_WIDGET (druid_window));
+      gtk_widget_show_all (assistant_window);
     }
     else {
 
