From 431ede38c7e16f4e0b89d9841f113f92ee9fc491 Mon Sep 17 00:00:00 2001
From: nobody <nobody@localhost>
Date: Sat, 3 May 2003 11:02:31 +0000
Subject: This commit was manufactured by cvs2svn to create tag
 'GTKHTML_3_0_8'.

svn path=/tags/GTKHTML_3_0_8/; revision=21086
---
 addressbook/gui/component/.cvsignore               |   14 -
 .../GNOME_Evolution_Addressbook.server.in.in       |  123 -
 addressbook/gui/component/Makefile.am              |  105 -
 addressbook/gui/component/addressbook-component.c  |  626 -----
 addressbook/gui/component/addressbook-component.h  |   32 -
 addressbook/gui/component/addressbook-config.c     | 1766 -------------
 addressbook/gui/component/addressbook-config.h     |   36 -
 addressbook/gui/component/addressbook-storage.c    |  722 ------
 addressbook/gui/component/addressbook-storage.h    |   81 -
 addressbook/gui/component/addressbook.c            | 1206 ---------
 addressbook/gui/component/addressbook.h            |   17 -
 .../component/apps_evolution_addressbook.schemas   |   42 -
 addressbook/gui/component/component-factory.c      |   72 -
 addressbook/gui/component/e-address-popup.c        | 1258 ---------
 addressbook/gui/component/e-address-popup.h        |   88 -
 addressbook/gui/component/e-address-widget.c       |  559 ----
 addressbook/gui/component/e-address-widget.h       |   82 -
 addressbook/gui/component/e-cardlist-model.c       |  233 --
 addressbook/gui/component/e-cardlist-model.h       |   42 -
 addressbook/gui/component/ldap-config.glade        | 2662 --------------------
 addressbook/gui/component/select-names/.cvsignore  |   15 -
 .../Evolution-Addressbook-SelectNames.idl          |  114 -
 ..._Evolution_Addressbook_SelectNames.server.in.in |   31 -
 addressbook/gui/component/select-names/Makefile.am |  115 -
 .../component/select-names/e-select-names-bonobo.c |  651 -----
 .../component/select-names/e-select-names-bonobo.h |   66 -
 .../select-names/e-select-names-completion.c       | 1207 ---------
 .../select-names/e-select-names-completion.h       |   68 -
 .../select-names/e-select-names-factory.c          |   59 -
 .../select-names/e-select-names-factory.h          |   30 -
 .../select-names/e-select-names-manager.c          |  775 ------
 .../select-names/e-select-names-manager.h          |   70 -
 .../select-names/e-select-names-marshal.list       |    3 -
 .../component/select-names/e-select-names-model.c  |  828 ------
 .../component/select-names/e-select-names-model.h  |   91 -
 .../component/select-names/e-select-names-popup.c  |  395 ---
 .../component/select-names/e-select-names-popup.h  |   36 -
 .../select-names/e-select-names-section.etspec     |    7 -
 .../select-names/e-select-names-table-model.c      |  369 ---
 .../select-names/e-select-names-table-model.h      |   51 -
 .../select-names/e-select-names-text-model.c       |  801 ------
 .../select-names/e-select-names-text-model.h       |   53 -
 .../gui/component/select-names/e-select-names.c    |  843 -------
 .../component/select-names/e-select-names.etspec   |    7 -
 .../gui/component/select-names/e-select-names.h    |  103 -
 .../component/select-names/e-simple-card-bonobo.c  |  216 --
 .../component/select-names/e-simple-card-bonobo.h  |   71 -
 .../gui/component/select-names/recipient.glade     |   45 -
 .../gui/component/select-names/select-names.glade  |  451 ----
 49 files changed, 17337 deletions(-)
 delete mode 100644 addressbook/gui/component/.cvsignore
 delete mode 100644 addressbook/gui/component/GNOME_Evolution_Addressbook.server.in.in
 delete mode 100644 addressbook/gui/component/Makefile.am
 delete mode 100644 addressbook/gui/component/addressbook-component.c
 delete mode 100644 addressbook/gui/component/addressbook-component.h
 delete mode 100644 addressbook/gui/component/addressbook-config.c
 delete mode 100644 addressbook/gui/component/addressbook-config.h
 delete mode 100644 addressbook/gui/component/addressbook-storage.c
 delete mode 100644 addressbook/gui/component/addressbook-storage.h
 delete mode 100644 addressbook/gui/component/addressbook.c
 delete mode 100644 addressbook/gui/component/addressbook.h
 delete mode 100644 addressbook/gui/component/apps_evolution_addressbook.schemas
 delete mode 100644 addressbook/gui/component/component-factory.c
 delete mode 100644 addressbook/gui/component/e-address-popup.c
 delete mode 100644 addressbook/gui/component/e-address-popup.h
 delete mode 100644 addressbook/gui/component/e-address-widget.c
 delete mode 100644 addressbook/gui/component/e-address-widget.h
 delete mode 100644 addressbook/gui/component/e-cardlist-model.c
 delete mode 100644 addressbook/gui/component/e-cardlist-model.h
 delete mode 100644 addressbook/gui/component/ldap-config.glade
 delete mode 100644 addressbook/gui/component/select-names/.cvsignore
 delete mode 100644 addressbook/gui/component/select-names/Evolution-Addressbook-SelectNames.idl
 delete mode 100644 addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.server.in.in
 delete mode 100644 addressbook/gui/component/select-names/Makefile.am
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-bonobo.c
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-bonobo.h
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-completion.c
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-completion.h
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-factory.c
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-factory.h
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-manager.c
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-manager.h
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-marshal.list
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-model.c
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-model.h
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-popup.c
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-popup.h
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-section.etspec
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-table-model.c
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-table-model.h
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-text-model.c
 delete mode 100644 addressbook/gui/component/select-names/e-select-names-text-model.h
 delete mode 100644 addressbook/gui/component/select-names/e-select-names.c
 delete mode 100644 addressbook/gui/component/select-names/e-select-names.etspec
 delete mode 100644 addressbook/gui/component/select-names/e-select-names.h
 delete mode 100644 addressbook/gui/component/select-names/e-simple-card-bonobo.c
 delete mode 100644 addressbook/gui/component/select-names/e-simple-card-bonobo.h
 delete mode 100644 addressbook/gui/component/select-names/recipient.glade
 delete mode 100644 addressbook/gui/component/select-names/select-names.glade

(limited to 'addressbook/gui/component')

diff --git a/addressbook/gui/component/.cvsignore b/addressbook/gui/component/.cvsignore
deleted file mode 100644
index 7f76d480fb..0000000000
--- a/addressbook/gui/component/.cvsignore
+++ /dev/null
@@ -1,14 +0,0 @@
-.deps
-.libs
-.pure
-Makefile
-Makefile.in
-*.lo
-*.la
-evolution-addressbook
-evolution-addressbook.pure
-test-addressbook
-GNOME_Evolution_Addressbook.server
-GNOME_Evolution_Addressbook.server.in
-addressbook-marshal.c
-addressbook-marshal.h
diff --git a/addressbook/gui/component/GNOME_Evolution_Addressbook.server.in.in b/addressbook/gui/component/GNOME_Evolution_Addressbook.server.in.in
deleted file mode 100644
index 6d46c5fbbe..0000000000
--- a/addressbook/gui/component/GNOME_Evolution_Addressbook.server.in.in
+++ /dev/null
@@ -1,123 +0,0 @@
-<oaf_info>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Addressbook_Factory"
-            type="shlib"
-            location="@COMPONENTDIR@/libevolution-addressbook.so">
-
-	<oaf_attribute name="repo_ids" type="stringv">
-		<item value="IDL:GNOME/ObjectFactory:1.0"/>
-	</oaf_attribute>
-
-	<oaf_attribute name="name" type="string"
-                       _value="Evolution Addressbook"/>
-
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Addressbook_MiniCard_Control"
-            type="factory"
-            location="OAFIID:GNOME_Evolution_Addressbook_Factory">
-
-	<oaf_attribute name="repo_ids" type="stringv">
-		<item value="IDL:Bonobo/Control:1.0"/>
-	        <item value="IDL:Bonobo/PersistStream:1.0"/>
-	</oaf_attribute>
-
-	<oaf_attribute name="bonobo:supported_mime_types" type="stringv">
-		<item value="text/vcard"/>
-		<item value="text/x-vcard"/>
-	</oaf_attribute>
-
-	<oaf_attribute name="name" type="string"
-		       _value="Evolution Addressbook card viewer"/>
-
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Addressbook_Control"
-            type="factory"
-            location="OAFIID:GNOME_Evolution_Addressbook_Factory">
-
-	<oaf_attribute name="repo_ids" type="stringv">
-		<item value="IDL:BonoboControl/addressbook-control:1.0"/>
-		<item value="IDL:GNOME/Control:1.0"/>
-	</oaf_attribute>
-
-	<oaf_attribute name="name" type="string"
-                       _value="Evolution Addressbook folder viewer"/>
-
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Addressbook_ShellComponent"
-            type="factory"
-            location="OAFIID:GNOME_Evolution_Addressbook_Factory">
-
-	<oaf_attribute name="repo_ids" type="stringv">
-		<item value="IDL:GNOME/Evolution/ShellComponent:1.0"/>
-	</oaf_attribute>
-
-	<oaf_attribute name="name" type="string"
-	               _value="Evolution Addressbook component"/>
-
-	<oaf_attribute name="evolution:shell_component_icon" type="string"
-		       value="evolution-contacts.png"/>
-	<oaf_attribute name="evolution:shell_component_launch_order" type="number"
-		       value="2"/>
-
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Addressbook_AddressWidget"
-	    type="factory"
-	    location="OAFIID:GNOME_Evolution_Addressbook_Factory">
-
-	<oaf_attribute name="repo_ids" type="stringv">
-		<item value="IDL:BonoboControl/address-widget:1.0"/>
-		<item value="IDL:GNOME/Control:1.0"/>
-	</oaf_attribute>
-
-	<oaf_attribute name="name" type="string"
-		       _value="Evolution Addressbook address viewer"/>
-
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Addressbook_AddressPopup"
-	    type="factory"
-	    location="OAFIID:GNOME_Evolution_Addressbook_Factory">
-
-	<oaf_attribute name="repo_ids" type="stringv">
-		<item value="IDL:BonoboControl/address-widget:1.0"/>
-		<item value="IDL:GNOME/Control:1.0"/>
-	</oaf_attribute>
-
-	<oaf_attribute name="name" type="string"
-		       _value="Evolution Addressbook address pop-up"/>
-
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_LDAPStorage_ConfigControl"
-            type="factory"
-	    location="OAFIID:GNOME_Evolution_Addressbook_Factory">
-
-	<oaf_attribute name="repo_ids" type="stringv">
-		<item value="IDL:GNOME/Evolution/ConfigControl:1.0"/>
-	</oaf_attribute>
-
-	<oaf_attribute name="evolution:config_item:title" type="string"
-		       _value="Directory Servers"/>
-
-	<oaf_attribute name="evolution:config_item:description" type="string"
-		       _value="Configure access to LDAP directory servers here"/>
-
-	<oaf_attribute name="evolution:config_item:icon_name" type="string"
-		       value="ldap-settings.png"/>
-
-	<oaf_attribute name="evolution:config_item:type" type="stringv">
-		<item value="contacts/ldap"/>
-	</oaf_attribute>
-
-	<oaf_attribute name="evolution:config_item:priority" type="string" value="-6"/>
-    
-	<oaf_attribute name="name" type="string"
-		       _value="Evolution Addressbook LDAP Configuration Control"/>
-
-</oaf_server>
-
-</oaf_info>
diff --git a/addressbook/gui/component/Makefile.am b/addressbook/gui/component/Makefile.am
deleted file mode 100644
index 36dd543700..0000000000
--- a/addressbook/gui/component/Makefile.am
+++ /dev/null
@@ -1,105 +0,0 @@
-SUBDIRS	= select-names
-
-INCLUDES =									\
-	-DG_LOG_DOMAIN=\"evolution-addressbook\"		\
-	-I$(top_srcdir)						\
-	-I$(top_builddir)					\
-	-I$(top_srcdir)/shell					\
-	-I$(top_builddir)/shell					\
-	-I$(top_srcdir)/widgets/misc				\
-	-I$(top_srcdir)/addressbook/gui/contact-editor		\
-	-I$(top_srcdir)/addressbook/gui/contact-list-editor	\
-	-I$(top_srcdir)/addressbook/gui/minicard		\
-	-I$(top_srcdir)/addressbook/gui/widgets			\
-	-I$(top_srcdir)/addressbook/backend			\
-	-I$(top_builddir)/addressbook/backend			\
-	-DEVOLUTION_DATADIR=\""$(datadir)"\"			\
-	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\"			\
-	-DEVOLUTION_ETSPECDIR=\""$(etspecdir)"\"		\
-	-DEVOLUTION_IMAGESDIR=\""$(imagesdir)"\"		\
-	-DEVOLUTION_LOCALEDIR=\""$(localedir)"\"		\
-	-DEVOLUTION_UIDIR=\""$(evolutionuidir)"\"		\
-	-DPREFIX=\""$(prefix)"\"				\
-	$(LDAP_CFLAGS)						\
-	-DG_DISABLE_DEPRECATED					\
-	-DGTK_DISABLE_DEPRECATED				\
-	-DLIBGNOME_DISABLE_DEPRECATED				\
-	-DLIBGNOMEUI_DISABLE_DEPRECATED				\
-	$(EVOLUTION_ADDRESSBOOK_CFLAGS)
-
-component_LTLIBRARIES = libevolution-addressbook.la
-
-libevolution_addressbook_la_SOURCES = 	\
-	addressbook-component.c		\
-	addressbook-component.h		\
-	addressbook-config.c		\
-	addressbook-config.h		\
-	addressbook-storage.c		\
-	addressbook-storage.h		\
-	addressbook.c			\
-	addressbook.h			\
-	component-factory.c		\
-	e-cardlist-model.c		\
-	e-cardlist-model.h		\
-	e-address-widget.h		\
-	e-address-widget.c		\
-	e-address-popup.h		\
-	e-address-popup.c
-
-libevolution_addressbook_la_LIBADD =							\
-	select-names/libeselectnames.la							\
-	$(top_builddir)/shell/libeshell.la						\
-	$(top_builddir)/addressbook/gui/widgets/libeminicard.la				\
-	$(top_builddir)/addressbook/printing/libecontactprint.la			\
-	$(top_builddir)/addressbook/gui/search/libeaddressbooksearch.la			\
-	$(top_builddir)/filter/libfilter.la						\
-	$(top_builddir)/addressbook/backend/ebook/libebook.la				\
-	$(top_builddir)/addressbook/gui/contact-list-editor/libecontactlisteditor.la	\
-	$(top_builddir)/addressbook/gui/contact-editor/libecontacteditor.la		\
-	$(top_builddir)/widgets/misc/libemiscwidgets.la					\
-	$(top_builddir)/addressbook/gui/merging/libecardmerging.la			\
-	$(top_builddir)/widgets/menus/libmenus.la					\
-	$(EVOLUTION_ADDRESSBOOK_LIBS) $(LDAP_LIBS)
-
-
-
-libevolution_addressbook_la_LDFLAGS = -module -avoid-version
-
-# GConf schemas
-
-schemadir   = $(GCONF_SCHEMA_FILE_DIR)
-schema_DATA = apps_evolution_addressbook.schemas
-
-install-data-local:
-	if test -z "$(DESTDIR)" ; then \
-		for p in $(schema_DATA) ; do \
-			GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$$p; \
-		done \
-	fi
-
-server_in_files = GNOME_Evolution_Addressbook.server.in.in
-
-server_DATA = $(server_in_files:.server.in.in=.server)
-$(server_in_files:.server.in.in=.server.in): $(server_in_files)
-	sed -e "s|\@COMPONENTDIR\@|$(componentdir)|" $< > $@
-
-@INTLTOOL_SERVER_RULE@
-
-glade_DATA = ldap-config.glade
-
-EXTRA_DIST =			\
-	$(glade_DATA)		\
-	$(schema_DATA)		\
-	$(server_DATA)		\
-	$(server_in_files)
-
-if ENABLE_PURIFY
-PLINK = $(LIBTOOL) --mode=link $(PURIFY) $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
-
-all-local: evolution-addressbook.pure
-
-evolution-addressbook.pure: evolution-addressbook
-	@rm -f evolution-addressbook.pure
-	$(PLINK) $(evolution_addressbook_LDFLAGS) $(evolution_addressbook_OBJECTS) $(evolution_addressbook_LDADD) $(LIBS)
-
-endif
diff --git a/addressbook/gui/component/addressbook-component.c b/addressbook/gui/component/addressbook-component.c
deleted file mode 100644
index b1db690d2a..0000000000
--- a/addressbook/gui/component/addressbook-component.c
+++ /dev/null
@@ -1,626 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* addressbook-component.c
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <libgnomevfs/gnome-vfs-types.h>
-#include <libgnomevfs/gnome-vfs-uri.h>
-#include <libgnomevfs/gnome-vfs-ops.h>
-#include <libgnomevfs/gnome-vfs-directory.h>
-#include <libgnomevfs/gnome-vfs-file-info.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <bonobo/bonobo-generic-factory.h>
-#include <bonobo/bonobo-main.h>
-
-#include "evolution-shell-component.h"
-#include "evolution-shell-component-dnd.h"
-#include "evolution-storage.h"
-#include "e-folder-list.h"
-
-#include "ebook/e-book.h"
-#include "ebook/e-card.h"
-#include "ebook/e-book-util.h"
-
-#include "addressbook-config.h"
-#include "addressbook-storage.h"
-#include "addressbook-component.h"
-#include "addressbook.h"
-#include "addressbook/gui/merging/e-card-merging.h"
-#include "addressbook/gui/widgets/e-addressbook-util.h"
-
-
-
-#define GNOME_EVOLUTION_ADDRESSBOOK_COMPONENT_ID "OAFIID:GNOME_Evolution_Addressbook_ShellComponent"
-
-EvolutionShellClient *global_shell_client = NULL;
-
-EvolutionShellClient *
-addressbook_component_get_shell_client  (void)
-{
-	return global_shell_client;
-}
-
-static char *accepted_dnd_types[] = {
-	"text/x-vcard",
-	NULL
-};
-
-static const EvolutionShellComponentFolderType folder_types[] = {
-	{ "contacts", "evolution-contacts.png", N_("Contacts"), N_("Folder containing contact information"),
-	  TRUE, accepted_dnd_types, NULL },
-	{ "contacts/ldap", "ldap.png", N_("LDAP Server"), N_("LDAP server containing contact information"),
-	  FALSE, accepted_dnd_types, NULL },
-	{ "contacts/public", "evolution-contacts.png", N_("Public Contacts"), N_("Public folder containing contact information"),
-	  FALSE, accepted_dnd_types, NULL },
-	{ NULL }
-};
-
-#define IS_CONTACT_TYPE(x)  (g_ascii_strcasecmp((x), "contacts") == 0 || g_ascii_strcasecmp ((x), "contacts/ldap") == 0 || g_ascii_strcasecmp((x), "contacts/public") == 0)
-
-/* EvolutionShellComponent methods and signals.  */
-
-static EvolutionShellComponentResult
-create_view (EvolutionShellComponent *shell_component,
-	     const char *physical_uri,
-	     const char *type,
-	     const char *view_info,
-	     BonoboControl **control_return,
-	     void *closure)
-{
-	BonoboControl *control;
-
-	if (!IS_CONTACT_TYPE (type))
-		return EVOLUTION_SHELL_COMPONENT_UNSUPPORTEDTYPE;
-
-	control = addressbook_new_control ();
-	bonobo_control_set_property (control, NULL, "folder_uri", TC_CORBA_string, physical_uri, NULL);
-
-	*control_return = control;
-
-	return EVOLUTION_SHELL_COMPONENT_OK;
-}
-
-static void
-create_folder (EvolutionShellComponent *shell_component,
-	       const char *physical_uri,
-	       const char *type,
-	       const GNOME_Evolution_ShellComponentListener listener,
-	       void *closure)
-{
-	CORBA_Environment ev;
-	GNOME_Evolution_ShellComponentListener_Result result;
-
-	if (!IS_CONTACT_TYPE (type))
-		result = GNOME_Evolution_ShellComponentListener_UNSUPPORTED_TYPE;
-	else 
-		result = GNOME_Evolution_ShellComponentListener_OK;
-
-	CORBA_exception_init(&ev);
-	GNOME_Evolution_ShellComponentListener_notifyResult(listener, result, &ev);
-	CORBA_exception_free(&ev);
-}
-
-static void
-remove_folder (EvolutionShellComponent *shell_component,
-	       const char *physical_uri,
-	       const char *type,
-	       const GNOME_Evolution_ShellComponentListener listener,
-	       void *closure)
-{
-	CORBA_Environment ev;
-	char *db_path, *summary_path, *subdir_path;
-	struct stat sb;
-	int rv;
-
-	CORBA_exception_init(&ev);
-
-	if (!IS_CONTACT_TYPE (type)) {
-		GNOME_Evolution_ShellComponentListener_notifyResult (listener,
-								     GNOME_Evolution_ShellComponentListener_UNSUPPORTED_TYPE,
-								     &ev);
-		CORBA_exception_free(&ev);
-		return;
-	}
-
-	if (!strncmp (physical_uri, "ldap://", 7)) {
-		GNOME_Evolution_ShellComponentListener_notifyResult (listener,
-								     GNOME_Evolution_ShellComponentListener_UNSUPPORTED_OPERATION,
-								     &ev);
-		CORBA_exception_free(&ev);
-		return;
-	}
-	if (strncmp (physical_uri, "file://", 7)) {
-		GNOME_Evolution_ShellComponentListener_notifyResult (listener,
-								     GNOME_Evolution_ShellComponentListener_INVALID_URI,
-								     &ev);
-		CORBA_exception_free(&ev);
-		return;
-	}
-
-	subdir_path = g_build_filename (physical_uri + 7, "subfolders", NULL);
-	rv = stat (subdir_path, &sb);
-	g_free (subdir_path);
-	if (rv != -1) {
-		GNOME_Evolution_ShellComponentListener_notifyResult (listener,
-								     GNOME_Evolution_ShellComponentListener_HAS_SUBFOLDERS,
-								     &ev);
-		CORBA_exception_free(&ev);
-		return;
-	}
-
-	db_path = g_build_filename (physical_uri + 7, "addressbook.db", NULL);
-	summary_path = g_build_filename (physical_uri + 7, "addressbook.db.summary", NULL);
-	rv = unlink (db_path);
-
-	if (rv == 0 || (rv == -1 && errno == ENOENT))
-		rv = unlink (summary_path);
-
-	if (rv == 0 || (rv == -1 && errno == ENOENT)) {
-		GNOME_Evolution_ShellComponentListener_notifyResult (listener,
-								     GNOME_Evolution_ShellComponentListener_OK,
-								     &ev);
-	}
-	else {
-		GNOME_Evolution_ShellComponentListener_notifyResult (listener,
-								     GNOME_Evolution_ShellComponentListener_PERMISSION_DENIED,
-								     &ev);
-	}
-
-	g_free (db_path);
-	g_free (summary_path);
-
-	CORBA_exception_free(&ev);
-}
-
-/* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** */
-
-/* This code is cut & pasted from calendar/gui/component-factory.c */
-
-static GNOME_Evolution_ShellComponentListener_Result
-xfer_file (GnomeVFSURI *base_src_uri,
-	   GnomeVFSURI *base_dest_uri,
-	   const char *file_name,
-	   int remove_source)
-{
-	GnomeVFSURI *src_uri, *dest_uri;
-	GnomeVFSHandle *hin, *hout;
-	GnomeVFSResult result;
-	GnomeVFSFileInfo file_info;
-	GnomeVFSFileSize size;
-	char *buffer;
-	
-	src_uri = gnome_vfs_uri_append_file_name (base_src_uri, file_name);
-
-	result = gnome_vfs_open_uri (&hin, src_uri, GNOME_VFS_OPEN_READ);
-	if (result == GNOME_VFS_ERROR_NOT_FOUND) {
-		gnome_vfs_uri_unref (src_uri);
-		return GNOME_Evolution_ShellComponentListener_OK; /* No need to xfer anything.  */
-	}
-	if (result != GNOME_VFS_OK) {
-		gnome_vfs_uri_unref (src_uri);
-		return GNOME_Evolution_ShellComponentListener_PERMISSION_DENIED;
-	}
-
-	result = gnome_vfs_get_file_info_uri (src_uri, &file_info, GNOME_VFS_FILE_INFO_DEFAULT);
-	if (result != GNOME_VFS_OK) {
-		gnome_vfs_uri_unref (src_uri);
-		return GNOME_Evolution_ShellComponentListener_PERMISSION_DENIED;
-	}
-
-	dest_uri = gnome_vfs_uri_append_file_name (base_dest_uri, file_name);
-
-	result = gnome_vfs_create_uri (&hout, dest_uri, GNOME_VFS_OPEN_WRITE, FALSE, 0600);
-	if (result != GNOME_VFS_OK) {
-		gnome_vfs_close (hin);
-		gnome_vfs_uri_unref (src_uri);
-		gnome_vfs_uri_unref (dest_uri);
-		return GNOME_Evolution_ShellComponentListener_PERMISSION_DENIED;
-	}
-
-	/* write source file to destination file */
-	buffer = g_malloc (file_info.size);
-	result = gnome_vfs_read (hin, buffer, file_info.size, &size);
-	if (result != GNOME_VFS_OK) {
-		gnome_vfs_close (hin);
-		gnome_vfs_close (hout);
-		gnome_vfs_uri_unref (src_uri);
-		gnome_vfs_uri_unref (dest_uri);
-		g_free (buffer);
-		return GNOME_Evolution_ShellComponentListener_PERMISSION_DENIED;
-	}
-
-	result = gnome_vfs_write (hout, buffer, file_info.size, &size);
-	if (result != GNOME_VFS_OK) {
-		gnome_vfs_close (hin);
-		gnome_vfs_close (hout);
-		gnome_vfs_uri_unref (src_uri);
-		gnome_vfs_uri_unref (dest_uri);
-		g_free (buffer);
-		return GNOME_Evolution_ShellComponentListener_PERMISSION_DENIED;
-	}
-
-	if (remove_source) {
-		char *text_uri;
-
-		/* Sigh, we have to do this as there is no gnome_vfs_unlink_uri(). :-(  */
-
-		text_uri = gnome_vfs_uri_to_string (src_uri, GNOME_VFS_URI_HIDE_NONE);
-		result = gnome_vfs_unlink (text_uri);
-		g_free (text_uri);
-	}
-
-	gnome_vfs_close (hin);
-	gnome_vfs_close (hout);
-	gnome_vfs_uri_unref (src_uri);
-	gnome_vfs_uri_unref (dest_uri);
-	g_free (buffer);
-
-	return GNOME_Evolution_ShellComponentListener_OK;
-}
-
-static void
-xfer_folder (EvolutionShellComponent *shell_component,
-	     const char *source_physical_uri,
-	     const char *destination_physical_uri,
-	     const char *type,
-	     gboolean remove_source,
-	     const GNOME_Evolution_ShellComponentListener listener,
-	     void *closure)
-{
-	CORBA_Environment ev;
-
-	GnomeVFSURI *src_uri;
-	GnomeVFSURI *dest_uri;
-	GnomeVFSResult result;
-
-	CORBA_exception_init (&ev);
-	
-	if (!IS_CONTACT_TYPE (type)) {
-		GNOME_Evolution_ShellComponentListener_notifyResult (listener,
-								     GNOME_Evolution_ShellComponentListener_UNSUPPORTED_TYPE,
-								     &ev);
-		CORBA_exception_free(&ev);
-		return;
-	}
-
-	if (!strncmp (source_physical_uri, "ldap://", 7)
-	    || !strncmp (destination_physical_uri, "ldap://", 7)) {
-		GNOME_Evolution_ShellComponentListener_notifyResult (listener,
-							     GNOME_Evolution_ShellComponentListener_UNSUPPORTED_OPERATION,
-							     &ev);
-		CORBA_exception_free(&ev);
-		return;
-	}
-
-	if (strncmp (source_physical_uri, "file://", 7)
-	    || strncmp (destination_physical_uri, "file://", 7)) {
-		GNOME_Evolution_ShellComponentListener_notifyResult (listener,
-							     GNOME_Evolution_ShellComponentListener_INVALID_URI,
-							     &ev);
-		CORBA_exception_free(&ev);
-		return;
-	}
-
-	/* check URIs */
-	src_uri = gnome_vfs_uri_new (source_physical_uri);
-	dest_uri = gnome_vfs_uri_new (destination_physical_uri);
-	if (!src_uri || ! dest_uri) {
-		GNOME_Evolution_ShellComponentListener_notifyResult (
-			listener,
-			GNOME_Evolution_ShellComponentListener_INVALID_URI,
-			&ev);
-		gnome_vfs_uri_unref (src_uri);
-		gnome_vfs_uri_unref (dest_uri);
-		CORBA_exception_free (&ev);
-		return;
-	}
-
-	result = xfer_file (src_uri, dest_uri, "addressbook.db", remove_source);
-	
-	GNOME_Evolution_ShellComponentListener_notifyResult (listener, result, &ev);
-
-	gnome_vfs_uri_unref (src_uri);
-	gnome_vfs_uri_unref (dest_uri);
-
-        CORBA_exception_free (&ev);	
-}
-
-static char*
-get_dnd_selection (EvolutionShellComponent *shell_component,
-		   const char *physical_uri,
-		   int type,
-		   int *format_return,
-		   const char **selection_return,
-		   int *selection_length_return,
-		   void *closure)
-{
-	/* g_print ("should get dnd selection for %s\n", physical_uri); */
-	return NULL;
-}
-
-static int owner_count = 0;
-
-static void
-owner_set_cb (EvolutionShellComponent *shell_component,
-	      EvolutionShellClient *shell_client,
-	      const char *evolution_homedir,
-	      gpointer user_data)
-{
-	owner_count ++;
-
-	if (global_shell_client == NULL)
-		global_shell_client = shell_client;
-
-	addressbook_storage_setup (shell_component, evolution_homedir);
-}
-
-static void
-owner_unset_cb (EvolutionShellComponent *shell_component,
-		GNOME_Evolution_Shell shell_interface,
-		gpointer user_data)
-{
-	owner_count --;
-
-	if (owner_count == 0)
-		global_shell_client = NULL;
-}
-
-/* FIXME We should perhaps take the time to figure out if the book is editable. */
-static void
-new_item_cb (EBook *book, gpointer closure)
-{
-	gboolean is_list = GPOINTER_TO_INT (closure);
-	if (book == NULL)
-		return;
-	if (is_list)
-		e_addressbook_show_contact_list_editor (book, e_card_new(""), TRUE, TRUE);
-	else
-		e_addressbook_show_contact_editor (book, e_card_new(""), TRUE, TRUE);
-}
-
-static void
-user_create_new_item_cb (EvolutionShellComponent *shell_component,
-			 const char *id,
-			 const char *parent_folder_physical_uri,
-			 const char *parent_folder_type,
-			 gpointer data)
-{
-	gboolean is_contact_list;
-	if (!strcmp (id, "contact")) {
-		is_contact_list = FALSE;
-	} else if (!strcmp (id, "contact_list")) {
-		is_contact_list = TRUE;
-	} else {
-		g_warning ("Don't know how to create item of type \"%s\"", id);
-		return;
-	}
-	if (IS_CONTACT_TYPE (parent_folder_type)) {
-		e_book_use_address_book_by_uri (parent_folder_physical_uri,
-						new_item_cb, GINT_TO_POINTER (is_contact_list));
-	} else {
-		e_book_use_default_book (new_item_cb, GINT_TO_POINTER (is_contact_list));
-	}
-}
-
-
-/* Destination side DnD */
-
-static CORBA_boolean
-destination_folder_handle_motion (EvolutionShellComponentDndDestinationFolder *folder,
-				  const char *physical_uri,
-				  const char *folder_type,
-				  const GNOME_Evolution_ShellComponentDnd_DestinationFolder_Context * destination_context,
-				  GNOME_Evolution_ShellComponentDnd_Action * suggested_action_return,
-				  gpointer user_data)
-{
-	*suggested_action_return = GNOME_Evolution_ShellComponentDnd_ACTION_MOVE;
-	return TRUE;
-}
-
-static void
-dnd_drop_book_open_cb (EBook *book, EBookStatus status, GList *card_list)
-{
-	GList *l;
-
-	for (l = card_list; l; l = l->next) {
-		ECard *card = l->data;
-
-		e_card_merging_book_add_card (book, card, NULL /* XXX */, NULL);
-	}
-}
-
-static CORBA_boolean
-destination_folder_handle_drop (EvolutionShellComponentDndDestinationFolder *folder,
-				const char *physical_uri,
-				const char *folder_type,
-				const GNOME_Evolution_ShellComponentDnd_DestinationFolder_Context * destination_context,
-				const GNOME_Evolution_ShellComponentDnd_Action action,
-				const GNOME_Evolution_ShellComponentDnd_Data * data,
-				gpointer user_data)
-{
-	EBook *book;
-	GList *card_list;
-	char *expanded_uri;
-
-	if (action == GNOME_Evolution_ShellComponentDnd_ACTION_LINK)
-		return FALSE; /* we can't create links in our addressbook format */
-
-	/* g_print ("in destination_folder_handle_drop (%s)\n", physical_uri); */
-
-	card_list = e_card_load_cards_from_string_with_default_charset (data->bytes._buffer, "ISO-8859-1");
-
-	expanded_uri = e_book_expand_uri (physical_uri);
-
-	book = e_book_new ();
-	addressbook_load_uri (book, expanded_uri,
-			      (EBookCallback)dnd_drop_book_open_cb, card_list);
-
-	g_free (expanded_uri);
-
-	return TRUE;
-}
-
-
-/* Quitting.  */
-
-static gboolean
-request_quit (EvolutionShellComponent *shell_component,
-	      void *data)
-{
-	if (! e_contact_editor_request_close_all ()
-	    || ! e_contact_list_editor_request_close_all ())
-		return FALSE;
-	else
-		return TRUE;
-}
-
-
-/* The factory function.  */
-
-static void
-add_creatable_item (EvolutionShellComponent *shell_component,
-		    const char *id,
-		    const char *description,
-		    const char *menu_description,
-		    const char *tooltip,
-		    char menu_shortcut,
-		    const char *icon_name)
-{
-	char *icon_path;
-	GdkPixbuf *icon;
-
-	if (icon_name == NULL) {
-		icon_path = NULL;
-		icon = NULL;
-	} else {
-		icon_path = g_build_filename (EVOLUTION_IMAGESDIR, icon_name, NULL);
-		icon = gdk_pixbuf_new_from_file (icon_path, NULL);
-	}
-
-	evolution_shell_component_add_user_creatable_item (shell_component,
-							   id,
-							   description,
-							   menu_description,
-							   tooltip,
-							   "contacts",
-							   menu_shortcut,
-							   icon);
-
-
-	if (icon != NULL)
-		gdk_pixbuf_unref (icon);
-	g_free (icon_path);
-}
-
-static BonoboObject *
-create_component (void)
-{
-	EvolutionShellComponent *shell_component;
-	EvolutionShellComponentDndDestinationFolder *destination_interface;
-
-	shell_component = evolution_shell_component_new (folder_types, NULL,
-							 create_view, create_folder,
-							 remove_folder, xfer_folder,
-							 NULL, NULL,
-							 get_dnd_selection,
-							 request_quit,
-							 NULL);
-
-	destination_interface = evolution_shell_component_dnd_destination_folder_new (destination_folder_handle_motion,
-										      destination_folder_handle_drop,
-										      shell_component);
-
-	bonobo_object_add_interface (BONOBO_OBJECT (shell_component),
-				     BONOBO_OBJECT (destination_interface));
-
-	add_creatable_item (shell_component, "contact",
-			    _("New Contact"), _("_Contact"),
-			    _("Create a new contact"), 'c',
-			    "evolution-contacts-mini.png");
-	add_creatable_item (shell_component, "contact_list",
-			    _("New Contact List"), _("Contact _List"),
-			    _("Create a new contact list"), 'l',
-			    "contact-list-16.png");
-
-	g_signal_connect (shell_component, "owner_set",
-			  G_CALLBACK (owner_set_cb), NULL);
-	g_signal_connect (shell_component, "owner_unset",
-			  G_CALLBACK (owner_unset_cb), NULL);
-	g_signal_connect (shell_component, "user_create_new_item",
-			  G_CALLBACK (user_create_new_item_cb), NULL);
-
-	return BONOBO_OBJECT (shell_component);
-}
-
-static void
-ensure_completion_uris_exist()
-{
-	/* Initialize the completion uris if they aren't set yet.  The
-	   default set is just the local Contacts folder. */
-	EConfigListener *db;
-	char *val;
-
-	db = e_book_get_config_database ();
-		
-	val = e_config_listener_get_string (db, "/apps/evolution/addressbook/completion/uris");
-
-	if (!val) {
-		EFolderListItem f[2];
-		char *dirname, *uri;
-		/* in the case where the user is running for the first
-		   time, populate the list with the local contact
-		   folder */
-		dirname = g_build_filename (g_get_home_dir (), "evolution/local/Contacts", NULL);
-		uri = g_strdup_printf ("file://%s", dirname);
-			
-		f[0].uri = "evolution:/local/Contacts";
-		f[0].physical_uri = uri;
-		f[0].display_name = _("Contacts");
-
-		memset (&f[1], 0, sizeof (f[1]));
-
-		val = e_folder_list_create_xml (f);
-
-		g_free (dirname);
-		g_free (uri);
-		e_config_listener_set_string (db, "/apps/evolution/addressbook/completion/uris", val);
-	}
-
-	g_free (val);
-}
-
-
-/* FIXME this is wrong.  */
-BonoboObject *
-addressbook_component_init (void)
-{
-	ensure_completion_uris_exist ();
-	return create_component ();
-}
diff --git a/addressbook/gui/component/addressbook-component.h b/addressbook/gui/component/addressbook-component.h
deleted file mode 100644
index 4c6f0cdd8b..0000000000
--- a/addressbook/gui/component/addressbook-component.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* addressbook-component.h
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifndef _ADDRESSBOOK_COMPONENT_H
-#define _ADDRESSBOOK_COMPONENT_H
-
-#include "evolution-shell-component.h"
-#include "evolution-storage.h"
-
-BonoboObject         *addressbook_component_init              (void);
-EvolutionShellClient *addressbook_component_get_shell_client  (void);
-
-#endif /* _ADDRESSBOOK_COMPONENT_H */
diff --git a/addressbook/gui/component/addressbook-config.c b/addressbook/gui/component/addressbook-config.c
deleted file mode 100644
index e2855ac7f4..0000000000
--- a/addressbook/gui/component/addressbook-config.c
+++ /dev/null
@@ -1,1766 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors:
- * Chris Toshok <toshok@ximian.com>
- * Chris Lahey <clahey@ximian.com>
- **/
-
-/*#define STANDALONE*/
-/*#define NEW_ADVANCED_UI*/
-
-#include <config.h>
-
-#include <string.h>
-#include <stdlib.h>
-#include <sys/time.h>
-
-#include <gtk/gtkcombo.h>
-#include <gtk/gtkdialog.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtkmessagedialog.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-druid.h>
-#include <libgnomeui/gnome-druid-page.h>
-
-#include <bonobo/bonobo-generic-factory.h>
-
-#include <glade/glade.h>
-
-#include "addressbook.h"
-#include "addressbook-component.h"
-#include "addressbook-config.h"
-#include "addressbook-storage.h"
-
-#include "evolution-config-control.h"
-#include <shell/e-folder-list.h>
-
-#include <gal/e-table/e-table-memory-store.h>
-#include <gal/e-table/e-table-scrolled.h>
-
-
-#ifdef HAVE_LDAP
-#include "ldap.h"
-#include "ldap_schema.h"
-#endif
-
-#define LDAP_PORT_STRING "389"
-#define LDAPS_PORT_STRING "636"
-
-#define GLADE_FILE_NAME "ldap-config.glade"
-#define CONFIG_CONTROL_FACTORY_ID "OAFIID:GNOME_Evolution_Addressbook_ConfigControlFactory"
-#define LDAP_CONFIG_CONTROL_ID "OAFIID:GNOME_Evolution_LDAPStorage_ConfigControl"
-
-#ifdef HAVE_LDAP
-GtkWidget* addressbook_dialog_create_sources_table (char *name, char *string1, char *string2,
-						    int num1, int num2);
-GtkWidget* supported_bases_create_table (char *name, char *string1, char *string2,
-					 int num1, int num2);
-
-#ifdef NEW_ADVANCED_UI
-GtkWidget* objectclasses_create_server_table (char *name, char *string1, char *string2,
-					      int num1, int num2);
-GtkWidget* objectclasses_create_evolution_table (char *name, char *string1, char *string2,
-						 int num1, int num2);
-#endif
-
-/* default objectclasses */
-#define TOP                  "top"
-#define PERSON               "person"
-#define ORGANIZATIONALPERSON "organizationalPerson"
-#define INETORGPERSON        "inetOrgPerson"
-#define EVOLUTIONPERSON      "evolutionPerson"
-#define CALENTRY             "calEntry"
-
-
-typedef struct {
-	GtkWidget *notebook;
-	int page_num;
-} FocusHelpClosure;
-
-static void
-focus_help (GtkWidget *w, GdkEventFocus *event, FocusHelpClosure *closure)
-{
-	gtk_notebook_set_current_page (GTK_NOTEBOOK(closure->notebook), closure->page_num);
-}
-
-static void
-add_focus_handler (GtkWidget *widget, GtkWidget *notebook, int page_num)
-{
-	FocusHelpClosure *focus_closure = g_new0 (FocusHelpClosure, 1);
-	focus_closure->notebook = notebook;
-	focus_closure->page_num = page_num;
-
-	g_signal_connect_data (G_OBJECT (widget),
-			       "focus_in_event" /* XXX */,
-			       G_CALLBACK (focus_help),
-			       focus_closure,
-			       (GClosureNotify) g_free,
-			       (GConnectFlags)0);
-}
-
-typedef struct _AddressbookDialog AddressbookDialog;
-typedef struct _AddressbookSourceDialog AddressbookSourceDialog;
-typedef void (*ModifyFunc)(GtkWidget *item, AddressbookSourceDialog *dialog);
-
-struct _AddressbookDialog {
-	EvolutionConfigControl *config_control;
-	GtkWidget *page;
-
-	GladeXML *gui;
-	GNOME_Evolution_Shell shell;
-
-	GtkWidget *sourcesTable;
-	GtkTreeModel *sourcesModel;
-	GtkTreeSelection *sourcesSelection;
-	GtkWidget *addSource;
-	GtkWidget *editSource;
-	GtkWidget *deleteSource;
-
-};
-
-
-struct _AddressbookSourceDialog {
-	AddressbookDialog *addressbook_dialog;
-	GladeXML  *gui;
-
-	GtkWidget *window;
-	GtkWidget *druid; /* only used (obviously) in the druid */
-
-	/* info page fields */
-	ModifyFunc general_modify_func;
-	GtkWidget *host;
-	GtkWidget *auth_optionmenu;
-	AddressbookLDAPAuthType auth; 
-	GtkWidget *auth_label_notebook;
-	GtkWidget *auth_entry_notebook;
-	GtkWidget *email;
-	GtkWidget *binddn;
-
-	/* connecting page fields */
-	ModifyFunc connecting_modify_func;
-	GtkWidget *port_combo;
-	GtkWidget *ssl_optionmenu;
-	AddressbookLDAPSSLType ssl;
-
-	/* searching page fields */
-	ModifyFunc searching_modify_func;
-	GtkWidget *rootdn;
-	AddressbookLDAPScopeType scope;
-	GtkWidget *scope_optionmenu;
-	GtkWidget *timeout_scale;
-	GtkWidget *limit_spinbutton;
-
-	/* display name page fields */
-	GtkWidget *display_name;
-	gboolean display_name_changed; /* only used in the druid */
-
-	gboolean schema_query_successful;
-
-#ifdef NEW_ADVANCED_UI
-	/* objectclasses tab fields */
-	GPtrArray *server_objectclasses;    /* the objectclasses available on the server */
-	GPtrArray *evolution_objectclasses; /* the objectclasses evolution will use */
-	GPtrArray *default_objectclasses;   /* the objectclasses we default to (actually the
-					       intersection between defaults and server_objectclasses) */
-	ModifyFunc objectclasses_modify_func;
-	GtkWidget *objectclasses_server_table;
-	ETableModel *objectclasses_server_model;
-	GtkWidget *objectclasses_evolution_table;
-	ETableModel *objectclasses_evolution_model;
-	GtkWidget *objectclasses_add_button;
-	GtkWidget *objectclasses_remove_button;
-
-	/* refs we keep around so we can add/hide the tabs */
-	GtkWidget *objectclasses_tab;
-	GtkWidget *objectclasses_label;
-	GtkWidget *mappings_tab;
-	GtkWidget *mappings_label;
-	GtkWidget *dn_customization_tab;
-	GtkWidget *dn_customization_label;
-#endif
-
-	/* stuff for the account editor window */
-	GtkTreeIter *source_model_row;
-	GtkWidget *ok_button;
-	GtkWidget *cancel_button;
-	GtkWidget *advanced_button_notebook;
-	GtkWidget *notebook; /* the toplevel notebook */
-
-	gboolean advanced;
-
-};
-
-
-/* ldap api foo */
-static LDAP *
-addressbook_ldap_init (GtkWidget *window, AddressbookSource *source)
-{
-	LDAP *ldap = ldap_init (source->host, atoi(source->port));
-
-	if (!ldap) {
-		GtkWidget *dialog;
-		dialog = gtk_message_dialog_new (GTK_WINDOW(window), 
-						 GTK_DIALOG_MODAL,
-						 GTK_MESSAGE_ERROR,
-						 GTK_BUTTONS_OK,
-						 _("Failed to connect to LDAP server"));
-		g_signal_connect (dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL);
-		gtk_widget_show (dialog);
-
-		return NULL;
-	}
-
-	/* XXX do TLS if it's configured in */
-
-	return ldap;
-}
-
-static int
-addressbook_ldap_auth (GtkWidget *window, AddressbookSource *source, LDAP *ldap)
-{
-	int ldap_error;
-
-	/* XXX use auth info from source */
-	ldap_error = ldap_simple_bind_s (ldap, NULL, NULL);
-	if (LDAP_SUCCESS != ldap_error) {
-		GtkWidget *dialog;
-		dialog = gtk_message_dialog_new (GTK_WINDOW (window),
-						 GTK_DIALOG_MODAL,
-						 GTK_MESSAGE_ERROR,
-						 GTK_BUTTONS_OK,
-						 _("Failed to authenticate with LDAP server"));
-		g_signal_connect (dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL);
-		gtk_widget_show (dialog);
-	}
-	return ldap_error;
-
-}
-
-static int
-addressbook_root_dse_query (GtkWindow *window, AddressbookSource *source, LDAP *ldap, char **attrs, LDAPMessage **resp)
-{
-	int ldap_error;
-	struct timeval timeout;
-
-	/* 3 second timeout */
-	timeout.tv_sec = 3;
-	timeout.tv_usec = 0;
-
-	ldap_error = ldap_search_ext_s (ldap,
-					LDAP_ROOT_DSE, LDAP_SCOPE_BASE,
-					"(objectclass=*)",
-					attrs, 0, NULL, NULL, &timeout, LDAP_NO_LIMIT, resp);
-	if (LDAP_SUCCESS != ldap_error) {
-		GtkWidget *dialog;
-		dialog = gtk_message_dialog_new (window,
-						 GTK_DIALOG_MODAL,
-						 GTK_MESSAGE_ERROR,
-						 GTK_BUTTONS_OK,
-						 _("Could not perform query on Root DSE"));
-		g_signal_connect (dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL);
-		gtk_widget_show (dialog);
-	}
-
-	return ldap_error;
-}
-
-
-static AddressbookSource *
-addressbook_dialog_get_source (AddressbookSourceDialog *dialog)
-{
-	AddressbookSource *source = g_new0 (AddressbookSource, 1);
-
-	source->name       = g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->display_name)));
-	source->host       = g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->host)));
-	source->email_addr = g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->email)));
-	source->binddn     = g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->binddn)));
-	source->port       = g_strdup (gtk_entry_get_text (GTK_ENTRY (GTK_COMBO(dialog->port_combo)->entry)));
-	source->rootdn     = g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->rootdn)));
-	source->limit      = atoi(gtk_entry_get_text (GTK_ENTRY (dialog->limit_spinbutton)));
-	source->scope      = dialog->scope;
-	source->auth       = dialog->auth;
-	source->ssl        = dialog->ssl;
-
-	addressbook_storage_init_source_uri (source);
-
-	return source;
-}
-
-static void
-addressbook_source_dialog_set_source (AddressbookSourceDialog *dialog, AddressbookSource *source)
-{
-	char *string;
-	gtk_entry_set_text (GTK_ENTRY (dialog->display_name), source && source->name ? source->name : "");
-	gtk_entry_set_text (GTK_ENTRY (dialog->host), source && source->host ? source->host : "");
-	gtk_entry_set_text (GTK_ENTRY (dialog->email), source && source->email_addr ? source->email_addr : "");
-	gtk_entry_set_text (GTK_ENTRY (dialog->binddn), source && source->binddn ? source->binddn : "");
-	gtk_entry_set_text (GTK_ENTRY (GTK_COMBO(dialog->port_combo)->entry), source ? source->port : LDAP_PORT_STRING);
-	gtk_entry_set_text (GTK_ENTRY (dialog->rootdn), source && source->rootdn ? source->rootdn : "");
-
-	string = g_strdup_printf ("%d", source ? source->limit : 100);
-	gtk_entry_set_text (GTK_ENTRY (dialog->limit_spinbutton), string);
-	g_free (string);
-
-	dialog->auth = source ? source->auth : ADDRESSBOOK_LDAP_AUTH_NONE;
-	gtk_option_menu_set_history (GTK_OPTION_MENU(dialog->auth_optionmenu), dialog->auth);
-	if (dialog->auth != ADDRESSBOOK_LDAP_AUTH_NONE) {
-		gtk_notebook_set_current_page (GTK_NOTEBOOK(dialog->auth_label_notebook), dialog->auth - 1);
-		gtk_notebook_set_current_page (GTK_NOTEBOOK(dialog->auth_entry_notebook), dialog->auth - 1);
-	}
-	gtk_widget_set_sensitive (dialog->auth_label_notebook, dialog->auth != ADDRESSBOOK_LDAP_AUTH_NONE);
-	gtk_widget_set_sensitive (dialog->auth_entry_notebook, dialog->auth != ADDRESSBOOK_LDAP_AUTH_NONE);
-
-	dialog->scope = source ? source->scope : ADDRESSBOOK_LDAP_SCOPE_ONELEVEL;
-	gtk_option_menu_set_history (GTK_OPTION_MENU(dialog->scope_optionmenu), dialog->scope);
-
-	dialog->ssl = source ? source->ssl : ADDRESSBOOK_LDAP_SSL_WHENEVER_POSSIBLE;
-	gtk_option_menu_set_history (GTK_OPTION_MENU(dialog->ssl_optionmenu), dialog->ssl);
-}
-
-static void
-addressbook_source_dialog_destroy (gpointer data, GObject *where_object_was)
-{
-	AddressbookSourceDialog *dialog = data;
-#ifdef NEW_ADVANCED_UI
-#define IF_UNREF(x) if (x) g_object_unref ((x))
-
-	int i;
-
-	if (dialog->server_objectclasses) {
-		for (i = 0; i < dialog->server_objectclasses->len; i ++)
-			ldap_objectclass_free (g_ptr_array_index (dialog->server_objectclasses, i));
-		g_ptr_array_free (dialog->server_objectclasses, TRUE);
-	}
-
-	if (dialog->evolution_objectclasses) {
-		for (i = 0; i < dialog->evolution_objectclasses->len; i ++)
-			ldap_objectclass_free (g_ptr_array_index (dialog->evolution_objectclasses, i));
-		g_ptr_array_free (dialog->evolution_objectclasses, TRUE);
-	}
-
-	if (dialog->default_objectclasses) {
-		for (i = 0; i < dialog->default_objectclasses->len; i ++)
-			ldap_objectclass_free (g_ptr_array_index (dialog->default_objectclasses, i));
-		g_ptr_array_free (dialog->default_objectclasses, TRUE);
-	}
-
-	IF_UNREF (dialog->objectclasses_server_model);
-	IF_UNREF (dialog->objectclasses_evolution_model);
-
-	IF_UNREF (dialog->objectclasses_tab);
-	IF_UNREF (dialog->objectclasses_label);
-	IF_UNREF (dialog->mappings_tab);
-	IF_UNREF (dialog->mappings_label);
-	IF_UNREF (dialog->dn_customization_tab);
-	IF_UNREF (dialog->dn_customization_label);
-
-#undef IF_UNREF
-#endif
-
-	if (dialog->source_model_row) {
-		gtk_tree_iter_free (dialog->source_model_row);
-		dialog->source_model_row = NULL;
-	}
-
-	g_object_unref (dialog->gui);
-
-	g_free (dialog);
-}
-
-static void
-addressbook_add_server_druid_cancel (GtkWidget *widget, AddressbookSourceDialog *dialog)
-{
-	gtk_widget_destroy (dialog->window);
-}
-
-static void
-addressbook_add_server_druid_finish (GnomeDruidPage *druid_page, GtkWidget *gnome_druid, AddressbookSourceDialog *sdialog)
-{
-	AddressbookSource *source = addressbook_dialog_get_source (sdialog);
-	AddressbookDialog *dialog = sdialog->addressbook_dialog;
-	GtkTreeIter iter;
-
-	printf ("in finish (%s,%s)\n", source->name, source->host);
-
-	gtk_list_store_append (GTK_LIST_STORE (dialog->sourcesModel), &iter);
-
-	gtk_list_store_set (GTK_LIST_STORE (dialog->sourcesModel), &iter,
-			    0, source->name,
-			    1, source->host,
-			    2, source,
-			    -1);
-			       
-	evolution_config_control_changed (dialog->config_control);
-
-	/* tear down the widgets */
-	gtk_widget_destroy (sdialog->window);
-}
-
-static void
-reparent_to_vbox (AddressbookSourceDialog *dialog, char *vbox_name, char *widget_name)
-{
-	GtkWidget *vbox, *widget;
-
-	vbox = glade_xml_get_widget (dialog->gui, vbox_name);
-	widget = glade_xml_get_widget (dialog->gui, widget_name);
-
-	gtk_widget_reparent (widget, vbox);
-	gtk_box_set_child_packing (GTK_BOX (vbox), widget, TRUE, TRUE, 0, GTK_PACK_START);
-}
-
-static void
-auth_optionmenu_activated (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	dialog->auth = g_list_index (gtk_container_get_children (GTK_CONTAINER (item->parent)),
-				     item);
-
-	dialog->general_modify_func (item, dialog);
-
-	if (dialog->auth == 0) {
-		gtk_widget_set_sensitive (dialog->auth_label_notebook, FALSE);
-		gtk_widget_set_sensitive (dialog->auth_entry_notebook, FALSE);
-	}
-	else {
-		gtk_widget_set_sensitive (dialog->auth_label_notebook, TRUE);
-		gtk_widget_set_sensitive (dialog->auth_entry_notebook, TRUE);
-		gtk_notebook_set_current_page (GTK_NOTEBOOK(dialog->auth_label_notebook), dialog->auth - 1);
-		gtk_notebook_set_current_page (GTK_NOTEBOOK(dialog->auth_entry_notebook), dialog->auth - 1);
-	}
-}
-
-static void
-add_auth_activate_cb (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	g_signal_connect (item, "activate",
-			  G_CALLBACK (auth_optionmenu_activated), dialog);
-}
-
-static void
-setup_general_tab (AddressbookSourceDialog *dialog, ModifyFunc modify_func)
-{
-	GtkWidget *general_tab_help;
-	GtkWidget *menu;
-
-	general_tab_help = glade_xml_get_widget (dialog->gui, "general-tab-help");
-
-	dialog->general_modify_func = modify_func;
-	dialog->host = glade_xml_get_widget (dialog->gui, "server-name-entry");
-	g_signal_connect (dialog->host, "changed",
-			  G_CALLBACK (modify_func), dialog);
-	add_focus_handler (dialog->host, general_tab_help, 0);
-
-	dialog->auth_label_notebook = glade_xml_get_widget (dialog->gui, "auth-label-notebook");
-	dialog->auth_entry_notebook = glade_xml_get_widget (dialog->gui, "auth-entry-notebook");
-	dialog->email = glade_xml_get_widget (dialog->gui, "email-entry");
-	g_signal_connect (dialog->email, "changed",
-			  G_CALLBACK (modify_func), dialog);
-	add_focus_handler (dialog->email, general_tab_help, 1);
-	dialog->binddn = glade_xml_get_widget (dialog->gui, "dn-entry");
-	g_signal_connect (dialog->binddn, "changed",
-			  G_CALLBACK (modify_func), dialog);
-	add_focus_handler (dialog->binddn, general_tab_help, 2);
-
-	dialog->auth_optionmenu = glade_xml_get_widget (dialog->gui, "auth-optionmenu");
-	menu = gtk_option_menu_get_menu (GTK_OPTION_MENU(dialog->auth_optionmenu));
-	gtk_container_foreach (GTK_CONTAINER (menu), (GtkCallback)add_auth_activate_cb, dialog);
-	add_focus_handler (dialog->auth_optionmenu, general_tab_help, 3);
-}
-
-static gboolean
-general_tab_check (AddressbookSourceDialog *dialog)
-{
-	gboolean valid = TRUE;
-	const char *string;
-
-	string = gtk_entry_get_text (GTK_ENTRY (dialog->host));
-	if (!string || !string[0])
-		valid = FALSE;
-
-	if (valid) {
-		if (dialog->auth != ADDRESSBOOK_LDAP_AUTH_NONE) {
-			if (dialog->auth == ADDRESSBOOK_LDAP_AUTH_SIMPLE_BINDDN)
-				string = gtk_entry_get_text (GTK_ENTRY (dialog->binddn));
-			else
-				string = gtk_entry_get_text (GTK_ENTRY (dialog->email));
-
-			if (!string || !string[0])
-				valid = FALSE;
-		}
-	}
-
-	return valid;
-}
-
-static void
-druid_info_page_modify_cb (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	gnome_druid_set_buttons_sensitive (GNOME_DRUID(dialog->druid),
-					   TRUE, /* back */
-					   general_tab_check (dialog), /* next */
-					   TRUE, /* cancel */
-					   FALSE /* help */);
-}
-
-static void
-druid_info_page_prepare (GnomeDruidPage *dpage, GtkWidget *gdruid, AddressbookSourceDialog *dialog)
-{
-	druid_info_page_modify_cb (NULL, dialog);
-	/* stick the focus in the hostname field */
-	gtk_widget_grab_focus (dialog->host);
-}
-
-
-/* connecting page */
-static void
-ssl_optionmenu_activated (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	dialog->ssl = g_list_index (gtk_container_get_children (GTK_CONTAINER (item->parent)),
-				    item);
-
-	dialog->connecting_modify_func (item, dialog);
-}
-
-static void
-ssl_optionmenu_selected (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	GtkWidget *connecting_tab_help;
-	int ssl_type = g_list_index (gtk_container_get_children (GTK_CONTAINER (item->parent)),
-				     item);
-
-	connecting_tab_help = glade_xml_get_widget (dialog->gui, "connecting-tab-help");
-
-	gtk_notebook_set_current_page (GTK_NOTEBOOK(connecting_tab_help), ssl_type + 1);
-}
-
-static void
-add_ssl_activate_cb (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	g_signal_connect (item, "activate",
-			  G_CALLBACK (ssl_optionmenu_activated), dialog);
-	g_signal_connect (item, "select",
-			  G_CALLBACK (ssl_optionmenu_selected), dialog);
-}
-
-static void
-port_changed_func (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	/* if the port value is ldaps, set the SSL/TLS option menu to
-	   Always and desensitize it */
-	const char *string = gtk_entry_get_text (GTK_ENTRY (item));
-
-	dialog->connecting_modify_func (item, dialog);
-
-	if (!strcmp (string, LDAPS_PORT_STRING)) {
-		dialog->ssl = ADDRESSBOOK_LDAP_SSL_ALWAYS;
-		gtk_option_menu_set_history (GTK_OPTION_MENU(dialog->ssl_optionmenu),
-					     dialog->ssl);
-
-		gtk_widget_set_sensitive (dialog->ssl_optionmenu, FALSE);
-	}
-	else {
-		gtk_widget_set_sensitive (dialog->ssl_optionmenu, TRUE);
-	}
-
-}
-
-static void
-setup_connecting_tab (AddressbookSourceDialog *dialog, ModifyFunc modify_func)
-{
-	GtkWidget *menu;
-	GtkWidget *connecting_tab_help;
-
-	dialog->connecting_modify_func = modify_func;
-
-	connecting_tab_help = glade_xml_get_widget (dialog->gui, "connecting-tab-help");
-
-	dialog->port_combo = glade_xml_get_widget (dialog->gui, "port-combo");
-	add_focus_handler (dialog->port_combo, connecting_tab_help, 0);
-	add_focus_handler (GTK_COMBO(dialog->port_combo)->entry, connecting_tab_help, 0);
-	g_signal_connect (GTK_COMBO(dialog->port_combo)->entry, "changed",
-			  G_CALLBACK (modify_func), dialog);
-	g_signal_connect (GTK_COMBO(dialog->port_combo)->entry, "changed",
-			  G_CALLBACK (port_changed_func), dialog);
-	dialog->ssl_optionmenu = glade_xml_get_widget (dialog->gui, "ssl-optionmenu");
-	menu = gtk_option_menu_get_menu (GTK_OPTION_MENU(dialog->ssl_optionmenu));
-	gtk_container_foreach (GTK_CONTAINER (menu), (GtkCallback)add_ssl_activate_cb, dialog);
-}
-
-static gboolean
-connecting_tab_check (AddressbookSourceDialog *dialog)
-{
-	gboolean valid = TRUE;
-	const char *string;
-
-	string = gtk_entry_get_text (GTK_ENTRY (GTK_COMBO(dialog->port_combo)->entry));
-	if (!string || !string[0])
-		valid = FALSE;
-
-	return valid;
-}
-
-static void
-druid_connecting_page_modify_cb (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	gnome_druid_set_buttons_sensitive (GNOME_DRUID(dialog->druid),
-					   TRUE, /* back */
-					   connecting_tab_check (dialog), /* next */
-					   TRUE, /* cancel */
-					   FALSE /* help */);
-}
-
-static void
-druid_connecting_page_prepare (GnomeDruidPage *dpage, GtkWidget *gdruid, AddressbookSourceDialog *dialog)
-{
-	druid_connecting_page_modify_cb (NULL, dialog);
-	/* stick the focus in the port combo */
-	gtk_widget_grab_focus (GTK_COMBO(dialog->port_combo)->entry);
-}
-
-
-/* searching page */
-static ETableMemoryStoreColumnInfo bases_table_columns[] = {
-	E_TABLE_MEMORY_STORE_STRING,
-	E_TABLE_MEMORY_STORE_TERMINATOR
-};
-
-#define BASES_TABLE_SPEC \
-"<ETableSpecification cursor-mode=\"line\" no-headers=\"true\"> \
-  <ETableColumn model_col= \"0\" _title=\"Base\" expansion=\"1.0\" minimum_width=\"20\" resizable=\"true\" cell=\"string\" compare=\"string\"/> \
-  <ETableState> \
-    <column source=\"0\"/> \
-    <grouping></grouping> \
-  </ETableState> \
-</ETableSpecification>"
-
-GtkWidget*
-supported_bases_create_table (char *name, char *string1, char *string2, int num1, int num2)
-{
-	GtkWidget *table;
-	ETableModel *model;
-
-	model = e_table_memory_store_new (bases_table_columns);
-
-	table = e_table_scrolled_new (model, NULL, BASES_TABLE_SPEC, NULL);
-
-	g_object_set_data (G_OBJECT (table), "model", model);
-
-	return table;
-}
-
-static gboolean
-do_ldap_root_dse_query (GtkWidget *dialog, ETableModel *model, AddressbookSource *source, char ***rvalues)
-{
-	LDAP* ldap;
-	char *attrs[2];
-	int ldap_error;
-	char **values;
-	LDAPMessage *resp;
-	int i;
-
-	ldap = addressbook_ldap_init (dialog, source);
-	if (!ldap)
-		return FALSE;
-
-	if (LDAP_SUCCESS != addressbook_ldap_auth (dialog, source, ldap))
-		goto fail;
-
-	attrs[0] = "namingContexts";
-	attrs[1] = NULL;
-
-	ldap_error = addressbook_root_dse_query (GTK_WINDOW (dialog), source, ldap, attrs, &resp);
-
-	if (ldap_error != LDAP_SUCCESS)
-		goto fail;
-
-	values = ldap_get_values (ldap, resp, "namingContexts");
-	if (!values || values[0] == NULL) {
-		GtkWidget *error_dialog;
-		error_dialog = gtk_message_dialog_new (GTK_WINDOW (dialog),
-						       GTK_DIALOG_MODAL,
-						       GTK_MESSAGE_ERROR,
-						       GTK_BUTTONS_OK,
-						       _("The server responded with no supported search bases"));
-		g_signal_connect (error_dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL);
-		gtk_widget_show (error_dialog);
-		goto fail;
-	}
-
-	for (i = 0; values[i]; i++)
-		e_table_memory_store_insert (E_TABLE_MEMORY_STORE (model),
-					     -1, GINT_TO_POINTER(i), values[i]);
-
-	*rvalues = values;
-
-	ldap_unbind_s (ldap);
-	return TRUE;
-
- fail:
-	ldap_unbind_s (ldap);
-	return FALSE;
-}
-
-static void
-search_base_selection_model_changed (ESelectionModel *selection_model, GtkWidget *dialog)
-{
-	gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
-					   GTK_RESPONSE_OK,
-					   e_selection_model_selected_count (selection_model) == 1);
-}
-
-static void
-query_for_supported_bases (GtkWidget *button, AddressbookSourceDialog *sdialog)
-{
-	ESelectionModel *selection_model;
-	AddressbookSource *source = addressbook_dialog_get_source (sdialog);
-	GtkWidget *dialog;
-	GtkWidget *supported_bases_table;
-	ETableModel *model;
-	int id;
-	char **values;
-
-	dialog = glade_xml_get_widget (sdialog->gui, "supported-bases-dialog");
-
-	supported_bases_table = glade_xml_get_widget (sdialog->gui, "supported-bases-table");
-	gtk_widget_show (supported_bases_table);
-	selection_model = e_table_get_selection_model (e_table_scrolled_get_table (E_TABLE_SCROLLED(supported_bases_table)));
-	model = g_object_get_data (G_OBJECT (supported_bases_table), "model");
-
-	g_signal_connect (selection_model, "selection_changed",
-			  G_CALLBACK (search_base_selection_model_changed), dialog);
-
-	search_base_selection_model_changed (selection_model, dialog);
-
-	if (do_ldap_root_dse_query (dialog, model, source, &values)) {
-		id = gtk_dialog_run (GTK_DIALOG (dialog));
-
-		gtk_widget_hide (dialog);
-
-		if (id == GTK_RESPONSE_OK) {
-			int i;
-			/* OK was clicked */
-
-			/* ugh. */
-			for (i = 0; values[i]; i ++) {
-				if (e_selection_model_is_row_selected (selection_model, i)) {
-					gtk_entry_set_text (GTK_ENTRY (sdialog->rootdn), values[i]);
-					break; /* single selection, so we can quit when we've found it. */
-				}
-			}
-		}
-
-		ldap_value_free (values);
-
-		e_table_memory_store_clear (E_TABLE_MEMORY_STORE (model));
-	}
-
-	addressbook_source_free (source);
-}
-
-static void
-scope_optionmenu_activated (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	dialog->scope = g_list_index (gtk_container_get_children (GTK_CONTAINER (item->parent)),
-				      item);
-
-	if (dialog->searching_modify_func)
-		dialog->searching_modify_func (item, dialog);
-}
-
-static void
-add_scope_activate_cb (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	g_signal_connect (item, "activate",
-			  G_CALLBACK (scope_optionmenu_activated), dialog);
-}
-
-static void
-setup_searching_tab (AddressbookSourceDialog *dialog, ModifyFunc modify_func)
-{
-	GtkWidget *menu;
-	GtkWidget *rootdn_button;
-	GtkWidget *searching_tab_help;
-
-	dialog->searching_modify_func = modify_func;
-
-	searching_tab_help = glade_xml_get_widget (dialog->gui, "searching-tab-help");
-
-	dialog->rootdn = glade_xml_get_widget (dialog->gui, "rootdn-entry");
-	add_focus_handler (dialog->rootdn, searching_tab_help, 0);
-	if (modify_func)
-		g_signal_connect (dialog->rootdn, "changed",
-				  G_CALLBACK (modify_func), dialog);
-
-	dialog->scope_optionmenu = glade_xml_get_widget (dialog->gui, "scope-optionmenu");
-	add_focus_handler (dialog->scope_optionmenu, searching_tab_help, 1);
-	menu = gtk_option_menu_get_menu (GTK_OPTION_MENU(dialog->scope_optionmenu));
-	gtk_container_foreach (GTK_CONTAINER (menu), (GtkCallback)add_scope_activate_cb, dialog);
-
-	dialog->timeout_scale = glade_xml_get_widget (dialog->gui, "timeout-scale");
-	add_focus_handler (dialog->timeout_scale, searching_tab_help, 2);
-	if (modify_func)
-		g_signal_connect (GTK_RANGE(dialog->timeout_scale)->adjustment,
-				  "value_changed",
-				  G_CALLBACK (modify_func), dialog);
-
-	dialog->limit_spinbutton = glade_xml_get_widget (dialog->gui, "download-limit-spinbutton");
-	if (modify_func)
-		g_signal_connect (dialog->limit_spinbutton, "changed",
-				  G_CALLBACK (modify_func), dialog);
-
-	/* special handling for the "Show Supported Bases button" */
-	rootdn_button = glade_xml_get_widget (dialog->gui, "rootdn-button");
-	g_signal_connect (rootdn_button, "clicked",
-			  G_CALLBACK(query_for_supported_bases), dialog);
-}
-
-static void
-druid_searching_page_prepare (GnomeDruidPage *dpage, GtkWidget *gdruid, AddressbookSourceDialog *dialog)
-{
-	gnome_druid_set_buttons_sensitive (GNOME_DRUID(dialog->druid),
-					   TRUE, /* back */
-					   TRUE, /* next */
-					   TRUE, /* cancel */
-					   FALSE /* help */);
-}
-
-
-/* display name page */
-static gboolean
-display_name_check (AddressbookSourceDialog *dialog)
-{
-	gboolean valid = TRUE;
-	const char *string;
-
-	string = gtk_entry_get_text (GTK_ENTRY (dialog->display_name));
-	if (!string || !string[0])
-		valid = FALSE;
-
-	return valid;
-}
-
-static void
-display_name_page_prepare (GtkWidget *page, GtkWidget *gnome_druid, AddressbookSourceDialog *dialog)
-{
-	if (!dialog->display_name_changed) {
-		const char *server_name = gtk_entry_get_text (GTK_ENTRY (dialog->host));
-		gtk_entry_set_text (GTK_ENTRY (dialog->display_name), server_name);
-	}
-
-	gnome_druid_set_buttons_sensitive (GNOME_DRUID(dialog->druid),
-					   TRUE, /* back */
-					   display_name_check (dialog), /* next */
-					   TRUE, /* cancel */
-					   FALSE /* help */);
-}
-
-static void
-druid_display_name_page_modify_cb (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	dialog->display_name_changed = TRUE;
-	display_name_page_prepare (NULL, NULL, dialog);
-}
-
-
-#ifdef NEW_ADVANCED_UI
-/* objectclasses page */
-static ETableMemoryStoreColumnInfo objectclasses_table_columns[] = {
-	E_TABLE_MEMORY_STORE_STRING,
-	E_TABLE_MEMORY_STORE_TERMINATOR
-};
-
-#define OBJECTCLASSES_TABLE_SPEC \
-"<ETableSpecification cursor-mode=\"line\" no-headers=\"true\"> \
-  <ETableColumn model_col= \"0\" _title=\"Objectclass\" expansion=\"1.0\" minimum_width=\"20\" resizable=\"true\" cell=\"string\" compare=\"string\"/> \
-  <ETableState> \
-    <column source=\"0\"/> \
-    <grouping> <leaf column=\"0\" ascending=\"true\"/> </grouping> \
-  </ETableState> \
-</ETableSpecification>"
-
-GtkWidget*
-objectclasses_create_server_table (char *name, char *string1, char *string2,
-				   int num1, int num2)
-{
-	GtkWidget *table;
-	ETableModel *model;
-
-	model = e_table_memory_store_new (objectclasses_table_columns);
-
-	table = e_table_scrolled_new (model, NULL, OBJECTCLASSES_TABLE_SPEC, NULL);
-
-	g_object_set_data (G_OBJECT (table), "model", model);
-
-	return table;
-}
-
-GtkWidget*
-objectclasses_create_evolution_table (char *name, char *string1, char *string2,
-				      int num1, int num2)
-{
-	GtkWidget *table;
-	ETableModel *model;
-
-	model = e_table_memory_store_new (objectclasses_table_columns);
-
-	table = e_table_scrolled_new (model, NULL, OBJECTCLASSES_TABLE_SPEC, NULL);
-
-	g_object_set_data (G_OBJECT (table), "model", model);
-
-	return table;
-}
-
-static void
-objectclasses_add_foreach (int model_row, AddressbookSourceDialog *dialog)
-{
-	LDAPObjectClass *oc = e_table_memory_get_data (E_TABLE_MEMORY (dialog->objectclasses_server_model), model_row);	
-	e_table_memory_store_remove (E_TABLE_MEMORY_STORE (dialog->objectclasses_server_model), model_row);
-	/* XXX remove from the server array */
-	e_table_memory_store_insert (E_TABLE_MEMORY_STORE (dialog->objectclasses_evolution_model),
-				     -1, oc, oc->oc_names[0]);
-	/* XXX add to the evolution array */
-}
-
-static void
-objectclasses_add (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	ESelectionModel *esm = e_table_get_selection_model (e_table_scrolled_get_table (E_TABLE_SCROLLED(dialog->objectclasses_server_table)));
-
-	e_selection_model_foreach (esm, (EForeachFunc)objectclasses_add_foreach, dialog);
-	dialog->objectclasses_modify_func (item, dialog);
-}
-
-static void
-objectclasses_server_double_click (ETable *et, int row, int col, GdkEvent *event, AddressbookSourceDialog *dialog)
-{
-	objectclasses_add_foreach (row, dialog);
-	dialog->objectclasses_modify_func (GTK_WIDGET (et), dialog);
-}
-
-static void
-objectclasses_remove_foreach (int model_row, AddressbookSourceDialog *dialog)
-{
-	LDAPObjectClass *oc = e_table_memory_get_data (E_TABLE_MEMORY (dialog->objectclasses_evolution_model), model_row);
-	e_table_memory_store_remove (E_TABLE_MEMORY_STORE (dialog->objectclasses_evolution_model), model_row);
-	/* XXX remove from the evolution array */
-	e_table_memory_store_insert (E_TABLE_MEMORY_STORE (dialog->objectclasses_server_model),
-				     -1, oc, oc->oc_names[0]);
-	/* XXX add to the server array */
-}
-
-static void
-objectclasses_remove (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	ESelectionModel *esm = e_table_get_selection_model (e_table_scrolled_get_table (E_TABLE_SCROLLED(dialog->objectclasses_evolution_table)));
-
-	e_selection_model_foreach (esm, (EForeachFunc)objectclasses_add_foreach, dialog);
-
-	dialog->objectclasses_modify_func (item, dialog);
-}
-
-static void
-objectclasses_evolution_double_click (ETable *et, int row, int col, GdkEvent *event, AddressbookSourceDialog *dialog)
-{
-	objectclasses_remove_foreach (row, dialog);
-	dialog->objectclasses_modify_func (GTK_WIDGET (et), dialog);
-}
-
-static void
-objectclasses_restore_default (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	int i;
-	
-	dialog->objectclasses_modify_func (item, dialog);
-
-	/* clear out our evolution list */
-	for (i = 0; i < dialog->evolution_objectclasses->len; i ++) {
-		g_ptr_array_add (dialog->server_objectclasses, g_ptr_array_index (dialog->evolution_objectclasses, i));
-	}
-	g_ptr_array_set_size (dialog->evolution_objectclasses, 0);
-
-	e_table_memory_store_clear (E_TABLE_MEMORY_STORE (dialog->objectclasses_evolution_model));
-
-	for (i = 0; i < dialog->default_objectclasses->len; i++) {
-		LDAPObjectClass *oc = g_ptr_array_index (dialog->default_objectclasses, i);
-		g_ptr_array_add (dialog->evolution_objectclasses, oc);
-		e_table_memory_store_insert (E_TABLE_MEMORY_STORE (dialog->objectclasses_evolution_model),
-					     i, oc, oc->oc_names[0]);
-	}
-}
-
-static void
-server_selection_model_changed (ESelectionModel *selection_model, AddressbookSourceDialog *dialog)
-{
-	gtk_widget_set_sensitive (dialog->objectclasses_add_button,
-				  e_selection_model_selected_count (selection_model) > 0);
-}
-
-static void
-evolution_selection_model_changed (ESelectionModel *selection_model, AddressbookSourceDialog *dialog)
-{
-	gtk_widget_set_sensitive (dialog->objectclasses_remove_button,
-				  e_selection_model_selected_count (selection_model) > 0);
-}
-
-static void
-setup_objectclasses_tab (AddressbookSourceDialog *dialog, GtkSignalFunc modify_func)
-{
-	ETable *table;
-	GtkWidget *restore_default;
-	ESelectionModel *esm;
-
-	dialog->server_objectclasses = g_ptr_array_new ();
-	dialog->evolution_objectclasses = g_ptr_array_new ();
-	dialog->default_objectclasses = g_ptr_array_new ();
-
-	dialog->objectclasses_modify_func = modify_func;
-
-	dialog->objectclasses_server_table = glade_xml_get_widget (dialog->gui, "objectclasses-server-table");
-	dialog->objectclasses_server_model = g_object_get_data (G_OBJECT (dialog->objectclasses_server_table), "model");
-
-	dialog->objectclasses_evolution_table = glade_xml_get_widget (dialog->gui, "objectclasses-evolution-table");
-	dialog->objectclasses_evolution_model = g_object_get_data (G_OBJECT (dialog->objectclasses_evolution_table), "model");
-
-	table = e_table_scrolled_get_table (E_TABLE_SCROLLED(dialog->objectclasses_server_table));
-	g_signal_connect (table, "double_click",
-			  G_CALLBACK (objectclasses_server_double_click), dialog);
-	esm = e_table_get_selection_model (table);
-	g_signal_connect (esm, "selection_changed",
-			    server_selection_model_changed, dialog);
-
-	table = e_table_scrolled_get_table (E_TABLE_SCROLLED(dialog->objectclasses_evolution_table));
-	g_signal_connect (table, "double_click",
-			    G_CALLBACK (objectclasses_evolution_double_click), dialog);
-	esm = e_table_get_selection_model (table);
-	g_signal_connect (esm, "selection_changed",
-			    evolution_selection_model_changed, dialog);
-
-	dialog->objectclasses_add_button = glade_xml_get_widget (dialog->gui, "objectclasses-add-button");
-	g_signal_connect (dialog->objectclasses_add_button, "clicked",
-			    G_CALLBACK(objectclasses_add), dialog);
-
-	dialog->objectclasses_remove_button = glade_xml_get_widget (dialog->gui, "objectclasses-remove-button");
-	g_signal_connect (dialog->objectclasses_remove_button, "clicked",
-			    G_CALLBACK(objectclasses_remove), dialog);
-
-	restore_default = glade_xml_get_widget (dialog->gui, "objectclasses-default-button");
-	g_signal_connect (restore_default, "clicked",
-			  G_CALLBACK(objectclasses_restore_default), dialog);
-}
-#endif
-
-
-static AddressbookSourceDialog *
-addressbook_add_server_druid (AddressbookDialog *dialog)
-{
-	AddressbookSourceDialog *sdialog = g_new0 (AddressbookSourceDialog, 1);
-	GtkWidget *page;
-
-	sdialog->addressbook_dialog = dialog;
-
-	sdialog->gui = glade_xml_new (EVOLUTION_GLADEDIR "/" GLADE_FILE_NAME, NULL, NULL);
-
-	sdialog->window = glade_xml_get_widget (sdialog->gui, "account-druid-window");
-	sdialog->druid = glade_xml_get_widget (sdialog->gui, "account-druid");
-
-	/* info page */
-	page = glade_xml_get_widget (sdialog->gui, "add-server-druid-info-page");
-	reparent_to_vbox (sdialog, "account-druid-general-vbox", "general-tab");
-	setup_general_tab (sdialog, druid_info_page_modify_cb);
-	g_signal_connect_after (page, "prepare",
-				G_CALLBACK(druid_info_page_prepare), sdialog);
-
-	/* connecting page */
-	page = glade_xml_get_widget (sdialog->gui, "add-server-druid-connecting-page");
-	reparent_to_vbox (sdialog, "account-druid-connecting-vbox", "connecting-tab");
-	setup_connecting_tab (sdialog, druid_connecting_page_modify_cb);
-	g_signal_connect_after (page, "prepare",
-				G_CALLBACK(druid_connecting_page_prepare), sdialog);
-
-	/* searching page */
-	page = glade_xml_get_widget (sdialog->gui, "add-server-druid-searching-page");
-	reparent_to_vbox (sdialog, "account-druid-searching-vbox", "searching-tab");
-	setup_searching_tab (sdialog, NULL);
-	g_signal_connect_after (page, "prepare",
-				G_CALLBACK(druid_searching_page_prepare), sdialog);
-
-	/* display name page */
-	page = glade_xml_get_widget (sdialog->gui, "add-server-druid-display-name-page");
-	sdialog->display_name = glade_xml_get_widget (sdialog->gui, "druid-display-name-entry");
-	g_signal_connect (sdialog->display_name, "changed",
-			  G_CALLBACK(druid_display_name_page_modify_cb), sdialog);
-	g_signal_connect_after (page, "prepare",
-				G_CALLBACK(display_name_page_prepare), sdialog);
-
-	page = glade_xml_get_widget (sdialog->gui, "add-server-druid-finish-page");
-	g_signal_connect (page, "finish",
-			  G_CALLBACK(addressbook_add_server_druid_finish), sdialog);
-	g_signal_connect (sdialog->druid, "cancel",
-			  G_CALLBACK(addressbook_add_server_druid_cancel), sdialog);
-	g_object_weak_ref (G_OBJECT (sdialog->window),
-			   addressbook_source_dialog_destroy, sdialog);
-
-	/* make sure we fill in the default values */
-	addressbook_source_dialog_set_source (sdialog, NULL);
-
-	gtk_window_set_type_hint (GTK_WINDOW (sdialog->window), GDK_WINDOW_TYPE_HINT_DIALOG);
-	gtk_window_set_modal (GTK_WINDOW (sdialog->window), TRUE);
-
-	gtk_widget_show_all (sdialog->window);
-
-	return sdialog;
-}
-
-static void
-editor_modify_cb (GtkWidget *item, AddressbookSourceDialog *dialog)
-{
-	gboolean valid = TRUE;
-
-	valid = display_name_check (dialog);
-	if (valid)
-		valid = general_tab_check (dialog);
-#if 0
-	if (valid)
-		valid = connecting_tab_check (dialog);
-	if (valid)
-		valid = searching_tab_check (dialog);
-#endif
-
-	gtk_widget_set_sensitive (dialog->ok_button, valid);
-}
-
-static void
-set_advanced_button_state (AddressbookSourceDialog *dialog)
-{
-	if (dialog->advanced) {
-		gtk_notebook_set_current_page (GTK_NOTEBOOK(dialog->advanced_button_notebook), 0);
-#ifdef NEW_ADVANCED_UI
-		gtk_notebook_append_page (GTK_NOTEBOOK(dialog->notebook), dialog->objectclasses_tab, dialog->objectclasses_label);
-		gtk_notebook_append_page (GTK_NOTEBOOK(dialog->notebook), dialog->mappings_tab, dialog->mappings_label);
-		gtk_notebook_append_page (GTK_NOTEBOOK(dialog->notebook), dialog->dn_customization_tab, dialog->dn_customization_label);
-#endif
-	}
-	else {
-#ifdef NEW_ADVANCED_UI
-		gtk_notebook_set_current_page (GTK_NOTEBOOK(dialog->advanced_button_notebook), 1);
-		
-		/* hide the advanced tabs of the main notebook */
-		gtk_notebook_remove_page (GTK_NOTEBOOK(dialog->notebook), 5);
-		gtk_notebook_remove_page (GTK_NOTEBOOK(dialog->notebook), 4);
-		gtk_notebook_remove_page (GTK_NOTEBOOK(dialog->notebook), 3);
-#endif
-	}
-}
-
-#ifdef NEW_ADVANCED_UI
-static void
-advanced_button_clicked (GtkWidget *button, AddressbookSourceDialog *dialog)
-{
-	dialog->advanced = !dialog->advanced;
-	set_advanced_button_state (dialog);
-}
-
-static gboolean
-do_schema_query (AddressbookSourceDialog *sdialog)
-{
-	LDAP *ldap;
-	int ldap_error;
-	char *schema_dn;
-	char *attrs[3];
-	char **values;
-	int i;
-	AddressbookSource *source = addressbook_dialog_get_source (sdialog);
-	LDAPMessage *resp;
-	struct timeval timeout;
-
-	ldap = addressbook_ldap_init (sdialog->window, source);
-	if (!ldap)
-		goto fail;
-
-	if (LDAP_SUCCESS != addressbook_ldap_auth (sdialog->window, source, ldap))
-		goto fail;
-
-	attrs[0] = "subschemaSubentry";
-	attrs[1] = NULL;
-
-	ldap_error = addressbook_root_dse_query (sdialog->window, source, ldap, attrs, &resp);
-
-	if (ldap_error != LDAP_SUCCESS)
-		goto fail;
-
-	values = ldap_get_values (ldap, resp, "subschemaSubentry");
-	if (!values || values[0] == NULL) {
-		GtkWidget *dialog;
-		dialog = gnome_ok_dialog_parented (_("This server does not support LDAPv3 schema information"), GTK_WINDOW (sdialog->window));
-		gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
-		goto fail;
-	}
-
-	schema_dn = g_strdup (values[0]);
-
-	ldap_value_free (values);
-	ldap_msgfree (resp);
-
-	attrs[0] = "objectClasses";
-	attrs[1] = NULL;
-
-	/* 3 second timeout */
-	timeout.tv_sec = 3;
-	timeout.tv_usec = 0;
-
-	ldap_error = ldap_search_ext_s (ldap, schema_dn, LDAP_SCOPE_BASE,
-					"(objectClass=subschema)", attrs, 0,
-					NULL, NULL, &timeout, LDAP_NO_LIMIT, &resp);
-	if (LDAP_SUCCESS != ldap_error) {
-		GtkWidget *dialog;
-		dialog = gnome_error_dialog_parented (_("Error retrieving schema information"), GTK_WINDOW (sdialog->window));
-		gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
-		goto fail;
-	}
-
-	values = ldap_get_values (ldap, resp, "objectClasses");
-	if (!values) {
-		GtkWidget *dialog;
-		dialog = gnome_error_dialog_parented (_("Server did not respond with valid schema information"), GTK_WINDOW (sdialog->window));
-		gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
-		goto fail;
-	}
-
-	for (i = 0; values[i]; i ++) { 
-		int j;
-		int code;
-		const char *err;
-		LDAPObjectClass *oc = ldap_str2objectclass (values[i], &code, &err, 0);
-
-		if (!oc)
-			continue;
-
-		/* we fill in the default list of classes here */
-		for (j = 0; oc->oc_names[j]; j ++) {
-			if (!g_strcasecmp (oc->oc_names[j], EVOLUTIONPERSON) ||
-			    !g_strcasecmp (oc->oc_names[j], INETORGPERSON) ||
-			    !g_strcasecmp (oc->oc_names[j], ORGANIZATIONALPERSON) ||
-			    !g_strcasecmp (oc->oc_names[j], PERSON) ||
-			    !g_strcasecmp (oc->oc_names[j], CALENTRY) ||
-			    !g_strcasecmp (oc->oc_names[j], TOP))
-				g_ptr_array_add (sdialog->default_objectclasses, oc);
-		}
-
-		g_ptr_array_add (sdialog->server_objectclasses, oc);
-	}
-
-	addressbook_source_free (source);
-	ldap_unbind_s (ldap);
-	return TRUE;
-
- fail:
-	addressbook_source_free (source);
-	if (ldap)
-		ldap_unbind_s (ldap);
-	return FALSE;
-}
-
-static void
-edit_dialog_switch_page (GtkNotebook *notebook,
-			 GtkNotebookPage *page, guint page_num,
-			 AddressbookSourceDialog *sdialog)
-{
-	if (page_num >= 3 && !sdialog->schema_query_successful) {
-		int i;
-
-		gtk_widget_set_sensitive (GTK_WIDGET (notebook), FALSE);
-
-		sdialog->schema_query_successful = do_schema_query (sdialog);
-
-		if (sdialog->schema_query_successful) {
-			/* fill in the objectclasses model */
-			for (i = 0; i < sdialog->server_objectclasses->len; i ++) {
-				LDAPObjectClass *oc = g_ptr_array_index (sdialog->server_objectclasses, i);
-				e_table_memory_store_insert (E_TABLE_MEMORY_STORE (sdialog->objectclasses_server_model),
-							     -1, oc, oc->oc_names[0]);
-			}
-			gtk_widget_set_sensitive (page->child, TRUE);
-		}
-		else {
-			gtk_widget_set_sensitive (page->child, FALSE);
-		}
-
-		gtk_widget_set_sensitive (GTK_WIDGET (notebook), TRUE);
-	}
-}
-#endif
-
-static gboolean
-edit_dialog_store_change (AddressbookSourceDialog *sdialog)
-{
-	AddressbookSource *source = addressbook_dialog_get_source (sdialog);
-	AddressbookDialog *dialog = sdialog->addressbook_dialog;
-	AddressbookSource *old_source;
-
-	/* check the display name for uniqueness */
-	if (FALSE /* XXX */) {
-		return FALSE;
-	}
-
-	/* store the new source in the addressbook dialog */
-	gtk_tree_model_get (dialog->sourcesModel,
-			    sdialog->source_model_row,
-			    2, &old_source,
-			    -1);
-	addressbook_source_free (old_source);
-
-	gtk_list_store_set (GTK_LIST_STORE (dialog->sourcesModel),
-			    sdialog->source_model_row,
-			    0, source->name,
-			    1, source->host,
-			    2, source,
-			    -1);
-
-	/* and let the config control know about the change */
-	evolution_config_control_changed (dialog->config_control);
-
-	return TRUE;
-}
-
-static void
-edit_dialog_cancel_clicked (GtkWidget *item, AddressbookSourceDialog *sdialog)
-{
-	gtk_widget_destroy (sdialog->window);
-}
-
-static void
-edit_dialog_ok_clicked (GtkWidget *item, AddressbookSourceDialog *sdialog)
-{
-	if (edit_dialog_store_change (sdialog)) {
-		gtk_widget_destroy (sdialog->window);
-	}
-}
-
-static AddressbookSourceDialog*
-addressbook_edit_server_dialog (GtkTreeModel      *model,
-				GtkTreePath       *path,
-				GtkTreeIter       *model_row,
-				gpointer           data)
-{
-	AddressbookDialog *dialog = data;
-	AddressbookSource *source;
-	AddressbookSourceDialog *sdialog = g_new0 (AddressbookSourceDialog, 1);
-	GtkWidget *general_tab_help;
-#ifdef NEW_ADVANCED_UI
-	GtkWidget *fewer_options_button, *more_options_button;
-#endif
-
-	gtk_tree_model_get (model, model_row,
-			    2, &source,
-			    -1);
-
-	sdialog->addressbook_dialog = dialog;
-	sdialog->source_model_row = gtk_tree_iter_copy (model_row);
-
-	sdialog->gui = glade_xml_new (EVOLUTION_GLADEDIR "/" GLADE_FILE_NAME, NULL, NULL);
-
-	sdialog->window = glade_xml_get_widget (sdialog->gui, "account-editor-window");
-
-	/* general tab */
-	general_tab_help = glade_xml_get_widget (dialog->gui, "general-tab-help");
-	reparent_to_vbox (sdialog, "account-editor-general-vbox", "general-tab");
-	setup_general_tab (sdialog, editor_modify_cb);
-	sdialog->display_name = glade_xml_get_widget (sdialog->gui, "account-editor-display-name-entry");
-	g_signal_connect (sdialog->display_name, "changed",
-			  G_CALLBACK (editor_modify_cb), sdialog);
-	add_focus_handler (sdialog->display_name, general_tab_help, 4);
-
-	/* connecting tab */
-	reparent_to_vbox (sdialog, "account-editor-connecting-vbox", "connecting-tab");
-	setup_connecting_tab (sdialog, editor_modify_cb);
-
-	/* searching tab */
-	reparent_to_vbox (sdialog, "account-editor-searching-vbox", "searching-tab");
-	setup_searching_tab (sdialog, editor_modify_cb);
-
-#ifdef NEW_ADVANCED_UI
-	/* objectclasses tab */
-	reparent_to_vbox (sdialog, "account-editor-objectclasses-vbox", "objectclasses-tab");
-	setup_objectclasses_tab (sdialog, editor_modify_cb);
-
-	/* mappings tab */
-	reparent_to_vbox (sdialog, "account-editor-mappings-vbox", "mappings-tab");
-	/* XXX setup_mappings_tab */
-
-	/* dn customization tab */
-	reparent_to_vbox (sdialog, "account-editor-dn-customization-vbox", "dn-customization-tab");
-	/* XXX setup_dn_customization_tab */
-#endif
-
-	sdialog->notebook = glade_xml_get_widget (sdialog->gui, "account-editor-notebook");
-
-	sdialog->ok_button = glade_xml_get_widget (sdialog->gui, "account-editor-ok-button");
-	sdialog->cancel_button = glade_xml_get_widget (sdialog->gui, "account-editor-cancel-button");
-
-#if NEW_ADVANCED_UI
-	sdialog->advanced_button_notebook = glade_xml_get_widget (sdialog->gui, "account-editor-advanced-button-notebook");
-	fewer_options_button = glade_xml_get_widget (sdialog->gui, "account-editor-fewer-options-button");
-	more_options_button = glade_xml_get_widget (sdialog->gui, "account-editor-more-options-button");
-#endif
-
-#ifdef NEW_ADVANCED_UI
-	sdialog->objectclasses_label = glade_xml_get_widget (sdialog->gui, "account-editor-objectclasses-label");
-	g_object_ref (sdialog->objectclasses_label);
-	sdialog->objectclasses_tab = glade_xml_get_widget (sdialog->gui, "account-editor-objectclasses-vbox");
-	g_object_ref (sdialog->objectclasses_tab);
-	sdialog->mappings_label = glade_xml_get_widget (sdialog->gui, "account-editor-mappings-label");
-	g_object_ref (sdialog->mappings_label);
-	sdialog->mappings_tab = glade_xml_get_widget (sdialog->gui, "account-editor-mappings-vbox");
-	g_object_ref (sdialog->mappings_tab);
-	sdialog->dn_customization_label = glade_xml_get_widget (sdialog->gui, "account-editor-dn-customization-label");
-	g_object_ref (sdialog->dn_customization_label);
-	sdialog->dn_customization_tab = glade_xml_get_widget (sdialog->gui, "account-editor-dn-customization-vbox");
-	g_object_ref (sdialog->dn_customization_tab);
-#endif
-
-	addressbook_source_dialog_set_source (sdialog, source);
-
-	set_advanced_button_state (sdialog);
-
-#ifdef NEW_ADVANCED_UI
-	g_signal_connect (fewer_options_button,
-			    "clicked", advanced_button_clicked, sdialog);
-	g_signal_connect (more_options_button,
-			    "clicked", advanced_button_clicked, sdialog);
-
-#endif
-
-#ifdef NEW_ADVANCED_UI
-	/* set up a signal handler to query for schema info if the user switches to the advanced tabs */
-	g_signal_connect (sdialog->notebook, "switch_page",
-			  G_CALLBACK (edit_dialog_switch_page), sdialog);
-#endif
-
-	g_signal_connect (sdialog->ok_button,
-			  "clicked", G_CALLBACK(edit_dialog_ok_clicked), sdialog);
-	g_signal_connect (sdialog->cancel_button,
-			  "clicked", G_CALLBACK(edit_dialog_cancel_clicked), sdialog);
-	g_object_weak_ref (G_OBJECT (sdialog->window),
-			   addressbook_source_dialog_destroy, sdialog);
-
-	gtk_widget_set_sensitive (sdialog->ok_button, FALSE);
-
-	gtk_window_set_type_hint (GTK_WINDOW (sdialog->window), GDK_WINDOW_TYPE_HINT_DIALOG);
-	gtk_window_set_modal (GTK_WINDOW (sdialog->window), TRUE);
-
-	gtk_widget_show (sdialog->window);
-
-	return sdialog;
-}
-
-static void
-add_source_clicked (GtkWidget *widget, AddressbookDialog *dialog)
-{
-	addressbook_add_server_druid (dialog);
-}
-
-static void
-edit_source_clicked (GtkWidget *widget, AddressbookDialog *dialog)
-{
-	gtk_tree_selection_selected_foreach (dialog->sourcesSelection,
-					     (GtkTreeSelectionForeachFunc)addressbook_edit_server_dialog,
-					     dialog);
-}
-
-static void
-delete_server (GtkTreeModel      *model,
-	       GtkTreePath       *path,
-	       GtkTreeIter       *model_row,
-	       gpointer           data)
-{
-	AddressbookDialog *dialog = data;
-
-	gtk_list_store_remove (GTK_LIST_STORE (dialog->sourcesModel),
-			       model_row);
-}
-
-static void
-delete_source_clicked (GtkWidget *widget, AddressbookDialog *dialog)
-{
-	gtk_tree_selection_selected_foreach (dialog->sourcesSelection,
-					     delete_server,
-					     dialog);
-
-	evolution_config_control_changed (dialog->config_control);
-}
-
-static void
-ldap_config_control_destroy_callback (gpointer data,
-				      GObject *where_object_was)
-{
-	AddressbookDialog *dialog;
-
-	dialog = (AddressbookDialog *) data;
-
-	g_object_unref (dialog->gui);
-
-	/* XXX free more stuff here */
-
-	g_free (dialog);
-}
-
-static void
-ldap_config_control_apply_callback (EvolutionConfigControl *config_control,
-				    void *data)
-{
-	AddressbookDialog *dialog;
-	GtkTreeIter iter;
-
-	dialog = (AddressbookDialog *) data;
-
-	addressbook_storage_clear_sources();
-
-	if (! gtk_tree_model_get_iter_first (dialog->sourcesModel,
-					     &iter))
-		return;
-
-	do {
-		AddressbookSource *source;
-
-		gtk_tree_model_get (dialog->sourcesModel,
-				    &iter,
-				    2, &source,
-				    -1);
-
-		addressbook_storage_add_source (addressbook_source_copy (source));
-	} while (gtk_tree_model_iter_next (dialog->sourcesModel, &iter));
-
-	addressbook_storage_write_sources();
-}
-
-static void
-sources_selection_changed (GtkTreeSelection *selection, AddressbookDialog *dialog)
-{
-	gboolean sensitive;
-	GtkTreeIter iter;
-
-	sensitive = gtk_tree_selection_get_selected (selection, NULL, &iter);
-
-	gtk_widget_set_sensitive (dialog->editSource, sensitive);
-	gtk_widget_set_sensitive (dialog->deleteSource, sensitive);
-}
-
-static void
-sources_table_row_activated (GtkTreeView *tree_view, GtkTreePath *path,
-			     GtkTreeViewColumn *column, AddressbookDialog *dialog)
-{
-	GtkTreeIter iter;
-	gtk_tree_model_get_iter (dialog->sourcesModel, &iter, path);
-	addressbook_edit_server_dialog (dialog->sourcesModel, NULL, &iter, dialog);
-}
-
-
-static AddressbookDialog *
-ldap_dialog_new (GNOME_Evolution_Shell shell)
-{
-	AddressbookDialog *dialog;
-	GList *l;
-	GtkWidget *scrolled;
-
-	dialog = g_new0 (AddressbookDialog, 1);
-
-	dialog->gui = glade_xml_new (EVOLUTION_GLADEDIR "/" GLADE_FILE_NAME, NULL, NULL);
-	dialog->shell = shell;
-
-	scrolled = glade_xml_get_widget (dialog->gui, "sourcesTable");
-	dialog->sourcesTable = g_object_get_data (G_OBJECT (scrolled), "table");
-	dialog->sourcesModel = g_object_get_data (G_OBJECT (scrolled), "model");
-	dialog->sourcesSelection = g_object_get_data (G_OBJECT (scrolled), "selection");
-
-	g_signal_connect (dialog->sourcesTable, "row_activated",
-			  G_CALLBACK (sources_table_row_activated), dialog);
-	
-	
-	dialog->addSource = glade_xml_get_widget (dialog->gui, "addSource");
-	g_signal_connect (dialog->addSource, "clicked",
-			  G_CALLBACK (add_source_clicked),
-			  dialog);
-
-	dialog->editSource = glade_xml_get_widget (dialog->gui, "editSource");
-	g_signal_connect (dialog->editSource, "clicked",
-			  G_CALLBACK (edit_source_clicked),
-			  dialog);
-
-	dialog->deleteSource = glade_xml_get_widget (dialog->gui, "deleteSource");
-	g_signal_connect (dialog->deleteSource, "clicked",
-			  G_CALLBACK (delete_source_clicked),
-			  dialog);
-
-	l = addressbook_storage_get_sources ();
-	for (; l != NULL; l = l->next) {
-		AddressbookSource *source;
-		GtkTreeIter iter;
-
-		source = addressbook_source_copy ((AddressbookSource*)l->data);
-
-		gtk_list_store_append (GTK_LIST_STORE (dialog->sourcesModel), &iter);
-
-		gtk_list_store_set (GTK_LIST_STORE (dialog->sourcesModel), &iter,
-				    0, source->name,
-				    1, source->host,
-				    2, source,
-				    -1);
-	}
-
-	g_signal_connect (dialog->sourcesSelection, "changed",
-			  G_CALLBACK (sources_selection_changed), dialog);
-
-	sources_selection_changed (dialog->sourcesSelection, dialog);
-
-	dialog->page = glade_xml_get_widget (dialog->gui, "addressbook-sources");
-
-	gtk_widget_show_all (dialog->page);
-
-	return dialog;
-}
-
-GtkWidget*
-addressbook_dialog_create_sources_table (char *name, char *string1, char *string2, int num1, int num2)
-{
-	GtkWidget *table, *scrolled;
-	GtkTreeSelection *selection;
-	GtkCellRenderer *renderer;
-	GtkListStore *model;
-
-	scrolled = gtk_scrolled_window_new (NULL, NULL);
-	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
-					GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-
-	model = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER);
-	table = gtk_tree_view_new_with_model ((GtkTreeModel *) model);
-
-	renderer = gtk_cell_renderer_text_new ();
-	gtk_tree_view_insert_column_with_attributes ((GtkTreeView *) table, -1, _("Account Name"),
-						     renderer, "text", 0, NULL);
-	gtk_tree_view_insert_column_with_attributes ((GtkTreeView *) table, -1, _("Server Name"),
-						     renderer, "text", 1, NULL);
-
-	selection = gtk_tree_view_get_selection ((GtkTreeView *) table);
-	gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
-	gtk_tree_view_set_headers_visible ((GtkTreeView *) table, TRUE);
-
-	gtk_container_add (GTK_CONTAINER (scrolled), table);
-	
-	g_object_set_data (G_OBJECT (scrolled), "model", model);
-	g_object_set_data (G_OBJECT (scrolled), "selection", selection);
-	g_object_set_data (G_OBJECT (scrolled), "table", table);
-
-	gtk_widget_show (scrolled);
-	gtk_widget_show (table);
-
-	return scrolled;
-}
-#endif /* HAVE_LDAP */
-
-static EvolutionConfigControl *
-ldap_config_control_new (GNOME_Evolution_Shell shell)
-{
-	GtkWidget *control_widget;
-	EvolutionConfigControl *control;
-
-#ifdef HAVE_LDAP
-	AddressbookDialog *dialog;
-
-	dialog = ldap_dialog_new (shell);
-
-	control_widget = dialog->page;
-
-	gtk_widget_ref (control_widget);
-
-	gtk_container_remove (GTK_CONTAINER (control_widget->parent), control_widget);
-#else
-	control_widget = gtk_label_new (_("LDAP was not enabled in this build of Evolution"));
-	gtk_widget_set_sensitive (control_widget, FALSE);
-	gtk_widget_show (control_widget);
-#endif
-
-	control = evolution_config_control_new (control_widget);
-
-#ifdef HAVE_LDAP
-	dialog->config_control = control;
-	g_signal_connect (dialog->config_control, "apply",
-			  G_CALLBACK (ldap_config_control_apply_callback), dialog);
-	g_object_weak_ref (G_OBJECT (dialog->config_control), 
-			   ldap_config_control_destroy_callback, dialog);
-
-	gtk_widget_unref (dialog->page);
-#endif
-
-	return control;
-}
-
-
-EvolutionConfigControl *
-addressbook_config_control_new (void)
-{
-	GNOME_Evolution_Shell shell;
-
-	shell = evolution_shell_client_corba_objref (addressbook_component_get_shell_client ());
-	if (! shell)
-		return NULL;
-
-	return ldap_config_control_new (shell);
-}
-
-void
-addressbook_config_create_new_source (const char *new_source, GtkWidget *parent)
-{
-#ifdef HAVE_LDAP
-#if 0
-	AddressbookSourceDialog *dialog;
-	GladeXML *gui;
-
-	gui = glade_xml_new (EVOLUTION_GLADEDIR "/" GLADE_FILE_NAME, NULL, NULL);
-
-	dialog = addressbook_source_dialog (gui, NULL, parent);
-
-	gtk_entry_set_text (GTK_ENTRY (dialog->name), new_source);
-
-	dialog->id = gtk_dialog_run (GTK_DIALOG (dialog->dialog));
-
-	gtk_widget_hide (dialog->dialog);
-
-	g_object_unref (dialog->gui);
-
-	if (dialog->id == GTK_RESPONSE_OK) {
-		/* Ok was clicked */
-		addressbook_storage_add_source (addressbook_source_copy(dialog->source));
-		addressbook_storage_write_sources();
-	}
-#endif
-#endif /* HAVE_LDAP */
-}
-
-#ifdef STANDALONE
-int
-main(int argc, char **argv)
-{
-	AddressbookDialog *dialog;
-
-	gnome_init_with_popt_table ("evolution-addressbook", "0.0",
-				    argc, argv, oaf_popt_options, 0, NULL);
-
-	glade_init ();
-
-	bindtextdomain (GETTEXT_PACKAGE, EVOLUTION_LOCALEDIR);
-	textdomain (GETTEXT_PACKAGE);
-
-#if 0
-	g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING);
-#endif
-
-	gtk_widget_push_colormap (gdk_rgb_get_cmap ());
-
-	dialog = ldap_dialog_new (NULL);
-
-	gtk_widget_show (glade_xml_get_widget (dialog->gui, "addressbook-sources-window"));
-
-	gtk_main();
-
-	return 0;
-}
-#endif
diff --git a/addressbook/gui/component/addressbook-config.h b/addressbook/gui/component/addressbook-config.h
deleted file mode 100644
index c1f88e3425..0000000000
--- a/addressbook/gui/component/addressbook-config.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* addressbook-storage.h
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors:
- * Chris Toshok <toshok@ximian.com>
- * Chris Lahey <clahey@ximian.com>
- **/
-
-#ifndef __ADDRESSBOOK_CONFIG_H__
-#define __ADDRESSBOOK_CONFIG_H__
-
-#include "addressbook-storage.h"
-#include "evolution-config-control.h"
-
-EvolutionConfigControl *addressbook_config_control_new (void);
-
-void  addressbook_config_create_new_source  (const char *new_source,
-					     GtkWidget  *parent);
-
-#endif /* __ADDRESSBOOK_CONFIG_H__ */
diff --git a/addressbook/gui/component/addressbook-storage.c b/addressbook/gui/component/addressbook-storage.c
deleted file mode 100644
index 9b73b93b54..0000000000
--- a/addressbook/gui/component/addressbook-storage.c
+++ /dev/null
@@ -1,722 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-ldap-storage.c
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Chris Toshok
- */
-
-/* The addressbook-sources.xml file goes like this:
-
-   <?xml version="1.0"?>
-   <addressbooks>
-     <contactserver>
-           <name>LDAP Server</name>
-	   <host>ldap.server.com</host>
-	   <port>389</port>
-	   <rootdn></rootdn>
-	   <authmethod>simple</authmethod>
-	   <emailaddr>toshok@blubag.com</emailaddr>
-	   <limit>100</limit>
-	   <rememberpass/>
-     </contactserver>
-   </addressbooks>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "addressbook-storage.h"
-
-#include <sys/types.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <string.h>
-#include <ctype.h>
-#include <unistd.h>
-
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <libxml/parser.h>
-#include <libxml/xmlmemory.h>
-
-#include <libgnome/gnome-i18n.h>
-#include <libgnome/gnome-util.h>
-#include <bonobo/bonobo-object.h>
-
-#include <gal/util/e-util.h>
-#include <gal/util/e-xml-utils.h>
-#include <libgnome/gnome-i18n.h>
-
-#include "evolution-shell-component.h"
-
-#include "addressbook-config.h"
-
-#define ADDRESSBOOK_SOURCES_XML "addressbook-sources.xml"
-
-#ifdef HAVE_LDAP
-static gboolean load_source_data (const char *file_path);
-#endif
-
-static gboolean save_source_data (const char *file_path);
-static void deregister_storage (void);
-
-static GList *sources;
-static EvolutionStorage *storage;
-static char *storage_path;
-static GNOME_Evolution_Shell corba_shell;
-
-void
-addressbook_storage_setup (EvolutionShellComponent *shell_component,
-			   const char *evolution_homedir)
-{
-	EvolutionShellClient *shell_client;
-
-	shell_client = evolution_shell_component_get_owner (shell_component);
-	if (shell_client == CORBA_OBJECT_NIL) {
-		g_warning ("We have no shell!?");
-		return;
-	}
-
-	corba_shell = evolution_shell_client_corba_objref (shell_client);
-
-	sources = NULL;
-
-	if (storage_path)
-		g_free (storage_path);
-	storage_path = g_build_filename (evolution_homedir, ADDRESSBOOK_SOURCES_XML, NULL);
-#ifdef HAVE_LDAP
-	if (!load_source_data (storage_path))
-		deregister_storage ();
-#endif 
-}
-
-#ifdef HAVE_LDAP
-static void
-notify_listener (const Bonobo_Listener listener, 
-		 GNOME_Evolution_Storage_Result corba_result)
-{
-	CORBA_any any;
-	CORBA_Environment ev;
-
-	CORBA_exception_init (&ev);
-
-	any._type = TC_GNOME_Evolution_Storage_Result;
-	any._value = &corba_result;
-
-	Bonobo_Listener_event (listener, "result", &any, &ev);
-
-	CORBA_exception_free (&ev);
-}
-
-static void
-remove_ldap_folder (EvolutionStorage *storage, const Bonobo_Listener listener,
-		    const CORBA_char *path, const CORBA_char *physical_uri,
-		    gpointer data)
-{
-	
-	addressbook_storage_remove_source (path + 1);
-	addressbook_storage_write_sources();
-
-	notify_listener (listener, GNOME_Evolution_Storage_OK);
-}
-
-static void
-create_ldap_folder (EvolutionStorage *storage, const Bonobo_Listener listener,
-		    const CORBA_char *path, const CORBA_char *type,
-		    const CORBA_char *description, const CORBA_char *parent_physical_uri,
-		    gpointer data)
-{
-	if (strcmp (type, "contacts")) {
-		notify_listener (listener, GNOME_Evolution_Storage_UNSUPPORTED_TYPE);
-		return;
-	}
-
-	if (strcmp (parent_physical_uri, "")) {/* ldap servers can't have subfolders */
-		notify_listener (listener, GNOME_Evolution_Storage_INVALID_URI);
-		return;
-	}
-	addressbook_config_create_new_source (path + 1, NULL);
-
-	notify_listener (listener, GNOME_Evolution_Storage_OK);
-}
-#endif
-
-
-EvolutionStorage *
-addressbook_get_other_contact_storage (void) 
-{
-#ifdef HAVE_LDAP
-	EvolutionStorageResult result;
-
-	if (storage == NULL) {
-		storage = evolution_storage_new (_("Other Contacts"), FALSE);
-		g_signal_connect (storage,
-				  "remove_folder",
-				  G_CALLBACK (remove_ldap_folder), NULL);
-		g_signal_connect (storage,
-				  "create_folder",
-				  G_CALLBACK (create_ldap_folder), NULL);
-		result = evolution_storage_register_on_shell (storage, corba_shell);
-		switch (result) {
-		case EVOLUTION_STORAGE_OK:
-			break;
-		case EVOLUTION_STORAGE_ERROR_GENERIC : 
-			g_warning("register_storage: generic error");
-			break;
-		case EVOLUTION_STORAGE_ERROR_CORBA : 
-			g_warning("register_storage: corba error");
-			break;
-		case EVOLUTION_STORAGE_ERROR_ALREADYREGISTERED :
-			g_warning("register_storage: already registered error");
-			break;
-		case EVOLUTION_STORAGE_ERROR_EXISTS :
-			g_warning("register_storage: already exists error");
-			break;
-		default:
-			g_warning("register_storage: other error");
-			break;
-		}
-	}
-#endif
-
-	return storage;
-}
-
-static void 
-deregister_storage (void)
-{
-	if (evolution_storage_deregister_on_shell (storage, corba_shell) != 
-	    EVOLUTION_STORAGE_OK) {
-		g_warning("couldn't deregister storage");
-	}
-
-	storage = NULL;
-}
-
-#ifdef HAVE_LDAP
-static char *
-get_string_value (xmlNode *node,
-		  const char *name)
-{
-	xmlNode *p;
-	xmlChar *xml_string;
-	char *retval;
-
-	p = e_xml_get_child_by_name (node, (xmlChar *) name);
-	if (p == NULL)
-		return NULL;
-
-	p = e_xml_get_child_by_name (p, (xmlChar *) "text");
-	if (p == NULL) /* there's no text between the tags, return the empty string */
-		return g_strdup("");
-
-	xml_string = xmlNodeListGetString (node->doc, p, 1);
-	retval = g_strdup ((char *) xml_string);
-	xmlFree (xml_string);
-
-	return retval;
-}
-
-static int
-get_integer_value (xmlNode *node,
-		   const char *name,
-		   int defval)
-{
-	xmlNode *p;
-	xmlChar *xml_string;
-	int retval;
-
-	p = e_xml_get_child_by_name (node, (xmlChar *) name);
-	if (p == NULL)
-		return defval;
-
-	p = e_xml_get_child_by_name (p, (xmlChar *) "text");
-	if (p == NULL) /* there's no text between the tags, return the default */
-		return defval;
-
-	xml_string = xmlNodeListGetString (node->doc, p, 1);
-	retval = atoi (xml_string);
-	xmlFree (xml_string);
-
-	return retval;
-}
-#endif
-
-static char *
-ldap_unparse_auth (AddressbookLDAPAuthType auth_type)
-{
-	switch (auth_type) {
-	case ADDRESSBOOK_LDAP_AUTH_NONE:
-		return "none";
-	case ADDRESSBOOK_LDAP_AUTH_SIMPLE_EMAIL:
-		return "ldap/simple-email";
-	case ADDRESSBOOK_LDAP_AUTH_SIMPLE_BINDDN:
-		return "ldap/simple-binddn";
-	default:
-		g_assert(0);
-		return "none";
-	}
-}
-
-#ifdef HAVE_LDAP
-static AddressbookLDAPAuthType
-ldap_parse_auth (const char *auth)
-{
-	if (!auth)
-		return ADDRESSBOOK_LDAP_AUTH_NONE;
-
-	if (!strcmp (auth, "ldap/simple-email") || !strcmp (auth, "simple"))
-		return ADDRESSBOOK_LDAP_AUTH_SIMPLE_EMAIL;
-	else if (!strcmp (auth, "ldap/simple-binddn"))
-		return ADDRESSBOOK_LDAP_AUTH_SIMPLE_BINDDN;
-	else
-		return ADDRESSBOOK_LDAP_AUTH_NONE;
-}
-#endif
-
-static char *
-ldap_unparse_scope (AddressbookLDAPScopeType scope_type)
-{
-	switch (scope_type) {
-	case ADDRESSBOOK_LDAP_SCOPE_BASE:
-		return "base";
-	case ADDRESSBOOK_LDAP_SCOPE_ONELEVEL:
-		return "one";
-	case ADDRESSBOOK_LDAP_SCOPE_SUBTREE:
-		return "sub";
-	default:
-		g_assert(0);
-		return "";
-	}
-}
-
-#ifdef HAVE_LDAP
-static AddressbookLDAPScopeType
-ldap_parse_scope (const char *scope)
-{
-	if (!scope)
-		return ADDRESSBOOK_LDAP_SCOPE_SUBTREE; /* XXX good default? */
-
-	if (!strcmp (scope, "base"))
-		return ADDRESSBOOK_LDAP_SCOPE_BASE;
-	else if (!strcmp (scope, "one"))
-		return ADDRESSBOOK_LDAP_SCOPE_ONELEVEL;
-	else
-		return ADDRESSBOOK_LDAP_SCOPE_SUBTREE;
-}
-#endif
-
-static char *
-ldap_unparse_ssl (AddressbookLDAPSSLType ssl_type)
-{
-	switch (ssl_type) {
-	case ADDRESSBOOK_LDAP_SSL_NEVER:
-		return "never";
-	case ADDRESSBOOK_LDAP_SSL_WHENEVER_POSSIBLE:
-		return "whenever_possible";
-	case ADDRESSBOOK_LDAP_SSL_ALWAYS:
-		return "always";
-	default:
-		g_assert(0);
-		return "";
-	}
-}
-
-#ifdef HAVE_LDAP
-static AddressbookLDAPSSLType
-ldap_parse_ssl (const char *ssl)
-{
-	if (!ssl)
-		return ADDRESSBOOK_LDAP_SSL_WHENEVER_POSSIBLE; /* XXX good default? */
-
-	if (!strcmp (ssl, "always"))
-		return ADDRESSBOOK_LDAP_SSL_ALWAYS;
-	else if (!strcmp (ssl, "never"))
-		return ADDRESSBOOK_LDAP_SSL_NEVER;
-	else
-		return ADDRESSBOOK_LDAP_SSL_WHENEVER_POSSIBLE;
-}
-#endif
-
-const char*
-addressbook_storage_auth_type_to_string (AddressbookLDAPAuthType auth_type)
-{
-	return ldap_unparse_auth (auth_type);
-}
-
-void
-addressbook_storage_init_source_uri (AddressbookSource *source)
-{
-	GString *str;
-
-	if (source->uri)
-		g_free (source->uri);
-
-	str = g_string_new ("ldap://");
-
-	g_string_append_printf (str, "%s:%s/%s?"/*trigraph prevention*/"?%s",
-				source->host,
-				source->port,
-				source->rootdn,
-				ldap_unparse_scope (source->scope));
-
-	g_string_append_printf (str, ";limit=%d", source->limit);
-
-	g_string_append_printf (str, ";ssl=%s", ldap_unparse_ssl (source->ssl));
-
-#if 0
-	g_string_append_printf (str, ";timeout=%d", source->timeout);
-#endif
-
-	source->uri = str->str;
-
-	g_string_free (str, FALSE);
-}
-
-#ifdef HAVE_LDAP
-static gboolean
-load_source_data (const char *file_path)
-{
-	xmlDoc *doc;
-	xmlNode *root;
-	xmlNode *child;
-
-	addressbook_get_other_contact_storage();
-
- tryagain:
-	doc = xmlParseFile (file_path);
-	if (doc == NULL) {
-		/* Check to see if a addressbook-sources.xml.new file
-                   exists.  If it does, rename it and try loading it */
-		char *new_path = g_strdup_printf ("%s.new", file_path);
-		struct stat sb;
-
-		if (stat (new_path, &sb) == 0) {
-			int rv;
-
-			rv = rename (new_path, file_path);
-			g_free (new_path);
-
-			if (rv < 0) {
-				g_error ("Failed to rename %s: %s\n",
-					 file_path,
-					 strerror(errno));
-				return FALSE;
-			} else
-				goto tryagain;
-		}
-
-		g_free (new_path);
-		return FALSE;
-	}
-
-	root = xmlDocGetRootElement (doc);
-	if (root == NULL || strcmp (root->name, "addressbooks") != 0) {
-		xmlFreeDoc (doc);
-		return FALSE;
-	}
-
-	for (child = root->children; child; child = child->next) {
-		char *path;
-		AddressbookSource *source;
-
-		source = g_new0 (AddressbookSource, 1);
-
-		if (!strcmp (child->name, "contactserver")) {
-			source->port   = get_string_value (child, "port");
-			source->host   = get_string_value (child, "host");
-			source->rootdn = get_string_value (child, "rootdn");
-			source->scope  = ldap_parse_scope (get_string_value (child, "scope"));
-			source->auth   = ldap_parse_auth (get_string_value (child, "authmethod"));
-			source->ssl    = ldap_parse_ssl (get_string_value (child, "ssl"));
-			source->email_addr = get_string_value (child, "emailaddr");
-			source->binddn = get_string_value (child, "binddn");
-			source->limit  = get_integer_value (child, "limit", 100);
-		}
-		else if (!strcmp (child->name, "text")) {
-			if (child->content) {
-				int i;
-				for (i = 0; i < strlen (child->content); i++) {
-					if (!isspace (child->content[i])) {
-						g_warning ("illegal text in contactserver list.");
-						break;
-					}
-				}
-			}
-			g_free (source);
-			continue;
-		}
-		else {
-			g_warning ("unknown node '%s' in %s", child->name, file_path);
-			g_free (source);
-			continue;
-		}
-
-		addressbook_storage_init_source_uri (source);
-
-		source->name = get_string_value (child, "name");
-		source->description = get_string_value (child, "description");
-
-		path = g_strdup_printf ("/%s", source->name);
-		evolution_storage_new_folder (storage, path, source->name,
-					      "contacts/ldap", source->uri,
-					      source->description, NULL, 0, FALSE, 0);
-
-		sources = g_list_append (sources, source);
-
-		g_free (path);
-	}
-
-	if (g_list_length (sources) == 0)
-		deregister_storage();
-
-	xmlFreeDoc (doc);
-	return TRUE;
-}
-#endif
-
-static void
-ldap_source_foreach(AddressbookSource *source, xmlNode *root)
-{
-	xmlNode *source_root = xmlNewNode (NULL,
-					   (xmlChar *) "contactserver");
-
-	xmlAddChild (root, source_root);
-
-	xmlNewChild (source_root, NULL, (xmlChar *) "name",
-		     (xmlChar *) source->name);
-	xmlNewChild (source_root, NULL, (xmlChar *) "description",
-		     (xmlChar *) source->description);
-
-	xmlNewChild (source_root, NULL, (xmlChar *) "port",
-		     (xmlChar *) source->port);
-	xmlNewChild (source_root, NULL, (xmlChar *) "host",
-		     (xmlChar *) source->host);
-	xmlNewChild (source_root, NULL, (xmlChar *) "rootdn",
-		     (xmlChar *) source->rootdn);
-	xmlNewChild (source_root, NULL, (xmlChar *) "scope",
-		     (xmlChar *) ldap_unparse_scope(source->scope));
-	xmlNewChild (source_root, NULL, (xmlChar *) "authmethod",
-		     (xmlChar *) ldap_unparse_auth(source->auth));
-	xmlNewChild (source_root, NULL, (xmlChar *) "ssl",
-		     (xmlChar *) ldap_unparse_ssl(source->ssl));
-
-	if (source->limit != 100) {
-		char *string;
-		string = g_strdup_printf ("%d", source->limit);
-		xmlNewChild (source_root, NULL, (xmlChar *) "limit",
-			     (xmlChar *) string);
-		g_free (string);
-	}
-
-	if (source->auth != ADDRESSBOOK_LDAP_AUTH_NONE) {
-		if (source->auth == ADDRESSBOOK_LDAP_AUTH_SIMPLE_BINDDN)
-			xmlNewChild (source_root, NULL, (xmlChar *) "binddn",
-				     (xmlChar *) source->binddn);
-		else
-			xmlNewChild (source_root, NULL, (xmlChar *) "emailaddr",
-				     (xmlChar *) source->email_addr);
-
-		if (source->remember_passwd)
-			xmlNewChild (source_root, NULL, (xmlChar *) "rememberpass",
-				     NULL);
-	}
-}
-
-static gboolean
-save_source_data (const char *file_path)
-{
-	xmlDoc *doc;
-	xmlNode *root;
-	int fd, rv;
-	xmlChar *buf;
-	int buf_size;
-	char *new_path = g_strdup_printf ("%s.new", file_path);
-
-	doc = xmlNewDoc ((xmlChar *) "1.0");
-	root = xmlNewDocNode (doc, NULL, (xmlChar *) "addressbooks", NULL);
-	xmlDocSetRootElement (doc, root);
-
-	g_list_foreach (sources, (GFunc)ldap_source_foreach, root);
-
-	fd = open (new_path, O_CREAT | O_TRUNC | O_WRONLY, 0600);
-	fchmod (fd, 0600);
-
-	xmlDocDumpMemory (doc, &buf, &buf_size);
-
-	if (buf == NULL) {
-		g_error ("Failed to write %s: xmlBufferCreate() == NULL", file_path);
-		return FALSE;
-	}
-
-	rv = write (fd, buf, buf_size);
-	xmlFree (buf);
-	close (fd);
-
-	if (0 > rv) {
-		g_error ("Failed to write new %s: %s\n", file_path, strerror(errno));
-		unlink (new_path);
-		return FALSE;
-	}
-	else {
-		if (0 > rename (new_path, file_path)) {
-			g_error ("Failed to rename %s: %s\n", file_path, strerror(errno));
-			unlink (new_path);
-			return FALSE;
-		}
-		return TRUE;
-	}
-}
-
-void
-addressbook_storage_add_source (AddressbookSource *source)
-{
-	char *path;
-
-	sources = g_list_append (sources, source);
-
-	/* And then to the ui */
-	addressbook_get_other_contact_storage();
-	path = g_strdup_printf ("/%s", source->name);
-	evolution_storage_new_folder (storage, path, source->name, "contacts/ldap",
-				      source->uri, source->description, NULL, 0, FALSE, 0);
-
-	g_free (path);
-}
-
-void
-addressbook_storage_remove_source (const char *name)
-{
-	char *path;
-	AddressbookSource *source = NULL;
-	GList *l;
-
-	/* remove it from our hashtable */
-	for (l = sources; l; l = l->next) {
-		AddressbookSource *s = l->data;
-		if (!strcmp (s->name, name)) {
-			source = s;
-			break;
-		}
-	}
-
-	if (!source)
-		return;
-
-	sources = g_list_remove_link (sources, l);
-	g_list_free_1 (l);
-
-	addressbook_source_free (source);
-
-	/* and then from the ui */
-	path = g_strdup_printf ("/%s", name);
-	evolution_storage_removed_folder (storage, path);
-
-	if (g_list_length (sources) == 0) 
-		deregister_storage ();
-
-	g_free (path);
-}
-
-GList *
-addressbook_storage_get_sources ()
-{
-	return sources;
-}
-
-AddressbookSource *
-addressbook_storage_get_source_by_uri (const char *uri)
-{
-	GList *l;
-
-	for (l = sources; l ; l = l->next) {
-		AddressbookSource *source = l->data;
-		if (!strcmp (uri, source->uri))
-			return source;
-	}
-
-	return NULL;
-}
-
-void
-addressbook_source_free (AddressbookSource *source)
-{
-	g_free (source->name);
-	g_free (source->description);
-	g_free (source->uri);
-	g_free (source->host);
-	g_free (source->port);
-	g_free (source->rootdn);
-	g_free (source->email_addr);
-	g_free (source->binddn);
-
-	g_free (source);
-}
-
-static void
-addressbook_source_foreach (AddressbookSource *source, gpointer data)
-{
-	char *path = g_strdup_printf ("/%s", source->name);
-
-	evolution_storage_removed_folder (storage, path);
-
-	g_free (path);
-
-	addressbook_source_free (source);
-}
-
-void
-addressbook_storage_clear_sources (void)
-{
-	g_list_foreach (sources, (GFunc)addressbook_source_foreach, NULL);
-	g_list_free (sources);
-	deregister_storage ();
-	sources = NULL;
-}
-
-void
-addressbook_storage_write_sources (void)
-{
-	save_source_data (storage_path);
-}
-
-AddressbookSource *
-addressbook_source_copy (const AddressbookSource *source)
-{
-	AddressbookSource *copy;
-
-	copy = g_new0 (AddressbookSource, 1);
-	copy->name = g_strdup (source->name);
-	copy->description = g_strdup (source->description);
-	copy->uri = g_strdup (source->uri);
-
-	copy->host = g_strdup (source->host);
-	copy->port = g_strdup (source->port);
-	copy->rootdn = g_strdup (source->rootdn);
-	copy->scope = source->scope;
-	copy->auth = source->auth;
-	copy->ssl = source->ssl;
-	copy->email_addr = g_strdup (source->email_addr);
-	copy->binddn = g_strdup (source->binddn);
-	copy->remember_passwd = source->remember_passwd;
-	copy->limit = source->limit;
-
-	return copy;
-}
diff --git a/addressbook/gui/component/addressbook-storage.h b/addressbook/gui/component/addressbook-storage.h
deleted file mode 100644
index 1d0fc24b73..0000000000
--- a/addressbook/gui/component/addressbook-storage.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* addressbook-storage.h
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Chris Toshok
- */
-
-#ifndef __ADDRESSBOOK_STORAGE_H__
-#define __ADDRESSBOOK_STORAGE_H__
-
-#include "evolution-shell-component.h"
-#include "evolution-storage.h"
-
-typedef enum {
-	ADDRESSBOOK_LDAP_AUTH_NONE,
-	ADDRESSBOOK_LDAP_AUTH_SIMPLE_EMAIL,
-	ADDRESSBOOK_LDAP_AUTH_SIMPLE_BINDDN,
-} AddressbookLDAPAuthType;
-
-typedef enum {
-	ADDRESSBOOK_LDAP_SCOPE_ONELEVEL,
-	ADDRESSBOOK_LDAP_SCOPE_SUBTREE,
-	ADDRESSBOOK_LDAP_SCOPE_BASE,
-	ADDRESSBOOK_LDAP_SCOPE_LAST
-} AddressbookLDAPScopeType;
-
-typedef enum {
-	ADDRESSBOOK_LDAP_SSL_ALWAYS,
-	ADDRESSBOOK_LDAP_SSL_WHENEVER_POSSIBLE,
-	ADDRESSBOOK_LDAP_SSL_NEVER
-} AddressbookLDAPSSLType;
-
-typedef struct {
-	char *name;
-	char *description;
-	char *host;
-	char *port;
-	char *rootdn;
-	AddressbookLDAPScopeType scope;
-	AddressbookLDAPAuthType auth;
-	AddressbookLDAPSSLType ssl;
-	char *email_addr;                   /* used in AUTH_SIMPLE_EMAIL */
-	char *binddn;                       /* used in AUTH_SIMPLE_BINDDN */
-	gboolean remember_passwd;
-	int limit;
-
-	char *uri; /* filled in from the above */
-} AddressbookSource;
-
-void addressbook_storage_setup (EvolutionShellComponent *shell_component,
-				const char *evolution_homedir);
-
-EvolutionStorage  *addressbook_get_other_contact_storage (void);
-GList             *addressbook_storage_get_sources (void);
-AddressbookSource *addressbook_storage_get_source_by_uri (const char *uri);
-void               addressbook_storage_clear_sources (void);
-void               addressbook_storage_write_sources (void);
-AddressbookSource *addressbook_source_copy (const AddressbookSource *source);
-void               addressbook_source_free (AddressbookSource *source);
-void               addressbook_storage_init_source_uri (AddressbookSource *source);
-
-void               addressbook_storage_add_source (AddressbookSource *source);
-void               addressbook_storage_remove_source (const char *name);
-const char*        addressbook_storage_auth_type_to_string (AddressbookLDAPAuthType auth_type);
-
-#endif /* __ADDRESSBOOK_STORAGE_H__ */
diff --git a/addressbook/gui/component/addressbook.c b/addressbook/gui/component/addressbook.c
deleted file mode 100644
index 39c4f2fcce..0000000000
--- a/addressbook/gui/component/addressbook.c
+++ /dev/null
@@ -1,1206 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* addressbook.c
- *
- * Copyright (C) 2000, 2001, 2002 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Chris Lahey (clahey@ximian.com)
- */
-
-#include <config.h>
-
-#include <string.h>
-#include <glib.h>
-#include <gtk/gtkframe.h>
-#include <gtk/gtkvbox.h>
-#include <gtk/gtkwidget.h>
-#include <gtk/gtkmessagedialog.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-app.h>
-#include <libgnomeui/gnome-href.h>
-#include <libgnomeui/gnome-uidefs.h>
-#include <bonobo/bonobo-generic-factory.h>
-#include <bonobo/bonobo-ui-util.h>
-#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-property-bag.h>
-#include <gal/util/e-util.h>
-
-#include "e-util/e-categories-master-list-wombat.h"
-#include "e-util/e-sexp.h"
-#include "e-util/e-passwords.h"
-#include "select-names/e-select-names.h"
-#include "select-names/e-select-names-manager.h"
-
-#include "evolution-shell-component-utils.h"
-#include "evolution-activity-client.h"
-#include "e-contact-editor.h"
-#include "e-contact-save-as.h"
-#include "addressbook-config.h"
-#include "addressbook.h"
-#include "addressbook-component.h"
-#include "addressbook/gui/search/e-addressbook-search-dialog.h"
-#include "addressbook/gui/widgets/e-addressbook-view.h"
-#include "addressbook/gui/widgets/e-addressbook-util.h"
-#include "addressbook/printing/e-contact-print.h"
-
-#include <ebook/e-book.h>
-#include <ebook/e-book-util.h>
-#include <widgets/misc/e-search-bar.h>
-#include <widgets/misc/e-filter-bar.h>
-
-/* This is used for the addressbook status bar */
-#define EVOLUTION_CONTACTS_PROGRESS_IMAGE "evolution-contacts-mini.png"
-static GdkPixbuf *progress_icon[2] = { NULL, NULL };
-
-#define d(x)
-
-#define PROPERTY_FOLDER_URI          "folder_uri"
-
-#define PROPERTY_FOLDER_URI_IDX      1
-
-typedef struct {
-	gint refs;
-	EAddressbookView *view;
-	ESearchBar *search;
-	gint        ecml_changed_id;
-	GtkWidget *vbox;
-	EvolutionActivityClient *activity;
-	BonoboControl *control;
-	BonoboPropertyBag *properties;
-	char *uri;
-	char *passwd;
-	gboolean ignore_search_changes;
-	gboolean failed_to_load;
-} AddressbookView;
-
-static void addressbook_view_ref (AddressbookView *);
-static void addressbook_view_unref (AddressbookView *);
-
-static void addressbook_authenticate (EBook *book, gboolean previous_failure,
-				      AddressbookSource *source, EBookCallback cb, gpointer closure);
-
-static void book_open_cb (EBook *book, EBookStatus status, gpointer closure);
-
-static void
-save_contact_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view)
-		e_addressbook_view_save_as(view->view);
-}
-
-static void
-view_contact_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view)
-		e_addressbook_view_view(view->view);
-}
-
-static void
-search_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-
-	if (view->view)
-		gtk_widget_show(e_addressbook_search_dialog_new(view->view));
-}
-
-static void
-delete_contact_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view) {
-		e_addressbook_view_delete_selection(view->view);
-	}
-}
-
-static void
-print_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view)
-		e_addressbook_view_print(view->view);
-}
-
-static void
-print_preview_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view)
-		e_addressbook_view_print_preview(view->view);
-}
-
-static void
-stop_loading_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view)
-		e_addressbook_view_stop(view->view);
-}
-
-static void
-cut_contacts_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view)
-		e_addressbook_view_cut(view->view);
-}
-
-static void
-copy_contacts_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view)
-		e_addressbook_view_copy(view->view);
-}
-
-static void
-paste_contacts_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view)
-		e_addressbook_view_paste(view->view);
-}
-
-static void
-select_all_contacts_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view)
-		e_addressbook_view_select_all (view->view);
-}
-
-static void
-send_contact_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view)
-		e_addressbook_view_send (view->view);
-}
-
-static void
-send_contact_to_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view)
-		e_addressbook_view_send_to (view->view);
-}
-
-static void
-copy_contact_to_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view)
-		e_addressbook_view_copy_to_folder (view->view);
-}
-
-static void
-move_contact_to_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	AddressbookView *view = (AddressbookView *) user_data;
-	if (view->view)
-		e_addressbook_view_move_to_folder (view->view);
-}
-
-static void
-forget_passwords_cb (BonoboUIComponent *uih, void *user_data, const char *path)
-{
-	e_passwords_forget_passwords();
-}
-
-static void
-update_command_state (EAddressbookView *eav, AddressbookView *view)
-{
-	BonoboUIComponent *uic;
-
-	if (view->view == NULL)
-		return;
-
-	addressbook_view_ref (view);
-
-	uic = bonobo_control_get_ui_component (view->control);
-
-	if (bonobo_ui_component_get_container (uic) != CORBA_OBJECT_NIL) {
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactsSaveAsVCard",
-					      "sensitive",
-					      e_addressbook_view_can_save_as (view->view) ? "1" : "0", NULL);
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactsView",
-					      "sensitive",
-					      e_addressbook_view_can_view (view->view) ? "1" : "0", NULL);
-
-		/* Print Contact */
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactsPrint",
-					      "sensitive",
-					      e_addressbook_view_can_print (view->view) ? "1" : "0", NULL);
-
-		/* Print Contact */
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactsPrintPreview",
-					      "sensitive",
-					      e_addressbook_view_can_print (view->view) ? "1" : "0", NULL);
-
-		/* Delete Contact */
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactDelete",
-					      "sensitive",
-					      e_addressbook_view_can_delete (view->view) ? "1" : "0", NULL);
-
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactsCut",
-					      "sensitive",
-					      e_addressbook_view_can_cut (view->view) ? "1" : "0", NULL);
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactsCopy",
-					      "sensitive",
-					      e_addressbook_view_can_copy (view->view) ? "1" : "0", NULL);
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactsPaste",
-					      "sensitive",
-					      e_addressbook_view_can_paste (view->view) ? "1" : "0", NULL);
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactsSelectAll",
-					      "sensitive",
-					      e_addressbook_view_can_select_all (view->view) ? "1" : "0", NULL);
-
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactsSendContactToOther",
-					      "sensitive",
-					      e_addressbook_view_can_send (view->view) ? "1" : "0", NULL);
-
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactsSendMessageToContact",
-					      "sensitive",
-					      e_addressbook_view_can_send_to (view->view) ? "1" : "0", NULL);
-
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactsMoveToFolder",
-					      "sensitive",
-					      e_addressbook_view_can_move_to_folder (view->view) ? "1" : "0", NULL);
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactsCopyToFolder",
-					      "sensitive",
-					      e_addressbook_view_can_copy_to_folder (view->view) ? "1" : "0", NULL);
-
-		/* Stop */
-		bonobo_ui_component_set_prop (uic,
-					      "/commands/ContactStop",
-					      "sensitive",
-					      e_addressbook_view_can_stop (view->view) ? "1" : "0", NULL);
-	}
-
-	addressbook_view_unref (view);
-}
-
-static void
-change_view_type (AddressbookView *view, EAddressbookViewType view_type)
-{
-	g_object_set (view->view, "type", view_type, NULL);
-}
-
-static BonoboUIVerb verbs [] = {
-	BONOBO_UI_UNSAFE_VERB ("ContactsPrint", print_cb),
-	BONOBO_UI_UNSAFE_VERB ("ContactsPrintPreview", print_preview_cb),
-	BONOBO_UI_UNSAFE_VERB ("ContactsSaveAsVCard", save_contact_cb),
-	BONOBO_UI_UNSAFE_VERB ("ContactsView", view_contact_cb),
-	BONOBO_UI_UNSAFE_VERB ("ToolSearch", search_cb),
-
-	BONOBO_UI_UNSAFE_VERB ("ContactDelete", delete_contact_cb),
-	BONOBO_UI_UNSAFE_VERB ("ContactStop", stop_loading_cb),
-
-	BONOBO_UI_UNSAFE_VERB ("ContactsCut", cut_contacts_cb),
-	BONOBO_UI_UNSAFE_VERB ("ContactsCopy", copy_contacts_cb),
-	BONOBO_UI_UNSAFE_VERB ("ContactsPaste", paste_contacts_cb),
-	BONOBO_UI_UNSAFE_VERB ("ContactsSelectAll", select_all_contacts_cb),
-
-	BONOBO_UI_UNSAFE_VERB ("ContactsSendContactToOther", send_contact_cb),
-	BONOBO_UI_UNSAFE_VERB ("ContactsSendMessageToContact", send_contact_to_cb),
-	BONOBO_UI_UNSAFE_VERB ("ContactsMoveToFolder", move_contact_to_cb),
-	BONOBO_UI_UNSAFE_VERB ("ContactsCopyToFolder", copy_contact_to_cb),
-	BONOBO_UI_UNSAFE_VERB ("ContactsForgetPasswords", forget_passwords_cb),
-
-	BONOBO_UI_VERB_END
-};
-
-static EPixmap pixmaps [] = {
-	E_PIXMAP ("/menu/File/FileOps/ContactsSaveAsVCard", "save-as-16.png"),
-	E_PIXMAP ("/menu/File/Print/ContactsPrint", "print.xpm"),
-	E_PIXMAP ("/menu/File/Print/ContactsPrintPreview", "print-preview.xpm"),
-
-	E_PIXMAP ("/menu/EditPlaceholder/Edit/ContactsCut", "16_cut.png"),
-	E_PIXMAP ("/menu/EditPlaceholder/Edit/ContactsCopy", "16_copy.png"),
-	E_PIXMAP ("/menu/EditPlaceholder/Edit/ContactsPaste", "16_paste.png"),
-	E_PIXMAP ("/menu/EditPlaceholder/Edit/ContactDelete", "evolution-trash-mini.png"),
-
-	E_PIXMAP ("/menu/Tools/ComponentPlaceholder/ToolSearch", "search-16.png"),
-
-	E_PIXMAP ("/Toolbar/ContactsPrint", "buttons/print.png"),
-	E_PIXMAP ("/Toolbar/ContactDelete", "buttons/delete-message.png"),
-
-	E_PIXMAP_END
-};
-
-static void
-control_activate (BonoboControl     *control,
-		  BonoboUIComponent *uic,
-		  AddressbookView   *view)
-{
-	Bonobo_UIContainer remote_ui_container;
-
-	remote_ui_container = bonobo_control_get_remote_ui_container (control, NULL);
-	bonobo_ui_component_set_container (uic, remote_ui_container, NULL);
-	bonobo_object_release_unref (remote_ui_container, NULL);
-
-	e_search_bar_set_ui_component (view->search, uic);
-
-	bonobo_ui_component_add_verb_list_with_data (
-		uic, verbs, view);
-	
-	bonobo_ui_component_freeze (uic, NULL);
-
-	bonobo_ui_util_set_ui (uic, PREFIX,
-			       EVOLUTION_UIDIR "/evolution-addressbook.xml",
-			       "evolution-addressbook", NULL);
-
-	e_addressbook_view_setup_menus (view->view, uic);
-
-	e_pixmaps_update (uic, pixmaps);
-
-	bonobo_ui_component_thaw (uic, NULL);
-
-	update_command_state (view->view, view);
-}
-
-static void
-control_activate_cb (BonoboControl *control, 
-		     gboolean activate, 
-		     AddressbookView *view)
-{
-	BonoboUIComponent *uic;
-
-	uic = bonobo_control_get_ui_component (control);
-	g_assert (uic != NULL);
-
-	if (activate) {
-		control_activate (control, uic, view);
-		if (activate && view->view && view->view->model)
-			e_addressbook_model_force_folder_bar_message (view->view->model);
-
-		/* if the book failed to load, we kick off another
-		   load here */
-
-		if (view->failed_to_load && view->uri) {
-			EBook *book;
-			char *uri_data;
-
-			book = e_book_new ();
-			uri_data = e_book_expand_uri (view->uri);
-
-			addressbook_load_uri (book, uri_data, book_open_cb, view);
-
-			g_free(uri_data);
-		}
-	} else {
-		bonobo_ui_component_unset_container (uic, NULL);
-		e_addressbook_view_discard_menus (view->view);
-	}
-}
-
-static void
-addressbook_view_ref (AddressbookView *view)
-{
-	g_assert (view->refs > 0);
-	++view->refs;
-}
-
-static void
-addressbook_view_unref (AddressbookView *view)
-{
-	g_assert (view->refs > 0);
-	--view->refs;
-	if (view->refs == 0) {
-		g_free (view);
-	}
-}
-
-static ECategoriesMasterList *
-get_master_list (void)
-{
-	static ECategoriesMasterList *category_list = NULL;
-
-	if (category_list == NULL)
-		category_list = e_categories_master_list_wombat_new ();
-	return category_list;
-}
-
-static void
-addressbook_view_clear (AddressbookView *view)
-{
-	EBook *book;
-
-	if (view->uri && view->view) {
-		g_object_get(view->view,
-			     "book", &book,
-			     NULL);
-		g_object_unref (book);
-	}
-	
-	if (view->properties) {
-		bonobo_object_unref (BONOBO_OBJECT(view->properties));
-		view->properties = NULL;
-	}
-
-	if (view->view) {
-		gtk_widget_destroy (GTK_WIDGET (view->view));
-		view->view = NULL;
-	}
-		
-	g_free(view->passwd);
-	view->passwd = NULL;
-
-	g_free(view->uri);
-	view->uri = NULL;
-
-	if (view->refs == 0)
-		g_free(view);
-
-	if (view->ecml_changed_id != 0) {
-		g_signal_handler_disconnect (get_master_list(),
-					     view->ecml_changed_id);
-		view->ecml_changed_id = 0;
-	}
-}
-
-static void
-book_open_cb (EBook *book, EBookStatus status, gpointer closure)
-{
-	AddressbookView *view = closure;
-
-	if (status == E_BOOK_STATUS_SUCCESS) {
-		view->failed_to_load = FALSE;
-
-		g_object_set(view->view,
-			     "book", book,
-			     NULL);
-	}
-	else {
-		char *label_string;
-		GtkWidget *warning_dialog;
-		GtkWidget *href = NULL;
-		AddressbookSource *source = NULL;
-
-		view->failed_to_load = TRUE;
-
-		if (!strncmp (view->uri, "file:", 5)) {
-			label_string = 
-				_("We were unable to open this addressbook.  Please check that the\n"
-				  "path exists and that you have permission to access it.");
-		}
-		else {
-			source = addressbook_storage_get_source_by_uri (view->uri);
-
-			if (source) {
-				/* special case for ldap: contact folders so we can tell the user about openldap */
-#if HAVE_LDAP
-				label_string = 
-					_("We were unable to open this addressbook.  This either\n"
-					  "means you have entered an incorrect URI, or the LDAP server\n"
-					  "is unreachable.");
-#else
-				label_string =
-					_("This version of Evolution does not have LDAP support\n"
-					  "compiled in to it.  If you want to use LDAP in Evolution\n"
-					  "you must compile the program from the CVS sources after\n"
-					  "retrieving OpenLDAP from the link below.\n");
-				href = gnome_href_new ("http://www.openldap.org/", "OpenLDAP at http://www.openldap.org/");
-#endif
-			}
-			else {
-				/* other network folders */
-				label_string =
-					_("We were unable to open this addressbook.  This either\n"
-					  "means you have entered an incorrect URI, or the server\n"
-					  "is unreachable.");
-			}
-		}
-
-
-        	warning_dialog = gtk_message_dialog_new (
-			 NULL /* XXX */,
-			 0,
-			 GTK_MESSAGE_WARNING,
-			 GTK_BUTTONS_CLOSE, 
-			 label_string,
-			 NULL);
-
-		g_signal_connect (warning_dialog, 
-				  "response", 
-				  G_CALLBACK (gtk_widget_destroy),
-				  warning_dialog);
-
-		gtk_window_set_title (GTK_WINDOW (warning_dialog), _("Unable to open addressbook"));
-
-		if (href)
-			gtk_box_pack_start (GTK_BOX (GTK_DIALOG (warning_dialog)->vbox), 
-					    href, FALSE, FALSE, 0);
-
-		gtk_widget_show_all (warning_dialog);
-	}
-
-	g_object_unref (book);
-}
-
-static void
-destroy_callback(gpointer data, GObject *where_object_was)
-{
-	AddressbookView *view = data;
-	if (view->view && view->view->model && view->view->model->book_view)
-		e_book_view_stop (view->view->model->book_view);
-	addressbook_view_clear (view);
-	addressbook_view_unref (view);
-}
-
-static void
-get_prop (BonoboPropertyBag *bag,
-	  BonoboArg         *arg,
-	  guint              arg_id,
-	  CORBA_Environment *ev,
-	  gpointer           user_data)
-{
-	AddressbookView *view = user_data;
-
-	switch (arg_id) {
-
-	case PROPERTY_FOLDER_URI_IDX:
-		if (view && view->uri)
-			BONOBO_ARG_SET_STRING (arg, view->uri);
-		else
-			BONOBO_ARG_SET_STRING (arg, "");
-		break;
-
-	default:
-		g_warning ("Unhandled arg %d\n", arg_id);
-	}
-}
-
-typedef struct {
-	EBookCallback cb;
-	char *clean_uri;
-	AddressbookSource *source;
-	gpointer closure;
-} LoadUriData;
-
-static void
-load_uri_auth_cb (EBook *book, EBookStatus status, gpointer closure)
-{
-	LoadUriData *data = closure;
-
-	if (status != E_BOOK_STATUS_SUCCESS) {
-		if (status == E_BOOK_STATUS_CANCELLED) {
-			/* the user clicked cancel in the password dialog */
-			GtkWidget *dialog;
-			dialog = gtk_message_dialog_new (NULL,
-							 0,
-							 GTK_MESSAGE_WARNING,
-							 GTK_BUTTONS_OK,
-							 _("Accessing LDAP Server anonymously"));
-			g_signal_connect (dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL);
-			gtk_widget_show (dialog);
-			data->cb (book, E_BOOK_STATUS_SUCCESS, data->closure);
-			g_free (data->clean_uri);
-			g_free (data);
-			return;
-		}
-		else {
-			e_passwords_forget_password ("Addressbook", data->clean_uri);
-			addressbook_authenticate (book, TRUE, data->source, load_uri_auth_cb, closure);
-			return;
-		}
-	}
-
-	data->cb (book, status, data->closure);
-
-	g_free (data->clean_uri);
-	g_free (data);
-}
-
-static void
-addressbook_authenticate (EBook *book, gboolean previous_failure, AddressbookSource *source,
-			  EBookCallback cb, gpointer closure)
-{
-	LoadUriData *load_uri_data = closure;
-	const char *password = NULL;
-	char *pass_dup = NULL;
-	char *semicolon;
-
-	load_uri_data->clean_uri = g_strdup (e_book_get_uri (book));
-
-	semicolon = strchr (load_uri_data->clean_uri, ';');
-
-	if (semicolon)
-		*semicolon = '\0';
-
-	password = e_passwords_get_password ("Addressbook", load_uri_data->clean_uri);
-
-	if (!password) {
-		char *prompt;
-		gboolean remember;
-		char *failed_auth;
-
-		if (previous_failure) {
-			failed_auth = _("Failed to authenticate.\n");
-		}
-		else {
-			failed_auth = "";
-		}
-
-
-		if (source->auth == ADDRESSBOOK_LDAP_AUTH_SIMPLE_BINDDN)
-			prompt = g_strdup_printf (_("%sEnter password for %s (user %s)"),
-						  failed_auth, source->name, source->binddn);
-		else
-			prompt = g_strdup_printf (_("%sEnter password for %s (user %s)"),
-						  failed_auth, source->name, source->email_addr);
-		remember = source->remember_passwd;
-		pass_dup = e_passwords_ask_password (prompt, "Addressbook", load_uri_data->clean_uri, prompt, TRUE,
-						     E_PASSWORDS_REMEMBER_FOREVER, &remember,
-						     NULL);
-		if (remember != source->remember_passwd) {
-			source->remember_passwd = remember;
-			addressbook_storage_write_sources ();
-		}
-		g_free (prompt);
-	}
-
-	if (password || pass_dup) {
-		char *user;
-
-		if (source->auth == ADDRESSBOOK_LDAP_AUTH_SIMPLE_BINDDN)
-			user = source->binddn;
-		else
-			user = source->email_addr;
-		if (!user)
-			user = "";
-		e_book_authenticate_user (book, user, password ? password : pass_dup,
-					  addressbook_storage_auth_type_to_string (source->auth),
-					  cb, closure);
-		g_free (pass_dup);
-		return;
-	}
-	else {
-		/* they hit cancel */
-		cb (book, E_BOOK_STATUS_CANCELLED, closure);
-	}
-}
-
-static void
-load_uri_cb (EBook *book, EBookStatus status, gpointer closure)
-{
-	LoadUriData *load_uri_data = closure;
-
-	if (status == E_BOOK_STATUS_SUCCESS && book != NULL) {
-
-		/* check if the addressbook needs authentication */
-
-		load_uri_data->source = addressbook_storage_get_source_by_uri (e_book_get_uri (book));
-
-		if (load_uri_data->source &&
-		    load_uri_data->source->auth != ADDRESSBOOK_LDAP_AUTH_NONE) {
-
-			addressbook_authenticate (book, FALSE, load_uri_data->source,
-						  load_uri_auth_cb, closure);
-
-			return;
-		}
-	}
-	
-	load_uri_data->cb (book, status, load_uri_data->closure);
-	g_free (load_uri_data);
-}
-
-void
-addressbook_load_uri (EBook *book, const char *uri,
-		      EBookCallback cb, gpointer closure)
-{
-	LoadUriData *load_uri_data = g_new0 (LoadUriData, 1);
-
-	load_uri_data->cb = cb;
-	load_uri_data->closure = closure;
-
-	e_book_load_uri (book, uri, load_uri_cb, load_uri_data);
-}
-
-void
-addressbook_load_default_book (EBook *book, EBookCallback cb, gpointer closure)
-{
-	LoadUriData *load_uri_data = g_new (LoadUriData, 1);
-
-	load_uri_data->cb = cb;
-	load_uri_data->closure = closure;
-
-	e_book_load_default_book (book, load_uri_cb, load_uri_data);
-}
-
-static void
-set_prop (BonoboPropertyBag *bag,
-	  const BonoboArg   *arg,
-	  guint              arg_id,
-	  CORBA_Environment *ev,
-	  gpointer           user_data)
-{
-	AddressbookView *view = user_data;
-
-	char *uri_data;
-	EBook *book;
-	
-	switch (arg_id) {
-
-	case PROPERTY_FOLDER_URI_IDX:
-		g_object_get(view->view,
-			     "book", &book,
-			     NULL);
-		if (view->uri) {
-			/* we've already had a uri set on this view, so unload it */
-			e_book_unload_uri (book);
-			g_free (view->uri);
-		} else {
-			book = e_book_new ();
-		}
-
-		view->failed_to_load = FALSE;
-
-		view->uri = g_strdup(BONOBO_ARG_GET_STRING (arg));
-		
-		uri_data = e_book_expand_uri (view->uri);
-
-		addressbook_load_uri (book, uri_data, book_open_cb, view);
-
-		g_free(uri_data);
-
-		break;
-		
-	default:
-		g_warning ("Unhandled arg %d\n", arg_id);
-		break;
-	}
-}
-
-enum {
-	ESB_FULL_NAME,
-	ESB_EMAIL,
-	ESB_CATEGORY,
-	ESB_ANY,
-	ESB_ADVANCED
-};
-
-static ESearchBarItem addressbook_search_option_items[] = {
-	{ N_("Name begins with"), ESB_FULL_NAME, NULL },
-	{ N_("Email begins with"), ESB_EMAIL, NULL },
-	{ N_("Category is"), ESB_CATEGORY, NULL }, /* We attach subitems below */
-	{ N_("Any field contains"), ESB_ANY, NULL },
-	{ N_("Advanced..."), ESB_ADVANCED, NULL },
-	{ NULL, -1, NULL }
-};
-
-static void
-alphabet_state_changed (EAddressbookView *eav, gunichar letter, AddressbookView *view)
-{
-	view->ignore_search_changes = TRUE;
-	if (letter == 0) {
-		e_search_bar_set_item_id (view->search, ESB_FULL_NAME);
-		e_search_bar_set_text (view->search, "");
-	} else {
-		e_search_bar_set_item_id (view->search, ESB_FULL_NAME);
-	}
-	view->ignore_search_changes = FALSE;
-}
-
-static void
-addressbook_search_activated (ESearchBar *esb, AddressbookView *view)
-{
-	ECategoriesMasterList *master_list;
-	char *search_word, *search_query;
-	const char *category_name;
-	int search_type, subid;
-
-	if (view->ignore_search_changes) {
-		return;
-	}
-
-	g_object_get(esb,
-		     "text", &search_word,
-		     "item_id", &search_type,
-		     NULL);
-
-	if (search_type == ESB_ADVANCED) {
-		gtk_widget_show(e_addressbook_search_dialog_new(view->view));
-	}
-	else {
-		if ((search_word && strlen (search_word)) || search_type == ESB_CATEGORY) {
-			GString *s = g_string_new ("");
-			e_sexp_encode_string (s, search_word);
-			switch (search_type) {
-			case ESB_ANY:
-				search_query = g_strdup_printf ("(contains \"x-evolution-any-field\" %s)",
-								s->str);
-				break;
-			case ESB_FULL_NAME:
-				search_query = g_strdup_printf ("(beginswith \"full_name\" %s)",
-								s->str);
-				break;
-			case ESB_EMAIL:
-				search_query = g_strdup_printf ("(beginswith \"email\" %s)",
-								s->str);
-				break;
-			case ESB_CATEGORY:
-				subid = e_search_bar_get_subitem_id (esb);
-
-				if (subid < 0 || subid == G_MAXINT) {
-					/* match everything */
-					search_query = g_strdup ("(contains \"x-evolution-any-field\" \"\")");
-				} else {
-					master_list = get_master_list ();
-					category_name = e_categories_master_list_nth (master_list, subid);
-					search_query = g_strdup_printf ("(is \"category\" \"%s\")", category_name);
-				}
-				break;
-			default:
-				search_query = g_strdup ("(contains \"x-evolution-any-field\" \"\")");
-				break;
-			}
-			g_string_free (s, TRUE);
-		} else
-			search_query = g_strdup ("(contains \"x-evolution-any-field\" \"\")");
-
-		if (search_query)
-			g_object_set (view->view,
-				      "query", search_query,
-				      NULL);
-
-		g_free (search_query);
-	}
-
-	g_free (search_word);
-}
-
-static void
-addressbook_query_changed (ESearchBar *esb, AddressbookView *view)
-{
-	int search_type;
-
-	g_object_get(esb,
-		     "item_id", &search_type,
-		     NULL);
-
-	if (search_type == ESB_ADVANCED) {
-		gtk_widget_show(e_addressbook_search_dialog_new(view->view));
-	}
-}
-
-static GNOME_Evolution_ShellView
-retrieve_shell_view_interface_from_control (BonoboControl *control)
-{
-	Bonobo_ControlFrame control_frame;
-	GNOME_Evolution_ShellView shell_view_interface;
-	CORBA_Environment ev;
-
-	shell_view_interface = g_object_get_data (G_OBJECT (control),
-						  "shell_view_interface");
-
-	if (shell_view_interface)
-		return shell_view_interface;
-
-	control_frame = bonobo_control_get_control_frame (control, NULL);
-
-	if (control_frame == NULL)
-		return CORBA_OBJECT_NIL;
-
-	CORBA_exception_init (&ev);
-	shell_view_interface = Bonobo_Unknown_queryInterface (control_frame,
-							       "IDL:GNOME/Evolution/ShellView:1.0",
-							       &ev);
-	CORBA_exception_free (&ev);
-
-	if (shell_view_interface != CORBA_OBJECT_NIL)
-		g_object_set_data (G_OBJECT (control),
-				   "shell_view_interface",
-				   shell_view_interface);
-	else
-		g_warning ("Control frame doesn't have Evolution/ShellView.");
-
-	return shell_view_interface;
-}
-
-static void
-set_status_message (EAddressbookView *eav, const char *message, AddressbookView *view)
-{
-
-	if (!message || !*message) {
-		if (view->activity) {
-			g_object_unref (view->activity);
-			view->activity = NULL;
-		}
-	}
-	else if (!view->activity) {
-		int display;
-		char *clientid = g_strdup_printf ("%p", view);
-
-		if (progress_icon[0] == NULL)
-			progress_icon[0] = gdk_pixbuf_new_from_file (EVOLUTION_IMAGESDIR "/" EVOLUTION_CONTACTS_PROGRESS_IMAGE, NULL);
-
-		view->activity = evolution_activity_client_new (addressbook_component_get_shell_client(), clientid,
-								progress_icon, message, TRUE, &display);
-
-		g_free (clientid);
-	}
-	else {
-		evolution_activity_client_update (view->activity, message, -1.0);
-	}
-
-}
-
-static void
-search_result (EAddressbookView *eav, EBookViewStatus status, AddressbookView *view)
-{
-	char *str = NULL;
-
-	switch (status) {
-	case E_BOOK_VIEW_STATUS_SUCCESS:
-		return;
-	case E_BOOK_VIEW_STATUS_SIZE_LIMIT_EXCEEDED:
-		str = _("More cards matched this query than either the server is \n"
-			"configured to return or Evolution is configured to display.\n"
-			"Please make your search more specific or raise the result limit in\n"
-			"the directory server preferences for this addressbook.");
-		break;
-	case E_BOOK_VIEW_STATUS_TIME_LIMIT_EXCEEDED:
-		str = _("The time to execute this query exceeded the server limit or the limit\n"
-			"you have configured for this addressbook.  Please make your search\n"
-			"more specific or raise the time limit in the directory server\n"
-			"preferences for this addressbook.");
-		break;
-	case E_BOOK_VIEW_STATUS_INVALID_QUERY:
-		str = _("The backend for this addressbook was unable to parse this query.");
-		break;
-	case E_BOOK_VIEW_STATUS_QUERY_REFUSED:
-		str = _("The backend for this addressbook refused to perform this query.");
-		break;
-	case E_BOOK_VIEW_STATUS_OTHER_ERROR:
-	case E_BOOK_VIEW_STATUS_UNKNOWN:
-		str = _("This query did not complete successfully.");
-		break;
-	}
-
-	if (str) {
-		GtkWidget *dialog;
-		dialog = gtk_message_dialog_new (NULL,
-						 0,
-						 GTK_MESSAGE_WARNING,
-						 GTK_BUTTONS_OK,
-						 str);
-		g_signal_connect (dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL);
-		gtk_widget_show (dialog);
-	}
-}
-
-static void
-set_folder_bar_label (EAddressbookView *eav, const char *message, AddressbookView *view)
-{
-	CORBA_Environment ev;
-	GNOME_Evolution_ShellView shell_view_interface;
-
-	CORBA_exception_init (&ev);
-
-	shell_view_interface = retrieve_shell_view_interface_from_control (view->control);
-	if (!shell_view_interface) {
-		CORBA_exception_free (&ev);
-		return;
-	}
-
-	d(g_message("Updating via ShellView"));
-
-	if (message == NULL || message[0] == 0) {
-		GNOME_Evolution_ShellView_setFolderBarLabel (shell_view_interface,
-							     "",
-							     &ev);
-	}
-	else {
-		GNOME_Evolution_ShellView_setFolderBarLabel (shell_view_interface,
-							     message,
-							     &ev);
-	}
-
-	if (BONOBO_EX (&ev))
-		g_warning ("Exception in label update: %s",
-			   bonobo_exception_get_text (&ev));
-
-	CORBA_exception_free (&ev);
-}
-
-/* Our global singleton config database */
-static Bonobo_ConfigDatabase config_db = NULL;
-
-Bonobo_ConfigDatabase
-addressbook_config_database (CORBA_Environment *ev)
-{
-	if (config_db == NULL)
-		config_db = bonobo_get_object ("wombat:", "Bonobo/ConfigDatabase", ev);
-
-	return config_db;
-}
-
-static int
-compare_subitems (const void *a, const void *b)
-{
-	const ESearchBarSubitem *subitem_a = a;
-	const ESearchBarSubitem *subitem_b = b;
-
-	return strcoll (subitem_a->text, subitem_b->text);
-}
-
-static void
-make_suboptions (AddressbookView *view)
-{
-	ESearchBarSubitem *subitems;
-	ECategoriesMasterList *master_list;
-	gint i, N;
-
-	master_list = get_master_list ();
-	N = e_categories_master_list_count (master_list);
-	subitems = g_new (ESearchBarSubitem, N+2);
-
-	subitems[0].id = G_MAXINT;
-	subitems[0].text = g_strdup (_("Any Category"));
-	subitems[0].translate = FALSE;
-
-	for (i=0; i<N; ++i) {
-		const char *category = e_categories_master_list_nth (master_list, i);
-
-		subitems[i+1].id = i;
-		subitems[i+1].text = g_strdup (category);
-		subitems[i+1].translate = FALSE;
-	}
-	subitems[N+1].id = -1;
-	subitems[N+1].text = NULL;
-
-	qsort (subitems + 1, N, sizeof (subitems[0]), compare_subitems);
-
-	e_search_bar_set_suboption (view->search, ESB_CATEGORY, subitems);
-}
-
-static void
-ecml_changed (ECategoriesMasterList *ecml, AddressbookView *view)
-{
-	make_suboptions (view);
-}
-
-static void
-connect_master_list_changed (AddressbookView *view)
-{
-	view->ecml_changed_id =
-		g_signal_connect (get_master_list(), "changed",
-				  G_CALLBACK (ecml_changed), view);
-}
-
-BonoboControl *
-addressbook_new_control (void)
-{
-	AddressbookView *view;
-	GtkWidget *frame;
-
-	frame = gtk_frame_new (NULL);
-	gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
-
-	view = g_new0 (AddressbookView, 1);
-	view->refs = 1;
-	view->ignore_search_changes = FALSE;
-
-	view->vbox = gtk_vbox_new (FALSE, 0);
-
-	g_object_weak_ref (G_OBJECT (view->vbox), destroy_callback, view);
-
-	/* Create the control. */
-	view->control = bonobo_control_new (view->vbox);
-
-	view->search = E_SEARCH_BAR (e_search_bar_new (NULL, addressbook_search_option_items));
-	make_suboptions (view);
-	connect_master_list_changed (view);
-
-	gtk_box_pack_start (GTK_BOX (view->vbox), GTK_WIDGET (view->search),
-			    FALSE, FALSE, 0);
-	g_signal_connect (view->search, "query_changed",
-			  G_CALLBACK (addressbook_query_changed), view);
-	g_signal_connect (view->search, "search_activated",
-			  G_CALLBACK (addressbook_search_activated), view);
-
-	view->view = E_ADDRESSBOOK_VIEW(e_addressbook_view_new());
-	gtk_container_add (GTK_CONTAINER (frame), GTK_WIDGET (view->view));
-	gtk_box_pack_start (GTK_BOX (view->vbox), frame,
-			    TRUE, TRUE, 0);
-
-	/* create the initial view */
-	change_view_type (view, E_ADDRESSBOOK_VIEW_MINICARD);
-
-	gtk_widget_show (frame);
-	gtk_widget_show (view->vbox);
-	gtk_widget_show (GTK_WIDGET(view->view));
-	gtk_widget_show (GTK_WIDGET(view->search));
-
-	view->properties = bonobo_property_bag_new (get_prop, set_prop, view);
-
-	bonobo_property_bag_add (view->properties,
-				 PROPERTY_FOLDER_URI, PROPERTY_FOLDER_URI_IDX,
-				 BONOBO_ARG_STRING, NULL, _("The URI that the Folder Browser will display"), 0);
-
-	bonobo_control_set_properties (view->control,
-				       bonobo_object_corba_objref (BONOBO_OBJECT (view->properties)),
-				       NULL);
-
-	g_signal_connect (view->view,
-			  "status_message",
-			  G_CALLBACK(set_status_message),
-			  view);
-
-	g_signal_connect (view->view,
-			  "search_result",
-			  G_CALLBACK(search_result),
-			  view);
-
-	g_signal_connect (view->view,
-			  "folder_bar_message",
-			  G_CALLBACK(set_folder_bar_label),
-			  view);
-
-	g_signal_connect (view->view,
-			  "command_state_change",
-			  G_CALLBACK(update_command_state),
-			  view);
-	
-	g_signal_connect (view->view,
-			  "alphabet_state_change",
-			  G_CALLBACK(alphabet_state_changed),
-			  view);
-	
-	view->uri = NULL;
-
-	g_signal_connect (view->control, "activate",
-			  G_CALLBACK (control_activate_cb), view);
-
-	return view->control;
-}
diff --git a/addressbook/gui/component/addressbook.h b/addressbook/gui/component/addressbook.h
deleted file mode 100644
index 3d4bba5187..0000000000
--- a/addressbook/gui/component/addressbook.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef __ADDRESSBOOK_H__
-#define __ADDRESSBOOK_H__
-
-#include <bonobo/bonobo-control.h>
-#include <e-util/e-config-listener.h>
-#include <bonobo/bonobo-object.h>
-#include <bonobo/bonobo-moniker-util.h>
-#include <ebook/e-book.h>
-
-/* use this instead of e_book_load_uri everywhere where you want the
-   authentication to be handled for you. */
-void       addressbook_load_uri             (EBook *book, const char *uri, EBookCallback cb, gpointer closure);
-void       addressbook_load_default_book    (EBook *book, EBookCallback open_response, gpointer closure);
-
-BonoboControl *addressbook_new_control  (void);
-
-#endif /* __ADDRESSBOOK_H__ */
diff --git a/addressbook/gui/component/apps_evolution_addressbook.schemas b/addressbook/gui/component/apps_evolution_addressbook.schemas
deleted file mode 100644
index 82af9d0843..0000000000
--- a/addressbook/gui/component/apps_evolution_addressbook.schemas
+++ /dev/null
@@ -1,42 +0,0 @@
-<gconfschemafile>
-  <schemalist>
-
-    <!-- Completion uris -->
-
-    <schema>
-      <key>/schemas/apps/evolution/addressbook/completion/uris</key>
-      <applyto>/apps/evolution/addressbook/completion/uris</applyto>
-      <owner>evolution-addressbook</owner>
-      <type>string</type>
-      <default></default>
-      <locale name="C">
-        <short>EFolderList xml for the list of completion uris</short>
-      </locale>
-    </schema>
-
-    <schema>
-      <key>/schemas/apps/evolution/addressbook/completion/minimum_query_length</key>
-      <applyto>/apps/evolution/addressbook/completion/minimum_query_length</applyto>
-      <owner>evolution-addressbook</owner>
-      <type>int</type>
-      <default>3</default>
-      <locale name="C">
-        <short>The number of characters that must be typed before evolution will attempt to autocomplete</short>
-      </locale>
-    </schema>
-
-    <!-- Select names last used uri -->
-
-    <schema>
-      <key>/schemas/apps/evolution/addressbook/select_names/last_used_uri</key>
-      <applyto>/apps/evolution/addressbook/select_names/last_used_uri</applyto>
-      <owner>evolution-addressbook</owner>
-      <type>string</type>
-      <default></default>
-      <locale name="C">
-        <short>URI for the folder last used in the select names dialog</short>
-      </locale>
-    </schema>
-
-  </schemalist>
-</gconfschemafile>
\ No newline at end of file
diff --git a/addressbook/gui/component/component-factory.c b/addressbook/gui/component/component-factory.c
deleted file mode 100644
index 9d5e946dc0..0000000000
--- a/addressbook/gui/component/component-factory.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* component-factory.c - Factory for Evolution's Addressbook component.
- *
- * Copyright (C) 2002 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli <ettore@ximian.com>
- */
-
-#include <config.h>
-
-#include <string.h>
-#include "addressbook.h"
-#include "addressbook-component.h"
-#include "addressbook-config.h"
-#include "e-address-popup.h"
-#include "e-address-widget.h"
-#include "e-minicard-control.h"
-#include "select-names/e-select-names-bonobo.h"
-
-#include <bonobo/bonobo-shlib-factory.h>
-
-
-#define FACTORY_ID "OAFIID:GNOME_Evolution_Addressbook_Factory"
-
-#define MINICARD_CONTROL_ID            "OAFIID:GNOME_Evolution_Addressbook_MiniCard_Control"
-#define ADDRESSBOOK_CONTROL_ID         "OAFIID:GNOME_Evolution_Addressbook_Control"
-#define SHELL_COMPONENT_ID             "OAFIID:GNOME_Evolution_Addressbook_ShellComponent"
-#define ADDRESS_WIDGET_ID              "OAFIID:GNOME_Evolution_Addressbook_AddressWidget"
-#define ADDRESS_POPUP_ID               "OAFIID:GNOME_Evolution_Addressbook_AddressPopup"
-#define SELECT_NAMES_ID                "OAFIID:GNOME_Evolution_Addressbook_SelectNames"
-#define LDAP_STORAGE_CONFIG_CONTROL_ID "OAFIID:GNOME_Evolution_LDAPStorage_ConfigControl"
-
-
-static BonoboObject *
-factory (BonoboGenericFactory *factory,
-	 const char *component_id,
-	 void *closure)
-{
-	if (strcmp (component_id, MINICARD_CONTROL_ID) == 0)
-		return BONOBO_OBJECT (e_minicard_control_new ());
-	if (strcmp (component_id, ADDRESSBOOK_CONTROL_ID) == 0)
-		return BONOBO_OBJECT (addressbook_new_control ());
-	if (strcmp (component_id, SHELL_COMPONENT_ID) == 0)
-		return addressbook_component_init ();
-	if (strcmp (component_id, ADDRESS_WIDGET_ID) == 0)
-		return BONOBO_OBJECT (e_address_widget_new_control ());
-	if (strcmp (component_id, ADDRESS_POPUP_ID) == 0)
-		return BONOBO_OBJECT (e_address_popup_new_control ());
-	if (strcmp (component_id, LDAP_STORAGE_CONFIG_CONTROL_ID) == 0)
-		return BONOBO_OBJECT (addressbook_config_control_new ());
-	if (strcmp (component_id, SELECT_NAMES_ID) == 0)
-		return BONOBO_OBJECT (e_select_names_bonobo_new ());
-
-	g_warning (FACTORY_ID ": Don't know what to do with %s", component_id);
-	return NULL;
-}
-
-BONOBO_ACTIVATION_SHLIB_FACTORY (FACTORY_ID, "Evolution Addressbook component factory", factory, NULL)
diff --git a/addressbook/gui/component/e-address-popup.c b/addressbook/gui/component/e-address-popup.c
deleted file mode 100644
index 0b5ec97185..0000000000
--- a/addressbook/gui/component/e-address-popup.c
+++ /dev/null
@@ -1,1258 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * e-address-popup.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Developed by Jon Trowbridge <trow@ximian.com>
- */
-
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- * 
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- */
-
-/*
- * This file is too big and this widget is too complicated.  Forgive me.
- */
-
-#include <config.h>
-#include <string.h>
-#include "addressbook.h"
-#include "e-address-popup.h"
-#include <bonobo/bonobo-control.h>
-#include <bonobo/bonobo-property-bag.h>
-#include <bonobo/bonobo-generic-factory.h>
-#include <gal/widgets/e-popup-menu.h>
-#include <addressbook/backend/ebook/e-book.h>
-#include <addressbook/backend/ebook/e-book-util.h>
-#include <addressbook/gui/contact-editor/e-contact-editor.h>
-#include <addressbook/gui/contact-editor/e-contact-quick-add.h>
-#include <addressbook/gui/widgets/e-minicard-widget.h>
-#include <addressbook/gui/widgets/e-addressbook-util.h>
-#include "e-util/e-gui-utils.h"
-
-/*
- * Some general scaffolding for our widgets.  Think of this as a really, really
- * lame implementation of a wizard (...which is still somewhat more general that
- * we really need it to be).
- */
-
-typedef struct _MiniWizard MiniWizard;
-struct _MiniWizard {
-	GtkWidget *body;
-
-	GtkWidget *vbox;
-	GtkWidget *ok_button;
-	GtkWidget *cancel_button;
-
-	void (*ok_cb) (MiniWizard *, gpointer);
-	void (*cleanup_cb) (gpointer);
-	gpointer closure;
-
-	void (*destroy_cb) (MiniWizard *, gpointer);
-	gpointer destroy_closure;
-};
-
-static void
-mini_wizard_container_add (MiniWizard *wiz, GtkWidget *w)
-{
-	GList *iter = gtk_container_get_children (GTK_CONTAINER (wiz->vbox));
-	while (iter != NULL) {
-		GtkWidget *oldw = (GtkWidget *) iter->data;
-		iter = g_list_next (iter);
-		gtk_container_remove (GTK_CONTAINER (wiz->vbox), oldw);
-	}
-	gtk_container_add (GTK_CONTAINER (wiz->vbox), w);
-}
-
-static void
-mini_wizard_destroy (MiniWizard *wiz)
-{
-	if (wiz->cleanup_cb)
-		wiz->cleanup_cb (wiz->closure);
-	wiz->cleanup_cb = NULL;
-
-	if (wiz->destroy_cb)
-		wiz->destroy_cb (wiz, wiz->destroy_closure);
-}
-
-static void
-mini_wizard_ok_cb (GtkWidget *b, gpointer closure)
-{
-	MiniWizard *wiz = (MiniWizard *) closure;
-
-	gpointer old_closure = wiz->closure;
-	void (*old_cleanup) (gpointer) = wiz->cleanup_cb;
-
-	wiz->cleanup_cb = NULL;
-
-	if (wiz->ok_cb)
-		wiz->ok_cb (wiz, wiz->closure);
-
-	if (old_cleanup)
-		old_cleanup (old_closure);
-
-}
-
-static void
-mini_wizard_cancel_cb (GtkWidget *b, gpointer closure)
-{
-	mini_wizard_destroy ((MiniWizard *) closure);
-}
-
-static void
-mini_wizard_destroy_cb (gpointer closure, GObject *where_object_was)
-{
-	MiniWizard *wiz = (MiniWizard *) closure;
-	if (wiz->cleanup_cb)
-		wiz->cleanup_cb (wiz->closure);
-	g_free (wiz);
-}
-
-static MiniWizard *
-mini_wizard_new (void)
-{
-	MiniWizard *wiz = g_new (MiniWizard, 1);
-	GtkWidget *bbox;
-
-	wiz->body          = gtk_vbox_new (FALSE, 2);
-	wiz->vbox          = gtk_vbox_new (FALSE, 2);
-	wiz->ok_button     = gtk_button_new_from_stock (GTK_STOCK_OK);
-	wiz->cancel_button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
-
-	wiz->ok_cb      = NULL;
-	wiz->cleanup_cb = NULL;
-	wiz->closure    = NULL;
-
-	wiz->destroy_cb      = NULL;
-	wiz->destroy_closure = NULL;
-
-	bbox = gtk_hbutton_box_new ();
-	gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox),
-				   GTK_BUTTONBOX_END);
-
-	gtk_box_pack_start (GTK_BOX (bbox), wiz->cancel_button, FALSE, TRUE, 0);
-	gtk_box_pack_start (GTK_BOX (bbox), wiz->ok_button, FALSE, TRUE, 0);
-
-	gtk_box_set_spacing (GTK_BOX (bbox),
-			     10 /* ugh */);
-
-	gtk_box_pack_start (GTK_BOX (wiz->body), wiz->vbox, TRUE, TRUE, 2);
-	gtk_box_pack_start (GTK_BOX (wiz->body), gtk_hseparator_new (), FALSE, TRUE, 2);
-	gtk_box_pack_start (GTK_BOX (wiz->body), bbox, FALSE, TRUE, 2);
-
-	gtk_widget_show_all (wiz->body);
-
-	g_signal_connect (wiz->ok_button,
-			  "clicked",
-			  G_CALLBACK (mini_wizard_ok_cb),
-			  wiz);
-	g_signal_connect (wiz->cancel_button,
-			  "clicked",
-			  G_CALLBACK (mini_wizard_cancel_cb),
-			  wiz);
-
-	g_object_weak_ref (G_OBJECT (wiz->body),
-			   mini_wizard_destroy_cb,
-			   wiz);
-
-	return wiz;
-	
-}
-
-
-
-/*
- * This is the code for the UI thingie that lets you manipulate the e-mail
- * addresses (and *only* the e-mail addresses) associated with an existing
- * card.
- */
-
-#define EMPTY_ENTRY N_("(none)")
-
-typedef struct _EMailMenu EMailMenu;
-struct _EMailMenu {
-	GtkWidget *option_menu;
-	GList *options;
-	gchar *current_selection;
-};
-
-static void
-email_menu_free (EMailMenu *menu)
-{
-	if (menu == NULL)
-		return;
-
-	g_list_foreach (menu->options, (GFunc) g_free, NULL);
-	g_list_free (menu->options);
-	g_free (menu);
-}
-
-static EMailMenu *
-email_menu_new (void)
-{
-	EMailMenu *menu = g_new (EMailMenu, 1);
-
-	menu->option_menu = gtk_option_menu_new ();
-	menu->options = NULL;
-	menu->current_selection = NULL;
-
-	gtk_option_menu_set_menu (GTK_OPTION_MENU (menu->option_menu), gtk_menu_new ());
-
-	return menu;
-}
-
-static void
-menu_activate_cb (GtkWidget *w, gpointer closure)
-{
-	EMailMenu *menu = (EMailMenu *) closure;
-	gchar *addr = (gchar *) g_object_get_data (G_OBJECT (w), "addr");
-
-	menu->current_selection = addr;
-}
-
-static void
-email_menu_add_option (EMailMenu *menu, const gchar *addr)
-{
-	GtkWidget *menu_item;
-	gchar *addr_cpy;
-
-	g_return_if_fail (menu != NULL);
-	if (addr == NULL)
-		return;
-
-	addr_cpy = g_strdup (addr);
-	menu->options = g_list_append (menu->options, addr_cpy);
-
-	menu_item = gtk_menu_item_new_with_label (addr);
-	g_object_set_data (G_OBJECT (menu_item), "addr", addr_cpy);
-	gtk_widget_show_all (menu_item);
-	gtk_menu_shell_append (GTK_MENU_SHELL (gtk_option_menu_get_menu (GTK_OPTION_MENU (menu->option_menu))), menu_item);
-
-	g_signal_connect (menu_item,
-			  "activate",
-			  G_CALLBACK (menu_activate_cb),
-			  menu);
-}
-
-static void
-email_menu_add_options_from_card (EMailMenu *menu, ECard *card, const gchar *extra_addr)
-{
-	ECardSimple *simple;
-
-	g_return_if_fail (card && E_IS_CARD (card));
-
-	simple = e_card_simple_new (card);
-
-	/* If any of these three e-mail fields are NULL, email_menu_add_option will just
-	   return without doing anything. */
-	email_menu_add_option (menu, e_card_simple_get_email (simple, E_CARD_SIMPLE_EMAIL_ID_EMAIL));
-	email_menu_add_option (menu, e_card_simple_get_email (simple, E_CARD_SIMPLE_EMAIL_ID_EMAIL_2));
-	email_menu_add_option (menu, e_card_simple_get_email (simple, E_CARD_SIMPLE_EMAIL_ID_EMAIL_3));
-	email_menu_add_option (menu, extra_addr);
-	email_menu_add_option (menu, EMPTY_ENTRY);
-
-	g_object_unref (simple);
-}
-
-static void
-email_menu_set_option (EMailMenu *menu, const gchar *addr)
-{
-	guint count = 0;
-	GList *iter;
-
-	g_return_if_fail (menu != NULL);
-
-	if (addr == NULL) {
-		email_menu_set_option (menu, EMPTY_ENTRY);
-		return;
-	}
-
-	iter = menu->options;
-	while (iter && strcmp (addr, (gchar *) iter->data)) {
-		++count;
-		iter = g_list_next (iter);
-	}
-
-	if (iter) {
-		gtk_option_menu_set_history (GTK_OPTION_MENU (menu->option_menu), count);
-		menu->current_selection = (gchar *) iter->data;
-	} 
-}
-
-#ifdef UNDEFINED_FUNCTIONS_SHOULD_PLEASE_BE_INCLUDED
-static void
-email_menu_unset_option (EMailMenu *menu, const gchar *addr)
-{
-	GList *iter;
-
-	g_return_if_fail (menu != NULL);
-	g_return_if_fail (addr != NULL);
-
-	if (menu->current_selection == NULL || strcmp (addr, menu->current_selection))
-		return;
-
-	iter = menu->options;
-	while (iter && strcmp (addr, (gchar *) iter->data)) {
-		iter = g_list_next (iter);
-	}
-	if (iter) {
-		iter = g_list_next (iter);
-		if (iter) {
-			email_menu_set_option (menu, (gchar *) iter->data);
-		} else {
-			email_menu_set_option (menu, EMPTY_ENTRY);
-		}
-	}
-}
-#endif
-
-
-
-typedef struct _EMailTable EMailTable;
-struct _EMailTable {
-	GtkWidget *table;
-	ECard *card;
-	EMailMenu *primary;
-	EMailMenu *email2;
-	EMailMenu *email3;
-};
-
-static void
-email_table_cleanup_cb (gpointer closure)
-{
-	EMailTable *et = (EMailTable *) closure;
-
-	if (et == NULL)
-		return;
-
-	g_object_unref (et->card);
-	email_menu_free (et->primary);
-	email_menu_free (et->email2);
-	email_menu_free (et->email3);
-
-	g_free (et);
-}
-
-static void
-email_table_from_card (EMailTable *et)
-{
-	ECardSimple *simple;
-	
-	g_return_if_fail (et != NULL);
-
-	simple = e_card_simple_new (et->card);
-	email_menu_set_option (et->primary, e_card_simple_get_email (simple, E_CARD_SIMPLE_EMAIL_ID_EMAIL));
-	email_menu_set_option (et->email2,  e_card_simple_get_email (simple, E_CARD_SIMPLE_EMAIL_ID_EMAIL_2));
-	email_menu_set_option (et->email3,  e_card_simple_get_email (simple, E_CARD_SIMPLE_EMAIL_ID_EMAIL_3));
-	g_object_unref (simple);
-}
-
-static void
-email_table_to_card (EMailTable *et)
-{
-	ECardSimple *simple;
-	gchar *curr;
-
-	g_return_if_fail (et != NULL);
-
-	simple = e_card_simple_new (et->card);
-
-	curr = et->primary->current_selection;
-	if (curr && !strcmp (curr, _(EMPTY_ENTRY)))
-		curr = NULL;
-	e_card_simple_set_email (simple, E_CARD_SIMPLE_EMAIL_ID_EMAIL, curr);
-
-	curr = et->email2->current_selection;
-	if (curr && !strcmp (curr, _(EMPTY_ENTRY)))
-		curr = NULL;
-	e_card_simple_set_email (simple, E_CARD_SIMPLE_EMAIL_ID_EMAIL_2, curr);
-
-	curr = et->email3->current_selection;
-	if (curr && !strcmp (curr, _(EMPTY_ENTRY)))
-		curr = NULL;
-	e_card_simple_set_email (simple, E_CARD_SIMPLE_EMAIL_ID_EMAIL_3, curr);
-
-	e_card_simple_sync_card (simple);
-	g_object_unref (simple);
-}
-
-static void
-email_table_save_card_cb (EBook *book, EBookStatus status, gpointer closure)
-{
-	ECard *card = E_CARD (closure);
-
-	if (status == E_BOOK_STATUS_SUCCESS) {
-		e_book_commit_card (book, card, NULL, NULL);
-	}
-	if (book)
-		g_object_unref (book);
-	g_object_unref (card);
-}
-
-/*
- * We have to do this in an idle function because of what might be a
- * re-entrancy problems with EBook.
- */
-static gint
-add_card_idle_cb (gpointer closure)
-{
-	EBook *book;
-
-	book = e_book_new ();
-	addressbook_load_default_book (book, email_table_save_card_cb, closure);
-
-	return 0;
-}
-
-static void
-email_table_ok_cb (MiniWizard *wiz, gpointer closure)
-{
-	EMailTable *et = (EMailTable *) closure;
-
-	email_table_to_card (et);
-
-	g_object_ref (et->card);
-	gtk_idle_add (add_card_idle_cb, et->card);
-
-	mini_wizard_destroy (wiz);
-}
-
-static void
-email_table_init (MiniWizard *wiz, ECard *card, const gchar *extra_address)
-{
-	EMailTable *et;
-
-	gchar *name_str;
-	gint xpad, ypad;
-	GtkAttachOptions label_x_opts, label_y_opts;
-	GtkAttachOptions menu_x_opts, menu_y_opts;
-
-	g_return_if_fail (card && E_IS_CARD (card));
-
-	et = g_new (EMailTable, 1);
-
-	et->card = card;
-	g_object_ref (et->card);
-
-	et->table = gtk_table_new (4, 2, FALSE);
-
-	et->primary = email_menu_new ();
-	et->email2  = email_menu_new ();
-	et->email3  = email_menu_new ();
-
-	email_menu_add_options_from_card (et->primary, et->card, extra_address);
-	email_menu_add_options_from_card (et->email2,  et->card, extra_address);
-	email_menu_add_options_from_card (et->email3,  et->card, extra_address);
-
-	email_table_from_card (et);
-
-	label_x_opts = GTK_FILL;
-	label_y_opts = GTK_FILL;
-	menu_x_opts = GTK_EXPAND | GTK_FILL;
-	menu_y_opts = GTK_EXPAND | GTK_FILL;
-	xpad = 3;
-	ypad = 3;
-
-	name_str = e_card_name_to_string (et->card->name);
-	gtk_table_attach (GTK_TABLE (et->table),
-			  gtk_label_new (name_str),
-			  0, 2, 0, 1, 
-			  label_x_opts, label_y_opts, xpad, ypad);
-	g_free (name_str);
-
-	gtk_table_attach (GTK_TABLE (et->table),
-			  gtk_label_new (_("Primary Email")),
-			  0, 1, 1, 2, 
-			  label_x_opts, label_y_opts, xpad, ypad);
-
-	gtk_table_attach (GTK_TABLE (et->table),
-			  et->primary->option_menu,
-			  1, 2, 1, 2, 
-			  menu_x_opts, menu_y_opts, xpad, ypad);
-
-	gtk_table_attach (GTK_TABLE (et->table),
-			  gtk_label_new (_("Email 2")),
-			  0, 1, 2, 3,
-			  label_x_opts, label_y_opts, xpad, ypad);
-
-	gtk_table_attach (GTK_TABLE (et->table),
-			  et->email2->option_menu,
-			  1, 2, 2, 3,
-			  menu_x_opts, menu_y_opts, xpad, ypad);
-
-	gtk_table_attach (GTK_TABLE (et->table),
-			  gtk_label_new (_("Email 3")),
-			  0, 1, 3, 4,
-			  label_x_opts, label_y_opts, xpad, ypad);
-
-	gtk_table_attach (GTK_TABLE (et->table),
-			  et->email3->option_menu,
-			  1, 2, 3, 4,
-			  menu_x_opts, menu_y_opts, xpad, ypad);
-
-	gtk_widget_show_all (et->primary->option_menu);
-	gtk_widget_show_all (et->email2->option_menu);
-	gtk_widget_show_all (et->email3->option_menu);
-
-	gtk_widget_show_all (et->table);
-	mini_wizard_container_add (wiz, et->table);
-	wiz->ok_cb      = email_table_ok_cb;
-	wiz->cleanup_cb = email_table_cleanup_cb;
-	wiz->closure    = et;
-}
-
-/*
- * This code is for the little UI thing that lets you pick from a set of cards
- * and decide which one you want to add the e-mail address to.
- */
-
-typedef struct _CardPicker CardPicker;
-struct _CardPicker {
-	GtkWidget *body;
-	GtkWidget *list;
-	GtkListStore *model;
-	GList *cards;
-	gchar *new_name;
-	gchar *new_email;
-
-	ECard *current_card;
-};
-
-enum {
-	COLUMN_ACTION,
-	COLUMN_CARD
-};
-
-static void
-card_picker_selection_changed (GtkTreeSelection *selection, gpointer closure)
-{
-	MiniWizard *wiz = (MiniWizard *) closure;
-	CardPicker *pick = (CardPicker *) wiz->closure;
-	gboolean selected;
-	GtkTreeIter iter;
-
-	selected = gtk_tree_selection_get_selected (selection, NULL, &iter);
-
-	gtk_widget_set_sensitive (wiz->ok_button, selected);
-
-	if (selected) {
-		gtk_tree_model_get (GTK_TREE_MODEL (pick->model), &iter,
-				    COLUMN_CARD, &pick->current_card,
-				    -1);
-	}
-	else {
-		pick->current_card = NULL;
-	}
-}
-
-static void
-card_picker_ok_cb (MiniWizard *wiz, gpointer closure)
-{
-	CardPicker *pick = (CardPicker *) closure;
-
-	if (pick->current_card == NULL) {
-		e_contact_quick_add (pick->new_name, pick->new_email, NULL, NULL);
-		mini_wizard_destroy (wiz);
-	} else {
-		email_table_init (wiz, pick->current_card, pick->new_email);
-	}
-}
-
-static void
-card_picker_cleanup_cb (gpointer closure)
-{
-	CardPicker *pick = (CardPicker *) closure;
-
-	g_list_foreach (pick->cards, (GFunc) g_object_unref, NULL);
-	g_list_free (pick->cards);
-
-	g_free (pick->new_name);
-	g_free (pick->new_email);
-}
-
-static void
-free_str (gpointer      data,
-	  GObject      *where_the_object_was)
-{
-	g_free (data);
-}
-
-static void
-card_picker_init (MiniWizard *wiz, const GList *cards, const gchar *new_name, const gchar *new_email)
-{
-	CardPicker *pick;
-	gchar *str;
-	GtkWidget *w;
-	GtkTreeIter iter;
-
-	pick = g_new (CardPicker, 1);
-
-	pick->body  = gtk_vbox_new (FALSE, 2);
-
-	pick->model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_POINTER);
-
-	pick->list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (pick->model));
-
-	gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (pick->list), TRUE);
-
-	gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (pick->list),
-						     COLUMN_ACTION,
-						     _("Select an Action"),
-						     gtk_cell_renderer_text_new (),
-						     "text", COLUMN_ACTION,
-						     NULL);
-
-	gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (pick->list)),
-				     GTK_SELECTION_SINGLE);
-
-	str = g_strdup_printf (_("Create a new contact \"%s\""), new_name);
-	gtk_list_store_append (pick->model, &iter);
-	gtk_list_store_set (pick->model, &iter,
-			    COLUMN_ACTION, str,
-			    COLUMN_CARD, NULL,
-			    -1);
-	g_object_weak_ref (G_OBJECT (pick->model), free_str, str);
-
-	pick->cards = NULL;
-	while (cards) {
-		ECard *card = (ECard *) cards->data;
-		gchar *name_str = e_card_name_to_string (card->name);
-
-		pick->cards = g_list_append (pick->cards, card);
-		g_object_ref (card);
-
-		str = g_strdup_printf (_("Add address to existing contact \"%s\""), name_str);
-		gtk_list_store_append (pick->model, &iter);
-		gtk_list_store_set (pick->model, &iter,
-				    COLUMN_ACTION, str,
-				    COLUMN_CARD, card,
-				    -1);
-		g_free (name_str);
-
-		g_object_weak_ref (G_OBJECT (pick->model), free_str, str);
-
-		cards = g_list_next (cards);
-	}
-
-	pick->new_name  = g_strdup (new_name);
-	pick->new_email = g_strdup (new_email);
-
-	pick->current_card = NULL;
-	gtk_widget_set_sensitive (wiz->ok_button, FALSE);
-
-	/* Connect some signals & callbacks */
-
-	wiz->ok_cb      = card_picker_ok_cb;
-	wiz->cleanup_cb = card_picker_cleanup_cb;
-
-	g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (pick->list)),
-			  "changed", G_CALLBACK (card_picker_selection_changed),
-			  wiz);
-
-	/* Build our widget */
-
-	w = gtk_label_new (new_email);
-	gtk_box_pack_start (GTK_BOX (pick->body), w, FALSE, TRUE, 3);
-
-	gtk_box_pack_start (GTK_BOX (pick->body), pick->list, TRUE, TRUE, 2);
-	gtk_widget_show_all (pick->body);
-
-
-	/* Put it in our mini-wizard */
-
-	wiz->closure = pick;
-	mini_wizard_container_add (wiz, pick->body);
-}
-
-/* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** */
-
-/*
- * The code for the actual EAddressPopup widget begins here.
- */
-
-/* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** */
-
-
-static GtkObjectClass *parent_class;
-
-static void e_address_popup_dispose (GObject *);
-static void e_address_popup_query   (EAddressPopup *);
-
-
-static void
-e_address_popup_class_init (EAddressPopupClass *klass)
-{
-	GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-	parent_class = g_type_class_peek_parent (klass);
-
-	object_class->dispose = e_address_popup_dispose;
-}
-
-static void
-e_address_popup_init (EAddressPopup *pop)
-{
-	pop->transitory = TRUE;
-}
-
-static void
-e_address_popup_cleanup (EAddressPopup *pop)
-{
-	if (pop->card) {
-		g_object_unref (pop->card);
-		pop->card = NULL;
-	}
-
-	if (pop->scheduled_refresh) {
-		gtk_timeout_remove (pop->scheduled_refresh);
-		pop->scheduled_refresh = 0;
-	}
-
-	if (pop->query_tag) {
-		e_book_simple_query_cancel (pop->book, pop->query_tag);
-		pop->query_tag = 0;
-	}
-
-	if (pop->book) {
-		g_object_unref (pop->book);
-		pop->book = NULL;
-	}
-
-	g_free (pop->name);
-	pop->name = NULL;
-
-	g_free (pop->email);
-	pop->email = NULL;
-}
-
-static void
-e_address_popup_dispose (GObject *obj)
-{
-	EAddressPopup *pop = E_ADDRESS_POPUP (obj);
-
-	e_address_popup_cleanup (pop);
-
-	if (G_OBJECT_CLASS (parent_class)->dispose)
-		G_OBJECT_CLASS (parent_class)->dispose (obj);
-}
-
-GType
-e_address_popup_get_type (void)
-{
-	static GType pop_type = 0;
-
-	if (!pop_type) {
-		static const GTypeInfo pop_info =  {
-			sizeof (EAddressPopupClass),
-			NULL,           /* base_init */
-			NULL,           /* base_finalize */
-			(GClassInitFunc) e_address_popup_class_init,
-			NULL,           /* class_finalize */
-			NULL,           /* class_data */
-			sizeof (EAddressPopup),
-			0,             /* n_preallocs */
-			(GInstanceInitFunc) e_address_popup_init,
-		};
-
-		pop_type = g_type_register_static (gtk_event_box_get_type (), "EAddressPopup", &pop_info, 0);
-	}
-
-	return pop_type;
-}
-
-static void
-e_address_popup_refresh_names (EAddressPopup *pop)
-{
-	if (pop->name_widget) {
-		if (pop->name && *pop->name) {
-			gtk_label_set_text (GTK_LABEL (pop->name_widget), pop->name);
-			gtk_widget_show (pop->name_widget);
-		} else {
-			gtk_widget_hide (pop->name_widget);
-		}
-	}
-
-	if (pop->email_widget) {
-		if (pop->email && *pop->email) {
-			gtk_label_set_text (GTK_LABEL (pop->email_widget), pop->email);
-			gtk_widget_show (pop->email_widget);
-		} else {
-			gtk_widget_hide (pop->email_widget);
-		}
-	}
-
-	e_address_popup_query (pop);
-}
-
-static gint
-refresh_timeout_cb (gpointer ptr)
-{
-	EAddressPopup *pop = E_ADDRESS_POPUP (ptr);
-	e_address_popup_refresh_names (pop);
-	pop->scheduled_refresh = 0;
-	return 0;
-}
-
-static void
-e_address_popup_schedule_refresh (EAddressPopup *pop)
-{
-	if (pop->scheduled_refresh == 0)
-		pop->scheduled_refresh = gtk_timeout_add (20, refresh_timeout_cb, pop);
-}
-
-/* If we are handed something of the form "Foo <bar@bar.com>",
-   do the right thing. */
-static gboolean
-e_address_popup_set_free_form (EAddressPopup *pop, const gchar *txt)
-{
-	gchar *lt, *gt = NULL;
-
-	g_return_val_if_fail (pop && E_IS_ADDRESS_POPUP (pop), FALSE);
-
-	if (txt == NULL)
-		return FALSE;
-
-	lt = strchr (txt, '<');
-	if (lt)
-		gt = strchr (txt, '>');
-
-	if (lt && gt && lt+1 < gt) {
-		gchar *name  = g_strndup (txt,  lt-txt);
-		gchar *email = g_strndup (lt+1, gt-lt-1);
-		e_address_popup_set_name (pop, name);
-		e_address_popup_set_email (pop, email);
-
-		return TRUE;
-	}
-	
-	return FALSE;
-}
-
-void
-e_address_popup_set_name (EAddressPopup *pop, const gchar *name)
-{
-	g_return_if_fail (pop && E_IS_ADDRESS_POPUP (pop));
-
-	/* We only allow the name to be set once. */
-	if (pop->name)
-		return;
-
-	if (!e_address_popup_set_free_form (pop, name)) {
-		pop->name = g_strdup (name);
-		if (pop->name)
-			g_strstrip (pop->name);
-	}
-
-	e_address_popup_schedule_refresh (pop);
-}
-
-void
-e_address_popup_set_email (EAddressPopup *pop, const gchar *email)
-{
-	g_return_if_fail (pop && E_IS_ADDRESS_POPUP (pop));
-
-	/* We only allow the e-mail to be set once. */
-	if (pop->email)
-		return;
-
-	if (!e_address_popup_set_free_form (pop, email)) {
-		pop->email = g_strdup (email);
-		if (pop->email)
-			g_strstrip (pop->email);
-	}
-
-	e_address_popup_schedule_refresh (pop);
-}
-
-void
-e_address_popup_construct (EAddressPopup *pop)
-{
-	GtkWidget *vbox, *name_holder;
-	GdkColor color = { 0x0, 0xffff, 0xffff, 0xffff };
-
-	g_return_if_fail (pop && E_IS_ADDRESS_POPUP (pop));
-
-	pop->main_vbox = gtk_vbox_new (FALSE, 0);
-
-	/* Build Generic View */
-
-	name_holder = gtk_event_box_new ();
-	vbox = gtk_vbox_new (FALSE, 2);
-	pop->name_widget = gtk_label_new ("");
-	pop->email_widget = gtk_label_new ("");
-
-	gtk_box_pack_start (GTK_BOX (vbox), pop->name_widget, TRUE, TRUE, 2);
-	gtk_box_pack_start (GTK_BOX (vbox), pop->email_widget, TRUE, TRUE, 2);
-	gtk_container_add (GTK_CONTAINER (name_holder), GTK_WIDGET (vbox));
-
-	if (gdk_colormap_alloc_color (gtk_widget_get_colormap (GTK_WIDGET (name_holder)), &color, FALSE, TRUE)) {
-		GtkStyle *style = gtk_style_copy (gtk_widget_get_style (GTK_WIDGET (name_holder)));
-		style->bg[0] = color;
-		gtk_widget_set_style (GTK_WIDGET (name_holder), style);
-		g_object_unref (style);
-	}
-
-	pop->generic_view = gtk_frame_new (NULL);
-	gtk_container_add (GTK_CONTAINER (pop->generic_view), name_holder);
-	gtk_box_pack_start (GTK_BOX (pop->main_vbox), pop->generic_view, TRUE, TRUE, 0);
-	gtk_widget_show_all (pop->generic_view);
-
-	pop->query_msg = gtk_label_new (_("Querying Addressbook..."));
-	gtk_box_pack_start (GTK_BOX (pop->main_vbox), pop->query_msg, TRUE, TRUE, 0);
-	gtk_widget_show (pop->query_msg);
-
-	/* Build Minicard View */
-	pop->minicard_view = e_minicard_widget_new ();
-	gtk_box_pack_start (GTK_BOX (pop->main_vbox), pop->minicard_view, TRUE, TRUE, 0);
-
-
-	/* Final assembly */
-
-	gtk_container_add (GTK_CONTAINER (pop), pop->main_vbox);
-	gtk_widget_show (pop->main_vbox);
-
-	gtk_container_set_border_width (GTK_CONTAINER (vbox), 3);
-	gtk_container_set_border_width (GTK_CONTAINER (pop), 2);
-}
-
-GtkWidget *
-e_address_popup_new (void)
-{
-	EAddressPopup *pop = g_object_new (E_TYPE_ADDRESS_POPUP, NULL);
-	e_address_popup_construct (pop);
-	return GTK_WIDGET (pop);
-}
-
-static void
-emit_event (EAddressPopup *pop, const char *event)
-{
-	if (pop->es) {
-		BonoboArg *arg;
-
-		arg = bonobo_arg_new (BONOBO_ARG_BOOLEAN);
-		BONOBO_ARG_SET_BOOLEAN (arg, TRUE);
-		bonobo_event_source_notify_listeners_full (pop->es,
-							   "GNOME/Evolution/Addressbook/AddressPopup",
-							   "Event",
-							   event,
-							   arg, NULL);
-		bonobo_arg_release (arg);
-	}	
-}
-
-static void
-contact_editor_cb (EBook *book, EBookStatus status, gpointer closure)
-{
-	if (status == E_BOOK_STATUS_SUCCESS) {
-		EAddressPopup *pop = E_ADDRESS_POPUP (closure);
-		EContactEditor *ce = e_addressbook_show_contact_editor (book, pop->card, FALSE, TRUE);
-		e_address_popup_cleanup (pop);
-		emit_event (pop, "Destroy");
-		e_contact_editor_raise (ce);
-	}
-
-	if (book)
-		g_object_unref (book);
-}
-
-static void
-edit_contact_info_cb (GtkWidget *button, EAddressPopup *pop)
-{
-	EBook *book;
-	emit_event (pop, "Hide");
-
-	book = e_book_new ();
-	addressbook_load_default_book (book, contact_editor_cb, pop);
-}
-
-static void
-e_address_popup_cardify (EAddressPopup *pop, ECard *card)
-{
-	GtkWidget *b;
-
-	g_return_if_fail (pop && E_IS_ADDRESS_POPUP (pop));
-	g_return_if_fail (card && E_IS_CARD (card));
-	g_return_if_fail (pop->card == NULL);
-
-	pop->card = card;
-	g_object_ref (pop->card);
-
-	e_minicard_widget_set_card (E_MINICARD_WIDGET (pop->minicard_view), card);
-	gtk_widget_show (pop->minicard_view);
-	gtk_widget_hide (pop->generic_view);
-
-	b = gtk_button_new_with_label (_("Edit Contact Info"));
-	gtk_box_pack_start (GTK_BOX (pop->main_vbox), b, TRUE, TRUE, 0);
-	g_signal_connect (b,
-			  "clicked",
-			  G_CALLBACK (edit_contact_info_cb),
-			  pop);
-	gtk_widget_show (b);
-}
-
-static void
-add_contacts_cb (GtkWidget *button, EAddressPopup *pop)
-{
-	if (pop->email && *pop->email) {
-		if (pop->name && *pop->name)
-			e_contact_quick_add (pop->name, pop->email, NULL, NULL);
-		else
-			e_contact_quick_add_free_form (pop->email, NULL, NULL);
-
-	}
-	e_address_popup_cleanup (pop);
-	emit_event (pop, "Destroy");
-}
-
-static void
-e_address_popup_no_matches (EAddressPopup *pop)
-{
-	GtkWidget *b;
-
-	g_return_if_fail (pop && E_IS_ADDRESS_POPUP (pop));
-
-	b = e_button_new_with_stock_icon (_("Add to Contacts"), "gtk-add");
-
-	gtk_box_pack_start (GTK_BOX (pop->main_vbox), b, TRUE, TRUE, 0);
-	g_signal_connect (b,
-			  "clicked",
-			  G_CALLBACK (add_contacts_cb),
-			  pop);
-	gtk_widget_show (b);
-}
-
-static void
-wizard_destroy_cb (MiniWizard *wiz, gpointer closure)
-{
-	gtk_widget_destroy (GTK_WIDGET (closure));
-}
-
-static void
-e_address_popup_ambiguous_email_add (EAddressPopup *pop, const GList *cards)
-{
-	MiniWizard *wiz = mini_wizard_new ();
-	GtkWidget *win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-	
-	wiz->destroy_cb      = wizard_destroy_cb;
-	wiz->destroy_closure = win;
-
-	gtk_window_set_title (GTK_WINDOW (win),  _("Merge E-Mail Address"));
-	gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_MOUSE);
-
-	card_picker_init (wiz, cards, pop->name, pop->email);
-
-	e_address_popup_cleanup (pop);
-	emit_event (pop, "Destroy");
-
-	gtk_container_add (GTK_CONTAINER (win), wiz->body);
-	gtk_widget_show_all (win);
-}
-
-static void
-e_address_popup_multiple_matches (EAddressPopup *pop, const GList *cards)
-{
-	pop->multiple_matches = TRUE;
-
-	e_address_popup_ambiguous_email_add (pop, cards);
-}
-
-/** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **/
-
-/*
- *  Addressbook Query Fun
- */
-
-static void
-name_only_query_cb (EBook *book, EBookSimpleQueryStatus status, const GList *cards, gpointer closure)
-{
-	EAddressPopup *pop;
-
-	if (status != E_BOOK_SIMPLE_QUERY_STATUS_SUCCESS)
-		return;
-
-	pop = E_ADDRESS_POPUP (closure);
-
-	pop->query_tag = 0;
-
-	if (cards == NULL) {
-		e_address_popup_no_matches (pop);
-	} else {
-		e_address_popup_ambiguous_email_add (pop, cards);
-	}
-}
-
-static void
-query_cb (EBook *book, EBookSimpleQueryStatus status, const GList *cards, gpointer closure)
-{
-	EAddressPopup *pop;
-
-	if (status != E_BOOK_SIMPLE_QUERY_STATUS_SUCCESS)
-		return;
-
-	pop = E_ADDRESS_POPUP (closure);
-
-	pop->query_tag = 0;
-	gtk_widget_hide (pop->query_msg);
-
-	if (cards == NULL) {
-		
-		/* Do a name-only query if:
-		   (1) The name is non-empty.
-		   (2) The e-mail is also non-empty (so that the query we just did wasn't actually a name-only query.
-		*/
-		if (pop->name && *pop->name && pop->email && *pop->email) {
-			pop->query_tag = e_book_name_and_email_query (book, pop->name, NULL, name_only_query_cb, pop);
-		} else {
-			e_address_popup_no_matches (pop);
-		}
-		
-	} else {
-		if (g_list_length ((GList *) cards) == 1)
-			e_address_popup_cardify (pop, E_CARD (cards->data));
-		else
-			e_address_popup_multiple_matches (pop, cards);
-	}
-}
-
-static void
-start_query (EBook *book, EBookStatus status, gpointer closure)
-{
-	EAddressPopup *pop = E_ADDRESS_POPUP (closure);
-
-	if (status != E_BOOK_STATUS_SUCCESS) {
-		e_address_popup_no_matches (pop);
-		if (book)
-			g_object_unref (book);
-		return;
-	}
-	
-	if (pop->query_tag)
-		e_book_simple_query_cancel (book, pop->query_tag);
-
-	if (pop->book != book) {
-		g_object_ref (book);
-		if (pop->book)
-			g_object_unref (pop->book);
-		pop->book = book;
-	}
-		
-	pop->query_tag = e_book_name_and_email_query (book, pop->name, pop->email, query_cb, pop);
-
-	g_object_unref (pop);
-}
-
-static void
-e_address_popup_query (EAddressPopup *pop)
-{
-	EBook *book;
-
-	g_return_if_fail (pop && E_IS_ADDRESS_POPUP (pop));
-
-	book = e_book_new ();
-	g_object_ref (pop);
-
-	addressbook_load_default_book (book, start_query, pop);
-}
-
-/** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **/
-
-enum {
-	PROPERTY_NAME,
-	PROPERTY_EMAIL,
-	PROPERTY_TRANSITORY
-};
-
-static void
-set_prop (BonoboPropertyBag *bag, const BonoboArg *arg, guint arg_id, CORBA_Environment *ev, gpointer user_data)
-{
-	EAddressPopup *pop = E_ADDRESS_POPUP (user_data);
-
-	switch (arg_id) {
-
-	case PROPERTY_NAME:
-		e_address_popup_set_name (pop, BONOBO_ARG_GET_STRING (arg));
-		break;
-
-	case PROPERTY_EMAIL:
-		e_address_popup_set_email (pop, BONOBO_ARG_GET_STRING (arg));
-		break;
-
-	default:
-		g_assert_not_reached ();
-	}
-}
-
-static void
-get_prop (BonoboPropertyBag *bag, BonoboArg *arg, guint arg_id, CORBA_Environment *ev, gpointer user_data)
-{
-	EAddressPopup *pop = E_ADDRESS_POPUP (user_data);
-
-	switch (arg_id) {
-
-	case PROPERTY_NAME:
-		BONOBO_ARG_SET_STRING (arg, pop->name);
-		break;
-
-	case PROPERTY_EMAIL:
-		BONOBO_ARG_SET_STRING (arg, pop->email);
-		break;
-
-	case PROPERTY_TRANSITORY:
-		BONOBO_ARG_SET_BOOLEAN (arg, pop->transitory);
-		break;
-
-	default:
-		g_assert_not_reached ();
-	}
-}
-
-BonoboControl *
-e_address_popup_new_control (void)
-{
-        BonoboControl *control;
-        BonoboPropertyBag *bag;
-	EAddressPopup *addy;
-	GtkWidget *w;
-
-	w = e_address_popup_new ();
-	addy = E_ADDRESS_POPUP (w);
-
-	control = bonobo_control_new (w);
-	gtk_widget_show (w);
-
-        bag = bonobo_property_bag_new (get_prop, set_prop, w);
-        bonobo_property_bag_add (bag, "name", PROPERTY_NAME,
-                                 BONOBO_ARG_STRING, NULL, NULL,
-                                 BONOBO_PROPERTY_WRITEABLE | BONOBO_PROPERTY_READABLE);
-
-        bonobo_property_bag_add (bag, "email", PROPERTY_EMAIL,
-                                 BONOBO_ARG_STRING, NULL, NULL,
-                                 BONOBO_PROPERTY_WRITEABLE | BONOBO_PROPERTY_READABLE);
-
-	bonobo_property_bag_add (bag, "transitory", PROPERTY_TRANSITORY,
-				 BONOBO_ARG_BOOLEAN, NULL, NULL,
-				 BONOBO_PROPERTY_READABLE);
-
-        bonobo_control_set_properties (control, bonobo_object_corba_objref (BONOBO_OBJECT (bag)), NULL);
-        bonobo_object_unref (BONOBO_OBJECT (bag));
-
-	addy->es = bonobo_event_source_new ();
-	bonobo_object_add_interface (BONOBO_OBJECT (control),
-				     BONOBO_OBJECT (addy->es));
-
-        return control;
-}
diff --git a/addressbook/gui/component/e-address-popup.h b/addressbook/gui/component/e-address-popup.h
deleted file mode 100644
index b2519b0ee6..0000000000
--- a/addressbook/gui/component/e-address-popup.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * e-address-popup.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Developed by Jon Trowbridge <trow@ximian.com>
- */
-
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- * 
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- */
-
-#ifndef __E_ADDRESS_POPUP_H__
-#define __E_ADDRESS_POPUP_H__
-
-#include <gtk/gtk.h>
-#include <addressbook/backend/ebook/e-book.h>
-#include <addressbook/backend/ebook/e-card.h>
-#include <bonobo/bonobo-event-source.h>
-
-G_BEGIN_DECLS
-
-#define E_TYPE_ADDRESS_POPUP        (e_address_popup_get_type ())
-#define E_ADDRESS_POPUP(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), E_TYPE_ADDRESS_POPUP, EAddressPopup))
-#define E_ADDRESS_POPUP_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST ((k), E_TYPE_ADDRESS_POPUP, EAddressPopupClass))
-#define E_IS_ADDRESS_POPUP(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_TYPE_ADDRESS_POPUP))
-#define E_IS_ADDRESS_POPUP_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), E_TYPE_ADDRESS_POPUP))
-
-typedef struct _EAddressPopup EAddressPopup;
-typedef struct _EAddressPopupClass EAddressPopupClass;
-
-struct _EAddressPopup {
-	GtkEventBox parent;
-
-	gchar *name;
-	gchar *email;
-
-	GtkWidget *name_widget;
-	GtkWidget *email_widget;
-	GtkWidget *query_msg;
-	
-	GtkWidget *main_vbox;
-	GtkWidget *generic_view;
-	GtkWidget *minicard_view;
-
-	gboolean transitory;
-
-	guint scheduled_refresh;
-	EBook *book;
-	guint query_tag;
-	gboolean multiple_matches;
-	ECard *card;
-
-	BonoboEventSource *es;
-};
-
-struct _EAddressPopupClass {
-	GtkEventBoxClass parent_class;
-};
-
-GType e_address_popup_get_type (void);
-
-void e_address_popup_set_name  (EAddressPopup *, const gchar *name);
-void e_address_popup_set_email (EAddressPopup *, const gchar *email);
-
-void e_address_popup_construct (EAddressPopup *);
-GtkWidget *e_address_popup_new (void);
-
-BonoboControl *e_address_popup_new_control (void);
-
-G_END_DECLS
-
-#endif /* __E_ADDRESS_POPUP_H__ */
-
diff --git a/addressbook/gui/component/e-address-widget.c b/addressbook/gui/component/e-address-widget.c
deleted file mode 100644
index e9698d5b1d..0000000000
--- a/addressbook/gui/component/e-address-widget.c
+++ /dev/null
@@ -1,559 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * e-address-widget.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Developed by Jon Trowbridge <trow@ximian.com>
- */
-
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- * 
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- */
-
-#include <config.h>
-#include <ctype.h>
-#include <string.h>
-#include <gtk/gtklabel.h>
-#include <libgnomeui/gnome-popup-menu.h>
-#include <bonobo/bonobo-control.h>
-#include <bonobo/bonobo-property-bag.h>
-#include <bonobo/bonobo-generic-factory.h>
-#include <addressbook/gui/contact-editor/e-contact-quick-add.h>
-#include "e-address-widget.h"
-
-static void e_address_widget_class_init (EAddressWidgetClass *klass);
-static void e_address_widget_init       (EAddressWidget *obj);
-static void e_address_widget_destroy    (GtkObject *obj);
-
-static gint e_address_widget_button_press_handler (GtkWidget *w, GdkEventButton *ev);
-static void e_address_widget_popup (EAddressWidget *, GdkEventButton *ev);
-static void e_address_widget_schedule_query (EAddressWidget *);
-
-static GtkObjectClass *parent_class;
-
-static EBook *common_book = NULL; /* sort of lame */
-
-static gboolean doing_queries = FALSE;
-
-static void
-e_address_widget_class_init (EAddressWidgetClass *klass)
-{
-	GtkObjectClass *object_class = (GtkObjectClass *) klass;
-	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
-
-	parent_class = g_type_class_peek_parent (klass);
-
-	object_class->destroy = e_address_widget_destroy;
-
-	widget_class->button_press_event = e_address_widget_button_press_handler;
-}
-
-static void
-e_address_widget_init (EAddressWidget *addr)
-{
-
-}
-
-static void
-e_address_widget_destroy (GtkObject *obj)
-{
-	EAddressWidget *addr = E_ADDRESS_WIDGET (obj);
-
-	g_free (addr->name);
-	g_free (addr->email);
-
-	if (addr->query_tag)
-		e_book_simple_query_cancel (common_book, addr->query_tag);
-
-	if (addr->query_idle_tag)
-		g_source_remove (addr->query_idle_tag);
-}
-
-static gint
-e_address_widget_button_press_handler (GtkWidget *w, GdkEventButton *ev)
-{
-	EAddressWidget *addr = E_ADDRESS_WIDGET (w);
-	if (ev->button == 3 && ev->state == 0) {
-		e_address_widget_popup (addr, ev);
-		return TRUE;
-	}
-
-	return FALSE;
-}
-
-GType
-e_address_widget_get_type (void)
-{
-	static GType aw_type = 0;
-
-	if (!aw_type) {
-		static const GTypeInfo aw_info =  {
-			sizeof (EAddressWidgetClass),
-			NULL,           /* base_init */
-			NULL,           /* base_finalize */
-			(GClassInitFunc) e_address_widget_class_init,
-			NULL,           /* class_finalize */
-			NULL,           /* class_data */
-			sizeof (EAddressWidget),
-			0,             /* n_preallocs */
-			(GInstanceInitFunc) e_address_widget_init,
-		};
-
-		aw_type = g_type_register_static (gtk_event_box_get_type (), "EAddressWidget", &aw_info, 0);
-	}
-
-	return aw_type;
-}
-
-static void
-gtk_widget_visible (GtkWidget *w, gboolean x)
-{
-	if (x)
-		gtk_widget_show (w);
-	else
-		gtk_widget_hide (w);
-}
-
-static void
-e_address_widget_refresh (EAddressWidget *addr)
-{
-	gchar *str;
-	gboolean have_name, have_email;
-
-	g_return_if_fail (addr && E_IS_ADDRESS_WIDGET (addr));
-
-	have_name = addr->name && *addr->name;
-	have_email = addr->email && *addr->email && (addr->card == NULL || !addr->known_email);
-
-	gtk_label_set_text (GTK_LABEL (addr->name_widget), have_name ? addr->name : "");
-	gtk_widget_visible (addr->name_widget, have_name);
-	if (addr->card) {
-		gint i, N = strlen (addr->name);
-		gchar *pattern = g_malloc (N+1);
-		for (i=0; i<N; ++i)
-			pattern[i] = '_';
-		pattern[i] = '\0';
-		gtk_label_set_pattern (GTK_LABEL (addr->name_widget), pattern);
-		g_free (pattern);
-	} else {
-		gtk_label_set_pattern (GTK_LABEL (addr->name_widget), "");
-	}
-
-	if (have_email) {
-		str = g_strdup_printf (have_name ? "<%s>" : "%s", addr->email);
-		gtk_label_set_text (GTK_LABEL (addr->email_widget), str);
-		g_free (str);
-	} else {
-		gtk_label_set_text (GTK_LABEL (addr->email_widget), "");
-	}
-	gtk_widget_visible (addr->email_widget, have_email);
-
-	gtk_widget_visible (addr->spacer, have_name && have_email);
-
-	/* Launch a query to find the appropriate card, if necessary. */
-	if (addr->card == NULL) 
-		e_address_widget_schedule_query (addr);
-}
-
-void
-e_address_widget_set_name (EAddressWidget *addr, const gchar *name)
-{
-	g_return_if_fail (addr && E_IS_ADDRESS_WIDGET (addr));
-
-	g_free (addr->name);
-	addr->name = g_strdup (name);
-
-	e_address_widget_refresh (addr);
-}
-
-void
-e_address_widget_set_email (EAddressWidget *addr, const gchar *email)
-{
-	g_return_if_fail (addr && E_IS_ADDRESS_WIDGET (addr));
-
-	g_free (addr->email);
-	addr->email = g_strdup (email);
-
-	e_address_widget_refresh (addr);
-}
-
-
-void
-e_address_widget_set_text (EAddressWidget *addr, const gchar *text)
-{
-	g_return_if_fail (addr && E_IS_ADDRESS_WIDGET (addr));
-	
-	e_address_widget_set_email (addr, text); /* CRAP */
-}
-
-void
-e_address_widget_construct (EAddressWidget *addr)
-{
-	GtkWidget *box;
-
-	g_return_if_fail (addr && E_IS_ADDRESS_WIDGET (addr));
-
-	box = gtk_hbox_new (FALSE, 2);
-	
-	addr->name_widget = gtk_label_new ("");
-	addr->spacer = gtk_label_new (" ");
-	addr->email_widget = gtk_label_new ("");
-	
-	gtk_box_pack_start (GTK_BOX (box), addr->name_widget, FALSE, FALSE, 0);
-	gtk_box_pack_start (GTK_BOX (box), addr->spacer, FALSE, FALSE, 0);
-	gtk_box_pack_start (GTK_BOX (box), addr->email_widget, FALSE, FALSE, 0);
-
-	gtk_container_add (GTK_CONTAINER (addr), box);
-
-	gtk_widget_show (box);
-	gtk_widget_show (addr->name_widget);
-	gtk_widget_show (addr->email_widget);
-}
-
-GtkWidget *
-e_address_widget_new (void)
-{
-	EAddressWidget *addr = g_object_new (E_TYPE_ADDRESS_WIDGET, NULL);
-	e_address_widget_construct (addr);
-	return GTK_WIDGET (addr);
-}
-
-/*
- *
- * Cardification
- *
- */
-
-static void
-e_address_widget_cardify (EAddressWidget *addr, ECard *card, gboolean known_email)
-{
-	if (addr->card != card || addr->known_email != known_email) {
-
-		if (addr->card != card) {
-			if (addr->card)
-				g_object_unref (addr->card);
-			addr->card = card;
-			g_object_ref (addr->card);
-		}
-
-		addr->known_email = known_email;
-
-		if (!(addr->name && *addr->name)) {
-			gchar *s = e_card_name_to_string (card->name);
-			e_address_widget_set_name (addr, s);
-			g_free (s);
-		}
-
-		e_address_widget_refresh (addr);
-	}
-}
-
-static void
-query_results_cb (EBook *book, EBookSimpleQueryStatus status, const GList *cards, gpointer user_data)
-{
-	EAddressWidget *addr = user_data;
-
-	if (g_list_length ((GList *) cards) == 1) {
-		ECard *card = E_CARD (cards->data);
-		e_address_widget_cardify (addr, card, TRUE);
-	}
-
-	addr->query_tag = 0;
-}
-
-static void
-e_address_widget_do_query (EAddressWidget *addr)
-{
-	e_book_name_and_email_query (common_book, addr->name, addr->email, query_results_cb, addr);
-}
-
-static void
-book_ready_cb (EBook *book, EBookStatus status, gpointer user_data)
-{
-	EAddressWidget *addr = E_ADDRESS_WIDGET (user_data);
-
-	if (common_book == NULL) {
-		common_book = book;
-		g_object_ref (common_book);
-	} else
-		g_object_unref (book);
-
-	e_address_widget_do_query (addr);
-}
-
-static gint
-query_idle_fn (gpointer ptr)
-{
-	EAddressWidget *addr = E_ADDRESS_WIDGET (ptr);
-
-	if (common_book) {
-		e_address_widget_do_query (addr);
-	} else {
-		e_book_load_default_book (e_book_new (), book_ready_cb, addr);
-	}
-
-	addr->query_idle_tag = 0;
-	return FALSE;
-}
-
-static void
-e_address_widget_schedule_query (EAddressWidget *addr)
-{
-	if (addr->query_idle_tag || !doing_queries)
-		return;
-	addr->query_idle_tag = g_idle_add (query_idle_fn, addr);
-}
-
-/*
- *
- * Popup Menu
- *
- */
-
-#define ARBITRARY_UIINFO_LIMIT 64
-
-static gint
-popup_add_name_and_address (EAddressWidget *addr, GnomeUIInfo *uiinfo, gint i)
-{
-	gboolean flag = FALSE;
-
-	if (addr->name && *addr->name) {
-		uiinfo[i].type = GNOME_APP_UI_ITEM;
-		uiinfo[i].label = addr->name;
-		++i;
-		flag = TRUE;
-	}
-
-	if (addr->email && *addr->email) {
-		uiinfo[i].type = GNOME_APP_UI_ITEM;
-		uiinfo[i].label = addr->email;
-		++i;
-		flag = TRUE;
-	}
-
-	if (flag) {
-		uiinfo[i].type = GNOME_APP_UI_SEPARATOR;
-		++i;
-	}
-	
-	return i;
-}
-
-static void
-flip_queries_flag_cb (GtkWidget *w, gpointer user_data)
-{
-	doing_queries = !doing_queries;
-}
-
-static gint
-popup_add_query_change (EAddressWidget *addr, GnomeUIInfo *uiinfo, gint i)
-{
-	uiinfo[i].type = GNOME_APP_UI_SEPARATOR;
-	++i;
-
-	uiinfo[i].type = GNOME_APP_UI_ITEM;
-	uiinfo[i].label = doing_queries ? _("Disable Queries") : _("Enable Queries (Dangerous!)");
-	uiinfo[i].moreinfo = flip_queries_flag_cb;
-	++i;
-
-	return i;
-}
-
-
-static GtkWidget *
-popup_menu_card (EAddressWidget *addr)
-{
-	GnomeUIInfo uiinfo[ARBITRARY_UIINFO_LIMIT];
-	GtkWidget *pop;
-	gint i=0;
-	ECard *card = E_CARD (addr->card);
-
-	g_return_val_if_fail (card != NULL, NULL);
-
-	memset (uiinfo, 0, sizeof (uiinfo));
-
-	i = popup_add_name_and_address (addr, uiinfo, i);
-
-	uiinfo[i].type = GNOME_APP_UI_ITEM;
-	uiinfo[i].label = _("Edit Contact Info");
-	++i;
-
-	i = popup_add_query_change (addr, uiinfo, i);
-
-	uiinfo[i].type = GNOME_APP_UI_ENDOFINFO;
-	pop = gnome_popup_menu_new (uiinfo);
-	return pop;
-}
-
-static void
-post_quick_add_cb (ECard *card, gpointer user_data)
-{
-	e_address_widget_cardify (E_ADDRESS_WIDGET (user_data), card, TRUE);
-}
-
-static void
-add_contacts_cb (GtkWidget *w, gpointer user_data)
-{
-	EAddressWidget *addr = E_ADDRESS_WIDGET (user_data);
-
-	e_contact_quick_add (addr->name, addr->email, post_quick_add_cb, addr);
-}
-
-static GtkWidget *
-popup_menu_nocard (EAddressWidget *addr)
-{
-	GnomeUIInfo uiinfo[ARBITRARY_UIINFO_LIMIT];
-	GtkWidget *pop;
-	gint i=0;
-
-	memset (uiinfo, 0, sizeof (uiinfo));
-
-	i = popup_add_name_and_address (addr, uiinfo, i);
-
-	uiinfo[i].type = GNOME_APP_UI_ITEM;
-	uiinfo[i].label = _("Add to Contacts");
-	uiinfo[i].moreinfo = add_contacts_cb;
-	++i;
-
-	i = popup_add_query_change (addr, uiinfo, i);
-
-	uiinfo[i].type = GNOME_APP_UI_ENDOFINFO;
-	pop = gnome_popup_menu_new (uiinfo);
-	return pop;
-}
-
-static void
-e_address_widget_popup (EAddressWidget *addr, GdkEventButton *ev)
-{
-	GtkWidget *pop;
-
-	g_return_if_fail (addr && E_IS_ADDRESS_WIDGET (addr));
-
-	pop = addr->card ? popup_menu_card (addr) : popup_menu_nocard (addr);
-
-	if (pop)
-		gnome_popup_menu_do_popup (pop, NULL, NULL, ev, addr, GTK_WIDGET (addr));
-}
-
-/*
- *
- * Bonobo Control Magic
- *
- */
-
-enum {
-	ADDRESS_PROPERTY_NAME,
-	ADDRESS_PROPERTY_EMAIL,
-	ADDRESS_PROPERTY_TEXT,
-	ADDRESS_PROPERTY_BACKGROUND_RGB
-};
-
-
-static void
-get_prop (BonoboPropertyBag *bag, BonoboArg *arg, guint arg_id, CORBA_Environment *ev, gpointer user_data)
-{
-	EAddressWidget *addr = E_ADDRESS_WIDGET (user_data);
-
-	switch (arg_id) {
-
-	case ADDRESS_PROPERTY_NAME:
-		BONOBO_ARG_SET_STRING (arg, addr->name ? addr->name :"");
-		break;
-
-	case ADDRESS_PROPERTY_EMAIL:
-		BONOBO_ARG_SET_STRING (arg, addr->email ? addr->email : "");
-		break;
-
-	case ADDRESS_PROPERTY_TEXT:
-		BONOBO_ARG_SET_STRING (arg, "?");
-		break;
-	}
-}
-
-static void
-set_prop (BonoboPropertyBag *bag, const BonoboArg *arg, guint arg_id, CORBA_Environment *ev, gpointer user_data)
-{
-	EAddressWidget *addr = E_ADDRESS_WIDGET (user_data);
-
-	switch (arg_id) {
-	case ADDRESS_PROPERTY_NAME:
-		e_address_widget_set_name (addr, BONOBO_ARG_GET_STRING (arg));
-		break;
-
-	case ADDRESS_PROPERTY_EMAIL:
-		e_address_widget_set_email (addr, BONOBO_ARG_GET_STRING (arg));
-		break;
-
-	case ADDRESS_PROPERTY_TEXT:
-		e_address_widget_set_text (addr, BONOBO_ARG_GET_STRING (arg));
-		break;
-
-		
-	case ADDRESS_PROPERTY_BACKGROUND_RGB:
-		{
-			gint bg = BONOBO_ARG_GET_INT (arg);
-			GdkColor color;
-
-			color.red   = (bg & 0xff0000) >> 8;
-			color.green = (bg & 0x00ff00);
-			color.blue  = (bg & 0x0000ff) << 8;
-
-			if (gdk_colormap_alloc_color (gtk_widget_get_colormap (GTK_WIDGET (addr)), &color, FALSE, TRUE)) {
-				GtkStyle *style = gtk_style_copy (gtk_widget_get_style (GTK_WIDGET (addr)));
-				style->bg[0] = color;
-				gtk_widget_set_style (GTK_WIDGET (addr), style);
-			}
-		}
-		
-		break;
-	}
-}
-
-BonoboControl *
-e_address_widget_factory_new_control (void)
-{
-	BonoboControl *control;
-	BonoboPropertyBag *bag;
-	GtkWidget *w;
-
-	w = e_address_widget_new ();
-	gtk_widget_show (w);
-
-	control = bonobo_control_new (w);
-
-	bag = bonobo_property_bag_new (get_prop, set_prop, w);
-	bonobo_property_bag_add (bag, "name", ADDRESS_PROPERTY_NAME,
-				 BONOBO_ARG_STRING, NULL, NULL,
-				 BONOBO_PROPERTY_READABLE | BONOBO_PROPERTY_WRITEABLE);
-
-	bonobo_property_bag_add (bag, "email", ADDRESS_PROPERTY_EMAIL,
-				 BONOBO_ARG_STRING, NULL, NULL,
-				 BONOBO_PROPERTY_READABLE | BONOBO_PROPERTY_WRITEABLE);
-
-	bonobo_property_bag_add (bag, "text", ADDRESS_PROPERTY_TEXT,
-				 BONOBO_ARG_STRING, NULL, NULL,
-				 BONOBO_PROPERTY_READABLE | BONOBO_PROPERTY_WRITEABLE);
-
-	bonobo_property_bag_add (bag, "background_rgb", ADDRESS_PROPERTY_BACKGROUND_RGB,
-				 BONOBO_ARG_INT, NULL, NULL,
-				 BONOBO_PROPERTY_WRITEABLE);
-
-	bonobo_control_set_properties (control, bonobo_object_corba_objref (BONOBO_OBJECT (bag)), NULL);
-	bonobo_object_unref (BONOBO_OBJECT (bag));
-
-	return control;
-}
diff --git a/addressbook/gui/component/e-address-widget.h b/addressbook/gui/component/e-address-widget.h
deleted file mode 100644
index 13e4a417d0..0000000000
--- a/addressbook/gui/component/e-address-widget.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * e-address-widget.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Developed by Jon Trowbridge <trow@ximian.com>
- */
-
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- * 
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- */
-
-#ifndef __E_ADDRESS_WIDGET_H__
-#define __E_ADDRESS_WIDGET_H__
-
-#include <gtk/gtkeventbox.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtkobject.h>
-#include <gtk/gtkwidget.h>
-#include <addressbook/backend/ebook/e-book-util.h>
-#include <addressbook/backend/ebook/e-card.h>
-
-G_BEGIN_DECLS
-
-#define E_TYPE_ADDRESS_WIDGET        (e_address_widget_get_type ())
-#define E_ADDRESS_WIDGET(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), E_TYPE_ADDRESS_WIDGET, EAddressWidget))
-#define E_ADDRESS_WIDGET_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST ((k), E_TYPE_ADDRESS_WIDGET, EAddressWidgetClass))
-#define E_IS_ADDRESS_WIDGET(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_TYPE_ADDRESS_WIDGET))
-#define E_IS_ADDRESS_WIDGET_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), E_TYPE_ADDRESS_WIDGET))
-
-typedef struct _EAddressWidget EAddressWidget;
-typedef struct _EAddressWidgetClass EAddressWidgetClass;
-
-struct _EAddressWidget {
-	GtkEventBox parent;
-	
-	gchar *name;
-	gchar *email;
-	
-	GtkWidget *name_widget;
-	GtkWidget *email_widget;
-	GtkWidget *spacer;
-
-	guint query_idle_tag;
-	guint query_tag;
-
-	ECard *card;
-	gboolean known_email;
-};
-
-struct _EAddressWidgetClass {
-	GtkEventBoxClass parent_class;
-};
-
-GType e_address_widget_get_type (void);
-
-void e_address_widget_set_name  (EAddressWidget *, const gchar *name);
-void e_address_widget_set_email (EAddressWidget *, const gchar *email);
-void e_address_widget_set_text  (EAddressWidget *, const gchar *text);
-
-void e_address_widget_construct (EAddressWidget *);
-GtkWidget *e_address_widget_new (void);
-
-BonoboControl *e_address_widget_new_control (void);
-
-G_END_DECLS
-
-#endif /* __E_ADDRESS_WIDGET_H__ */
diff --git a/addressbook/gui/component/e-cardlist-model.c b/addressbook/gui/component/e-cardlist-model.c
deleted file mode 100644
index 5635d25f86..0000000000
--- a/addressbook/gui/component/e-cardlist-model.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- *
- * Author:
- *   Christopher James Lahey <clahey@ximian.com>
- *
- * (C) 1999 Ximian, Inc.
- */
-
-#include <config.h>
-#include <libxml/tree.h>
-#include <libxml/parser.h>
-#include <libxml/xmlmemory.h>
-
-#include <string.h>
-
-#include "e-cardlist-model.h"
-
-#define PARENT_TYPE e_table_model_get_type()
-
-static void
-e_cardlist_model_dispose(GObject *object)
-{
-	ECardlistModel *model = E_CARDLIST_MODEL(object);
-	int i;
-
-	for ( i = 0; i < model->data_count; i++ ) {
-		g_object_unref(model->data[i]);
-	}
-	g_free(model->data);
-}
-
-/* This function returns the number of columns in our ETableModel. */
-static int
-e_cardlist_model_col_count (ETableModel *etc)
-{
-	return E_CARD_SIMPLE_FIELD_LAST;
-}
-
-/* This function returns the number of rows in our ETableModel. */
-static int
-e_cardlist_model_row_count (ETableModel *etc)
-{
-	ECardlistModel *e_cardlist_model = E_CARDLIST_MODEL(etc);
-	return e_cardlist_model->data_count;
-}
-
-/* This function returns the value at a particular point in our ETableModel. */
-static void *
-e_cardlist_model_value_at (ETableModel *etc, int col, int row)
-{
-	ECardlistModel *e_cardlist_model = E_CARDLIST_MODEL(etc);
-	const char *value;
-	if ( col >= E_CARD_SIMPLE_FIELD_LAST - 1|| row >= e_cardlist_model->data_count )
-		return NULL;
-	value = e_card_simple_get_const(e_cardlist_model->data[row], 
-					col + 1);
-	return (void *)(value ? value : "");
-}
-
-/* This function sets the value at a particular point in our ETableModel. */
-static void
-e_cardlist_model_set_value_at (ETableModel *etc, int col, int row, const void *val)
-{
-	ECardlistModel *e_cardlist_model = E_CARDLIST_MODEL(etc);
-	ECard *card;
-	if ( col >= E_CARD_SIMPLE_FIELD_LAST - 1|| row >= e_cardlist_model->data_count )
-		return;
-	e_table_model_pre_change(etc);
-	e_card_simple_set(e_cardlist_model->data[row],
-			  col + 1,
-			  val);
-	g_object_get(e_cardlist_model->data[row],
-		     "card", &card,
-		     NULL);
-
-	e_table_model_cell_changed(etc, col, row);
-}
-
-/* This function returns whether a particular cell is editable. */
-static gboolean
-e_cardlist_model_is_cell_editable (ETableModel *etc, int col, int row)
-{
-	return TRUE;
-}
-
-/* This function duplicates the value passed to it. */
-static void *
-e_cardlist_model_duplicate_value (ETableModel *etc, int col, const void *value)
-{
-	return g_strdup(value);
-}
-
-/* This function frees the value passed to it. */
-static void
-e_cardlist_model_free_value (ETableModel *etc, int col, void *value)
-{
-	g_free(value);
-}
-
-static void *
-e_cardlist_model_initialize_value (ETableModel *etc, int col)
-{
-	return g_strdup("");
-}
-
-static gboolean
-e_cardlist_model_value_is_empty (ETableModel *etc, int col, const void *value)
-{
-	return !(value && *(char *)value);
-}
-
-static char *
-e_cardlist_model_value_to_string (ETableModel *etc, int col, const void *value)
-{
-	return g_strdup(value);
-}
-
-void
-e_cardlist_model_add(ECardlistModel *model,
-		     ECard **cards,
-		     int count)
-{
-	int i;
-	model->data = g_realloc(model->data, model->data_count + count * sizeof(ECard *));
-	for (i = 0; i < count; i++) {
-		gboolean found = FALSE;
-		const gchar *id = e_card_get_id(cards[i]);
-		for ( i = 0; i < model->data_count; i++) {
-			if ( !strcmp(e_card_simple_get_id(model->data[i]), id) ) {
-				found = TRUE;
-				break;
-			}
-		}
-		if (!found) {
-			e_table_model_pre_change(E_TABLE_MODEL(model));
-			g_object_ref(cards[i]);
-			model->data[model->data_count++] = e_card_simple_new (cards[i]);
-			e_table_model_row_inserted(E_TABLE_MODEL(model), model->data_count - 1);
-		}
-	}
-}
-
-void
-e_cardlist_model_remove(ECardlistModel *model,
-			const char *id)
-{
-	int i;
-	for ( i = 0; i < model->data_count; i++) {
-		if ( !strcmp(e_card_simple_get_id(model->data[i]), id) ) {
-			e_table_model_pre_change(E_TABLE_MODEL(model));
-			g_object_unref(model->data[i]);
-			memmove(model->data + i, model->data + i + 1, (model->data_count - i - 1) * sizeof (ECard *));
-			e_table_model_row_deleted(E_TABLE_MODEL(model), i);
-		}
-	}
-}
-
-static void
-e_cardlist_model_class_init (GObjectClass *object_class)
-{
-	ETableModelClass *model_class = (ETableModelClass *) object_class;
-	
-	object_class->dispose = e_cardlist_model_dispose;
-
-	model_class->column_count = e_cardlist_model_col_count;
-	model_class->row_count = e_cardlist_model_row_count;
-	model_class->value_at = e_cardlist_model_value_at;
-	model_class->set_value_at = e_cardlist_model_set_value_at;
-	model_class->is_cell_editable = e_cardlist_model_is_cell_editable;
-	model_class->duplicate_value = e_cardlist_model_duplicate_value;
-	model_class->free_value = e_cardlist_model_free_value;
-	model_class->initialize_value = e_cardlist_model_initialize_value;
-	model_class->value_is_empty = e_cardlist_model_value_is_empty;
-	model_class->value_to_string = e_cardlist_model_value_to_string;
-}
-
-static void
-e_cardlist_model_init (GObject *object)
-{
-	ECardlistModel *model = E_CARDLIST_MODEL(object);
-	model->data = NULL;
-	model->data_count = 0;
-}
-
-ECard *
-e_cardlist_model_get(ECardlistModel *model,
-		     int                row)
-{
-	if (model->data && row < model->data_count) {
-		ECard *card;
-		g_object_get(model->data[row],
-			     "card", &card,
-			     NULL);
-		g_object_ref(card);
-		return card;
-	}
-	return NULL;
-}
-
-GType
-e_cardlist_model_get_type (void)
-{
-	static GType aw_type = 0;
-
-	if (!aw_type) {
-		static const GTypeInfo aw_info =  {
-			sizeof (ECardlistModelClass),
-			NULL,           /* base_init */
-			NULL,           /* base_finalize */
-			(GClassInitFunc) e_cardlist_model_class_init,
-			NULL,           /* class_finalize */
-			NULL,           /* class_data */
-			sizeof (ECardlistModel),
-			0,             /* n_preallocs */
-			(GInstanceInitFunc) e_cardlist_model_init,
-		};
-
-		aw_type = g_type_register_static (PARENT_TYPE, "ECardlistModel", &aw_info, 0);
-	}
-
-	return aw_type;
-}
-
-ETableModel *
-e_cardlist_model_new (void)
-{
-	ECardlistModel *et;
-
-	et = g_object_new (E_TYPE_CARDLIST_MODEL, NULL);
-	
-	return E_TABLE_MODEL(et);
-}
diff --git a/addressbook/gui/component/e-cardlist-model.h b/addressbook/gui/component/e-cardlist-model.h
deleted file mode 100644
index 0968e936fc..0000000000
--- a/addressbook/gui/component/e-cardlist-model.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_CARDLIST_MODEL_H_
-#define _E_CARDLIST_MODEL_H_
-
-#include <gal/e-table/e-table-model.h>
-#include <ebook/e-book.h>
-#include <ebook/e-book-view.h>
-#include <ebook/e-card-simple.h>
-
-#define E_TYPE_CARDLIST_MODEL        (e_cardlist_model_get_type ())
-#define E_CARDLIST_MODEL(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), E_TYPE_CARDLIST_MODEL, ECardlistModel))
-#define E_CARDLIST_MODEL_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST((k), E_TYPE_CARDLIST_MODEL, ECardlistModelClass))
-#define E_IS_CARDLIST_MODEL(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_TYPE_CARDLIST_MODEL))
-#define E_IS_CARDLIST_MODEL_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), E_TYPE_CARDLIST_MODEL))
-
-typedef struct {
-	ETableModel parent;
-
-	/* item specific fields */
-	ECardSimple **data;
-	int data_count;
-} ECardlistModel;
-
-
-typedef struct {
-	ETableModelClass parent_class;
-} ECardlistModelClass;
-
-
-GType e_cardlist_model_get_type (void);
-ETableModel *e_cardlist_model_new (void);
-
-/* Returns object with an extra ref count. */
-ECard *e_cardlist_model_get  (ECardlistModel  *model,
-			      int              row);
-void e_cardlist_model_add    (ECardlistModel  *model,
-			      ECard          **card,
-			      int              count);
-void e_cardlist_model_remove (ECardlistModel  *model,
-			      const char      *id);
-
-#endif /* _E_CARDLIST_MODEL_H_ */
diff --git a/addressbook/gui/component/ldap-config.glade b/addressbook/gui/component/ldap-config.glade
deleted file mode 100644
index 1f5448325d..0000000000
--- a/addressbook/gui/component/ldap-config.glade
+++ /dev/null
@@ -1,2662 +0,0 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
-<glade-interface>
-<requires lib="gnome"/>
-
-<widget class="GtkWindow" id="account-editor-window">
-  <property name="title" translatable="yes">Edit LDAP Server</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-
-  <child>
-    <widget class="GtkVBox" id="vbox37">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">0</property>
-
-      <child>
-	<widget class="GtkNotebook" id="account-editor-notebook">
-	  <property name="visible">True</property>
-	  <property name="can_focus">True</property>
-	  <property name="show_tabs">True</property>
-	  <property name="show_border">True</property>
-	  <property name="tab_pos">GTK_POS_TOP</property>
-	  <property name="scrollable">False</property>
-	  <property name="enable_popup">False</property>
-
-	  <child>
-	    <widget class="GtkVBox" id="account-editor-general-vbox">
-	      <property name="border_width">6</property>
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">3</property>
-
-	      <child>
-		<widget class="GtkHBox" id="hbox100">
-		  <property name="border_width">3</property>
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">4</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label431">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">_Display name:</property>
-		      <property name="use_underline">True</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_CENTER</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment45">
-		      <property name="visible">True</property>
-		      <property name="xalign">1</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">0.9</property>
-		      <property name="yscale">1</property>
-
-		      <child>
-			<widget class="GtkEntry" id="account-editor-display-name-entry">
-			  <property name="visible">True</property>
-			  <property name="can_focus">True</property>
-			  <property name="editable">True</property>
-			  <property name="visibility">True</property>
-			  <property name="max_length">0</property>
-			  <property name="text" translatable="yes"></property>
-			  <property name="has_frame">True</property>
-			  <property name="invisible_char" translatable="yes">*</property>
-			  <property name="activates_default">False</property>
-			</widget>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkHSeparator" id="hseparator12">
-		  <property name="visible">True</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label331">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">General</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkVBox" id="account-editor-connecting-vbox">
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">0</property>
-
-	      <child>
-		<placeholder/>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label334">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">Connecting</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkVBox" id="account-editor-searching-vbox">
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">0</property>
-
-	      <child>
-		<placeholder/>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label344">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">Searching</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkHSeparator" id="hseparator10">
-	  <property name="visible">True</property>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkHBox" id="hbox120">
-	  <property name="visible">True</property>
-	  <property name="homogeneous">False</property>
-	  <property name="spacing">0</property>
-
-	  <child>
-	    <widget class="GtkHButtonBox" id="hbuttonbox20">
-	      <property name="visible">True</property>
-	      <property name="layout_style">GTK_BUTTONBOX_END</property>
-	      <property name="spacing">0</property>
-
-	      <child>
-		<widget class="GtkButton" id="account-editor-cancel-button">
-		  <property name="visible">True</property>
-		  <property name="can_default">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label">gtk-cancel</property>
-		  <property name="use_stock">True</property>
-		  <property name="relief">GTK_RELIEF_NORMAL</property>
-		</widget>
-	      </child>
-
-	      <child>
-		<widget class="GtkButton" id="account-editor-ok-button">
-		  <property name="visible">True</property>
-		  <property name="sensitive">False</property>
-		  <property name="can_default">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label">gtk-ok</property>
-		  <property name="use_stock">True</property>
-		  <property name="relief">GTK_RELIEF_NORMAL</property>
-		</widget>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">True</property>
-	      <property name="fill">True</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkWindow" id="account-druid-window">
-  <property name="title" translatable="yes">Add LDAP Server</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-
-  <child>
-    <widget class="GnomeDruid" id="account-druid">
-      <property name="border_width">4</property>
-      <property name="visible">True</property>
-      <property name="show_help">False</property>
-
-      <child>
-	<widget class="GnomeDruidPageEdge" id="druidpagestart1">
-	  <property name="visible">True</property>
-	  <property name="position">GNOME_EDGE_START</property>
-	  <property name="title" translatable="yes">LDAP Configuration Assistant</property>
-	  <property name="text" translatable="yes">This assistant will help you to access online directory services
-using LDAP (Lightweight Directory Access Protocol) servers. 
-
-Adding a new LDAP server requires some specialized information
-about the server. Please contact your system administrator if you 
-need help finding this information.</property>
-	</widget>
-      </child>
-
-      <child>
-	<widget class="GnomeDruidPageStandard" id="add-server-druid-info-page">
-	  <property name="visible">True</property>
-	  <property name="title" translatable="yes">Step 1: Server Information</property>
-
-	  <child internal-child="vbox">
-	    <widget class="GtkVBox" id="druid-vbox1">
-	      <property name="border_width">3</property>
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">3</property>
-
-	      <child>
-		<widget class="GtkVBox" id="account-druid-general-vbox">
-		  <property name="border_width">3</property>
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">3</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label158">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">The first step in configuring an LDAP server is to provide its name, and your log in
-information. Please ask your system administrator if you are unsure of this information.</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">7.45058e-09</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">3</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkHSeparator" id="hseparator2">
-		      <property name="visible">True</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">True</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-	    </widget>
-	  </child>
-	</widget>
-      </child>
-
-      <child>
-	<widget class="GnomeDruidPageStandard" id="add-server-druid-connecting-page">
-	  <property name="visible">True</property>
-	  <property name="title" translatable="yes">Step 2: Connecting to Server</property>
-
-	  <child internal-child="vbox">
-	    <widget class="GtkVBox" id="druid-vbox2">
-	      <property name="border_width">3</property>
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">3</property>
-
-	      <child>
-		<widget class="GtkVBox" id="account-druid-connecting-vbox">
-		  <property name="border_width">3</property>
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">3</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label174">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Now, you must specify how you want to connect to the LDAP server. The SSL (Secure Sockets Layer)
-and TLS (Transport Layer Security) protocols are used by some servers to cryptographically protect
-your connection. Ask your system administrator if your LDAP server uses these protocols.</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">7.45058e-09</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">3</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkHSeparator" id="hseparator3">
-		      <property name="visible">True</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">True</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-	    </widget>
-	  </child>
-	</widget>
-      </child>
-
-      <child>
-	<widget class="GnomeDruidPageStandard" id="add-server-druid-searching-page">
-	  <property name="visible">True</property>
-	  <property name="title" translatable="yes">Step 3: Searching the Directory</property>
-
-	  <child internal-child="vbox">
-	    <widget class="GtkVBox" id="vbox23">
-	      <property name="border_width">3</property>
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">3</property>
-
-	      <child>
-		<widget class="GtkVBox" id="account-druid-searching-vbox">
-		  <property name="border_width">3</property>
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">3</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label254">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">The options on this page control how many entries should be included in your
-searches, and how long a search should take. Ask your system administrator if you
-need to change these options.</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkHSeparator" id="hseparator7">
-		      <property name="visible">True</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">True</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-	    </widget>
-	  </child>
-	</widget>
-      </child>
-
-      <child>
-	<widget class="GnomeDruidPageStandard" id="add-server-druid-display-name-page">
-	  <property name="visible">True</property>
-	  <property name="title" translatable="yes">Step 4: Display Name</property>
-
-	  <child internal-child="vbox">
-	    <widget class="GtkVBox" id="druid-vbox5">
-	      <property name="border_width">3</property>
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">3</property>
-
-	      <child>
-		<widget class="GtkVBox" id="vbox21">
-		  <property name="border_width">3</property>
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">3</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label198">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Specifying a display name is the last required step in configuring an LDAP server.</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">7.45058e-09</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">3</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkHSeparator" id="hseparator5">
-		      <property name="visible">True</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkTable" id="table15">
-		      <property name="border_width">3</property>
-		      <property name="visible">True</property>
-		      <property name="n_rows">1</property>
-		      <property name="n_columns">2</property>
-		      <property name="homogeneous">False</property>
-		      <property name="row_spacing">3</property>
-		      <property name="column_spacing">3</property>
-
-		      <child>
-			<widget class="GtkEntry" id="druid-display-name-entry">
-			  <property name="visible">True</property>
-			  <property name="can_focus">True</property>
-			  <property name="has_focus">True</property>
-			  <property name="editable">True</property>
-			  <property name="visibility">True</property>
-			  <property name="max_length">0</property>
-			  <property name="text" translatable="yes"></property>
-			  <property name="has_frame">True</property>
-			  <property name="invisible_char" translatable="yes">*</property>
-			  <property name="activates_default">False</property>
-			</widget>
-			<packing>
-			  <property name="left_attach">1</property>
-			  <property name="right_attach">2</property>
-			  <property name="top_attach">0</property>
-			  <property name="bottom_attach">1</property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label199">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">_Display name:</property>
-			  <property name="use_underline">True</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			  <property name="mnemonic_widget">druid-display-name-entry</property>
-			</widget>
-			<packing>
-			  <property name="left_attach">0</property>
-			  <property name="right_attach">1</property>
-			  <property name="top_attach">0</property>
-			  <property name="bottom_attach">1</property>
-			  <property name="x_options">fill</property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkNotebook" id="notebook15">
-		      <property name="visible">True</property>
-		      <property name="show_tabs">False</property>
-		      <property name="show_border">False</property>
-		      <property name="tab_pos">GTK_POS_TOP</property>
-		      <property name="scrollable">False</property>
-		      <property name="enable_popup">False</property>
-
-		      <child>
-			<widget class="GtkLabel" id="label207">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">This is the name for this server that will appear in your Evolution folder list.
-It is for display purposes only. </property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="tab_expand">False</property>
-			  <property name="tab_fill">True</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label208">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">label163</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="type">tab</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label215">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Selecting this option will let you change Evolution's default settings for LDAP
-searches, and for creating and editing contacts. </property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="tab_expand">False</property>
-			  <property name="tab_fill">True</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label210">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">label164</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="type">tab</property>
-			</packing>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		      <property name="pack_type">GTK_PACK_END</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">True</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-	    </widget>
-	  </child>
-	</widget>
-      </child>
-
-      <child>
-	<widget class="GnomeDruidPageEdge" id="add-server-druid-finish-page">
-	  <property name="visible">True</property>
-	  <property name="position">GNOME_EDGE_FINISH</property>
-	  <property name="title" translatable="yes">Finished</property>
-	  <property name="text" translatable="yes">Congratulations, you are finished setting up this LDAP server. You
-are now ready to access this directory.
-
-Please click the &quot;Finish&quot; button to save the settings you have entered here.</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkDialog" id="addressbook-sources-window">
-  <property name="title" translatable="yes">Addressbook Sources</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="default_width">355</property>
-  <property name="default_height">285</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="has_separator">True</property>
-
-  <child internal-child="vbox">
-    <widget class="GtkVBox" id="addressbook-sources-vbox">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">8</property>
-
-      <child internal-child="action_area">
-	<widget class="GtkHButtonBox" id="hbuttonbox27">
-	  <property name="visible">True</property>
-	  <property name="layout_style">GTK_BUTTONBOX_END</property>
-
-	  <child>
-	    <widget class="GtkButton" id="button104">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-ok</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="response_id">0</property>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkButton" id="button105">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-apply</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="response_id">0</property>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkButton" id="button106">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-close</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="response_id">0</property>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">True</property>
-	  <property name="pack_type">GTK_PACK_END</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkHBox" id="addressbook-sources">
-	  <property name="visible">True</property>
-	  <property name="homogeneous">False</property>
-	  <property name="spacing">0</property>
-
-	  <child>
-	    <widget class="Custom" id="sourcesTable">
-	      <property name="visible">True</property>
-	      <property name="creation_function">addressbook_dialog_create_sources_table</property>
-	      <property name="int1">0</property>
-	      <property name="int2">0</property>
-	      <property name="last_modification_time">Thu, 11 Apr 2002 00:31:02 GMT</property>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">True</property>
-	      <property name="fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkVBox" id="vbox73">
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">0</property>
-
-	      <child>
-		<widget class="GtkLabel" id="label529">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">
-</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_CENTER</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkVButtonBox" id="vbuttonbox18">
-		  <property name="visible">True</property>
-		  <property name="layout_style">GTK_BUTTONBOX_START</property>
-		  <property name="spacing">0</property>
-
-		  <child>
-		    <widget class="GtkButton" id="addSource">
-		      <property name="visible">True</property>
-		      <property name="can_default">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="label">gtk-add</property>
-		      <property name="use_stock">True</property>
-		      <property name="relief">GTK_RELIEF_NORMAL</property>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkButton" id="editSource">
-		      <property name="visible">True</property>
-		      <property name="can_default">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="relief">GTK_RELIEF_NORMAL</property>
-
-		      <child>
-			<widget class="GtkAlignment" id="alignment64">
-			  <property name="visible">True</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xscale">0</property>
-			  <property name="yscale">0</property>
-
-			  <child>
-			    <widget class="GtkHBox" id="hbox121">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">2</property>
-
-			      <child>
-				<widget class="Custom" id="custom1">
-				  <property name="visible">True</property>
-				  <property name="creation_function">e_create_image_widget</property>
-				  <property name="string1">stock-edit-24.png</property>
-				  <property name="int1">0</property>
-				  <property name="int2">0</property>
-				  <property name="last_modification_time">Fri, 25 Apr 2003 20:27:48 GMT</property>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-
-			      <child>
-				<widget class="GtkLabel" id="label554">
-				  <property name="visible">True</property>
-				  <property name="label" translatable="yes">_Edit</property>
-				  <property name="use_underline">True</property>
-				  <property name="use_markup">False</property>
-				  <property name="justify">GTK_JUSTIFY_LEFT</property>
-				  <property name="wrap">False</property>
-				  <property name="selectable">False</property>
-				  <property name="xalign">0.5</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xpad">0</property>
-				  <property name="ypad">0</property>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkButton" id="deleteSource">
-		      <property name="visible">True</property>
-		      <property name="can_default">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="label">gtk-remove</property>
-		      <property name="use_stock">True</property>
-		      <property name="relief">GTK_RELIEF_NORMAL</property>
-		    </widget>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">True</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">False</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkWindow" id="general-tab-window">
-  <property name="title" translatable="yes">general-tab</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-
-  <child>
-    <widget class="GtkVBox" id="general-tab">
-      <property name="border_width">6</property>
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">3</property>
-
-      <child>
-	<widget class="GtkTable" id="table36">
-	  <property name="border_width">3</property>
-	  <property name="visible">True</property>
-	  <property name="n_rows">3</property>
-	  <property name="n_columns">2</property>
-	  <property name="homogeneous">False</property>
-	  <property name="row_spacing">3</property>
-	  <property name="column_spacing">3</property>
-
-	  <child>
-	    <widget class="GtkLabel" id="label534">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_Server name:</property>
-	      <property name="use_underline">True</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	      <property name="mnemonic_widget">server-name-entry</property>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">0</property>
-	      <property name="right_attach">1</property>
-	      <property name="top_attach">0</property>
-	      <property name="bottom_attach">1</property>
-	      <property name="x_options">fill</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label535">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_Log in method:</property>
-	      <property name="use_underline">True</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">0</property>
-	      <property name="right_attach">1</property>
-	      <property name="top_attach">1</property>
-	      <property name="bottom_attach">2</property>
-	      <property name="x_options">fill</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkEntry" id="server-name-entry">
-	      <property name="visible">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="has_focus">True</property>
-	      <property name="editable">True</property>
-	      <property name="visibility">True</property>
-	      <property name="max_length">0</property>
-	      <property name="text" translatable="yes"></property>
-	      <property name="has_frame">True</property>
-	      <property name="invisible_char" translatable="yes">*</property>
-	      <property name="activates_default">False</property>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">1</property>
-	      <property name="right_attach">2</property>
-	      <property name="top_attach">0</property>
-	      <property name="bottom_attach">1</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkAlignment" id="alignment63">
-	      <property name="visible">True</property>
-	      <property name="xalign">7.45058e-09</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xscale">0</property>
-	      <property name="yscale">1</property>
-
-	      <child>
-		<widget class="GtkOptionMenu" id="auth-optionmenu">
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="history">0</property>
-
-		  <child internal-child="menu">
-		    <widget class="GtkMenu" id="convertwidget28">
-		      <property name="visible">True</property>
-
-		      <child>
-			<widget class="GtkMenuItem" id="convertwidget29">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Anonymously</property>
-			  <property name="use_underline">True</property>
-			</widget>
-		      </child>
-
-		      <child>
-			<widget class="GtkMenuItem" id="convertwidget30">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Using email address</property>
-			  <property name="use_underline">True</property>
-			</widget>
-		      </child>
-
-		      <child>
-			<widget class="GtkMenuItem" id="convertwidget31">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Using distinguished name (DN)</property>
-			  <property name="use_underline">True</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">1</property>
-	      <property name="right_attach">2</property>
-	      <property name="top_attach">1</property>
-	      <property name="bottom_attach">2</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkNotebook" id="auth-label-notebook">
-	      <property name="visible">True</property>
-	      <property name="sensitive">False</property>
-	      <property name="show_tabs">False</property>
-	      <property name="show_border">False</property>
-	      <property name="tab_pos">GTK_POS_TOP</property>
-	      <property name="scrollable">False</property>
-	      <property name="enable_popup">False</property>
-
-	      <child>
-		<widget class="GtkLabel" id="label553">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">Email Address:</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_CENTER</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		</widget>
-		<packing>
-		  <property name="tab_expand">False</property>
-		  <property name="tab_fill">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label546">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">label546</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_CENTER</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		</widget>
-		<packing>
-		  <property name="type">tab</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label536">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">Distinguished _name:</property>
-		  <property name="use_underline">True</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_CENTER</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		</widget>
-		<packing>
-		  <property name="tab_expand">False</property>
-		  <property name="tab_fill">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label547">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">label547</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_CENTER</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		</widget>
-		<packing>
-		  <property name="type">tab</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">0</property>
-	      <property name="right_attach">1</property>
-	      <property name="top_attach">2</property>
-	      <property name="bottom_attach">3</property>
-	      <property name="x_options">fill</property>
-	      <property name="y_options">fill</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkNotebook" id="auth-entry-notebook">
-	      <property name="visible">True</property>
-	      <property name="sensitive">False</property>
-	      <property name="show_tabs">False</property>
-	      <property name="show_border">False</property>
-	      <property name="tab_pos">GTK_POS_TOP</property>
-	      <property name="scrollable">False</property>
-	      <property name="enable_popup">False</property>
-
-	      <child>
-		<widget class="GtkEntry" id="email-entry">
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="editable">True</property>
-		  <property name="visibility">True</property>
-		  <property name="max_length">0</property>
-		  <property name="text" translatable="yes"></property>
-		  <property name="has_frame">True</property>
-		  <property name="invisible_char" translatable="yes">*</property>
-		  <property name="activates_default">False</property>
-		</widget>
-		<packing>
-		  <property name="tab_expand">False</property>
-		  <property name="tab_fill">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label549">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">label549</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_CENTER</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		</widget>
-		<packing>
-		  <property name="type">tab</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkEntry" id="dn-entry">
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="editable">True</property>
-		  <property name="visibility">True</property>
-		  <property name="max_length">0</property>
-		  <property name="text" translatable="yes"></property>
-		  <property name="has_frame">True</property>
-		  <property name="invisible_char" translatable="yes">*</property>
-		  <property name="activates_default">False</property>
-		</widget>
-		<packing>
-		  <property name="tab_expand">False</property>
-		  <property name="tab_fill">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label550">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">label550</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_CENTER</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		</widget>
-		<packing>
-		  <property name="type">tab</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">1</property>
-	      <property name="right_attach">2</property>
-	      <property name="top_attach">2</property>
-	      <property name="bottom_attach">3</property>
-	      <property name="x_options">fill</property>
-	      <property name="y_options">fill</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkNotebook" id="general-tab-help">
-	  <property name="visible">True</property>
-	  <property name="show_tabs">False</property>
-	  <property name="show_border">False</property>
-	  <property name="tab_pos">GTK_POS_TOP</property>
-	  <property name="scrollable">False</property>
-	  <property name="enable_popup">False</property>
-
-	  <child>
-	    <widget class="GtkLabel" id="label537">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">This is the full name of your ldap server. For example, &quot;ldap.mycompany.com&quot;.</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label538">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label163</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label539">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">Evolution will use this email address to authenticate you with the server</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label540">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label164</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label541">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">Evolution will use this DN to authenticate you with the server</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label542">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label165</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label552">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">This is the method evolution will use to authenticate you.  Note that setting this to &quot;Email Address&quot; requires anonymous access to your ldap server.</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">True</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label551">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label551</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label544">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">This is the name for this server that will appear in your Evolution folder list.
-It is for display purposes only. </property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label545">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label452</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	  <property name="pack_type">GTK_PACK_END</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkWindow" id="connecting-tab-window">
-  <property name="title" translatable="yes">connecting-tab</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-
-  <child>
-    <widget class="GtkVBox" id="connecting-tab">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">0</property>
-
-      <child>
-	<widget class="GtkTable" id="table14">
-	  <property name="border_width">3</property>
-	  <property name="visible">True</property>
-	  <property name="n_rows">2</property>
-	  <property name="n_columns">2</property>
-	  <property name="homogeneous">False</property>
-	  <property name="row_spacing">3</property>
-	  <property name="column_spacing">3</property>
-
-	  <child>
-	    <widget class="GtkLabel" id="label175">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_Port number:</property>
-	      <property name="use_underline">True</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">0</property>
-	      <property name="right_attach">1</property>
-	      <property name="top_attach">0</property>
-	      <property name="bottom_attach">1</property>
-	      <property name="x_options">fill</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkAlignment" id="alignment21">
-	      <property name="visible">True</property>
-	      <property name="xalign">7.45058e-09</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xscale">0</property>
-	      <property name="yscale">1</property>
-
-	      <child>
-		<widget class="GtkCombo" id="port-combo">
-		  <property name="visible">True</property>
-		  <property name="value_in_list">False</property>
-		  <property name="allow_empty">True</property>
-		  <property name="case_sensitive">False</property>
-		  <property name="enable_arrow_keys">True</property>
-		  <property name="enable_arrows_always">False</property>
-
-		  <child internal-child="entry">
-		    <widget class="GtkEntry" id="entry27">
-		      <property name="visible">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="has_focus">True</property>
-		      <property name="editable">True</property>
-		      <property name="visibility">True</property>
-		      <property name="max_length">0</property>
-		      <property name="text" translatable="yes"></property>
-		      <property name="has_frame">True</property>
-		      <property name="invisible_char" translatable="yes">*</property>
-		      <property name="activates_default">False</property>
-		    </widget>
-		  </child>
-
-		  <child internal-child="list">
-		    <widget class="GtkList" id="convertwidget32">
-		      <property name="visible">True</property>
-		      <property name="selection_mode">GTK_SELECTION_BROWSE</property>
-
-		      <child>
-			<widget class="GtkListItem" id="convertwidget33">
-			  <property name="visible">True</property>
-
-			  <child>
-			    <widget class="GtkLabel" id="convertwidget34">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">389</property>
-			      <property name="use_underline">False</property>
-			      <property name="use_markup">False</property>
-			      <property name="justify">GTK_JUSTIFY_LEFT</property>
-			      <property name="wrap">False</property>
-			      <property name="selectable">False</property>
-			      <property name="xalign">0</property>
-			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-
-		      <child>
-			<widget class="GtkListItem" id="convertwidget35">
-			  <property name="visible">True</property>
-
-			  <child>
-			    <widget class="GtkLabel" id="convertwidget36">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">636</property>
-			      <property name="use_underline">False</property>
-			      <property name="use_markup">False</property>
-			      <property name="justify">GTK_JUSTIFY_LEFT</property>
-			      <property name="wrap">False</property>
-			      <property name="selectable">False</property>
-			      <property name="xalign">0</property>
-			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-
-		      <child>
-			<widget class="GtkListItem" id="convertwidget37">
-			  <property name="visible">True</property>
-
-			  <child>
-			    <widget class="GtkLabel" id="convertwidget38">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">3268</property>
-			      <property name="use_underline">False</property>
-			      <property name="use_markup">False</property>
-			      <property name="justify">GTK_JUSTIFY_LEFT</property>
-			      <property name="wrap">False</property>
-			      <property name="selectable">False</property>
-			      <property name="xalign">0</property>
-			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-
-		      <child>
-			<widget class="GtkListItem" id="convertwidget39">
-			  <property name="visible">True</property>
-
-			  <child>
-			    <widget class="GtkLabel" id="convertwidget40">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes"></property>
-			      <property name="use_underline">False</property>
-			      <property name="use_markup">False</property>
-			      <property name="justify">GTK_JUSTIFY_LEFT</property>
-			      <property name="wrap">False</property>
-			      <property name="selectable">False</property>
-			      <property name="xalign">0</property>
-			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">1</property>
-	      <property name="right_attach">2</property>
-	      <property name="top_attach">0</property>
-	      <property name="bottom_attach">1</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label176">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">U_se SSL/TLS:</property>
-	      <property name="use_underline">True</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">0</property>
-	      <property name="right_attach">1</property>
-	      <property name="top_attach">1</property>
-	      <property name="bottom_attach">2</property>
-	      <property name="x_options">fill</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkAlignment" id="alignment60">
-	      <property name="visible">True</property>
-	      <property name="xalign">7.45058e-09</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xscale">0</property>
-	      <property name="yscale">1</property>
-
-	      <child>
-		<widget class="GtkOptionMenu" id="ssl-optionmenu">
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="history">0</property>
-
-		  <child internal-child="menu">
-		    <widget class="GtkMenu" id="convertwidget41">
-		      <property name="visible">True</property>
-
-		      <child>
-			<widget class="GtkMenuItem" id="convertwidget42">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Always</property>
-			  <property name="use_underline">True</property>
-			</widget>
-		      </child>
-
-		      <child>
-			<widget class="GtkMenuItem" id="convertwidget43">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Whenever Possible</property>
-			  <property name="use_underline">True</property>
-			</widget>
-		      </child>
-
-		      <child>
-			<widget class="GtkMenuItem" id="convertwidget44">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Never</property>
-			  <property name="use_underline">True</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">1</property>
-	      <property name="right_attach">2</property>
-	      <property name="top_attach">1</property>
-	      <property name="bottom_attach">2</property>
-	      <property name="x_options">fill</property>
-	      <property name="y_options">fill</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkNotebook" id="connecting-tab-help">
-	  <property name="visible">True</property>
-	  <property name="show_tabs">False</property>
-	  <property name="show_border">False</property>
-	  <property name="tab_pos">GTK_POS_TOP</property>
-	  <property name="scrollable">False</property>
-	  <property name="enable_popup">False</property>
-
-	  <child>
-	    <widget class="GtkLabel" id="label178">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">This is the port on the LDAP server that Evolution will try to connect to. A 
-list of standard ports has been provided. Ask your system administrator
-what port you should specify.</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label179">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label163</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label395">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">Selecting this option means that Evolution will only connect to your LDAP server if
-your LDAP server supports SSL or TLS.</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">7.45058e-09</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label398">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label398</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label399">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">Selecting this option means that Evolution will only try to use SSL/TLS if you are in a 
-insecure environment. For example, if you and your LDAP server are behind a firewall
-at work, then Evolution doesn't need to use SSL/TLS because your connection is already
-secure.</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">7.45058e-09</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label396">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label396</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label400">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">Selecting this option means that your server does not support either SSL or TLS.  This 
-means that your connection will be insecure, and that you will be vulnerable to security
-exploits. </property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">7.45058e-09</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label397">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label397</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkWindow" id="searching-tab-window">
-  <property name="title" translatable="yes">searching-tab</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-
-  <child>
-    <widget class="GtkVBox" id="searching-tab">
-      <property name="border_width">6</property>
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">3</property>
-
-      <child>
-	<widget class="GtkTable" id="table30">
-	  <property name="border_width">3</property>
-	  <property name="visible">True</property>
-	  <property name="n_rows">4</property>
-	  <property name="n_columns">2</property>
-	  <property name="homogeneous">False</property>
-	  <property name="row_spacing">3</property>
-	  <property name="column_spacing">3</property>
-
-	  <child>
-	    <widget class="GtkLabel" id="label455">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_Search base:</property>
-	      <property name="use_underline">True</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">0</property>
-	      <property name="right_attach">1</property>
-	      <property name="top_attach">0</property>
-	      <property name="bottom_attach">1</property>
-	      <property name="x_options">fill</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label456">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">S_earch scope: </property>
-	      <property name="use_underline">True</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">0</property>
-	      <property name="right_attach">1</property>
-	      <property name="top_attach">1</property>
-	      <property name="bottom_attach">2</property>
-	      <property name="x_options">fill</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkAlignment" id="alignment49">
-	      <property name="visible">True</property>
-	      <property name="xalign">7.45058e-09</property>
-	      <property name="yalign">7.45058e-09</property>
-	      <property name="xscale">0</property>
-	      <property name="yscale">1</property>
-
-	      <child>
-		<widget class="GtkOptionMenu" id="scope-optionmenu">
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="history">0</property>
-
-		  <child internal-child="menu">
-		    <widget class="GtkMenu" id="convertwidget45">
-		      <property name="visible">True</property>
-
-		      <child>
-			<widget class="GtkMenuItem" id="convertwidget46">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">One</property>
-			  <property name="use_underline">True</property>
-			</widget>
-		      </child>
-
-		      <child>
-			<widget class="GtkMenuItem" id="convertwidget47">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Sub</property>
-			  <property name="use_underline">True</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">1</property>
-	      <property name="right_attach">2</property>
-	      <property name="top_attach">1</property>
-	      <property name="bottom_attach">2</property>
-	      <property name="x_options">fill</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkHBox" id="hbox109">
-	      <property name="border_width">3</property>
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">3</property>
-
-	      <child>
-		<widget class="GtkEntry" id="rootdn-entry">
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="has_focus">True</property>
-		  <property name="editable">True</property>
-		  <property name="visibility">True</property>
-		  <property name="max_length">0</property>
-		  <property name="text" translatable="yes"></property>
-		  <property name="has_frame">True</property>
-		  <property name="invisible_char" translatable="yes">*</property>
-		  <property name="activates_default">False</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">True</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkButton" id="rootdn-button">
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label" translatable="yes">  S_how Supported Bases </property>
-		  <property name="use_underline">True</property>
-		  <property name="relief">GTK_RELIEF_NORMAL</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">1</property>
-	      <property name="right_attach">2</property>
-	      <property name="top_attach">0</property>
-	      <property name="bottom_attach">1</property>
-	      <property name="y_options">fill</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label457">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_Timeout (minutes):</property>
-	      <property name="use_underline">True</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0</property>
-	      <property name="yalign">1</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">0</property>
-	      <property name="right_attach">1</property>
-	      <property name="top_attach">2</property>
-	      <property name="bottom_attach">3</property>
-	      <property name="x_options">fill</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkAlignment" id="alignment50">
-	      <property name="visible">True</property>
-	      <property name="xalign">7.45058e-09</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xscale">1</property>
-	      <property name="yscale">1</property>
-
-	      <child>
-		<widget class="GtkHBox" id="hbox110">
-		  <property name="border_width">3</property>
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">3</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label458">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">1:00</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_CENTER</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkHScale" id="timeout-scale">
-		      <property name="visible">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="draw_value">False</property>
-		      <property name="value_pos">GTK_POS_LEFT</property>
-		      <property name="digits">0</property>
-		      <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
-		      <property name="inverted">False</property>
-		      <property name="adjustment">3 1 5 0.5 1 0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkLabel" id="label459">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">5:00</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_CENTER</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">3</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkLabel" id="label460">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Selected:</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_CENTER</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">1</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkLabel" id="label461">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">2:30</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_CENTER</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">1</property>
-	      <property name="right_attach">2</property>
-	      <property name="top_attach">2</property>
-	      <property name="bottom_attach">3</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label462">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_Download limit:</property>
-	      <property name="use_underline">True</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">0</property>
-	      <property name="right_attach">1</property>
-	      <property name="top_attach">3</property>
-	      <property name="bottom_attach">4</property>
-	      <property name="x_options">fill</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkAlignment" id="alignment51">
-	      <property name="visible">True</property>
-	      <property name="xalign">0</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xscale">0</property>
-	      <property name="yscale">1</property>
-
-	      <child>
-		<widget class="GtkHBox" id="hbox111">
-		  <property name="border_width">3</property>
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">3</property>
-
-		  <child>
-		    <widget class="GtkSpinButton" id="download-limit-spinbutton">
-		      <property name="visible">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="climb_rate">1</property>
-		      <property name="digits">0</property>
-		      <property name="numeric">False</property>
-		      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-		      <property name="snap_to_ticks">False</property>
-		      <property name="wrap">False</property>
-		      <property name="adjustment">100 0 10000 1 10 10</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkLabel" id="label463">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">cards</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_CENTER</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">1</property>
-	      <property name="right_attach">2</property>
-	      <property name="top_attach">3</property>
-	      <property name="bottom_attach">4</property>
-	      <property name="x_options">fill</property>
-	      <property name="y_options">fill</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkNotebook" id="searching-tab-help">
-	  <property name="visible">True</property>
-	  <property name="show_tabs">False</property>
-	  <property name="show_border">False</property>
-	  <property name="tab_pos">GTK_POS_TOP</property>
-	  <property name="scrollable">False</property>
-	  <property name="enable_popup">False</property>
-
-	  <child>
-	    <widget class="GtkLabel" id="label464">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">The search base is the distinguished name (DN)  of the entry where your searches will 
-begin. If you leave this blank, the search will begin at the root of the directory tree.</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">7.45058e-09</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label465">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label163</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label466">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">The search scope defines how deep you would like the search to extend down the 
-directory tree. A search scope of &quot;sub&quot; will include all entries below your search base.
-A search scope of &quot;one&quot; will only include the entries one level beneath your base.
-</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label467">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label164</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label468">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">This option controls how long a search will be run.</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label469">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label165</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label470">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">This is the maximum number of entries to download. Setting this number to be 
-too large will slow down your addressbook.</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">7.45058e-09</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label471">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label166</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	  <property name="pack_type">GTK_PACK_END</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkDialog" id="supported-bases-dialog">
-  <property name="title" translatable="yes">Supported Search Bases</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="default_width">300</property>
-  <property name="default_height">200</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="has_separator">True</property>
-
-  <child internal-child="vbox">
-    <widget class="GtkVBox" id="dialog-vbox5">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">8</property>
-
-      <child internal-child="action_area">
-	<widget class="GtkHButtonBox" id="dialog-action_area5">
-	  <property name="visible">True</property>
-	  <property name="layout_style">GTK_BUTTONBOX_END</property>
-
-	  <child>
-	    <widget class="GtkButton" id="button107">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-ok</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="response_id">-5</property>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkButton" id="button109">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-cancel</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="response_id">-6</property>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">True</property>
-	  <property name="pack_type">GTK_PACK_END</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="Custom" id="supported-bases-table">
-	  <property name="visible">True</property>
-	  <property name="creation_function">supported_bases_create_table</property>
-	  <property name="int1">0</property>
-	  <property name="int2">0</property>
-	  <property name="last_modification_time">Fri, 12 Apr 2002 20:06:45 GMT</property>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-</glade-interface>
diff --git a/addressbook/gui/component/select-names/.cvsignore b/addressbook/gui/component/select-names/.cvsignore
deleted file mode 100644
index d9b150c040..0000000000
--- a/addressbook/gui/component/select-names/.cvsignore
+++ /dev/null
@@ -1,15 +0,0 @@
-.deps
-.libs
-.pure
-Makefile
-Makefile.in
-*.lo
-*.la
-Evolution-Addressbook-SelectNames-stubs.c
-Evolution-Addressbook-SelectNames-skels.c
-Evolution-Addressbook-SelectNames-common.c
-Evolution-Addressbook-SelectNames.h
-GNOME_Evolution_Addressbook_SelectNames.server
-GNOME_Evolution_Addressbook_SelectNames.server.in
-e-select-names-marshal.c
-e-select-names-marshal.h
diff --git a/addressbook/gui/component/select-names/Evolution-Addressbook-SelectNames.idl b/addressbook/gui/component/select-names/Evolution-Addressbook-SelectNames.idl
deleted file mode 100644
index 2959597cc5..0000000000
--- a/addressbook/gui/component/select-names/Evolution-Addressbook-SelectNames.idl
+++ /dev/null
@@ -1,114 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * CORBA interface for the SelectNames dialog.
- *
- * Authors:
- *   Ettore Perazzoli <ettore@ximian.com>
- *
- * Copyright (C) 2000 Ximian, Inc.
- */
-
-#include <Bonobo.idl>
-
-module GNOME {
-module Evolution {
-module Addressbook {
-
-	interface SimpleCard : Bonobo::Unknown {
-		struct Arbitrary {
-			string key;
-			string type;
-			string value;
-		};
-
-		enum Field {
-			FileAs,
-			FullName,
-			Email,
-			PhonePrimary,
-			PhoneAssistant,
-			PhoneBusiness,
-			PhoneCallback,
-			PhoneCompany,
-			PhoneHome,
-			Org,
-			AddressBusiness,
-			AddressHome,
-			PhoneMobile,
-			PhoneCar,
-			PhoneBusinessFax,
-			PhoneHomeFax,
-			PhoneBusiness2,
-			PhoneHome2,
-			PhoneIsdn,
-			PhoneOther,
-			PhoneOtherFax,
-			PhonePager,
-			PhoneRadio,
-			PhoneTelex,
-			PhoneTtytdd,
-			AddressOther,
-			Email2,
-			Email3,
-			Url,
-			OrgUnit,
-			Office,
-			Title,
-			Role,
-			Manager,
-			Assistant,
-			Nickname,
-			Spouse,
-			Note,
-			Caluri,
-			Fburl,
-			Icscalendar,
-			Anniversary,
-			BirthDate,
-			Mailer,
-			NameOrOrg,
-			Categories,
-			FamilyName,
-			GivenName,
-			AdditionalName,
-			NameSuffix,
-			WantsHtml,
-			IsList,
-			Last
-		};
-
-		Arbitrary getArbitrary (in string key);
-		void setArbitrary (in string key, in string type, in string value);
-
-		string get (in Field field);
-		void set (in Field field, in string value);
-	};
-
-	typedef sequence<SimpleCard> SimpleCardList;
-
-	interface SelectNames : Bonobo::Unknown {
-		struct Section {
-			string id;
-			string title;
-		};
-
-		typedef sequence<Section> SectionList;
-
-		exception DuplicateID {};
-		exception SectionNotFound {};
-
-		void addSection (in string id, in string title)
-			raises (DuplicateID);
-		void addSectionWithLimit (in string id, in string title, in short limit)
-			raises (DuplicateID);
-
-		Bonobo::Control getEntryBySection (in string section_id)
-			raises (SectionNotFound);
-
-		void activateDialog (in string section_id);
-	};
-
-
-};
-};
-};
diff --git a/addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.server.in.in b/addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.server.in.in
deleted file mode 100644
index 6e4d156051..0000000000
--- a/addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.server.in.in
+++ /dev/null
@@ -1,31 +0,0 @@
-<oaf_info>
-
-<!--
-<oaf_server iid="OAFIID:GNOME_Evolution_Addressbook_SelectNamesFactory"
-            type="shlib"
-            location="@COMPONENTDIR@/libevolution-addressbook.so">
-
-	<oaf_attribute name="repo_ids" type="stringv">
-		<item value="IDL:GNOME/ObjectFactory:1.0"/>
-	</oaf_attribute>
-
-	<oaf_attribute name="name" type="string"
-                       _value="Evolution Addressbook name selection interface"/>
-
-</oaf_server>
--->
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Addressbook_SelectNames"
-            type="factory"
-            location="OAFIID:GNOME_Evolution_Addressbook_Factory">
-
-	<oaf_attribute name="repo_ids" type="stringv">
-		<item value="IDL:GNOME/Evolution/Addressbook/SelectNames"/>
-	</oaf_attribute>
-
-	<oaf_attribute name="name" type="string"
-                       _value="Evolution Addressbook name selection interface"/>
-
-</oaf_server>
-
-</oaf_info>
\ No newline at end of file
diff --git a/addressbook/gui/component/select-names/Makefile.am b/addressbook/gui/component/select-names/Makefile.am
deleted file mode 100644
index 8c65110fb1..0000000000
--- a/addressbook/gui/component/select-names/Makefile.am
+++ /dev/null
@@ -1,115 +0,0 @@
-# CORBA stuff
-
-idl_DATA = \
-	Evolution-Addressbook-SelectNames.idl
-
-IDL_GENERATED_H = 					\
-	Evolution-Addressbook-SelectNames.h
-IDL_GENERATED_C = 					\
-	Evolution-Addressbook-SelectNames-common.c	\
-	Evolution-Addressbook-SelectNames-skels.c	\
-	Evolution-Addressbook-SelectNames-stubs.c
-IDL_GENERATED = $(IDL_GENERATED_C) $(IDL_GENERATED_H)
-
-$(IDL_GENERATED_H): $(idl_DATA)
-	$(ORBIT_IDL) -I $(srcdir) $(IDL_INCLUDES) \
-		$(srcdir)/Evolution-Addressbook-SelectNames.idl
-$(IDL_GENERATED_C): $(IDL_GENERATED_H)
-
-server_in_files = GNOME_Evolution_Addressbook_SelectNames.server.in.in
-
-server_DATA = $(server_in_files:.server.in.in=.server)
-$(server_in_files:.server.in.in=.server.in): $(server_in_files)
-	sed -e "s|\@COMPONENTDIR\@|$(componentdir)|" $< > $@
-
-@INTLTOOL_SERVER_RULE@
-
-INCLUDES =						\
-	-DG_LOG_DOMAIN=\"evolution-addressbook\"	\
-	-I$(top_srcdir)					\
-	-I$(top_builddir)				\
-	-I$(top_srcdir)/shell				\
-	-I$(top_builddir)/shell				\
-	-I$(top_srcdir)/widgets/e-text			\
-	-I$(top_srcdir)/widgets/e-table			\
-	-I$(top_srcdir)/addressbook/gui/minicard	\
-	-I$(top_srcdir)/addressbook/gui/widgets		\
-	-I$(top_srcdir)/addressbook/contact-editor	\
-	-I$(top_srcdir)/addressbook/backend		\
-	-I$(top_builddir)/addressbook/backend		\
-	-DEVOLUTION_IMAGESDIR=\""$(imagesdir)"\"	\
-	-DEVOLUTION_DATADIR=\""$(datadir)"\"		\
-	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\"		\
-	-DEVOLUTION_ETSPECDIR=\""$(etspecdir)"\"	\
-	-DEVOLUTION_UIDIR=\""$(evolutionuidir)"\"	\
-	-DPREFIX=\""$(prefix)"\"	\
-	-DG_DISABLE_DEPRECATED				\
-	-DGTK_DISABLE_DEPRECATED			\
-	-DLIBGNOME_DISABLE_DEPRECATED			\
-	-DLIBGNOMEUI_DISABLE_DEPRECATED			\
-	$(EVOLUTION_ADDRESSBOOK_CFLAGS)
-
-privlib_LTLIBRARIES = libeselectnames.la
-
-libeselectnames_la_SOURCES = 			\
-	$(IDL_GENERATED)			\
-	e-select-names-bonobo.c			\
-	e-select-names-bonobo.h			\
-	e-select-names-completion.c		\
-	e-select-names-completion.h		\
-	e-select-names-manager.c		\
-	e-select-names-manager.h		\
-	e-select-names-marshal.c		\
-	e-select-names-model.c			\
-	e-select-names-model.h			\
-	e-select-names-popup.c			\
-	e-select-names-popup.h			\
-	e-select-names-table-model.c		\
-	e-select-names-table-model.h		\
-	e-select-names-text-model.c		\
-	e-select-names-text-model.h		\
-	e-select-names.c			\
-	e-select-names.h			\
-	e-simple-card-bonobo.c			\
-	e-simple-card-bonobo.h
-
-libeselectnames_la_LIBADD =					\
-	$(top_builddir)/addressbook/backend/ebook/libebook.la	\
-	$(EVOLUTION_ADDRESSBOOK_LIBS)
-
-# We'll need these again when we split out the select names control
-# into its own shlib factory, but for now they're redundant.
-#
-#	e-select-names-factory.c
-#	e-select-names-factory.h
-
-# GLib marshalling cruft
-
-e-select-names-marshal.h: e-select-names-marshal.list
-	( @GLIB_GENMARSHAL@ --prefix=e_select_names_marshal e-select-names-marshal.list --header > e-select-names-marshal.tmp \
-	&& mv e-select-names-marshal.tmp e-select-names-marshal.h ) \
-	|| ( rm -f e-select-names-marshal.tmp && exit 1 )
-
-e-select-names-marshal.c: e-select-names-marshal.h
-	( @GLIB_GENMARSHAL@ --prefix=e_select_names_marshal e-select-names-marshal.list --body > e-select-names-marshal.tmp \
-	&& mv e-select-names-marshal.tmp e-select-names-marshal.c ) \
-	|| ( rm -f e-select-names-marshal.tmp && exit 1 )
-
-MARSHAL_GENERATED = e-select-names-marshal.c e-select-names-marshal.h
-
-glade_DATA = select-names.glade
-etspec_DATA = e-select-names.etspec e-select-names-section.etspec
-
-EXTRA_DIST = 			\
-	$(glade_DATA)		\
-	$(server_in_files)	\
-	$(server_DATA)		\
-	$(idl_DATA)		\
-	$(etspec_DATA)		\
-	e-select-names-marshal.list
-
-BUILT_SOURCES = $(IDL_GENERATED) $(MARSHAL_GENERATED)
-CLEANFILES = $(BUILT_SOURCES)
-
-dist-hook:
-	cd $(distdir); rm -f $(BUILT_SOURCES)
diff --git a/addressbook/gui/component/select-names/e-select-names-bonobo.c b/addressbook/gui/component/select-names/e-select-names-bonobo.c
deleted file mode 100644
index 10fc9caee7..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-bonobo.c
+++ /dev/null
@@ -1,651 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-select-names-bonobo.c
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "e-select-names-bonobo.h"
-#include "e-simple-card-bonobo.h"
-
-#include <bonobo-activation/bonobo-activation-activate.h>
-
-#include <bonobo/bonobo-property-bag.h>
-#include <bonobo/bonobo-control.h>
-#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-event-source.h>
-#include <bonobo/bonobo-ui-util.h>
-
-#include <gal/util/e-util.h>
-#include <gal/e-text/e-entry.h>
-#include <gal/util/e-text-event-processor.h>
-
-#include "evolution-shell-client.h"
-
-#include "Evolution-Addressbook-SelectNames.h"
-
-#include "e-select-names-manager.h"
-#include "e-select-names-model.h"
-#include "e-select-names-text-model.h"
-#include "e-select-names-completion.h"
-
-#include <string.h>
-
-
-#define PARENT_TYPE BONOBO_TYPE_OBJECT
-static BonoboObjectClass *parent_class = NULL;
-
-struct _ESelectNamesBonoboPrivate {
-	ESelectNamesManager *manager;
-	BonoboEventSource *event_source;
-};
-
-enum _EntryPropertyID {
-	ENTRY_PROPERTY_ID_TEXT,
-	ENTRY_PROPERTY_ID_ADDRESSES,
-	ENTRY_PROPERTY_ID_DESTINATIONS,
-	ENTRY_PROPERTY_ID_SIMPLE_CARD_LIST,
-	ENTRY_PROPERTY_ID_ALLOW_CONTACT_LISTS,
-	ENTRY_PROPERTY_ID_ENTRY_CHANGED
-};
-typedef enum _EntryPropertyID EntryPropertyID;
-
-
-/* PropertyBag implementation for the entry widgets.  */
-
-static void
-entry_get_property_fn (BonoboPropertyBag *bag,
-		       BonoboArg *arg,
-		       unsigned int arg_id,
-		       CORBA_Environment *ev,
-		       void *user_data)
-{
-	GtkWidget *w;
-
-	w = GTK_WIDGET (user_data);
-
-	switch (arg_id) {
-	case ENTRY_PROPERTY_ID_TEXT:
-		{
-			ETextModel *text_model;
-			text_model = E_TEXT_MODEL (g_object_get_data (G_OBJECT (w), "select_names_text_model"));
-			g_assert (text_model != NULL);
-			
-			BONOBO_ARG_SET_STRING (arg, e_text_model_get_text (text_model));
-		break;
-		}
-
-	case ENTRY_PROPERTY_ID_ADDRESSES:
-		{
-			ESelectNamesModel *model;
-			char *text;
-
-			model = E_SELECT_NAMES_MODEL (g_object_get_data (G_OBJECT (w), "select_names_model"));
-			g_assert (model != NULL);
-
-			text = e_select_names_model_get_address_text (model, ", ");
-			BONOBO_ARG_SET_STRING (arg, text);
-			g_free (text);
-		}
-		break;
-
-	case ENTRY_PROPERTY_ID_DESTINATIONS:
-		{
-			ESelectNamesModel *model;
-			char *text;
-
-			model = E_SELECT_NAMES_MODEL (g_object_get_data (G_OBJECT (w), "select_names_model"));
-			g_assert (model != NULL);
-
-			text = e_select_names_model_export_destinationv (model);
-			BONOBO_ARG_SET_STRING (arg, text);
-			g_free (text);
-		}
-		break;
-
-	case ENTRY_PROPERTY_ID_SIMPLE_CARD_LIST:
-		{
-			ESelectNamesModel *model;
-			int count;
-			int i;
-			GNOME_Evolution_Addressbook_SimpleCardList *card_list;
-
-			model = E_SELECT_NAMES_MODEL (g_object_get_data (G_OBJECT (w), "select_names_model"));
-			g_assert (model != NULL);
-
-			count = e_select_names_model_count (model);
-
-			card_list = GNOME_Evolution_Addressbook_SimpleCardList__alloc ();
-			card_list->_buffer = CORBA_sequence_GNOME_Evolution_Addressbook_SimpleCard_allocbuf (count);
-			card_list->_maximum = count;
-			card_list->_length = count;
-
-			for (i = 0; i < count; i++) {
-				const EDestination *destination = e_select_names_model_get_destination (model, i);
-				const ECard *card = e_destination_get_card (destination);
-				ECardSimple *simple = e_card_simple_new ((ECard *) card);
-				ESimpleCardBonobo *simple_card = e_simple_card_bonobo_new (simple);
-				g_object_unref (simple);
-
-				card_list->_buffer[i] = bonobo_object_corba_objref (BONOBO_OBJECT (simple_card));
-			}
-
-			CORBA_free (*(GNOME_Evolution_Addressbook_SimpleCardList **)arg->_value);
-			BONOBO_ARG_SET_GENERAL (arg, *card_list, TC_GNOME_Evolution_Addressbook_SimpleCardList, GNOME_Evolution_Addressbook_SimpleCardList, NULL);
-		}
-		break;
-
-	case ENTRY_PROPERTY_ID_ALLOW_CONTACT_LISTS:
-		{
-			ESelectNamesCompletion *comp;
-			comp = E_SELECT_NAMES_COMPLETION (g_object_get_data (G_OBJECT (w), "completion_handler"));
-			g_assert (comp != NULL);
-
-			BONOBO_ARG_SET_BOOLEAN (arg, e_select_names_completion_get_match_contact_lists (comp));
-			break;
-		}
-
-	case ENTRY_PROPERTY_ID_ENTRY_CHANGED:
-		/* This is a read-only property. */
-		g_assert_not_reached ();
-		break;
-
-	default:
-		break;
-	}
-}
-
-static void
-entry_set_property_fn (BonoboPropertyBag *bag,
-		       const BonoboArg *arg,
-		       guint arg_id,
-		       CORBA_Environment *ev,
-		       gpointer user_data)
-{
-	GtkWidget *w;
-
-	w = GTK_WIDGET (user_data);
-
-	switch (arg_id) {
-
-	case ENTRY_PROPERTY_ID_TEXT:
-	case ENTRY_PROPERTY_ID_ADDRESSES:
-		{
-			ESelectNamesModel *model;
-			model = E_SELECT_NAMES_MODEL (g_object_get_data (G_OBJECT (w), "select_names_model"));
-			g_assert (model != NULL);
-			
-			e_entry_set_text (E_ENTRY (w), BONOBO_ARG_GET_STRING (arg));
-			e_select_names_model_cardify_all (model, NULL, 0);
-			break;
-		}
-
-	case ENTRY_PROPERTY_ID_DESTINATIONS:
-		{
-			ESelectNamesModel *model;
-			model = E_SELECT_NAMES_MODEL (g_object_get_data (G_OBJECT (w), "select_names_model"));
-			g_assert (model != NULL);
-
-			e_select_names_model_import_destinationv (model, BONOBO_ARG_GET_STRING (arg));
-			e_select_names_model_cardify_all (model, NULL, 0);
-			break;
-		}
-
-	case ENTRY_PROPERTY_ID_ALLOW_CONTACT_LISTS:
-		{
-			ESelectNamesCompletion *comp;
-			comp = E_SELECT_NAMES_COMPLETION (g_object_get_data (G_OBJECT (w), "completion_handler"));
-			g_assert (comp != NULL);
-
-			e_select_names_completion_set_match_contact_lists (comp, BONOBO_ARG_GET_BOOLEAN (arg));
-			break;
-		}
-		
-	case ENTRY_PROPERTY_ID_ENTRY_CHANGED:
-		g_object_set_data (G_OBJECT (w), "entry_property_id_changed", GUINT_TO_POINTER (1));
-		break;
-
-	default:
-		break;
-	}
-}
-
-static void
-impl_SelectNames_add_section (PortableServer_Servant servant,
-			      const CORBA_char *id,
-			      const CORBA_char *title,
-			      CORBA_Environment *ev)
-{
-	ESelectNamesBonobo *select_names;
-	ESelectNamesBonoboPrivate *priv;
-
-	select_names = E_SELECT_NAMES_BONOBO (bonobo_object (servant));
-	priv = select_names->priv;
-
-	e_select_names_manager_add_section (priv->manager, id, title);
-}
-
-static void
-impl_SelectNames_add_section_with_limit (PortableServer_Servant servant,
-					 const CORBA_char *id,
-					 const CORBA_char *title,
-					 CORBA_short limit,
-					 CORBA_Environment *ev)
-{
-	ESelectNamesBonobo *select_names;
-	ESelectNamesBonoboPrivate *priv;
-
-	select_names = E_SELECT_NAMES_BONOBO (bonobo_object (servant));
-	priv = select_names->priv;
-
-	e_select_names_manager_add_section_with_limit (priv->manager, id, title, limit);
-}
-
-static void
-entry_changed (GtkWidget *widget, BonoboControl *control)
-{
-	gboolean changed = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (widget), "entry_property_id_changed"));
-
-	if (!changed)
-		bonobo_control_set_property (control, NULL, "entry_changed", TC_CORBA_boolean, TRUE, NULL);
-}
-
-static void
-manager_changed_cb (ESelectNamesManager *manager, const gchar *section_id, gint changed_working_copy, gpointer closure)
-{
-	ESelectNamesBonobo *select_names = E_SELECT_NAMES_BONOBO (closure);
-	BonoboArg *arg;
-
-	arg = bonobo_arg_new (BONOBO_ARG_STRING);
-	BONOBO_ARG_SET_STRING (arg, section_id);
-
-	bonobo_event_source_notify_listeners_full (select_names->priv->event_source,
-						   "GNOME/Evolution",
-						   "changed",
-						   changed_working_copy ? "working_copy" : "model",
-						   arg, NULL);
-
-	bonobo_arg_release (arg);
-}
-
-static void
-manager_ok_cb (ESelectNamesManager *manager, gpointer closure)
-{
-	ESelectNamesBonobo *select_names = E_SELECT_NAMES_BONOBO (closure);
-	BonoboArg *arg;
-
-	arg = bonobo_arg_new (BONOBO_ARG_NULL);
-
-	bonobo_event_source_notify_listeners_full (select_names->priv->event_source,
-						   "GNOME/Evolution",
-						   "ok",
-						   "dialog",
-						   arg,
-						   NULL);
-
-	bonobo_arg_release (arg);
-}
-
-static void
-copy_cb (BonoboUIComponent *ui, gpointer user_data, const char *command)
-{
-	EEntry *entry = E_ENTRY (user_data);
-
-	e_text_copy_clipboard (entry->item);
-}
-
-static void
-cut_cb (BonoboUIComponent *ui, gpointer user_data, const char *command)
-{
-	EEntry *entry = E_ENTRY (user_data);
-
-	e_text_cut_clipboard (entry->item);
-}
-
-static void
-paste_cb (BonoboUIComponent *ui, gpointer user_data, const char *command)
-{
-	EEntry *entry = E_ENTRY (user_data);
-
-	e_text_paste_clipboard (entry->item);
-}
-
-static void
-select_all_cb (BonoboUIComponent *ui, gpointer user_data, const char *command)
-{
-	EEntry *entry = E_ENTRY (user_data);
-
-	e_text_select_all (entry->item);
-}
-
-static BonoboUIVerb verbs [] = {
-	BONOBO_UI_VERB ("EditCut", cut_cb),
-	BONOBO_UI_VERB ("EditCopy", copy_cb),
-	BONOBO_UI_VERB ("EditPaste", paste_cb),
-	BONOBO_UI_VERB ("EditSelectAll", select_all_cb),
-	BONOBO_UI_VERB_END
-};
-
-typedef struct {
-	GtkWidget *widget;
-	BonoboControl *control;
-	Bonobo_UIContainer remote_ui_container;
-	char *ui_xml_path;
-	char *app_name;
-	BonoboUIVerb *verbs;
-	gpointer user_data;
-} ControlUIClosure;
-
-static void
-free_closure (ControlUIClosure *closure,
-	      GtkObject *where_object_was)
-{
-	bonobo_object_release_unref (closure->remote_ui_container, NULL);
-	g_free (closure->ui_xml_path);
-	g_free (closure->app_name);
-	g_free (closure);
-}
-
-static void
-merge_menu_items (BonoboControl *control, BonoboUIComponent *uic, ControlUIClosure *closure)
-{
-	if (closure->remote_ui_container) {
-		bonobo_ui_component_set_container (uic, closure->remote_ui_container, NULL);
-
-		bonobo_ui_component_add_verb_list_with_data (uic, closure->verbs, closure->user_data);
-
-		bonobo_ui_component_freeze (uic, NULL);
-
-		bonobo_ui_util_set_ui (uic, PREFIX,
-				       closure->ui_xml_path,
-				       closure->app_name, NULL);
-
-		bonobo_ui_component_thaw (uic, NULL);
-	}
-}
-
-static void
-unmerge_menu_items (BonoboControl *control, BonoboUIComponent *uic, ControlUIClosure *closure)
-{
-	bonobo_ui_component_unset_container (uic, NULL);
-}
-
-static void
-control_set_frame_cb (BonoboControl *control,
-		      ControlUIClosure *closure)
-{
-	Bonobo_ControlFrame frame = bonobo_control_get_control_frame (control,
-								      NULL);
-	if (!frame)
-		return;
-	closure->remote_ui_container = bonobo_control_get_remote_ui_container (control, NULL);
-}
-
-static void
-control_activate_cb (BonoboControl *control,
-		     gboolean activate, 
-		     ControlUIClosure *closure)
-{
-	if (activate)
-		gtk_widget_grab_focus (closure->widget); /* the ECanvas */
-}
-
-static gboolean
-widget_focus_cb (GtkWidget *w, GdkEventFocus *focus, ControlUIClosure *closure)
-{
-	BonoboUIComponent *uic;
-
-	uic = bonobo_control_get_ui_component (closure->control);
-
-	if (GTK_WIDGET_HAS_FOCUS (w)) {
-		merge_menu_items (closure->control, uic, closure);
-	} else {
-		unmerge_menu_items (closure->control, uic, closure);
-	}
-
-	return FALSE;
-}
-
-static void
-e_bonobo_control_automerge_ui (GtkWidget *w,
-			       BonoboControl *control,
-			       const char *ui_xml_path,
-			       const char *app_name,
-			       BonoboUIVerb *verbs,
-			       gpointer data)
-{
-	ControlUIClosure *closure;
-
-	g_return_if_fail (GTK_IS_WIDGET (w));
-	g_return_if_fail (BONOBO_IS_CONTROL (control));
-	g_return_if_fail (ui_xml_path != NULL);
-	g_return_if_fail (app_name != NULL);
-	g_return_if_fail (verbs != NULL);
-	
-	closure = g_new (ControlUIClosure, 1);
-
-	closure->widget = w;
-	closure->control = control;
-	closure->ui_xml_path = g_strdup (ui_xml_path);
-	closure->app_name = g_strdup (app_name);
-	closure->verbs = verbs;
-	closure->user_data = data;
-
-	g_signal_connect (w, "focus_in_event",
-			  G_CALLBACK (widget_focus_cb), closure);
-	g_signal_connect (w, "focus_out_event",
-			  G_CALLBACK (widget_focus_cb), closure);
-	g_signal_connect (control, "activate",
-			  G_CALLBACK (control_activate_cb), closure);
-	g_signal_connect (control, "set_frame",
-			  G_CALLBACK (control_set_frame_cb), closure);
-
-	g_object_weak_ref (G_OBJECT (control), (GWeakNotify)free_closure, closure);
-}
-
-static Bonobo_Control
-impl_SelectNames_get_entry_for_section (PortableServer_Servant servant,
-					const CORBA_char *section_id,
-					CORBA_Environment *ev)
-{
-	ESelectNamesBonobo *select_names;
-	ESelectNamesBonoboPrivate *priv;
-	GtkWidget *entry_widget;
-	BonoboControl *control;
-	BonoboPropertyBag *property_bag;
-
-	select_names = E_SELECT_NAMES_BONOBO (bonobo_object (servant));
-	priv = select_names->priv;
-
-	entry_widget = e_select_names_manager_create_entry (priv->manager, section_id);
-	gtk_widget_show (entry_widget);
-	
-	if (entry_widget == NULL) {
-		CORBA_exception_set (ev,
-				     CORBA_USER_EXCEPTION,
-				     ex_GNOME_Evolution_Addressbook_SelectNames_SectionNotFound,
-				     NULL);
-		return CORBA_OBJECT_NIL;
-	}
-
-	control = bonobo_control_new (entry_widget);
-
-	property_bag = bonobo_property_bag_new (entry_get_property_fn, entry_set_property_fn, entry_widget);
-	bonobo_property_bag_add (property_bag, "text", ENTRY_PROPERTY_ID_TEXT,
-				 BONOBO_ARG_STRING, NULL, NULL,
-				 BONOBO_PROPERTY_READABLE | BONOBO_PROPERTY_WRITEABLE);
-	bonobo_property_bag_add (property_bag, "addresses", ENTRY_PROPERTY_ID_ADDRESSES,
-				 BONOBO_ARG_STRING, NULL, NULL,
-				 BONOBO_PROPERTY_READABLE | BONOBO_PROPERTY_WRITEABLE);
-	bonobo_property_bag_add (property_bag, "destinations", ENTRY_PROPERTY_ID_DESTINATIONS,
-				 BONOBO_ARG_STRING, NULL, NULL,
-				 BONOBO_PROPERTY_READABLE | BONOBO_PROPERTY_WRITEABLE);
-	bonobo_property_bag_add (property_bag, "simple_card_list", ENTRY_PROPERTY_ID_SIMPLE_CARD_LIST,
-				 TC_GNOME_Evolution_Addressbook_SimpleCardList, NULL, NULL,
-				 BONOBO_PROPERTY_READABLE);
-	bonobo_property_bag_add (property_bag, "allow_contact_lists", ENTRY_PROPERTY_ID_ALLOW_CONTACT_LISTS,
-				 BONOBO_ARG_BOOLEAN, NULL, NULL,
-				 BONOBO_PROPERTY_READABLE | BONOBO_PROPERTY_WRITEABLE);
-	bonobo_property_bag_add (property_bag, "entry_changed", ENTRY_PROPERTY_ID_ENTRY_CHANGED,
-				 BONOBO_ARG_BOOLEAN, NULL, NULL,
-				 BONOBO_PROPERTY_WRITEABLE);
-
-	bonobo_control_set_properties (control, bonobo_object_corba_objref (BONOBO_OBJECT (property_bag)), NULL);
-	bonobo_object_unref (BONOBO_OBJECT (property_bag));
-
-	g_signal_connect (entry_widget, "changed", G_CALLBACK (entry_changed), control);
-
-	e_bonobo_control_automerge_ui (GTK_WIDGET (E_ENTRY (entry_widget)->canvas),
-				       control,
-				       EVOLUTION_UIDIR "/evolution-composer-entries.xml",
-				       "evolution-addressbook",
-				       verbs, entry_widget);
-
-	return CORBA_Object_duplicate (bonobo_object_corba_objref (BONOBO_OBJECT (control)), ev);
-}
-
-static void
-impl_SelectNames_activate_dialog (PortableServer_Servant servant,
-				  const CORBA_char *section_id,
-				  CORBA_Environment *ev)
-{
-	ESelectNamesBonobo *select_names;
-	ESelectNamesBonoboPrivate *priv;
-	EvolutionShellClient *shell_client;
-	GNOME_Evolution_Shell shell;
-
-	select_names = E_SELECT_NAMES_BONOBO (bonobo_object (servant));
-	priv = select_names->priv;
-
-	shell = bonobo_activation_activate_from_id  (
-		"OAFIID:GNOME_Evolution_Shell",
-		Bonobo_ACTIVATION_FLAG_EXISTING_ONLY,
-		NULL, ev);
-	if (BONOBO_EX (ev))
-		return;
-
-	shell_client = evolution_shell_client_new (shell);
-	e_select_names_manager_activate_dialog (priv->manager, shell_client,
-						section_id);
-	g_object_unref (shell_client);
-}
-
-
-/* GtkObject methods.  */
-
-static void
-impl_dispose (GObject *object)
-{
-	ESelectNamesBonobo *select_names;
-	ESelectNamesBonoboPrivate *priv;
-
-	select_names = E_SELECT_NAMES_BONOBO (object);
-	priv = select_names->priv;
-
-	if (priv) {
-		if (priv->manager->names) {
-			gtk_widget_destroy (GTK_WIDGET (priv->manager->names));
-			priv->manager->names = NULL;
-		}
-
-		g_object_unref (priv->manager);
-
-		g_free (priv);
-		select_names->priv = NULL;
-	}
-
-	if (G_OBJECT_CLASS (parent_class)->dispose)
-		G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-
-static void
-e_select_names_bonobo_class_init (ESelectNamesBonoboClass *klass)
-{
-	GObjectClass *object_class;
-	POA_GNOME_Evolution_Addressbook_SelectNames__epv *epv;
-
-	object_class = G_OBJECT_CLASS (klass);
-	parent_class = g_type_class_peek_parent (klass);
-
-	object_class->dispose = impl_dispose;
-
-	epv = &klass->epv;
-	epv->addSection          = impl_SelectNames_add_section;
-	epv->addSectionWithLimit = impl_SelectNames_add_section_with_limit;
-	epv->getEntryBySection   = impl_SelectNames_get_entry_for_section;
-	epv->activateDialog      = impl_SelectNames_activate_dialog;
-}
-
-static void
-e_select_names_bonobo_init (ESelectNamesBonobo *select_names)
-{
-	ESelectNamesBonoboPrivate *priv;
-
-	priv = g_new (ESelectNamesBonoboPrivate, 1);
-
-	priv->manager = e_select_names_manager_new ();
-	priv->event_source = NULL;
-
-	g_signal_connect (priv->manager,
-			  "changed",
-			  G_CALLBACK (manager_changed_cb),
-			  select_names);
-
-	g_signal_connect (priv->manager,
-			  "ok",
-			  G_CALLBACK (manager_ok_cb),
-			  select_names);
-	
-	select_names->priv = priv;
-}
-
-
-static void
-e_select_names_bonobo_construct (ESelectNamesBonobo *select_names)
-{
-	g_return_if_fail (select_names != NULL);
-	g_return_if_fail (E_IS_SELECT_NAMES_BONOBO (select_names));
-
-	g_assert (select_names->priv->event_source == NULL);
-	select_names->priv->event_source = bonobo_event_source_new ();
-	bonobo_object_add_interface (BONOBO_OBJECT (select_names), BONOBO_OBJECT (select_names->priv->event_source));
-}
-
-ESelectNamesBonobo *
-e_select_names_bonobo_new (void)
-{
-	ESelectNamesBonobo *select_names;
-
-	select_names = g_object_new (E_TYPE_SELECT_NAMES_BONOBO, NULL);
-
-	e_select_names_bonobo_construct (select_names);
-
-	return select_names;
-}
-
-
-BONOBO_TYPE_FUNC_FULL (
-		       ESelectNamesBonobo,
-		       GNOME_Evolution_Addressbook_SelectNames,
-		       PARENT_TYPE,
-		       e_select_names_bonobo);
diff --git a/addressbook/gui/component/select-names/e-select-names-bonobo.h b/addressbook/gui/component/select-names/e-select-names-bonobo.h
deleted file mode 100644
index 5b04ed5b2e..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-bonobo.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-select-names-bonobo.h
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifndef __E_SELECT_NAMES_BONOBO_H__
-#define __E_SELECT_NAMES_BONOBO_H__
-
-#include <bonobo/bonobo-object.h>
-
-#include "Evolution-Addressbook-SelectNames.h"
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#define E_TYPE_SELECT_NAMES_BONOBO			(e_select_names_bonobo_get_type ())
-#define E_SELECT_NAMES_BONOBO(obj)			(G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_SELECT_NAMES_BONOBO, ESelectNamesBonobo))
-#define E_SELECT_NAMES_BONOBO_CLASS(klass)		(G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_SELECT_NAMES_BONOBO, ESelectNamesBonoboClass))
-#define E_IS_SELECT_NAMES_BONOBO(obj)			(G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_SELECT_NAMES_BONOBO))
-#define E_IS_SELECT_NAMES_BONOBO_CLASS(klass)		(G_TYPE_CHECK_CLASS_TYPE ((klass), E_TYPE_SELECT_NAMES_BONOBO))
-
-
-typedef struct _ESelectNamesBonobo        ESelectNamesBonobo;
-typedef struct _ESelectNamesBonoboPrivate ESelectNamesBonoboPrivate;
-typedef struct _ESelectNamesBonoboClass   ESelectNamesBonoboClass;
-
-struct _ESelectNamesBonobo {
-	BonoboObject parent;
-
-	ESelectNamesBonoboPrivate *priv;
-};
-
-struct _ESelectNamesBonoboClass {
-	BonoboObjectClass parent_class;
-
-	POA_GNOME_Evolution_Addressbook_SelectNames__epv epv;
-};
-
-
-GType               e_select_names_bonobo_get_type   (void);
-ESelectNamesBonobo *e_select_names_bonobo_new        (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __E_SELECT_NAMES_BONOBO_H__ */
diff --git a/addressbook/gui/component/select-names/e-select-names-completion.c b/addressbook/gui/component/select-names/e-select-names-completion.c
deleted file mode 100644
index eb69f33afb..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-completion.c
+++ /dev/null
@@ -1,1207 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * e-select-names-completion.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Developed by Jon Trowbridge <trow@ximian.com>
- */
-
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- * 
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- */
-
-#include <config.h>
-#include "e-select-names-completion.h"
-
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-
-#include <gtk/gtksignal.h>
-
-#include <addressbook/backend/ebook/e-book-util.h>
-#include <addressbook/backend/ebook/e-destination.h>
-#include <addressbook/backend/ebook/e-card-simple.h>
-#include <addressbook/backend/ebook/e-card-compare.h>
-
-typedef struct {
-	EBook *book;
-	guint book_view_tag;
-	EBookView *book_view;
-	ESelectNamesCompletion *comp;
-	guint card_added_tag;
-	guint seq_complete_tag;
-	gboolean sequence_complete_received;
-
-	gchar *cached_query_text;
-	GList *cached_cards;
-	gboolean cache_complete;
-
-} ESelectNamesCompletionBookData;
-
-struct _ESelectNamesCompletionPrivate {
-
-	ESelectNamesTextModel *text_model;
-
-	GList *book_data;
-	gint books_not_ready;
-	gint pending_completion_seq;
-
-	gchar *waiting_query;
-	gint waiting_pos, waiting_limit;
-	gchar *query_text;
-
-	gboolean match_contact_lists;
-
-	gint minimum_query_length;
-};
-
-static void e_select_names_completion_class_init (ESelectNamesCompletionClass *);
-static void e_select_names_completion_init (ESelectNamesCompletion *);
-static void e_select_names_completion_dispose (GObject *object);
-
-static void e_select_names_completion_got_book_view_cb (EBook *book, EBookStatus status, EBookView *view, gpointer user_data);
-static void e_select_names_completion_card_added_cb    (EBookView *, const GList *cards, gpointer user_data);
-static void e_select_names_completion_seq_complete_cb  (EBookView *, EBookViewStatus status, gpointer user_data);
-
-static void e_select_names_completion_do_query (ESelectNamesCompletion *, const gchar *query_text, gint pos, gint limit);
-
-static void e_select_names_completion_handle_request  (ECompletion *, const gchar *txt, gint pos, gint limit);
-static void e_select_names_completion_end    (ECompletion *);
-
-static GObjectClass *parent_class;
-
-static FILE *out;
-
-/*
- *
- * Query builders
- *
- */
-
-typedef gchar *(*BookQuerySExp) (ESelectNamesCompletion *);
-typedef ECompletionMatch *(*BookQueryMatchTester) (ESelectNamesCompletion *, EDestination *);
-
-static int
-utf8_casefold_collate_len (const gchar *str1, const gchar *str2, int len)
-{
-	gchar *s1 = g_utf8_casefold(str1, len);
-	gchar *s2 = g_utf8_casefold(str2, len);
-	int rv;
-
-	rv = g_utf8_collate (s1, s2);
-
-	g_free (s1);
-	g_free (s2);
-
-	return rv;
-}
-
-static int
-utf8_casefold_collate (const gchar *str1, const gchar *str2)
-{
-	return utf8_casefold_collate_len (str1, str2, -1);
-}
-
-static void
-our_match_destroy (ECompletionMatch *match)
-{
-	g_object_unref (match->user_data);
-}
-
-static ECompletionMatch *
-make_match (EDestination *dest, const gchar *menu_form, double score)
-{
-	ECompletionMatch *match;
-	ECard *card = e_destination_get_card (dest);
-
-	match = e_completion_match_new (e_destination_get_name (dest), menu_form, score);
-
-	e_completion_match_set_text (match, e_destination_get_name (dest), menu_form);
-
-	/* Reject any match that has null text fields. */
-	if (! (e_completion_match_get_match_text (match) && e_completion_match_get_menu_text (match))) {
-		g_object_unref (match);
-		return NULL;
-	}
-
-	/* Since we sort low to high, we negate so that larger use scores will come first */
-	match->sort_major = card ? -floor (e_card_get_use_score (card)) : 0;
-
-	match->sort_minor = e_destination_get_email_num (dest);
-
-	match->user_data = dest;
-	g_object_ref (dest);
-
-	match->destroy = our_match_destroy;
-
-	return match;
-}
-
-/*
- * Nickname query
- */
-
-static gchar *
-sexp_nickname (ESelectNamesCompletion *comp)
-{
-	gchar *query = g_strdup_printf ("(beginswith \"nickname\" \"%s\")", comp->priv->query_text);
-
-	return query;
-}
-
-static ECompletionMatch *
-match_nickname (ESelectNamesCompletion *comp, EDestination *dest)
-{
-	ECompletionMatch *match = NULL;
-	gint len;
-	ECard *card = e_destination_get_card (dest);
-	double score;
-
-	if (card->nickname == NULL)
-		return NULL;
-
-	len = g_utf8_strlen (comp->priv->query_text, -1);
-	if (card->nickname && !utf8_casefold_collate_len (comp->priv->query_text, card->nickname, len)) {
-		const gchar *name;
-		gchar *str;
-
-		score = len * 2; /* nickname gives 2 points per matching character */
-
-		if (len == g_utf8_strlen (card->nickname, -1)) /* boost score on an exact match */
-		    score *= 10;
-
-		name = e_destination_get_name (dest);
-		if (name && *name)
-			str = g_strdup_printf ("'%s' %s <%s>", card->nickname, name, e_destination_get_email (dest));
-		else
-			str = g_strdup_printf ("'%s' <%s>", card->nickname, e_destination_get_email (dest));
-
-		match = make_match (dest, str, score);
-		g_free (str);
-	}
-
-	return match;
-}
-
-/*
- * E-Mail Query
- */
-
-static gchar *
-sexp_email (ESelectNamesCompletion *comp)
-{
-	return g_strdup_printf ("(beginswith \"email\" \"%s\")", comp->priv->query_text);
-}
-
-static ECompletionMatch *
-match_email (ESelectNamesCompletion *comp, EDestination *dest)
-{
-	ECompletionMatch *match;
-	gint len = strlen (comp->priv->query_text);
-	const gchar *name = e_destination_get_name (dest);
-	const gchar *email = e_destination_get_email (dest);
-	double score;
-	
-	if (email
-	    && !utf8_casefold_collate_len (comp->priv->query_text, email, len)
-	    && !e_destination_is_evolution_list (dest)) {
-		
-		gchar *str;
-		
-		score = len * 2; /* 2 points for each matching character */
-
-		if (name && *name)
-			str = g_strdup_printf ("<%s> %s", email, name);
-		else
-			str = g_strdup (email);
-
-		match = make_match (dest, str, score);
-
-		g_free (str);
-
-		return match;
-	}
-
-	return NULL;
-}
-
-/*
- * Name Query
- */
-
-static gchar *
-name_style_query (ESelectNamesCompletion *comp, const gchar *field)
-{
-	if (comp && comp->priv->query_text && *comp->priv->query_text) {
-		gchar *cpy = g_strdup (comp->priv->query_text), *c;
-		gchar **strv;
-		gchar *query;
-		gint i, count=0;
-
-		for (c = cpy; *c; ++c) {
-			if (*c == ',')
-				*c = ' ';
-		}
-
-		strv = g_strsplit (cpy, " ", 0);
-		for (i=0; strv[i]; ++i) {
-			gchar *old;
-			++count;
-			g_strstrip (strv[i]);
-			old = strv[i];
-			strv[i] = g_strdup_printf ("(beginswith \"%s\" \"%s\")", field, old);
-			g_free (old);
-		}
-
-		if (count == 1) {
-			query = strv[0];
-			strv[0] = NULL;
-		} else {
-			gchar *joined = g_strjoinv (" ", strv);
-			query = g_strdup_printf ("(and %s)", joined);
-			g_free (joined);
-		}
-
-		g_free (cpy);
-		g_strfreev (strv);
-
-		return query;
-	}
-
-	return NULL;
-}
-
-static gchar *
-sexp_name (ESelectNamesCompletion *comp)
-{
-	return name_style_query (comp, "full_name");
-}
-
-static ECompletionMatch *
-match_name (ESelectNamesCompletion *comp, EDestination *dest)
-{
-	ECompletionMatch *final_match = NULL;
-	gchar *menu_text = NULL;
-	ECard *card;
-	const gchar *email;
-	gint match_len = 0;
-	ECardMatchType match;
-	ECardMatchPart first_match;
-	double score = 0;
-	gboolean have_given, have_additional, have_family;
-
-	card = e_destination_get_card (dest);
-	
-	if (card->name == NULL)
-		return NULL;
-
-	email = e_destination_get_email (dest);
-
-	match = e_card_compare_name_to_string_full (card, comp->priv->query_text, TRUE /* yes, allow partial matches */,
-						    NULL, &first_match, &match_len);
-
-	if (match <= E_CARD_MATCH_NONE)
-		return NULL;
-
-	score = match_len * 3; /* three points per match character */
-
-	have_given       = card->name->given && *card->name->given;
-	have_additional  = card->name->additional && *card->name->additional;
-	have_family      = card->name->family && *card->name->family;
-
-	if (e_card_evolution_list (card)) {
-
-		menu_text = e_card_name_to_string (card->name);
-
-	} else if (first_match == E_CARD_MATCH_PART_GIVEN_NAME) {
-
-		if (have_family)
-			menu_text = g_strdup_printf ("%s %s <%s>", card->name->given, card->name->family, email);
-		else
-			menu_text = g_strdup_printf ("%s <%s>", card->name->given, email);
-
-	} else if (first_match == E_CARD_MATCH_PART_ADDITIONAL_NAME) {
-
-		if (have_given) {
-
-			menu_text = g_strdup_printf ("%s%s%s, %s <%s>",
-						     card->name->additional,
-						     have_family ? " " : "",
-						     have_family ? card->name->family : "",
-						     card->name->given,
-						     email);
-		} else {
-
-			menu_text = g_strdup_printf ("%s%s%s <%s>",
-						     card->name->additional,
-						     have_family ? " " : "",
-						     have_family ? card->name->family : "",
-						     email);
-		}
-
-	} else if (first_match == E_CARD_MATCH_PART_FAMILY_NAME) { 
-
-		if (have_given)
-			menu_text = g_strdup_printf ("%s, %s%s%s <%s>",
-						     card->name->family,
-						     card->name->given,
-						     have_additional ? " " : "",
-						     have_additional ? card->name->additional : "",
-						     email);
-		else
-			menu_text = g_strdup_printf ("%s <%s>", card->name->family, email);
-
-	} else { /* something funny happened */
-
-		menu_text = g_strdup_printf ("<%s> ???", email);
-
-	}
-
-	if (menu_text) {
-		g_strstrip (menu_text);
-		final_match = make_match (dest, menu_text, score);
-		g_free (menu_text);
-	}
-	
-	return final_match;
-}
-
-/*
- * File As Query
- */
-
-static gchar *
-sexp_file_as (ESelectNamesCompletion *comp)
-{
-	return name_style_query (comp, "file_as");
-}
-
-static ECompletionMatch *
-match_file_as (ESelectNamesCompletion *comp, EDestination *dest)
-{
-	const gchar *name;
-	const gchar *email;
-	gchar *cpy, **strv, *menu_text;
-	gint i, len;
-	double score = 0.00001;
-	ECompletionMatch *match;
-
-	name = e_destination_get_name (dest);
-	email = e_destination_get_email (dest);
-
-	if (!(name && *name))
-		return NULL;
-
-	cpy = g_strdup (comp->priv->query_text);
-	strv = g_strsplit (cpy, " ", 0);
-
-	for (i=0; strv[i] && score > 0; ++i) {
-		len = g_utf8_strlen (strv[i], -1);
-		if (!utf8_casefold_collate_len (name, strv[i], len))
-			score += len; /* one point per character of the match */
-		else
-			score = 0;
-	}
-	
-	g_free (cpy);
-	g_strfreev (strv);
-
-	if (score <= 0)
-		return NULL;
-	
-	menu_text = g_strdup_printf ("%s <%s>", name, email);
-	g_strstrip (menu_text);
-	match = make_match (dest, menu_text, score);
-	g_free (menu_text);
-
-	return match;
-}
-
-typedef struct _BookQuery BookQuery;
-struct _BookQuery {
-	BookQuerySExp builder;
-	BookQueryMatchTester tester;
-};
-
-static BookQuery book_queries[] = {
-	{ sexp_nickname, match_nickname},
-	{ sexp_email,    match_email },
-	{ sexp_name,     match_name },
-	{ sexp_file_as,  match_file_as },
-};
-static gint book_query_count = sizeof (book_queries) / sizeof (BookQuery);
-
-/*
- * Build up a big compound sexp corresponding to all of our queries.
- */
-static gchar *
-book_query_sexp (ESelectNamesCompletion *comp)
-{
-	gint i, j;
-	gchar **queryv, *query;
-
-	g_return_val_if_fail (comp && E_IS_SELECT_NAMES_COMPLETION (comp), NULL);
-
-	if (! (comp->priv->query_text && *comp->priv->query_text))
-		return NULL;
-
-	queryv = g_new0 (gchar *, book_query_count+1);
-	for (i=0, j=0; i<book_query_count; ++i) {
-		queryv[j] = book_queries[i].builder (comp);
-		if (queryv[j])
-			++j;
-	}
-
-	if (j == 0) {
-		query = NULL;
-	} else if (j == 1) {
-		query = queryv[0];
-		queryv[0] = NULL;
-	} else {
-		gchar *tmp = g_strjoinv (" ", queryv);
-		query = g_strdup_printf ("(or %s)", tmp);
-		g_free (tmp);
-	}
-
-	for (i=0; i<book_query_count; ++i)
-		g_free (queryv[i]);
-	g_free (queryv);
-
-	return query;
-}
-
-/*
- * Sweep across all of our query rules and find the best score/match
- * string that applies to a given destination.
- */
-static ECompletionMatch *
-book_query_score (ESelectNamesCompletion *comp, EDestination *dest)
-{
-	ECompletionMatch *best_match = NULL;
-	gint i;
-
-	g_return_val_if_fail (E_IS_SELECT_NAMES_COMPLETION (comp), NULL);
-	g_return_val_if_fail (E_IS_DESTINATION (dest), NULL);
-
-	if (! (comp->priv->query_text && *comp->priv->query_text))
-		return NULL;
-	
-	for (i=0; i<book_query_count; ++i) {
-
-		ECompletionMatch *this_match = NULL;
-
-		if (book_queries[i].tester && e_destination_get_card (dest)) {
-			this_match = book_queries[i].tester (comp, dest);
-		}
-
-		if (this_match) {
-			if (best_match == NULL || this_match->score > best_match->score) {
-				e_completion_match_unref (best_match);
-				best_match = this_match;
-			} else {
-				e_completion_match_unref (this_match);
-			}
-		}
-	}
-
-	return best_match;
-}
-
-static void
-book_query_process_card_list (ESelectNamesCompletion *comp, const GList *cards)
-{
-	while (cards) {
-		ECard *card = E_CARD (cards->data);
-
-		if (e_card_evolution_list (card)) {
-
-			if (comp->priv->match_contact_lists) {
-
-				EDestination *dest = e_destination_new ();
-				ECompletionMatch *match;
-				e_destination_set_card (dest, card, 0);
-				match = book_query_score (comp, dest);
-				if (match && match->score > 0) {
-					e_completion_found_match (E_COMPLETION (comp), match);
-				} else {
-					e_completion_match_unref (match);
-				}
-				g_object_unref (dest);
-
-			}
-
-		} else if (card->email) {
-			gint i;
-			for (i=0; i<e_list_length (card->email); ++i) {
-				EDestination *dest = e_destination_new ();
-				const gchar *email;
-				ECompletionMatch *match;
-				
-				e_destination_set_card (dest, card, i);
-				email = e_destination_get_email (dest);
-
-				if (email && *email) {
-				
-					match = book_query_score (comp, dest);
-					if (match && match->score > 0) {
-						e_completion_found_match (E_COMPLETION (comp), match);
-					} else {
-						e_completion_match_unref (match);
-					}
-				}
-
-				g_object_unref (dest);
-			}
-		}
-		
-		cards = g_list_next (cards);
-	}
-}
-
-/*
- *
- * ESelectNamesCompletion code
- *
- */
-
-
-GType
-e_select_names_completion_get_type (void)
-{
-	static GType type = 0;
-
-	if (!type) {
-		static const GTypeInfo info =  {
-			sizeof (ESelectNamesCompletionClass),
-			NULL,           /* base_init */
-			NULL,           /* base_finalize */
-			(GClassInitFunc) e_select_names_completion_class_init,
-			NULL,           /* class_finalize */
-			NULL,           /* class_data */
-			sizeof (ESelectNamesCompletion),
-			0,             /* n_preallocs */
-			(GInstanceInitFunc) e_select_names_completion_init,
-		};
-
-		type = g_type_register_static (e_completion_get_type (), "ESelectNamesCompletion", &info, 0);
-	}
-
-	return type;
-}
-
-static void
-e_select_names_completion_class_init (ESelectNamesCompletionClass *klass)
-{
-	GObjectClass *object_class = G_OBJECT_CLASS (klass);
-	ECompletionClass *completion_class = E_COMPLETION_CLASS (klass);
-
-	parent_class = g_type_class_peek_parent (klass);
-
-	object_class->dispose = e_select_names_completion_dispose;
-
-	completion_class->request_completion = e_select_names_completion_handle_request;
-	completion_class->end_completion = e_select_names_completion_end;
-
-	if (getenv ("EVO_DEBUG_SELECT_NAMES_COMPLETION")) {
-		out = fopen ("/tmp/evo-debug-select-names-completion", "w");
-		if (out)
-			setvbuf (out, NULL, _IONBF, 0);
-	}
-}
-
-static void
-e_select_names_completion_init (ESelectNamesCompletion *comp)
-{
-	comp->priv = g_new0 (struct _ESelectNamesCompletionPrivate, 1);
-	comp->priv->match_contact_lists = TRUE;
-}
-
-static void
-e_select_names_completion_clear_book_data (ESelectNamesCompletion *comp)
-{
-	GList *l;
-
-	for (l = comp->priv->book_data; l; l = l->next) {
-		ESelectNamesCompletionBookData *book_data = l->data;
-
-		if (book_data->card_added_tag) {
-			g_signal_handler_disconnect (book_data->book_view, book_data->card_added_tag);
-			book_data->card_added_tag = 0;
-		}
-
-		if (book_data->seq_complete_tag) {
-			g_signal_handler_disconnect (book_data->book_view, book_data->seq_complete_tag);
-			book_data->seq_complete_tag = 0;
-		}
-
-		g_object_unref (book_data->book);
-
-		if (book_data->book_view) {
-			e_book_view_stop (book_data->book_view);
-			g_object_unref (book_data->book_view);
-		}
-
-		g_free (book_data->cached_query_text);
-		g_list_foreach (book_data->cached_cards, (GFunc)g_object_unref, NULL);
-		g_list_free (book_data->cached_cards);
-
-		g_free (book_data);
-	}
-	g_list_free (comp->priv->book_data);
-	comp->priv->book_data = NULL;
-}
-
-static void
-e_select_names_completion_dispose (GObject *object)
-{
-	ESelectNamesCompletion *comp = E_SELECT_NAMES_COMPLETION (object);
-
-	if (comp->priv) {
-		if (comp->priv->text_model)
-			g_object_unref (comp->priv->text_model);
-
-		e_select_names_completion_clear_book_data (comp);
-
-		g_free (comp->priv->waiting_query);
-		g_free (comp->priv->query_text);
-
-		g_free (comp->priv);
-		comp->priv = NULL;
-	}
-
-	if (parent_class->dispose)
-		parent_class->dispose (object);
-}
-
-
-/*
- *
- *  EBook/EBookView Callbacks & Query Stuff
- *
- */
-
-static gchar *
-clean_query_text (const gchar *s)
-{
-	gchar *q = g_new (gchar, strlen(s)+1), *t;
-
-	t = q;
-	while (*s) {
-		if (*s != ',' && *s != '"') {
-			*t = *s;
-			++t;
-		}
-		++s;
-	}
-	*t = '\0';
-
-	g_strstrip (q);
-
-	return q;
-}
-
-static void
-e_select_names_completion_clear_cache (ESelectNamesCompletionBookData *book_data)
-{
-	if (out)
-		fprintf (out, "** clearing cache on book %s\n", e_book_get_uri (book_data->book));
-
-	g_free (book_data->cached_query_text);
-	g_list_foreach (book_data->cached_cards, (GFunc)g_object_unref, NULL);
-	g_list_free (book_data->cached_cards);
-
-	book_data->cached_query_text = NULL;
-	book_data->cached_cards = NULL;
-}
-
-static void
-e_select_names_completion_done (ESelectNamesCompletion *comp)
-{
-	g_free (comp->priv->query_text);
-	comp->priv->query_text = NULL;
-
-	e_completion_end_search (E_COMPLETION (comp)); /* That's all folks! */
-
-	/* Need to launch a new completion if another one is pending. */
-	if (comp->priv->waiting_query) {
-		gchar *s = comp->priv->waiting_query;
-		comp->priv->waiting_query = NULL;
-		e_completion_begin_search (E_COMPLETION (comp), s, comp->priv->waiting_pos, comp->priv->waiting_limit);
-		g_free (s);
-	}
-}
-
-static void
-e_select_names_completion_got_book_view_cb (EBook *book, EBookStatus status, EBookView *view, gpointer user_data)
-{
-	ESelectNamesCompletion *comp;
-	ESelectNamesCompletionBookData *book_data;
-
-	book_data = (ESelectNamesCompletionBookData*)user_data;
-	comp = book_data->comp;
-
-	if (status != E_BOOK_STATUS_SUCCESS) {
-		comp->priv->pending_completion_seq--;
-		if (!comp->priv->pending_completion_seq)
-			e_select_names_completion_done (comp);
-		return;
-	}
-
-	book_data->book_view_tag = 0;
-
-	if (book_data->card_added_tag) {
-		g_signal_handler_disconnect (book_data->book_view, book_data->card_added_tag);
-		book_data->card_added_tag = 0;
-	}
-	if (book_data->seq_complete_tag) {
-		g_signal_handler_disconnect (book_data->book_view, book_data->seq_complete_tag);
-		book_data->seq_complete_tag = 0;
-	}
-
-	g_object_ref (view);
-	if (book_data->book_view) {
-		e_book_view_stop (book_data->book_view);
-		g_object_unref (book_data->book_view);
-	}
-	book_data->book_view = view;
-
-	book_data->card_added_tag = 
-		g_signal_connect (view,
-				  "card_added",
-				  G_CALLBACK (e_select_names_completion_card_added_cb),
-				  book_data);
-
-	book_data->seq_complete_tag =
-		g_signal_connect (view,
-				  "sequence_complete",
-				  G_CALLBACK (e_select_names_completion_seq_complete_cb),
-				  book_data);
-	book_data->sequence_complete_received = FALSE;
-}
-
-static void
-e_select_names_completion_card_added_cb (EBookView *book_view, const GList *cards, gpointer user_data)
-{
-	ESelectNamesCompletionBookData *book_data = user_data;
-	ESelectNamesCompletion *comp = book_data->comp;
-
-	if (e_completion_searching (E_COMPLETION (comp))) {
-		book_query_process_card_list (comp, cards);
-
-		/* Save the list of matching cards. */
-		while (cards) {
-			book_data->cached_cards = g_list_prepend (book_data->cached_cards, cards->data);
-			g_object_ref (cards->data);
-			cards = g_list_next (cards);
-		}
-	}
-}
-
-static void
-e_select_names_completion_seq_complete_cb (EBookView *book_view, EBookViewStatus status, gpointer user_data)
-{
-	ESelectNamesCompletionBookData *book_data = user_data;
-	ESelectNamesCompletion *comp = book_data->comp;
-
-	if (out)
-		fprintf (out, "** got sequence_complete (status = %d) on book %s\n", status, e_book_get_uri (book_data->book));
-
-	/*
-	 * We aren't searching, but the addressbook has changed -- clear our card cache so that
-	 * future completion requests will take the changes into account.
-	 */
-	if (! e_completion_searching (E_COMPLETION (comp))) {
-		if (out)
-			fprintf (out, "\t we weren't searching, clearing the cache\n");
-		e_select_names_completion_clear_cache (book_data);
-		return;
-	}
-
-	if (book_data->cached_query_text
-	    && status == E_BOOK_STATUS_SUCCESS
-	    && !book_data->cache_complete
-	    && !strcmp (book_data->cached_query_text, comp->priv->query_text))
-		book_data->cache_complete = TRUE;
-
-	if (out)
-		fprintf (out, "\tending search, book_data->cache_complete == %d\n", book_data->cache_complete);
-
-	if (!book_data->sequence_complete_received) {
-		book_data->sequence_complete_received = TRUE;
-
-		if (book_data->card_added_tag) {
-			g_signal_handler_disconnect (book_data->book_view, book_data->card_added_tag);
-			book_data->card_added_tag = 0;
-		}
-		if (book_data->seq_complete_tag) {
-			g_signal_handler_disconnect (book_data->book_view, book_data->seq_complete_tag);
-			book_data->seq_complete_tag = 0;
-		}
-
-		if (out)
-			fprintf (out, "\t %d remaining book view's\n", comp->priv->pending_completion_seq - 1);
-
-		comp->priv->pending_completion_seq --;
-		if (comp->priv->pending_completion_seq > 0)
-			return;
-	}
-
-	e_select_names_completion_done (comp);
-}
-
-static void
-e_select_names_completion_stop_query (ESelectNamesCompletion *comp)
-{
-	GList *l;
-
-	g_return_if_fail (comp && E_IS_SELECT_NAMES_COMPLETION (comp));
-
-	if (out)
-		fprintf (out, "stopping query\n");
-
-	if (comp->priv->waiting_query) {
-		if (out)
-			fprintf (out, "stopped waiting query\n");
-		g_free (comp->priv->waiting_query);
-		comp->priv->waiting_query = NULL;
-	}
-
-	g_free (comp->priv->query_text);
-	comp->priv->query_text = NULL;
-
-	for (l = comp->priv->book_data; l; l = l->next) {
-		ESelectNamesCompletionBookData *book_data = l->data;
-		if (book_data->book_view_tag) {
-			e_book_cancel (book_data->book, book_data->book_view_tag);
-			book_data->book_view_tag = 0;
-		}
-		if (book_data->book_view) {
-			if (book_data->card_added_tag) {
-				g_signal_handler_disconnect (book_data->book_view, book_data->card_added_tag);
-				book_data->card_added_tag = 0;
-			}
-			if (book_data->seq_complete_tag) {
-				g_signal_handler_disconnect (book_data->book_view, book_data->seq_complete_tag);
-				book_data->seq_complete_tag = 0;
-			}
-
-			e_book_view_stop (book_data->book_view);
-			g_object_unref (book_data->book_view);
-			book_data->book_view = NULL;
-		}
-	}
-
-	comp->priv->pending_completion_seq = 0;
-}
-
-static void
-e_select_names_completion_start_query (ESelectNamesCompletion *comp, const gchar *query_text)
-{
-	g_return_if_fail (comp && E_IS_SELECT_NAMES_COMPLETION (comp));
-	g_return_if_fail (query_text);
-
-	e_select_names_completion_stop_query (comp);  /* Stop any prior queries. */
-
-	if (comp->priv->books_not_ready == 0) {
-		gchar *sexp;
-	
-		if (strlen (query_text) < comp->priv->minimum_query_length) {
-			e_completion_end_search (E_COMPLETION (comp));
-			return;
-		}
-
-		g_free (comp->priv->query_text);
-		comp->priv->query_text = g_strdup (query_text);
-
-		sexp = book_query_sexp (comp);
-		if (sexp && *sexp) {
-			GList *l;
-
-			if (out)
-				fprintf (out, "\n\n**** starting query: \"%s\"\n", comp->priv->query_text);
-
-			for (l = comp->priv->book_data; l; l = l->next) {
-				ESelectNamesCompletionBookData *book_data = l->data;
-				gboolean can_reuse_cached_cards;
-
-				if (out) {
-					fprintf (out,
-						 "book == %s[\n"
-						 "\tbook_data->cached_query_text == `%s'\n"
-						 "\tbook_data->cache_complete == %d\n"
-						 "\tbook_data->cached_cards == %p\n",
-						 e_book_get_uri (book_data->book),
-						 book_data->cached_query_text,
-						 book_data->cache_complete,
-						 book_data->cached_cards);
-				}
-
-				/* for lack of a better place, we invalidate the cache here if we
-				   notice that the text is different. */
-				if (book_data->cached_query_text
-				    && (strlen (book_data->cached_query_text) > strlen (query_text)
-					|| utf8_casefold_collate_len (book_data->cached_query_text, query_text,
-								      strlen (book_data->cached_query_text))))
-					book_data->cache_complete = FALSE;
-
-				can_reuse_cached_cards = (book_data->cached_query_text
-							  && book_data->cache_complete
-							  && book_data->cached_cards != NULL);
-
-				if (can_reuse_cached_cards) {
-
-					if (out)
-						fprintf (out, "\t*** can reuse cached cards (%d cards cached)!\n", g_list_length (book_data->cached_cards));
-
-					if (out)
-						fprintf (out, "\tusing existing query info: %s (vs %s)\n", query_text, book_data->cached_query_text);
-					book_query_process_card_list (comp, book_data->cached_cards);
-				}
-				else {
-					e_select_names_completion_clear_cache (book_data);
-					book_data->cached_query_text = g_strdup (query_text);
-
-					book_data->book_view_tag = e_book_get_completion_view (book_data->book,
-											       sexp, 
-											       e_select_names_completion_got_book_view_cb, book_data);
-					if (! book_data->book_view_tag)
-						g_warning ("Exception calling e_book_get_completion_view");
-					else
-						comp->priv->pending_completion_seq++;
-				}
-
-				if (out)
-					fprintf (out, "]\n");
-			}
-
-			/* if we looped through all the books
-			   and were able to complete based
-			   solely on our cached cards, signal
-			   that the search is over. */
-			if (!comp->priv->pending_completion_seq)
-				e_select_names_completion_done (E_COMPLETION (comp));
-		} else {
-			g_free (comp->priv->query_text);
-			comp->priv->query_text = NULL;
-		}
-		g_free (sexp);
-
-	} else {
-
-		comp->priv->waiting_query = g_strdup (query_text);
-
-	}
-}
-
-static void
-e_select_names_completion_do_query (ESelectNamesCompletion *comp, const gchar *query_text, gint pos, gint limit)
-{
-	gchar *clean;
-
-	g_return_if_fail (comp != NULL);
-	g_return_if_fail (E_IS_SELECT_NAMES_COMPLETION (comp));
-
-	clean = clean_query_text (query_text);
-	if (! (clean && *clean)) {
-		g_free (clean);
-		e_completion_end_search (E_COMPLETION (comp));
-		return;
-	}
-
-	if (out)
-		fprintf (out, "do_query: %s => %s\n", query_text, clean);
-
-	e_select_names_completion_start_query (comp, clean);
-	g_free (clean);
-}
-
-
-/*
- *
- *  Completion Search Override - a Framework for Christian-Resurrection-Holiday Edible-Chicken-Ova
- *
- */
-
-typedef struct _SearchOverride SearchOverride;
-struct _SearchOverride {
-	const gchar *trigger;
-	const gchar *text[4];
-};
-static SearchOverride override[] = { 
-	{ "why?", { "\"I must create a system, or be enslaved by another man's.\"",
-		    "            -- Wiliam Blake, \"Jerusalem\"",
-		    NULL } },
-	{ "easter-egg?", { "What were you expecting, a flight simulator?", NULL } },
-	{ NULL, { NULL } } };
-
-static gboolean
-search_override_check (SearchOverride *over, const gchar *text)
-{
-	/* The g_utf8_validate is needed because as of 2001-06-11,
-	 * EText doesn't translate from locale->UTF8 when you paste
-	 * into it.
-	 */
-	if (over == NULL || text == NULL || !g_utf8_validate (text, -1, NULL))
-		return FALSE;
-
-	return !utf8_casefold_collate (over->trigger, text);
-}
-
-
-/*
- *
- *  Completion Callbacks
- *
- */
-
-static void
-e_select_names_completion_handle_request (ECompletion *comp, const gchar *text, gint pos, gint limit)
-{
-	ESelectNamesCompletion *selcomp = E_SELECT_NAMES_COMPLETION (comp);
-	const gchar *str;
-	gint index, j;
-	
-	g_return_if_fail (comp != NULL);
-	g_return_if_fail (E_IS_SELECT_NAMES_COMPLETION (comp));
-	g_return_if_fail (text != NULL);
-	
-	if (out) {
-		fprintf (out, "\n\n**** requesting completion\n");
-		fprintf (out, "text=\"%s\" pos=%d limit=%d\n", text, pos, limit);
-	}
-
-	e_select_names_model_text_pos (selcomp->priv->text_model->source,
-				       selcomp->priv->text_model->seplen,
-				       pos, &index, NULL, NULL);
-	str = index >= 0 ? e_select_names_model_get_string (selcomp->priv->text_model->source, index) : NULL;
-
-	if (out)
-		fprintf (out, "index=%d str=\"%s\"\n", index, str);
-
-	if (str == NULL || *str == '\0') {
-		if (out)
-			fprintf (out, "aborting empty query\n");
-		e_completion_end_search (comp);
-		return;
-	}
-
-	for (j=0; override[j].trigger; ++j) {
-		if (search_override_check (&(override[j]), str)) {
-			gint k;
-
-			for (k=0; override[j].text[k]; ++k) {
-				ECompletionMatch *match = g_new (ECompletionMatch, 1);
-				e_completion_match_construct (match);
-				e_completion_match_set_text (match, text, override[j].text[k]);
-				match->score = 1 / (double) (k + 1);
-				e_completion_found_match (comp, match);
-			}
-
-			e_completion_end_search (comp);
-			return;
-		}
-	}
-
-	e_select_names_completion_do_query (selcomp, str, pos, limit);
-}
-
-static void
-e_select_names_completion_end (ECompletion *comp)
-{
-	g_return_if_fail (comp != NULL);
-	g_return_if_fail (E_IS_COMPLETION (comp));
-
-	if (out)
-		fprintf (out, "completion ended\n");
-}
-
-/*
- *
- *  Our Pseudo-Constructor
- *
- */
-
-ECompletion *
-e_select_names_completion_new (ESelectNamesTextModel *text_model)
-{
-	ESelectNamesCompletion *comp;
-
-	g_return_val_if_fail (E_IS_SELECT_NAMES_TEXT_MODEL (text_model), NULL);
-
-	comp = g_object_new (E_TYPE_SELECT_NAMES_COMPLETION, NULL);
-
-	comp->priv->text_model = text_model;
-	g_object_ref (text_model);
-
-	return E_COMPLETION (comp);
-}
-
-void
-e_select_names_completion_add_book (ESelectNamesCompletion *comp, EBook *book)
-{
-	ESelectNamesCompletionBookData *book_data;
-
-	g_return_if_fail (book != NULL);
-
-	book_data = g_new0 (ESelectNamesCompletionBookData, 1);
-	book_data->book = book;
-	book_data->comp = comp;
-	g_object_ref (book_data->book);
-	comp->priv->book_data = g_list_append (comp->priv->book_data, book_data);
-
-	/* XXX toshok - this doesn't work properly.  need to rethink this next bit. */
-	/* if the user is typing as we're adding books, restart the
-	   query after the new book has been added */
-	if (comp->priv->query_text && *comp->priv->query_text) {
-		char *query_text = g_strdup (comp->priv->query_text);
-		e_select_names_completion_stop_query (comp);
-		e_select_names_completion_start_query (comp, query_text);
-		g_free (query_text);
-	}
-}
-
-void
-e_select_names_completion_clear_books (ESelectNamesCompletion *comp)
-{
-	e_select_names_completion_stop_query (comp);
-	e_select_names_completion_clear_book_data (comp);
-}
-
-void
-e_select_names_completion_set_minimum_query_length (ESelectNamesCompletion *comp, int query_length)
-{
-	g_return_if_fail (E_IS_SELECT_NAMES_COMPLETION (comp));
-	comp->priv->minimum_query_length = query_length;
-}
-
-gboolean
-e_select_names_completion_get_match_contact_lists (ESelectNamesCompletion *comp)
-{
-	g_return_val_if_fail (E_IS_SELECT_NAMES_COMPLETION (comp), FALSE);
-	return comp->priv->match_contact_lists;
-}
-
-
-void
-e_select_names_completion_set_match_contact_lists (ESelectNamesCompletion *comp, gboolean x)
-{
-	g_return_if_fail (E_IS_SELECT_NAMES_COMPLETION (comp));
-	comp->priv->match_contact_lists = x;
-}
-
diff --git a/addressbook/gui/component/select-names/e-select-names-completion.h b/addressbook/gui/component/select-names/e-select-names-completion.h
deleted file mode 100644
index 6565208378..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-completion.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * e-select-names-completion.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Developed by Jon Trowbridge <trow@ximian.com>
- */
-
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- * 
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- */
-
-#ifndef E_SELECT_NAMES_COMPLETION_H
-#define E_SELECT_NAMES_COMPLETION_H
-
-#include <gal/e-text/e-completion.h>
-#include <addressbook/backend/ebook/e-book.h>
-#include "e-select-names-text-model.h"
-
-G_BEGIN_DECLS
-
-#define E_TYPE_SELECT_NAMES_COMPLETION        (e_select_names_completion_get_type ())
-#define E_SELECT_NAMES_COMPLETION(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), E_TYPE_SELECT_NAMES_COMPLETION, ESelectNamesCompletion))
-#define E_SELECT_NAMES_COMPLETION_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST ((k), E_TYPE_SELECT_NAMES_COMPLETION, ESelectNamesCompletionClass))
-#define E_IS_SELECT_NAMES_COMPLETION(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_TYPE_SELECT_NAMES_COMPLETION))
-#define E_IS_SELECT_NAMES_COMPLETION_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), E_TYPE_SELECT_NAMES_COMPLETION))
-
-typedef struct _ESelectNamesCompletion ESelectNamesCompletion;
-typedef struct _ESelectNamesCompletionClass ESelectNamesCompletionClass;
-struct _ESelectNamesCompletionPrivate;
-
-struct _ESelectNamesCompletion {
-	ECompletion parent;
-
-	struct _ESelectNamesCompletionPrivate *priv;
-};
-
-struct _ESelectNamesCompletionClass {
-	ECompletionClass parent_class;
-
-};
-
-GType        e_select_names_completion_get_type (void);
-
-ECompletion *e_select_names_completion_new                     (ESelectNamesTextModel *);
-void         e_select_names_completion_add_book                (ESelectNamesCompletion *, EBook *);
-void         e_select_names_completion_clear_books             (ESelectNamesCompletion *);
-void         e_select_names_completion_set_minimum_query_length (ESelectNamesCompletion *, int);
-gboolean     e_select_names_completion_get_match_contact_lists (ESelectNamesCompletion *);
-void         e_select_names_completion_set_match_contact_lists (ESelectNamesCompletion *, gboolean);
-
-G_END_DECLS
-
-#endif /* E_SELECT_NAMES_COMPLETION_H */
diff --git a/addressbook/gui/component/select-names/e-select-names-factory.c b/addressbook/gui/component/select-names/e-select-names-factory.c
deleted file mode 100644
index 2416e42750..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-factory.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-select-names-factory.c
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <bonobo/bonobo-generic-factory.h>
-
-#include "e-select-names-bonobo.h"
-#include "e-select-names-factory.h"
-
-
-#define COMPONENT_FACTORY_ID "OAFIID:GNOME_Evolution_Addressbook_SelectNamesFactory"
-
-static BonoboGenericFactory *factory = NULL;
-
-
-static BonoboObject *
-factory_fn (BonoboGenericFactory *factory,
-	    const char *component_id,
-	    void *closure)
-{
-	return BONOBO_OBJECT (e_select_names_bonobo_new ());
-}
-
-
-gboolean
-e_select_names_factory_init (void)
-{
-	if (factory != NULL)
-		return TRUE;
-
-	factory = bonobo_generic_factory_new (COMPONENT_FACTORY_ID, factory_fn, NULL);
-
-	if (factory == NULL)
-		return FALSE;
-
-	return TRUE;
-}
diff --git a/addressbook/gui/component/select-names/e-select-names-factory.h b/addressbook/gui/component/select-names/e-select-names-factory.h
deleted file mode 100644
index 0fe85c8361..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-factory.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-select-names-factory.h
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifndef _E_SECELT_NAMES_FACTORY_H
-#define _E_SECELT_NAMES_FACTORY_H
-
-#include <glib.h>
-
-gboolean e_select_names_factory_init (void);
-
-#endif
diff --git a/addressbook/gui/component/select-names/e-select-names-manager.c b/addressbook/gui/component/select-names/e-select-names-manager.c
deleted file mode 100644
index a3875cea97..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-manager.c
+++ /dev/null
@@ -1,775 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: 
- *   Chris Lahey     <clahey@ximian.com>
- *   Jon Trowbridge  <trow@ximian.com.
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gal/e-text/e-entry.h>
-
-#include <libgnome/gnome-i18n.h>
-#include "e-select-names-manager.h"
-#include "e-select-names-marshal.h"
-#include "e-select-names-model.h"
-#include "e-select-names-text-model.h"
-#include "e-select-names.h"
-#include "e-select-names-completion.h"
-#include "e-select-names-popup.h"
-#include "e-folder-list.h"
-#include <addressbook/backend/ebook/e-book-util.h>
-#include <addressbook/backend/ebook/e-destination.h>
-#include "addressbook/gui/component/addressbook.h"
-#include <bonobo/bonobo-object.h>
-
-#define DEFAULT_MINIMUM_QUERY_LENGTH 3
-
-enum {
-	CHANGED,
-	OK,
-	CANCEL,
-	LAST_SIGNAL
-};
-
-static guint e_select_names_manager_signals[LAST_SIGNAL] = { 0 };
-
-static GObjectClass *parent_class = NULL;
-
-typedef struct {
-	char *id;
-	char *title;
-	ESelectNamesModel *model;
-	ESelectNamesModel *original_model;
-	ESelectNamesManager *manager;
-	guint changed_tag;
-} ESelectNamesManagerSection;
-
-typedef struct {
-	char *id;
-	EEntry *entry;
-	ESelectNamesManager *manager;
-	ESelectNamesModel *model;
-	ECompletion *comp;
-	guint cleaning_tag;
-} ESelectNamesManagerEntry;
-
-static void e_select_names_manager_init (ESelectNamesManager *manager);
-static void e_select_names_manager_class_init (ESelectNamesManagerClass *klass);
-
-static void e_select_names_manager_dispose (GObject *object);
-
-/* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** */
-
-/* ESelectNamesManagerSection routines */
-
-static void
-section_model_changed_cb (ESelectNamesModel *model, gpointer closure)
-{
-	ESelectNamesManagerSection *section = closure;
-	g_signal_emit (section->manager,
-		       e_select_names_manager_signals[CHANGED], 0,
-		       section->id,
-		       FALSE);
-}
-
-static ESelectNamesManagerSection *
-e_select_names_manager_section_new (ESelectNamesManager *manager,
-				    const gchar *id,
-				    const gchar *title,
-				    ESelectNamesModel *model)
-{
-	ESelectNamesManagerSection *section;
-
-	g_return_val_if_fail (E_IS_SELECT_NAMES_MANAGER (manager), NULL);
-	g_return_val_if_fail (E_IS_SELECT_NAMES_MODEL (model), NULL);
-
-	section = g_new0 (ESelectNamesManagerSection, 1);
-
-	section->id = g_strdup (id);
-	section->title = g_strdup (title);
-
-	section->manager = manager;
-
-	section->model = model;
-	g_object_ref (section->model);
-	section->changed_tag =
-		g_signal_connect (section->model,
-				    "changed",
-				    G_CALLBACK (section_model_changed_cb),
-				    section);
-
-	return section;
-}
-
-static void
-e_select_names_manager_section_free (ESelectNamesManagerSection *section)
-{
-	if (section == NULL)
-		return;
-
-	g_free (section->id);
-	g_free (section->title);
-
-	if (section->model) {
-		g_signal_handler_disconnect (section->model, section->changed_tag);
-		g_object_unref (section->model);
-	}
-
-	if (section->original_model) {
-		g_object_unref (section->original_model);
-	}
-
-	g_free (section);
-}
-
-/* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** */
-
-/* ESelectNamesManagerEntry routines */
-
-static ESelectNamesManagerEntry *
-get_entry_info (EEntry *entry)
-{
-	g_return_val_if_fail (E_IS_ENTRY (entry), NULL);
-	return (ESelectNamesManagerEntry *) g_object_get_data (G_OBJECT (entry), "entry_info");
-}
-
-static void
-populate_popup_cb (EEntry *eentry, GdkEventButton *ev, gint pos, GtkWidget *menu, gpointer user_data)
-{
-	ESelectNamesTextModel *text_model;
-
-	g_object_get (eentry,
-		      "model", &text_model,
-		      NULL);
-	g_assert (E_IS_SELECT_NAMES_TEXT_MODEL (text_model));
-
-	e_select_names_populate_popup (menu, text_model, ev, pos, GTK_WIDGET (eentry));
-}
-
-#if 0
-static gboolean
-clean_cb (gpointer ptr)
-{
-	ESelectNamesManagerEntry *entry = ptr;
-
-	e_select_names_model_clean (entry->model, TRUE);
-	entry->cleaning_tag = 0;
-	return FALSE;
-}
-#endif
-
-static gint
-focus_in_cb (GtkWidget *w, GdkEventFocus *ev, gpointer user_data)
-{
-	ESelectNamesManagerEntry *entry = user_data;
-
-	if (entry->cleaning_tag) {
-		g_source_remove (entry->cleaning_tag);
-		entry->cleaning_tag = 0;
-	}
-
-	e_select_names_model_cancel_cardify_all (entry->model);
-
-	return FALSE;
-}
-
-static gint
-focus_out_cb (GtkWidget *w, GdkEventFocus *ev, gpointer user_data)
-{
-#if 0
-	/* XXX fix me */
-	ESelectNamesManagerEntry *entry = user_data;
-	gboolean visible = e_entry_completion_popup_is_visible (entry->entry);
-
-	if (! visible) {
-		e_select_names_model_cardify_all (entry->model, entry->manager->completion_book, 100);
-		if (entry->cleaning_tag == 0)
-			entry->cleaning_tag = gtk_timeout_add (100, clean_cb, entry);
-	}
-#endif
-	return FALSE;
-}
-
-static void
-completion_popup_cb (EEntry *w, gint visible, gpointer user_data)
-{
-#if 0
-	/* XXX fix me */
-	ESelectNamesManagerEntry *entry = user_data;
-
-	if (!visible && !GTK_WIDGET_HAS_FOCUS (GTK_WIDGET (entry->entry->canvas)))
-		e_select_names_model_cardify_all (entry->model, entry->manager->completion_book, 0);
-#endif
-}
-
-static void
-completion_handler (EEntry *entry, ECompletionMatch *match)
-{
-	ESelectNamesManagerEntry *mgr_entry;
-	ESelectNamesTextModel *text_model;
-	EDestination *dest;
-	gint i, pos, start_pos, len;
-
-	if (match == NULL || match->user_data == NULL)
-		return;
-
-	mgr_entry = get_entry_info (entry);
-	dest = E_DESTINATION (match->user_data);
-
-	/* Sometimes I really long for garbage collection.  Reference
-           counting makes you feel 31337, but sometimes it is just a
-           bitch. */
-	g_object_ref (dest);
-
-	g_object_get (entry,
-		      "model", &text_model,
-		      NULL);
-	g_assert (E_IS_SELECT_NAMES_TEXT_MODEL (text_model));
-
-	pos = e_entry_get_position (entry);
-	e_select_names_model_text_pos (mgr_entry->model, text_model->seplen, pos, &i, NULL, NULL);
-	e_select_names_model_replace (mgr_entry->model, i, dest);
-	e_select_names_model_name_pos (mgr_entry->model, text_model->seplen, i, &start_pos, &len);
-	e_entry_set_position (entry, start_pos+len);
-}
-
-static ESelectNamesManagerEntry *
-e_select_names_manager_entry_new (ESelectNamesManager *manager, ESelectNamesModel *model, const gchar *id)
-{
-	ESelectNamesManagerEntry *entry;
-	ETextModel *text_model;
-	GList *l;
-
-	g_return_val_if_fail (E_IS_SELECT_NAMES_MANAGER (manager), NULL);
-	g_return_val_if_fail (E_IS_SELECT_NAMES_MODEL (model), NULL);
-
-	entry = g_new0 (ESelectNamesManagerEntry, 1);
-
-	entry->id = g_strdup (id);
-
-	entry->entry = E_ENTRY (e_entry_new ());
-	text_model = e_select_names_text_model_new (model);
-	g_object_set(entry->entry,
-		     "model",          text_model, /* The entry takes ownership of the text model */
-		     "editable",       TRUE,
-		     "use_ellipsis",   TRUE,
-		     "allow_newlines", FALSE,
-		     NULL);
-
-	g_object_ref (entry->entry);
-
-	entry->comp = e_select_names_completion_new (E_SELECT_NAMES_TEXT_MODEL (text_model));
-
-	for (l = manager->completion_books; l; l = l->next) {
-		EBook *book = l->data;
-		e_select_names_completion_add_book (E_SELECT_NAMES_COMPLETION(entry->comp), book);
-	}
-
-	e_select_names_completion_set_minimum_query_length (E_SELECT_NAMES_COMPLETION(entry->comp),
-							    manager->minimum_query_length);
-
-	e_entry_enable_completion_full (entry->entry, entry->comp, 100, completion_handler);
-		
-	entry->manager = manager;
-
-	entry->model = model;
-	g_object_ref (model);
-	
-	g_signal_connect (entry->entry,
-			  "populate_popup",
-			  G_CALLBACK (populate_popup_cb),
-			  entry);
-			
-	g_signal_connect (entry->entry->canvas,
-			  "focus_in_event",
-			  G_CALLBACK (focus_in_cb),
-			  entry);
-	
-	g_signal_connect (entry->entry->canvas,
-			  "focus_out_event",
-			  G_CALLBACK (focus_out_cb),
-			  entry);
-
-	g_signal_connect (entry->entry,
-			  "completion_popup",
-			  G_CALLBACK (completion_popup_cb),
-			  entry);
-
-	g_object_set_data (G_OBJECT (entry->entry), "entry_info", entry);
-	g_object_set_data (G_OBJECT (entry->entry), "select_names_model", model);
-	g_object_set_data (G_OBJECT (entry->entry), "select_names_text_model", text_model);
-	g_object_set_data (G_OBJECT (entry->entry), "completion_handler", entry->comp);
-
-	return entry;
-}
-
-static void
-e_select_names_manager_entry_free (ESelectNamesManagerEntry *entry)
-{
-	if (entry == NULL)
-		return;
-
-	g_free (entry->id);
-	g_object_unref (entry->model);
-	g_object_unref (entry->entry);
-
-	if (entry->cleaning_tag)
-		g_source_remove (entry->cleaning_tag);
-
-	g_free (entry);
-}
-
-/* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** */
-
-static void
-e_select_names_manager_save_models (ESelectNamesManager *manager)
-{
-	GList *iter;
-	
-	for (iter = manager->sections; iter != NULL; iter = g_list_next (iter)) {
-		ESelectNamesManagerSection *section = iter->data;
-
-		if (section->original_model == NULL && section->model != NULL)
-			section->original_model = e_select_names_model_duplicate (section->model);
-
-	}
-}
-
-static void
-e_select_names_manager_revert_to_saved_models (ESelectNamesManager *manager)
-{
-	GList *iter;
-
-	for (iter = manager->sections; iter != NULL; iter = g_list_next (iter)) {
-		ESelectNamesManagerSection *section = iter->data;
-		if (section->model && section->original_model) {
-			e_select_names_model_overwrite_copy (section->model, section->original_model);
-			g_object_unref (section->original_model);
-			section->original_model = NULL;
-		}
-	}
-}
-
-static void
-e_select_names_manager_discard_saved_models (ESelectNamesManager *manager)
-{
-	GList *iter;
-
-	for (iter = manager->sections; iter != NULL; iter = g_list_next (iter)) {
-		ESelectNamesManagerSection *section = iter->data;
-		if (section->original_model) {
-			g_object_unref (section->original_model);
-			section->original_model = NULL;
-		}
-	}
-}
-
-/* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** */
-
-
-static void
-open_book_cb (EBook *book, EBookStatus status, ESelectNamesManager *manager)
-{
-	if (status == E_BOOK_STATUS_SUCCESS) {
-		GList *l;
-		for (l = manager->entries; l; l = l->next) {
-			ESelectNamesManagerEntry *entry = l->data;
-			e_select_names_completion_add_book (E_SELECT_NAMES_COMPLETION(entry->comp), book);
-		}
-
-		manager->completion_books = g_list_append (manager->completion_books, book);
-		g_object_ref (book);
-	}
-
-	g_object_unref (manager); /* unref ourself (matches ref before the load_uri call below) */
-}
-
-static void
-load_completion_books (ESelectNamesManager *manager)
-{
-	EFolderListItem *folders = e_folder_list_parse_xml (manager->cached_folder_list);
-	EFolderListItem *f;
-
-	for (f = folders; f && f->physical_uri; f++) {
-		char *uri;
-		EBook *book = e_book_new ();
-		g_object_ref (manager); /* ref ourself before our async call */
-
-		uri = e_book_expand_uri (f->physical_uri);
-
-		addressbook_load_uri (book, uri, (EBookCallback)open_book_cb, manager);
-
-		g_free (uri);
-	}
-	e_folder_list_free_items (folders);
-}
-
-static void
-read_completion_settings_from_db (ESelectNamesManager *manager, EConfigListener *db)
-{
-	char *val;
-	long ival;
-
-	val = e_config_listener_get_string (db, "/apps/evolution/addressbook/completion/uris");
-
-	if (val) {
-		g_free (manager->cached_folder_list);
-		manager->cached_folder_list = val;
-		load_completion_books(manager);
-	}
-
-	ival = e_config_listener_get_long (db, "/apps/evolution/addressbook/completion/minimum_query_length");
-	if (ival <= 0) ival = DEFAULT_MINIMUM_QUERY_LENGTH;
-
-	manager->minimum_query_length = ival;
-}
-
-static void
-db_listener (EConfigListener *db, const char *key,
-	     ESelectNamesManager *manager)
-{
-	GList *l;
-
-	if (!strcmp (key, "/apps/evolution/addressbook/completion/uris")) {
-		char *val = e_config_listener_get_string (db, key);
-
-		if (!val)
-			return;
-
-		if (!manager->cached_folder_list || strcmp (val, manager->cached_folder_list)) {
-			for (l = manager->entries; l; l = l->next) {
-				ESelectNamesManagerEntry *entry = l->data;
-				e_select_names_completion_clear_books (E_SELECT_NAMES_COMPLETION (entry->comp));
-			}
-
-			g_list_foreach (manager->completion_books, (GFunc)g_object_unref, NULL);
-			g_list_free (manager->completion_books);
-			manager->completion_books = NULL;
-
-			g_free (manager->cached_folder_list);
-			manager->cached_folder_list = val;
-			load_completion_books (manager);
-		}
-	}
-	else if (!strcmp (key, "/apps/evolution/addressbook/completion/minimum_query_length")) {
-		long ival = e_config_listener_get_long (db, key);
-
-		if (ival <= 0)
-			ival = DEFAULT_MINIMUM_QUERY_LENGTH;
-
-		manager->minimum_query_length = ival;
-
-		for (l = manager->entries; l; l = l->next) {
-			ESelectNamesManagerEntry *entry = l->data;
-			e_select_names_completion_set_minimum_query_length (E_SELECT_NAMES_COMPLETION(entry->comp),
-									    manager->minimum_query_length);
-		}
-	}
-}
-
-/**
- * e_select_names_manager_new:
- *
- * Returns: a new #ESelectNamesManager
- */
-ESelectNamesManager *
-e_select_names_manager_new (void)
-{
-	ESelectNamesManager *manager = g_object_new (E_TYPE_SELECT_NAMES_MANAGER, NULL);
-	EConfigListener *db;
-
-	db = e_book_get_config_database();
-
-	manager->listener_id = g_signal_connect (db,
-						 "key_changed",
-						 G_CALLBACK (db_listener), manager);
-
-	read_completion_settings_from_db (manager, db);
-
-	return manager;
-}
-
-
-/*
- * ESelectNamesManager lifecycle management and vcard loading/saving.
- */
-
-
-void
-e_select_names_manager_add_section (ESelectNamesManager *manager,
-				    const char *id,
-				    const char *title)
-{
-	g_return_if_fail (E_IS_SELECT_NAMES_MANAGER (manager));
-	g_return_if_fail (id != NULL);
-	g_return_if_fail (title != NULL);
-	
-	e_select_names_manager_add_section_with_limit (manager, id, title, -1);
-}
-
-void
-e_select_names_manager_add_section_with_limit (ESelectNamesManager *manager,
-					       const char *id,
-					       const char *title,
-					       gint limit)
-{
-	ESelectNamesManagerSection *section;
-	ESelectNamesModel *model;
-
-	g_return_if_fail (E_IS_SELECT_NAMES_MANAGER (manager));
-	g_return_if_fail (id != NULL);
-	g_return_if_fail (title != NULL);
-	
-	model = e_select_names_model_new ();
-	e_select_names_model_set_limit (model, limit);
-	
-	section = e_select_names_manager_section_new (manager, id, title, model);
-
-	manager->sections = g_list_append (manager->sections, section);
-
-	g_object_unref (model);
-}
-
-ESelectNamesModel *
-e_select_names_manager_get_source (ESelectNamesManager *manager,
-				   const char *id)
-{
-	GList *iter;
-
-	g_return_val_if_fail (E_IS_SELECT_NAMES_MANAGER (manager), NULL);
-	g_return_val_if_fail (id != NULL, NULL);
-
-	for (iter = manager->sections; iter != NULL; iter = g_list_next (iter)) {
-		ESelectNamesManagerSection *section = iter->data;
-		if (!strcmp (section->id, id))
-			return section->model;
-	}
-	return NULL;
-}
-
-GtkWidget *
-e_select_names_manager_create_entry (ESelectNamesManager *manager, const char *id)
-{
-	GList *iter;
-
-	g_return_val_if_fail (E_IS_SELECT_NAMES_MANAGER (manager), NULL);
-	g_return_val_if_fail (id != NULL, NULL);
-
-	for (iter = manager->sections; iter != NULL; iter = g_list_next (iter)) {
-		ESelectNamesManagerSection *section = iter->data;
-		if (!strcmp(section->id, id)) {
-			ESelectNamesManagerEntry *entry;
-
-			entry = e_select_names_manager_entry_new (manager, section->model, section->id);
-			manager->entries = g_list_append (manager->entries, entry);
-
-			return GTK_WIDGET(entry->entry);
-		}
-	}
-
-	return NULL;
-}
-
-static void
-e_select_names_response(ESelectNames *dialog, gint response_id, ESelectNamesManager *manager)
-{
-	gtk_widget_destroy (GTK_WIDGET (dialog));
-
-	switch(response_id) {
-	case GTK_RESPONSE_OK:
-		e_select_names_manager_discard_saved_models (manager);
-		g_signal_emit (manager, e_select_names_manager_signals[OK], 0);
-		break;
-
-	case GTK_RESPONSE_CANCEL:
-		e_select_names_manager_revert_to_saved_models (manager);
-		g_signal_emit (manager, e_select_names_manager_signals[CANCEL], 0);
-		break;
-	}
-}
-
-static void
-clear_widget (gpointer data, GObject *where_object_was)
-{
-	GtkWidget **widget_ref = data;
-	*widget_ref = NULL;
-}
-
-void
-e_select_names_manager_activate_dialog (ESelectNamesManager *manager,
-					EvolutionShellClient *shell_client,
-					const char *id)
-{
-	g_return_if_fail (E_IS_SELECT_NAMES_MANAGER (manager));
-	g_return_if_fail (id != NULL);
-
-	if (manager->names) {
-		
-		g_assert (GTK_WIDGET_REALIZED (GTK_WIDGET (manager->names)));
-		e_select_names_set_default (manager->names, id);
-		gdk_window_show (GTK_WIDGET (manager->names)->window);
-		gdk_window_raise (GTK_WIDGET (manager->names)->window);
-
-	} else {
-
-		GList *iter;
-
-		manager->names = E_SELECT_NAMES (e_select_names_new (shell_client));
-
-		for (iter = manager->sections; iter != NULL; iter = g_list_next (iter)) {
-			ESelectNamesManagerSection *section = iter->data;
-			e_select_names_add_section (manager->names, section->id, section->title, section->model);
-		}
-
-		e_select_names_set_default (manager->names, id);
-
-		g_signal_connect(manager->names, 
-				 "response",
-				 G_CALLBACK(e_select_names_response),
-				 manager);
-
-		g_object_weak_ref (G_OBJECT (manager->names), clear_widget, &manager->names);
-
-		gtk_widget_show(GTK_WIDGET(manager->names));
-	}
-
-	e_select_names_manager_save_models (manager);
-}
-
-/* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** */
-
-static void
-e_select_names_manager_init (ESelectNamesManager *manager)
-{
-	manager->sections = NULL;
-	manager->entries  = NULL;
-	manager->completion_books  = NULL;
-	manager->cached_folder_list  = NULL;
-}
-
-static void
-e_select_names_manager_dispose (GObject *object)
-{
-	ESelectNamesManager *manager;
-	
-	manager = E_SELECT_NAMES_MANAGER (object);
-
-	if (manager->names) {
-		gtk_widget_destroy (GTK_WIDGET (manager->names));
-		manager->names = NULL;
-	}
-
-	if (manager->sections) {
-		g_list_foreach (manager->sections, (GFunc) e_select_names_manager_section_free, NULL);
-		g_list_free (manager->sections);
-		manager->sections = NULL;
-	}
-
-	if (manager->entries) {
-		g_list_foreach (manager->entries, (GFunc) e_select_names_manager_entry_free, NULL);
-		g_list_free (manager->entries);
-		manager->entries = NULL;
-	}
-
-	if (manager->completion_books) {
-		g_list_foreach (manager->completion_books, (GFunc) g_object_unref, NULL);
-		g_list_free (manager->completion_books);
-		manager->completion_books = NULL;
-	}
-
-	if (manager->listener_id) {
-		g_signal_handler_disconnect (e_book_get_config_database(), manager->listener_id);
-		manager->listener_id = 0;
-	}
-
-	if (manager->cached_folder_list) {
-		g_free (manager->cached_folder_list);
-		manager->cached_folder_list = NULL;
-	}
-
-	if (G_OBJECT_CLASS (parent_class)->dispose)
-		G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-static void
-e_select_names_manager_class_init (ESelectNamesManagerClass *klass)
-{
-	GObjectClass *object_class;
-
-	object_class = G_OBJECT_CLASS(klass);
-	parent_class = g_type_class_peek_parent (klass);
-
-	object_class->dispose = e_select_names_manager_dispose;
-
-	e_select_names_manager_signals[CHANGED] = 
-		g_signal_new ("changed",
-			      G_OBJECT_CLASS_TYPE (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (ESelectNamesManagerClass, changed),
-			      NULL, NULL,
-			      e_select_names_marshal_NONE__POINTER_INT,
-			      G_TYPE_NONE, 2,
-			      G_TYPE_POINTER,
-			      G_TYPE_INT);
-
-	e_select_names_manager_signals[OK] =
-		g_signal_new ("ok",
-			      G_OBJECT_CLASS_TYPE (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (ESelectNamesManagerClass, ok),
-			      NULL, NULL,
-			      e_select_names_marshal_NONE__NONE,
-			      G_TYPE_NONE, 0);
-
-	e_select_names_manager_signals[CANCEL] =
-		g_signal_new ("cancel",
-			      G_OBJECT_CLASS_TYPE (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (ESelectNamesManagerClass, cancel),
-			      NULL, NULL,
-			      e_select_names_marshal_NONE__NONE,
-			      G_TYPE_NONE, 0);
-}
-
-/**
- * e_select_names_manager_get_type:
- * @void: 
- * 
- * Registers the &ESelectNamesManager class if necessary, and returns the type ID
- * associated to it.
- * 
- * Return value: The type ID of the &ESelectNamesManager class.
- **/
-GType
-e_select_names_manager_get_type (void)
-{
-	static GType manager_type = 0;
-
-	if (!manager_type) {
-		static const GTypeInfo manager_info =  {
-			sizeof (ESelectNamesManagerClass),
-			NULL,           /* base_init */
-			NULL,           /* base_finalize */
-			(GClassInitFunc) e_select_names_manager_class_init,
-			NULL,           /* class_finalize */
-			NULL,           /* class_data */
-			sizeof (ESelectNamesManager),
-			0,             /* n_preallocs */
-			(GInstanceInitFunc) e_select_names_manager_init,
-		};
-
-		manager_type = g_type_register_static (G_TYPE_OBJECT, "ESelectNamesManager", &manager_info, 0);
-	}
-
-	return manager_type;
-}
-
-
-
diff --git a/addressbook/gui/component/select-names/e-select-names-manager.h b/addressbook/gui/component/select-names/e-select-names-manager.h
deleted file mode 100644
index b48f597cb3..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-manager.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors:
- *   Chris Lahey <clahey@ximian.com>
- *
- * Copyright (C) 2000 Ximian, Inc.
- */
-
-#ifndef __E_SELECT_NAMES_MANAGER_H__
-#define __E_SELECT_NAMES_MANAGER_H__
-
-#include <stdio.h>
-#include <time.h>
-#include <gtk/gtkobject.h>
-#include <e-util/e-list.h>
-#include "e-select-names.h"
-
-#define E_TYPE_SELECT_NAMES_MANAGER            (e_select_names_manager_get_type ())
-#define E_SELECT_NAMES_MANAGER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_SELECT_NAMES_MANAGER, ESelectNamesManager))
-#define E_SELECT_NAMES_MANAGER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_SELECT_NAMES_MANAGER, ESelectNamesManagerClass))
-#define E_IS_SELECT_NAMES_MANAGER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_SELECT_NAMES_MANAGER))
-#define E_IS_SELECT_NAMES_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), E_TYPE_SELECT_NAMES_MANAGER))
-
-typedef struct _ESelectNamesManager ESelectNamesManager;
-typedef struct _ESelectNamesManagerClass ESelectNamesManagerClass;
-
-struct _ESelectNamesManager {
-	GObject object;
-	
-	GList *sections;
-	GList *entries;
-
-	ESelectNames *names;
-
-	GList *completion_books;
-
-	int minimum_query_length;
-
-	gulong listener_id;
-
-	char *cached_folder_list;
-};
-
-struct _ESelectNamesManagerClass {
-	GObjectClass parent_class;
-
-	void (*changed) (ESelectNamesManager *, const gchar *section_id, gint changed_working_copy);
-	void (*ok)      (ESelectNamesManager *);
-	void (*cancel)  (ESelectNamesManager *);
-};
-
-ESelectNamesManager *e_select_names_manager_new                    (void);
-void                 e_select_names_manager_add_section            (ESelectNamesManager *manager,
-							            const char *id,
-							            const char *title);
-void                 e_select_names_manager_add_section_with_limit (ESelectNamesManager *manager,
-								    const char *id,
-								    const char *title,
-								    gint limit);
-ESelectNamesModel   *e_select_names_manager_get_source             (ESelectNamesManager *manager,
-								    const char *id);
-GtkWidget           *e_select_names_manager_create_entry           (ESelectNamesManager *manager,
-							            const char *id);
-void                 e_select_names_manager_activate_dialog        (ESelectNamesManager *manager,
-								    EvolutionShellClient *shell_client,
-							            const char *id);
-/* Standard Gtk function */			      
-GType                e_select_names_manager_get_type               (void);
-
-#endif /* ! __E_SELECT_NAMES_MANAGER_H__ */
diff --git a/addressbook/gui/component/select-names/e-select-names-marshal.list b/addressbook/gui/component/select-names/e-select-names-marshal.list
deleted file mode 100644
index 8e751dc27d..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-marshal.list
+++ /dev/null
@@ -1,3 +0,0 @@
-NONE:POINTER,INT
-NONE:NONE
-NONE:INT,INT,INT
diff --git a/addressbook/gui/component/select-names/e-select-names-model.c b/addressbook/gui/component/select-names/e-select-names-model.c
deleted file mode 100644
index 595b4a257e..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-model.c
+++ /dev/null
@@ -1,828 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: 
- *   Chris Lahey     <clahey@ximian.com>
- *   Jon Trowbidge   <trow@ximian.com>
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <gtk/gtkmarshal.h>
-#include <gtk/gtksignal.h>
-
-#include <gal/util/e-util.h>
-
-#include "e-select-names-model.h"
-#include "e-select-names-marshal.h"
-#include "addressbook/backend/ebook/e-card-simple.h"
-
-#define MAX_LENGTH 2047
-
-
-enum {
-	E_SELECT_NAMES_MODEL_CHANGED,
-	E_SELECT_NAMES_MODEL_RESIZED,
-	E_SELECT_NAMES_MODEL_LAST_SIGNAL
-};
-
-static guint e_select_names_model_signals[E_SELECT_NAMES_MODEL_LAST_SIGNAL] = { 0 };
-
-/* Object argument IDs */
-enum {
-	ARG_0,
-	ARG_CARD,
-};
-
-struct _ESelectNamesModelPrivate {
-	gchar *id;
-	gchar *title;
-
-	GList *data;  /* of EDestination */
-
-	gint limit;
-
-	gint freeze_count;
-	gboolean pending_changed;
-};
-
-static GObjectClass *parent_class = NULL;
-
-static void e_select_names_model_init (ESelectNamesModel *model);
-static void e_select_names_model_class_init (ESelectNamesModelClass *klass);
-
-static void e_select_names_model_dispose (GObject *object);
-
-GType
-e_select_names_model_get_type (void)
-{
-	static GType type = 0;
-
-	if (!type) {
-		static const GTypeInfo info =  {
-			sizeof (ESelectNamesModelClass),
-			NULL,           /* base_init */
-			NULL,           /* base_finalize */
-			(GClassInitFunc) e_select_names_model_class_init,
-			NULL,           /* class_finalize */
-			NULL,           /* class_data */
-			sizeof (ESelectNamesModel),
-			0,             /* n_preallocs */
-			(GInstanceInitFunc) e_select_names_model_init,
-		};
-
-		type = g_type_register_static (G_TYPE_OBJECT, "ESelectNamesModel", &info, 0);
-	}
-
-	return type;
-}
-
-static void
-e_select_names_model_class_init (ESelectNamesModelClass *klass)
-{
-	GObjectClass *object_class;
-
-	object_class = G_OBJECT_CLASS(klass);
-	parent_class = g_type_class_peek_parent (klass);
-
-	e_select_names_model_signals[E_SELECT_NAMES_MODEL_CHANGED] =
-		g_signal_new ("changed",
-			      G_OBJECT_CLASS_TYPE (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (ESelectNamesModelClass, changed),
-			      NULL, NULL,
-			      e_select_names_marshal_NONE__NONE,
-			      G_TYPE_NONE, 0);
-
-	e_select_names_model_signals[E_SELECT_NAMES_MODEL_RESIZED] =
-		g_signal_new ("resized",
-			      G_OBJECT_CLASS_TYPE (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (ESelectNamesModelClass, resized),
-			      NULL, NULL,
-			      e_select_names_marshal_NONE__INT_INT_INT,
-			      G_TYPE_NONE, 3,
-			      G_TYPE_INT,
-			      G_TYPE_INT,
-			      G_TYPE_INT);
-
-	klass->changed = NULL;
-
-	object_class->dispose = e_select_names_model_dispose;
-}
-
-/**
- * e_select_names_model_init:
- */
-static void
-e_select_names_model_init (ESelectNamesModel *model)
-{
-	model->priv = g_new0 (struct _ESelectNamesModelPrivate, 1);
-
-	model->priv->limit = -1;
-}
-
-static void
-e_select_names_model_dispose (GObject *object)
-{
-	ESelectNamesModel *model = E_SELECT_NAMES_MODEL (object);
-
-	if (model->priv) {
-		g_free (model->priv->title);
-		g_free (model->priv->id);
-
-		g_list_foreach (model->priv->data, (GFunc) g_object_unref, NULL);
-		g_list_free (model->priv->data);
-
-		g_free (model->priv);
-		model->priv = NULL;
-	}
-
-	if (G_OBJECT_CLASS (parent_class)->dispose)
-		G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-
-static void
-e_select_names_model_changed (ESelectNamesModel *model)
-{
-	if (model->priv->freeze_count > 0) {
-		model->priv->pending_changed = TRUE;
-	} else {
-		g_signal_emit (model, e_select_names_model_signals[E_SELECT_NAMES_MODEL_CHANGED], 0);
-		model->priv->pending_changed = FALSE;
-	}
-}
-
-static void
-destination_changed_proxy (EDestination *dest, gpointer closure)
-{
-	e_select_names_model_changed (E_SELECT_NAMES_MODEL (closure));
-}
-
-/** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **/
-
-ESelectNamesModel *
-e_select_names_model_new (void)
-{
-	ESelectNamesModel *model;
-	model = g_object_new (E_TYPE_SELECT_NAMES_MODEL, NULL);
-	return model;
-}
-
-ESelectNamesModel *
-e_select_names_model_duplicate (ESelectNamesModel *old)
-{
-	ESelectNamesModel *model = e_select_names_model_new ();
-	GList *iter;
-
-	model->priv->id = g_strdup (old->priv->id);
-	model->priv->title = g_strdup (old->priv->title);
-	
-	for (iter = old->priv->data; iter != NULL; iter = g_list_next (iter)) {
-		EDestination *dup = e_destination_copy (E_DESTINATION (iter->data));
-		e_select_names_model_append (model, dup);
-	}
-
-	model->priv->limit = old->priv->limit;
-
-	return model;
-}
-
-gchar *
-e_select_names_model_get_textification (ESelectNamesModel *model, const char *separator)
-{
-	gchar *text;
-
-	g_return_val_if_fail (model != NULL, NULL);
-	g_return_val_if_fail (E_IS_SELECT_NAMES_MODEL (model), NULL);
-	g_return_val_if_fail (separator && *separator, NULL);
-
-	if (model->priv->data == NULL) {
-		
-		text = g_strdup ("");
-
-	} else {
-		gchar **strv = g_new0 (gchar *, g_list_length (model->priv->data)+1);
-		gint i = 0;
-		GList *iter = model->priv->data;
-		
-		while (iter) {
-			EDestination *dest = E_DESTINATION (iter->data);
-			strv[i] = (gchar *) e_destination_get_textrep (dest, FALSE);
-			++i;
-			iter = g_list_next (iter);
-		}
-		
-		text = g_strjoinv (separator, strv);
-		
-		if (strlen(text) > MAX_LENGTH) {
-			text[MAX_LENGTH] = '\0';
-			text = g_realloc (text, MAX_LENGTH + 1);
-		}
-		
-		g_free (strv);
-		
-	}
-
-	return text;
-}
-
-gchar *
-e_select_names_model_get_address_text (ESelectNamesModel *model, const char *separator)
-{
-	gchar *addr_text;
-
-	g_return_val_if_fail (model != NULL, NULL);
-	g_return_val_if_fail (E_IS_SELECT_NAMES_MODEL (model), NULL);
-	g_return_val_if_fail (separator && *separator, NULL);
-
-	if (model->priv->data == NULL) {
-
-		addr_text = g_strdup ("");
-		
-	} else {
-		gchar **strv = g_new0 (gchar *, g_list_length (model->priv->data)+1);
-		gint i = 0;
-		GList *iter = model->priv->data;
-
-		while (iter) {
-			EDestination *dest = E_DESTINATION (iter->data);
-			strv[i] = (gchar *) e_destination_get_address (dest);
-			if (strv[i])
-				++i;
-			iter = g_list_next (iter);
-		}
-		
-		addr_text = g_strjoinv (separator, strv);
-		
-		g_free (strv);
-		
-	}
-
-	return addr_text;
-}
-
-gint
-e_select_names_model_count (ESelectNamesModel *model)
-{
-	g_return_val_if_fail (model != NULL, 0);
-	g_return_val_if_fail (E_IS_SELECT_NAMES_MODEL (model), 0);
-
-	return g_list_length (model->priv->data);
-}
-
-gint
-e_select_names_model_get_limit (ESelectNamesModel *model)
-{
-	g_return_val_if_fail (model != NULL, 0);
-	g_return_val_if_fail (E_IS_SELECT_NAMES_MODEL (model), 0);
-
-	return model->priv->limit;
-}
-
-void
-e_select_names_model_set_limit (ESelectNamesModel *model, gint limit)
-{
-	g_return_if_fail (model != NULL);
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (model));
-
-	model->priv->limit = MAX (limit, -1);
-}
-
-gboolean
-e_select_names_model_at_limit (ESelectNamesModel *model)
-{
-	g_return_val_if_fail (model != NULL, TRUE);
-	g_return_val_if_fail (E_IS_SELECT_NAMES_MODEL (model), TRUE);
-
-	return model->priv->limit >= 0 && g_list_length (model->priv->data) >= model->priv->limit;
-}
-
-const EDestination *
-e_select_names_model_get_destination (ESelectNamesModel *model, gint index)
-{
-	g_return_val_if_fail (model && E_IS_SELECT_NAMES_MODEL (model), NULL);
-	g_return_val_if_fail (0 <= index, NULL);
-	g_return_val_if_fail (index < g_list_length (model->priv->data), NULL);
-
-	return E_DESTINATION (g_list_nth_data (model->priv->data, index));
-}
-
-gchar *
-e_select_names_model_export_destinationv (ESelectNamesModel *model)
-{
-	EDestination **destv;
-	gchar *str;
-	gint i, len = 0;
-	GList *j;
-	g_return_val_if_fail (model && E_IS_SELECT_NAMES_MODEL (model), NULL);
-
-	len = g_list_length (model->priv->data);
-	destv = g_new0 (EDestination *, len+1);
-	
-	for (i=0, j = model->priv->data; j != NULL; j = g_list_next (j)) {
-		EDestination *dest = E_DESTINATION (j->data);
-
-		if (dest)
-			destv[i++] = dest;
-	}
-
-	str = e_destination_exportv (destv);
-	g_free (destv);
-
-	return str;
-}
-
-static
-void send_changed (EDestination *dest, ECard *card, gpointer closure)
-{
-	ESelectNamesModel *model = closure;
-	e_select_names_model_changed (model);
-}
-
-void
-e_select_names_model_import_destinationv (ESelectNamesModel *model,
-					  gchar *destinationv)
-{
-	EDestination **destv;
-	gint i;
-
-	g_return_if_fail (model && E_IS_SELECT_NAMES_MODEL (model));
-
-	destv = e_destination_importv (destinationv);
-
-	e_select_names_model_delete_all (model);
-
-	if (destv == NULL)
-		return;
-
-	for (i = 0; destv[i]; i++) {
-		e_destination_use_card (destv[i], send_changed, model);
-		e_select_names_model_append (model, destv[i]);
-	}
-	g_free (destv);
-}
-
-ECard *
-e_select_names_model_get_card (ESelectNamesModel *model, gint index)
-{
-	const EDestination *dest;
-
-	g_return_val_if_fail (model && E_IS_SELECT_NAMES_MODEL (model), NULL);
-	g_return_val_if_fail (0 <= index, NULL);
-	g_return_val_if_fail (index < g_list_length (model->priv->data), NULL);
-
-	dest = e_select_names_model_get_destination (model, index);
-	return dest ? e_destination_get_card (dest) : NULL;
-
-}
-
-const gchar *
-e_select_names_model_get_string (ESelectNamesModel *model, gint index)
-{
-	const EDestination *dest;
-
-	g_return_val_if_fail (model && E_IS_SELECT_NAMES_MODEL (model), NULL);
-	g_return_val_if_fail (0 <= index, NULL);
-	g_return_val_if_fail (index < g_list_length (model->priv->data), NULL);
-
-	dest = e_select_names_model_get_destination (model, index);
-	
-	return dest ? e_destination_get_textrep (dest, FALSE) : "";
-}
-
-static void
-connect_destination (ESelectNamesModel *model, EDestination *dest)
-{
-	g_signal_connect (dest,
-			  "changed",
-			  G_CALLBACK (destination_changed_proxy),
-			  model);
-}
-
-static void
-disconnect_destination (ESelectNamesModel *model, EDestination *dest)
-{
-	g_signal_handlers_disconnect_by_func (dest, destination_changed_proxy, model);
-}
-
-gboolean
-e_select_names_model_contains (ESelectNamesModel *model, const EDestination *dest)
-{
-	GList *iter;
-
-	g_return_val_if_fail (E_IS_SELECT_NAMES_MODEL (model), FALSE);
-	g_return_val_if_fail (E_IS_DESTINATION (dest), FALSE);
-
-	for (iter = model->priv->data; iter != NULL; iter = g_list_next (iter)) {
-		if (iter->data != NULL && e_destination_equal (dest, E_DESTINATION (iter->data)))
-			return TRUE;
-	}
-
-	return FALSE;
-}
-
-void
-e_select_names_model_insert (ESelectNamesModel *model, gint index, EDestination *dest)
-{
-	g_return_if_fail (model != NULL);
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (model));
-	g_return_if_fail (0 <= index && index <= g_list_length (model->priv->data));
-	g_return_if_fail (dest && E_IS_DESTINATION (dest));
-
-	if (e_select_names_model_at_limit (model)) {
-		/* FIXME: This is bad. */
-		g_object_unref (dest);
-		return;
-	}
-
-	connect_destination (model, dest);
-
-	model->priv->data = g_list_insert (model->priv->data, dest, index);
-	
-	g_object_ref (dest);
-
-	e_select_names_model_changed (model);
-}
-
-void
-e_select_names_model_append (ESelectNamesModel *model, EDestination *dest)
-{
-	g_return_if_fail (model && E_IS_SELECT_NAMES_MODEL (model));
-	g_return_if_fail (dest && E_IS_DESTINATION (dest));
-
-	if (e_select_names_model_at_limit (model)) {
-		/* FIXME: This is bad. */
-		g_object_unref (dest);
-		return;
-	}
-
-	connect_destination (model, dest);
-
-	model->priv->data = g_list_append (model->priv->data, dest);
-
-	g_object_ref  (dest);
-
-	e_select_names_model_changed (model);
-}
-
-void
-e_select_names_model_replace (ESelectNamesModel *model, gint index, EDestination *dest)
-{
-	GList *node;
-	const gchar *new_str, *old_str;
-	gint old_strlen=0, new_strlen=0;
-
-	g_return_if_fail (model != NULL);
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (model));
-	g_return_if_fail (model->priv->data == NULL || (0 <= index && index < g_list_length (model->priv->data)));
-	g_return_if_fail (dest && E_IS_DESTINATION (dest));
-	
-	new_str = e_destination_get_textrep (dest, FALSE);
-	new_strlen = new_str ? strlen (new_str) : 0;
-
-	if (model->priv->data == NULL) {
-
-		connect_destination (model, dest);
-
-		model->priv->data = g_list_append (model->priv->data, dest);
-		g_object_ref (dest);
-
-	} else {
-		
-		node = g_list_nth (model->priv->data, index);
-
-		if (node->data != dest) {
-
-			disconnect_destination (model, E_DESTINATION (node->data));
-			connect_destination (model, dest);
-
-			old_str = e_destination_get_textrep (E_DESTINATION (node->data), FALSE);
-			old_strlen = old_str ? strlen (old_str) : 0;
-
-			g_object_unref (node->data);
-
-			node->data = dest;
-			g_object_ref (dest);
-		}
-	}
-
-	e_select_names_model_changed (model);
-
-	g_signal_emit (model, e_select_names_model_signals[E_SELECT_NAMES_MODEL_RESIZED], 0,
-		       index, old_strlen, new_strlen);
-}
-
-void
-e_select_names_model_delete (ESelectNamesModel *model, gint index)
-{
-	GList *node;
-	EDestination *dest;
-
-	g_return_if_fail (model != NULL);
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (model));
-	g_return_if_fail (0 <= index && index < g_list_length (model->priv->data));
-	
-	node = g_list_nth (model->priv->data, index);
-	dest = E_DESTINATION (node->data);
-
-	disconnect_destination (model, dest);
-	g_object_unref (dest);
-
-	model->priv->data = g_list_remove_link (model->priv->data, node);
-	g_list_free_1 (node);
-
-	e_select_names_model_changed (model);
-}
-
-void
-e_select_names_model_clean (ESelectNamesModel *model, gboolean clean_last_entry)
-{
-	GList *iter, *next;
-	gboolean changed = FALSE;
-
-	g_return_if_fail (model != NULL && E_IS_SELECT_NAMES_MODEL (model));
-
-	iter = model->priv->data;
-
-	while (iter) {
-		EDestination *dest;
-
-		next = g_list_next (iter);
-
-		if (next == NULL && !clean_last_entry)
-			break;
-		
-		dest = iter->data ? E_DESTINATION (iter->data) : NULL;
-
-		if (dest == NULL || e_destination_is_empty (dest)) {
-			if (dest) {
-				disconnect_destination (model, dest);
-				g_object_unref (dest);
-			}
-			model->priv->data = g_list_remove_link (model->priv->data, iter);
-			g_list_free_1 (iter);
-			changed = TRUE;
-		}
-		
-		iter = next;
-	}
-
-	if (changed)
-		e_select_names_model_changed (model);
-}
-
-static void
-delete_all_iter (gpointer data, gpointer closure)
-{
-	disconnect_destination (E_SELECT_NAMES_MODEL (closure), E_DESTINATION (data));
-	g_object_unref (data);
-}
-
-void
-e_select_names_model_delete_all (ESelectNamesModel *model)
-{
-	g_return_if_fail (model != NULL && E_IS_SELECT_NAMES_MODEL (model));
-
-	g_list_foreach (model->priv->data, delete_all_iter, model);
-	g_list_free (model->priv->data);
-	model->priv->data = NULL;
-
-	e_select_names_model_changed (model);
-}
-
-void
-e_select_names_model_overwrite_copy (ESelectNamesModel *dest, ESelectNamesModel *src)
-{
-	gint i, len;
-
-	g_return_if_fail (dest && E_IS_SELECT_NAMES_MODEL (dest));
-	g_return_if_fail (src && E_IS_SELECT_NAMES_MODEL (src));
-
-	if (src == dest)
-		return;
-
-	e_select_names_model_delete_all (dest);
-	len = e_select_names_model_count (src);
-	for (i = 0; i < len; ++i) {
-		const EDestination *d = e_select_names_model_get_destination (src, i);
-		if (d)
-			e_select_names_model_append (dest, e_destination_copy (d));
-	}
-}
-
-void
-e_select_names_model_merge (ESelectNamesModel *dest, ESelectNamesModel *src)
-{
-	gint i, len;
-
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (dest));
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (src));
-
-	if (src == dest)
-		return;
-
-	len = e_select_names_model_count (src);
-	for (i = 0; i < len; ++i) {
-		const EDestination *d = e_select_names_model_get_destination (src, i);
-		if (d && !e_select_names_model_contains (dest, d))
-			e_select_names_model_append (dest, e_destination_copy (d));
-	}
-}
-
-void
-e_select_names_model_name_pos (ESelectNamesModel *model, gint seplen, gint index, gint *pos, gint *length)
-{
-	gint rp = 0, i, len = 0;
-	GList *iter;
-	const gchar *str;
-
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (model));
-	g_return_if_fail (seplen > 0);
-
-	i = 0;
-	iter = model->priv->data;
-	while (iter && i <= index) {
-		rp += len + (i > 0 ? seplen : 0);
-		str = e_destination_get_textrep (E_DESTINATION (iter->data), FALSE);
-		len = str ? strlen (str) : 0;
-		++i;
-		iter = g_list_next (iter);
-	}
-	
-	if (i <= index) {
-		rp = -1;
-		len = 0;
-	}
-	
-	if (pos)
-		*pos = rp;
-	if (length)
-		*length = len;
-}
-
-void
-e_select_names_model_text_pos (ESelectNamesModel *model, gint seplen, gint pos, gint *index, gint *start_pos, gint *length)
-{
-	GList *iter;
-	const gchar *str;
-	gint len = 0, i = 0, sp = 0, adj = 0;
-
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (model));
-	g_return_if_fail (seplen > 0);
-
-	iter = model->priv->data;
-
-	while (iter != NULL) {
-		str = e_destination_get_textrep (E_DESTINATION (iter->data), FALSE);
-		len = str ? strlen (str) : 0;
-
-		if (sp <= pos && pos <= sp + len + adj) {
-			break;
-		}
-
-		sp += len + adj + 1;
-		adj = seplen-1;
-		++i;
-
-		iter = g_list_next (iter);
-	}
-
-	if (i != 0)
-		sp += seplen-1; /* skip past "magic space" */
-
-	if (iter == NULL) {
-#if 0
-		g_print ("text_pos ended NULL\n");
-#endif
-		i = -1;
-		sp = -1;
-		len = 0;
-	} else {
-#if 0
-		g_print ("text_pos got index %d\n", i);
-#endif
-	}
-
-	if (index)
-		*index = i;
-	if (start_pos)
-		*start_pos = sp;
-	if (length)
-		*length = len;
-}
-
-void
-e_select_names_model_cardify (ESelectNamesModel *model, EBook *book, gint index, gint delay)
-{
-	EDestination *dest;
-
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (model));
-	g_return_if_fail (book == NULL || E_IS_BOOK (book));
-	g_return_if_fail (0 <= index && index < g_list_length (model->priv->data));
-
-	dest = E_DESTINATION (g_list_nth_data (model->priv->data, index));
-
-	if (!e_destination_is_empty (dest)) {
-
-		if (delay > 0)
-			e_destination_cardify_delayed (dest, book, delay);
-		else
-			e_destination_cardify (dest, book);
-	}
-}
-
-gboolean
-e_select_names_model_uncardify (ESelectNamesModel *model, gint index)
-{
-	EDestination *dest;
-	gboolean rv = FALSE;
-
-	g_return_val_if_fail (E_IS_SELECT_NAMES_MODEL (model), FALSE);
-	g_return_val_if_fail (0 <= index && index < g_list_length (model->priv->data), FALSE);
-
-	dest = E_DESTINATION (g_list_nth_data (model->priv->data, index));
-
-	if (!e_destination_is_empty (dest)) {
-		EDestination *cpy_dest = e_destination_copy (dest);
-
-		rv = e_destination_uncardify (cpy_dest);
-
-		if (rv) {
-			e_select_names_model_replace (model, index, cpy_dest);
-		}
-		
-	}
-
-	return rv;
-}
-
-void
-e_select_names_model_cancel_cardify (ESelectNamesModel *model, gint index)
-{
-	EDestination *dest;
-
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (model));
-	g_return_if_fail (0 <= index && index < g_list_length (model->priv->data));
-
-	dest = E_DESTINATION (g_list_nth_data (model->priv->data, index));
-	
-	e_destination_cancel_cardify (dest);
-}
-
-void
-e_select_names_model_cardify_all (ESelectNamesModel *model, EBook *book, gint delay)
-{
-	GList *iter;
-
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (model));
-	g_return_if_fail (book == NULL || E_IS_BOOK (book));
-
-	for (iter = model->priv->data; iter != NULL; iter = g_list_next (iter)) {
-		EDestination *dest = E_DESTINATION (iter->data);
-		if (!e_destination_is_empty (dest)) {
-
-			if (delay > 0)
-				e_destination_cardify_delayed (dest, book, delay);
-			else
-				e_destination_cardify (dest, book);
-		}
-	}
-}
-
-void
-e_select_names_model_cancel_cardify_all (ESelectNamesModel *model)
-{
-	GList *iter;
-
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (model));
-
-	for (iter = model->priv->data; iter != NULL; iter = g_list_next (iter)) {
-		EDestination *dest = E_DESTINATION (iter->data);
-		e_destination_cancel_cardify (dest);
-	}
-}
-
-void
-e_select_names_model_freeze (ESelectNamesModel *model)
-{
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (model));
-	
-	++model->priv->freeze_count;
-}
-
-void
-e_select_names_model_thaw (ESelectNamesModel *model)
-{
-	g_return_if_fail (E_IS_SELECT_NAMES_MODEL (model));
-	g_return_if_fail (model->priv->freeze_count > 0);
-
-	--model->priv->freeze_count;
-	if (model->priv->pending_changed)
-		e_select_names_model_changed (model);
-}
diff --git a/addressbook/gui/component/select-names/e-select-names-model.h b/addressbook/gui/component/select-names/e-select-names-model.h
deleted file mode 100644
index 8a3c5381b7..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-model.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Authors:
- *   Chris Lahey <clahey@ximian.com>
- *   Jon Trowbridge <trow@ximian.com>
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- */
-
-#ifndef __E_SELECT_NAMES_MODEL_H__
-#define __E_SELECT_NAMES_MODEL_H__
-
-#include <time.h>
-#include <gtk/gtkobject.h>
-#include <stdio.h>
-#include <e-util/e-list.h>
-#include <addressbook/backend/ebook/e-card.h>
-#include <addressbook/backend/ebook/e-destination.h>
-
-#define E_TYPE_SELECT_NAMES_MODEL            (e_select_names_model_get_type ())
-#define E_SELECT_NAMES_MODEL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_SELECT_NAMES_MODEL, ESelectNamesModel))
-#define E_SELECT_NAMES_MODEL_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_SELECT_NAMES_MODEL, ESelectNamesModelClass))
-#define E_IS_SELECT_NAMES_MODEL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_SELECT_NAMES_MODEL))
-#define E_IS_SELECT_NAMES_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), E_TYPE_SELECT_NAMES_MODEL))
-
-typedef struct _ESelectNamesModel ESelectNamesModel;
-typedef struct _ESelectNamesModelClass ESelectNamesModelClass;
-struct _ESelectNamesModelPrivate;
-
-struct _ESelectNamesModel {
-	GObject object;
-	
-	struct _ESelectNamesModelPrivate *priv;
-};
-
-struct _ESelectNamesModelClass {
-	GObjectClass parent_class;
-
-	void (*changed) (ESelectNamesModel *model);
-	void (*resized) (ESelectNamesModel *model, gint index, gint old_len, gint new_len);
-};
-
-GType   e_select_names_model_get_type  (void);
-
-ESelectNamesModel *e_select_names_model_new       (void);
-ESelectNamesModel *e_select_names_model_duplicate (ESelectNamesModel *old);
-
-gchar             *e_select_names_model_get_textification (ESelectNamesModel *model, const char *separator);
-gchar             *e_select_names_model_get_address_text  (ESelectNamesModel *model, const char *separator);
-
-gint                e_select_names_model_count               (ESelectNamesModel *model);
-gint                e_select_names_model_get_limit           (ESelectNamesModel *model);
-void                e_select_names_model_set_limit           (ESelectNamesModel *model, gint limit);
-gboolean            e_select_names_model_at_limit            (ESelectNamesModel *model);
-
-const EDestination *e_select_names_model_get_destination     (ESelectNamesModel *model, gint index);
-gchar              *e_select_names_model_export_destinationv (ESelectNamesModel *model);
-void                e_select_names_model_import_destinationv (ESelectNamesModel *model,
-							      gchar *destinationv);
-ECard              *e_select_names_model_get_card            (ESelectNamesModel *model, gint index);
-const gchar        *e_select_names_model_get_string          (ESelectNamesModel *model, gint index);
-
-gboolean      e_select_names_model_contains       (ESelectNamesModel *model, const EDestination *dest);
-
-void          e_select_names_model_insert         (ESelectNamesModel *model, gint index, EDestination *dest);
-void          e_select_names_model_append         (ESelectNamesModel *model, EDestination *dest);
-void          e_select_names_model_replace        (ESelectNamesModel *model, gint index, EDestination *dest);
-void          e_select_names_model_delete         (ESelectNamesModel *model, gint index);
-void          e_select_names_model_delete_all     (ESelectNamesModel *model);
-void          e_select_names_model_overwrite_copy (ESelectNamesModel *dest, ESelectNamesModel *src);
-void          e_select_names_model_merge          (ESelectNamesModel *dest, ESelectNamesModel *src);
-
-void          e_select_names_model_clean      (ESelectNamesModel *model, gboolean clean_last_entry);
-
-void          e_select_names_model_name_pos (ESelectNamesModel *model, gint seplen, gint index, gint *pos, gint *length);
-void          e_select_names_model_text_pos (ESelectNamesModel *model, gint seplen, gint pos, gint *index, gint *start_pos, gint *length);
-
-void          e_select_names_model_cardify            (ESelectNamesModel *model, EBook *book, gint index, gint delay);
-gboolean      e_select_names_model_uncardify          (ESelectNamesModel *model, gint index);
-void          e_select_names_model_cancel_cardify     (ESelectNamesModel *model, gint index);
-void          e_select_names_model_cardify_all        (ESelectNamesModel *model, EBook *book, gint delay);
-void          e_select_names_model_cancel_cardify_all (ESelectNamesModel *model);
-
-/* This is a mildly annoying freeze/thaw pair, in that it only applies to the 'changed'
-   signal and not to 'resized'.  This could cause unexpected results in some cases. */
-void          e_select_names_model_freeze (ESelectNamesModel *model);
-void          e_select_names_model_thaw   (ESelectNamesModel *model);
-
-
-#endif /* ! __E_SELECT_NAMES_MODEL_H__ */
diff --git a/addressbook/gui/component/select-names/e-select-names-popup.c b/addressbook/gui/component/select-names/e-select-names-popup.c
deleted file mode 100644
index d7fabd9426..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-popup.c
+++ /dev/null
@@ -1,395 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * e-select-names-popup.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Developed by Jon Trowbridge <trow@ximian.com>
- */
-
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- * 
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <string.h>
-
-#include <glib.h>
-#include <gtk/gtkimage.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtkimagemenuitem.h>
-#include <gtk/gtkcheckmenuitem.h>
-#include <gtk/gtkradiomenuitem.h>
-#include <gtk/gtkseparatormenuitem.h>
-#include <gtk/gtklabel.h>
-#include <libgnome/gnome-i18n.h>
-
-#include <addressbook/backend/ebook/e-book-util.h>
-#include <addressbook/gui/contact-editor/e-contact-editor.h>
-#include <addressbook/gui/contact-editor/e-contact-quick-add.h>
-#include "e-addressbook-util.h"
-#include "e-select-names-popup.h"
-
-#define LIST_ICON_FILENAME "contact-list-16.png"
-#define CONTACT_ICON_FILENAME "evolution-contacts-mini.png"
-
-typedef struct _PopupInfo PopupInfo;
-struct _PopupInfo {
-	ESelectNamesTextModel *text_model;
-	EDestination *dest;
-	gint pos;
-	gint index;
-};
-
-static PopupInfo *
-popup_info_new (ESelectNamesTextModel *text_model, EDestination *dest, gint pos, gint index)
-{
-	PopupInfo *info = g_new0 (PopupInfo, 1);
-	info->text_model = text_model;
-	info->dest = dest;
-	info->pos = pos;
-	info->index = index;
-
-	if (text_model)
-		g_object_ref (text_model);
-
-	if (dest)
-		g_object_ref (dest);
-
-	return info;
-}
-
-static void
-popup_info_free (PopupInfo *info)
-{
-	if (info) {
-		
-		if (info->text_model)
-			g_object_unref (info->text_model);
-
-		if (info->dest)
-			g_object_unref (info->dest);
-
-		g_free (info);
-	}
-}
-
-static void
-popup_info_cleanup (GtkWidget *w, gpointer info)
-{
-	popup_info_free ((PopupInfo *) info);
-}
-
-/* You are in a maze of twisty little callbacks, all alike... */
-
-static void
-make_contact_editor_cb (EBook *book, gpointer user_data)
-{
-	if (book) {
-		EDestination *dest = E_DESTINATION (user_data);
-		ECard *card;
-
-		card = (ECard *) e_destination_get_card (dest);
-		if (e_card_evolution_list (card)) {
-			EContactListEditor *ce;
-			ce = e_addressbook_show_contact_list_editor (book, card, FALSE, TRUE);
-			e_contact_list_editor_raise (ce);
-		}
-		else {
-			EContactEditor *ce;
-			ce = e_addressbook_show_contact_editor (book, card, FALSE, TRUE);
-			e_contact_editor_raise (ce);
-		}
-		g_object_unref (dest);
-	}
-}
-
-#if TOO_MANY_MENU_ITEMS
-static void
-edit_contact_info_cb (GtkWidget *w, gpointer user_data)
-{
-	PopupInfo *info = (PopupInfo *) user_data;
-	if (info == NULL)
-		return;
-
-	g_object_ref (info->dest);
-	e_book_use_default_book (make_contact_editor_cb, (gpointer) info->dest);
-}
-#endif
-
-static void
-change_email_num_cb (GtkWidget *w, gpointer user_data)
-{
-	PopupInfo *info = (PopupInfo *) user_data;
-	gint n;
-	EDestination *dest;
-	
-	if (info == NULL) 
-		return;
-
-	if (! GTK_CHECK_MENU_ITEM (w)->active)
-		return;
-
-	n = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (w), "number"));
-
-	if (n != e_destination_get_email_num (info->dest)) {
-		dest = e_destination_new ();
-		e_destination_set_card (dest, e_destination_get_card (info->dest), n);
-		e_select_names_model_replace (info->text_model->source, info->index, dest);
-	}
-}
-
-#if TOO_MANY_MENU_ITEMS
-static void
-remove_recipient_cb (GtkWidget *w, gpointer user_data)
-{
-	PopupInfo *info = (PopupInfo *) user_data;
-	e_select_names_model_delete (info->text_model->source, info->index);
-}
-
-static void
-remove_all_recipients_cb (GtkWidget *w, gpointer user_data)
-{
-	PopupInfo *info = (PopupInfo *) user_data;
-	e_select_names_model_delete_all (info->text_model->source);
-}
-
-static void
-toggle_html_mail_cb (GtkWidget *w, gpointer user_data)
-{
-	PopupInfo *info = (PopupInfo *) user_data;
-	GtkCheckMenuItem *item = GTK_CHECK_MENU_ITEM (w);
-	const EDestination *dest;
-
-	if (info == NULL)
-		return;
-
-	dest = info->dest;
-
-	item = GTK_CHECK_MENU_ITEM (item);
-	e_destination_set_html_mail_pref ((EDestination *) dest, item->active);
-}
-#endif
-
-static void
-populate_popup_card (GtkWidget *pop, gboolean list, PopupInfo *info)
-{
-	GtkWidget *image;
-	ECard *card;
-	EIterator *iterator;
-	GtkWidget *menuitem;
-
-	card = e_destination_get_card (info->dest);
-
-#if TOO_MANY_MENU_ITEMS
-	menuitem = gtk_separator_menu_item_new();
-	gtk_widget_show (menuitem);
-	gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-
-	menuitem = gtk_menu_item_new_with_label (_("Remove All"));
-	g_signal_connect (menuitem, "activate",
-			  G_CALLBACK (remove_all_recipients_cb),
-			  info);
-	gtk_widget_show (menuitem);
-	gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-
-	menuitem = gtk_menu_item_new_with_label (_("Remove"));
-	g_signal_connect (menuitem, "activate",
-			  G_CALLBACK (remove_recipient_cb),
-			  info);
-	gtk_widget_show (menuitem);
-	gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-
-	menuitem = gtk_menu_item_new_with_label (list ? _("View Contact List") : _("View Contact Info"));
-	g_signal_connect (menuitem, "activate",
-			  G_CALLBACK (edit_contact_info_cb),
-			  info);
-	gtk_widget_show (menuitem);
-	gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-
-	menuitem = gtk_check_menu_item_new_with_label (_("Send HTML Mail?"));
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem),
-					e_destination_get_html_mail_pref (info->dest));
-	g_signal_connect (menuitem, "toggled",
-			  G_CALLBACK (toggle_html_mail_cb),
-			  info);
-	gtk_widget_show (menuitem);
-	gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-#endif
-
-	if (card->email) {
-		menuitem = gtk_separator_menu_item_new();
-		gtk_widget_show (menuitem);
-		gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-		
-		if (e_list_length (card->email) > 1) {
-			GSList *radiogroup = NULL;
-			gint n = e_destination_get_email_num (info->dest);
-			gint j = e_list_length (card->email) - 1;
-
-			iterator = e_list_get_iterator (card->email);
-			for (e_iterator_last (iterator); e_iterator_is_valid (iterator); e_iterator_prev (iterator)) {
-				char *email = (char *)e_iterator_get (iterator);
-				char *label = NULL;
-
-				if (!strncmp (email, "<?xml", 5)) {
-					EDestination *dest = e_destination_import (email);
-					if (dest) {
-						label = g_strdup (e_destination_get_textrep (dest, TRUE));
-						g_object_unref (dest);
-					}
-				}
-				else {
-					label = g_strdup (email);
-				}
-
-				if (list) {
-					menuitem = gtk_menu_item_new_with_label (label);
-				}
-				else {
-					menuitem = gtk_radio_menu_item_new_with_label (radiogroup, label);
-					g_signal_connect (menuitem, "toggled",
-							  G_CALLBACK (change_email_num_cb),
-							  info);
-					if (j == n) 
-						gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), TRUE);
-
-					g_object_set_data (G_OBJECT (menuitem), "number", GINT_TO_POINTER (j));
-					radiogroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem));
-				}
-
-				gtk_widget_show (menuitem);
-				gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-
-				j--;
-
-				g_free (label);
-			}
-
-			g_object_unref (iterator);
-		} else {
-			menuitem = gtk_menu_item_new_with_label (e_destination_get_email (info->dest));
-			gtk_widget_show (menuitem);
-			gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-		}
-	}
-
-	menuitem = gtk_separator_menu_item_new ();
-	gtk_widget_show (menuitem);
-	gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-
-	image = gtk_image_new_from_file (list
-					 ? EVOLUTION_IMAGESDIR "/" LIST_ICON_FILENAME
-					 : EVOLUTION_IMAGESDIR "/" CONTACT_ICON_FILENAME);
-	gtk_widget_show (image);
-	menuitem = gtk_image_menu_item_new_with_label (e_destination_get_name (info->dest));
-	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem),
-				       image);
-	gtk_widget_show (menuitem);
-	gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-}
-
-static void
-quick_add_cb (GtkWidget *w, gpointer user_data)
-{
-	PopupInfo *info = (PopupInfo *) user_data;
-	e_contact_quick_add_free_form (e_destination_get_address (info->dest), NULL, NULL);
-}
-
-static void
-populate_popup_nocard (GtkWidget *pop, PopupInfo *info)
-{
-	const gchar *str;
-	GtkWidget *menuitem;
-
-	menuitem = gtk_separator_menu_item_new ();
-	gtk_widget_show (menuitem);
-	gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-
-	menuitem = gtk_menu_item_new_with_label (_("Add to Contacts"));
-	gtk_widget_show (menuitem);
-	gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-	g_signal_connect (menuitem, "activate",
-			  G_CALLBACK (quick_add_cb),
-			  info);
-
-#if TOO_MANY_MENU_ITEMS
-	menuitem = gtk_check_menu_item_new_with_label (_("Send HTML Mail?"));
-	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem),
-					e_destination_get_html_mail_pref (info->dest));
-	g_signal_connect (menuitem, "toggled",
-			  G_CALLBACK (toggle_html_mail_cb),
-			  info);
-	gtk_widget_show (menuitem);
-	gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-#endif
-
-	menuitem = gtk_separator_menu_item_new ();
-	gtk_widget_show (menuitem);
-	gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-
-	str = e_destination_get_name (info->dest);
-	if (! (str && *str))
-		str = e_destination_get_email (info->dest);
-	if (! (str && *str))
-		str = _("Unnamed Contact");
-
-	menuitem = gtk_menu_item_new_with_label (str);
-	gtk_widget_show (menuitem);
-	gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
-}
-
-void
-e_select_names_populate_popup (GtkWidget *menu, ESelectNamesTextModel *text_model,
-			       GdkEventButton *ev, gint pos, GtkWidget *for_widget)
-{
-	ESelectNamesModel *model;
-	PopupInfo *info;
-	EDestination *dest;
-	gint index;
-
-	g_return_if_fail (GTK_IS_MENU_SHELL (menu));
-	g_return_if_fail (E_IS_SELECT_NAMES_TEXT_MODEL (text_model));
-	g_return_if_fail (ev);
-	g_return_if_fail (0 <= pos);
-
-	model = text_model->source;
-
-	e_select_names_model_text_pos (model, text_model->seplen, pos, &index, NULL, NULL);
-	if (index < 0 || index >= e_select_names_model_count (model))
-		return;
-
-	/* XXX yuck, why does this return a const? */
-	dest = (EDestination *)e_select_names_model_get_destination (model, index);
-	if (e_destination_is_empty (dest))
-		return;
-
-	info = popup_info_new (text_model, dest, pos, index);
-	
-	if (e_destination_contains_card (dest)) {
-		populate_popup_card (menu, e_destination_is_evolution_list (dest), info);
-	} else {
-		populate_popup_nocard (menu, info);
-	}
-
-	/* Clean up our info item after we've made our selection. */
-	g_signal_connect (menu,
-			  "selection-done",
-			  G_CALLBACK (popup_info_cleanup),
-			  info);
-}
diff --git a/addressbook/gui/component/select-names/e-select-names-popup.h b/addressbook/gui/component/select-names/e-select-names-popup.h
deleted file mode 100644
index 531275190b..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-popup.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * e-select-names-popup.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Developed by Jon Trowbridge <trow@ximian.com>
- */
-
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- * 
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- */
-
-#ifndef __E_SELECT_NAMES_POPUP_H__
-#define __E_SELECT_NAMES_POPUP_H__
-
-#include "e-select-names-text-model.h"
-
-void e_select_names_populate_popup (GtkWidget *menu, ESelectNamesTextModel *text_model,
-				    GdkEventButton *ev, gint pos, GtkWidget *for_widget);
-
-#endif /* __E_SELECT_NAMES_POPUP_H__ */
-
diff --git a/addressbook/gui/component/select-names/e-select-names-section.etspec b/addressbook/gui/component/select-names/e-select-names-section.etspec
deleted file mode 100644
index 9d7b038892..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-section.etspec
+++ /dev/null
@@ -1,7 +0,0 @@
-<ETableSpecification no-headers="true" cursor-mode="line" alternating-row-colors="false">
-  <ETableColumn model_col= "0" _title="Name" expansion="1.0" minimum_width="20" resizable="true" cell="string" compare="collate" search="string"/>
-    <ETableState>
-	<column source="0"/>
-	    <grouping> <leaf column="0" ascending="true"/> </grouping>
-    </ETableState>
-</ETableSpecification>
diff --git a/addressbook/gui/component/select-names/e-select-names-table-model.c b/addressbook/gui/component/select-names/e-select-names-table-model.c
deleted file mode 100644
index 1c55c3804d..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-table-model.c
+++ /dev/null
@@ -1,369 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: 
- *   Chris Lahey     <clahey@ximian.com>
- *
- * Copyright (C) 2000 Ximian, Inc.
- */
-
-#include <config.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gtk/gtksignal.h>
-#include <gal/util/e-util.h>
-#include <libgnome/gnome-i18n.h>
-
-#include "e-select-names-table-model.h"
-#include "addressbook/backend/ebook/e-card-simple.h"
-
-/* Object argument IDs */
-enum {
-	PROP_0,
-	PROP_SOURCE,
-};
-
-static void e_select_names_table_model_init       (ESelectNamesTableModel *model);
-static void e_select_names_table_model_class_init (ESelectNamesTableModelClass *klass);
-
-static void e_select_names_table_model_dispose      (GObject *object);
-static void e_select_names_table_model_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void e_select_names_table_model_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-static void e_select_names_table_model_model_changed (ESelectNamesModel *source,
-						      ESelectNamesTableModel *model);
-
-static ETableModelClass *parent_class = NULL;
-
-static void
-e_select_names_table_model_add_source (ESelectNamesTableModel *model,
-				       ESelectNamesModel     *source)
-{
-	model->source = source;
-	if (model->source)
-		g_object_ref(model->source);
-	model->source_changed_id = g_signal_connect(model->source, "changed",
-						    G_CALLBACK(e_select_names_table_model_model_changed),
-						    model);
-}
-
-static void
-e_select_names_table_model_drop_source (ESelectNamesTableModel *model)
-{
-	if (model->source_changed_id)
-		g_signal_handler_disconnect(model->source, model->source_changed_id);
-	if (model->source)
-		g_object_unref(model->source);
-	model->source = NULL;
-	model->source_changed_id = 0;
-}
-
-/**
- * e_select_names_table_model_get_type:
- * @void: 
- * 
- * Registers the &ESelectNamesTableModel class if necessary, and returns the type ID
- * associated to it.
- * 
- * Return value: The type ID of the &ESelectNamesTableModel class.
- **/
-GType
-e_select_names_table_model_get_type (void)
-{
-	static GType type = 0;
-
-	if (!type) {
-		static const GTypeInfo info =  {
-			sizeof (ESelectNamesTableModelClass),
-			NULL,           /* base_init */
-			NULL,           /* base_finalize */
-			(GClassInitFunc) e_select_names_table_model_class_init,
-			NULL,           /* class_finalize */
-			NULL,           /* class_data */
-			sizeof (ESelectNamesTableModel),
-			0,             /* n_preallocs */
-			(GInstanceInitFunc) e_select_names_table_model_init,
-		};
-
-		type = g_type_register_static (e_table_model_get_type (), "ESelectNamesTableModel", &info, 0);
-	}
-
-	return type;
-}
-
-/**
- * e_select_names_table_model_new:
- * @VCard: a string in vCard format
- *
- * Returns: a new #ESelectNamesTableModel that wraps the @VCard.
- */
-ETableModel *
-e_select_names_table_model_new (ESelectNamesModel *source)
-{
-	ETableModel *model = g_object_new (E_TYPE_SELECT_NAMES_TABLE_MODEL, NULL);
-	g_object_set(model,
-		     "source", source,
-		     NULL);
-	return model;
-}
-
-static void
-fill_in_info (ESelectNamesTableModel *model)
-{
-	if (model->source) {
-		int count = e_select_names_model_count (model->source);
-		gint i;
-
-		model->count = count;
-		model->data = g_new(ESelectNamesTableModelData, count);
-
-		for (i = 0; i < count; ++i) {
-			const EDestination *dest = e_select_names_model_get_destination (model->source, i);
-			ECard *card = dest ? e_destination_get_card (dest) : NULL;
-
-			if (card) {
-				ECardSimple *simple = e_card_simple_new(card);
-				model->data[i].name =  e_card_simple_get(simple, E_CARD_SIMPLE_FIELD_NAME_OR_ORG);
-				if (model->data[i].name == 0)
-					model->data[i].name = g_strdup("");
-				model->data[i].email = e_card_simple_get(simple, E_CARD_SIMPLE_FIELD_EMAIL);
-				if (model->data[i].email == 0)
-					model->data[i].email = g_strdup("");
-				g_object_unref(simple);
-			} else {
-				const gchar *name = e_destination_get_name (dest);
-				const gchar *email = e_destination_get_email (dest);
-
-				model->data[i].name =  g_strdup (name && *name ? name : email);
-				model->data[i].email = g_strdup (email);
-			}
-		}
-	} else {
-		model->count = 0;
-	}
-}
-
-static void
-clear_info (ESelectNamesTableModel *model)
-{
-	if (model->data) {
-		int i;
-		for (i = 0; i < model->count; i++) {
-			g_free(model->data[i].name);
-			g_free(model->data[i].email);
-		}
-		g_free(model->data);
-		model->data = NULL;
-	}
-
-	model->count = -1;
-}
-
-/*
- * ESelectNamesTableModel lifecycle management and vcard loading/saving.
- */
-
-static void
-e_select_names_table_model_dispose (GObject *object)
-{
-	ESelectNamesTableModel *model;
-	
-	model = E_SELECT_NAMES_TABLE_MODEL (object);
-
-	e_select_names_table_model_drop_source (model);
-	clear_info(model);
-
-	if (G_OBJECT_CLASS (parent_class)->dispose)
-		G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-/* This function returns the number of columns in our ETableModel. */
-static int
-e_select_names_table_model_col_count (ETableModel *etc)
-{
-	return 3;
-}
-
-/* This function returns the number of rows in our ETableModel. */
-static int
-e_select_names_table_model_row_count (ETableModel *etc)
-{
-	ESelectNamesTableModel *e_select_names_table_model = E_SELECT_NAMES_TABLE_MODEL(etc);
-	if (e_select_names_table_model->count == -1) {
-		if (e_select_names_table_model->source) {
-			fill_in_info(e_select_names_table_model);
-		} else {
-			return 0;
-		}
-	}
-	return e_select_names_table_model->count;
-}
-
-/* This function returns the value at a particular point in our ETableModel. */
-static void *
-e_select_names_table_model_value_at (ETableModel *etc, int col, int row)
-{
-	ESelectNamesTableModel *e_select_names_table_model = E_SELECT_NAMES_TABLE_MODEL(etc);
-	if (e_select_names_table_model->data == NULL) {
-		fill_in_info(e_select_names_table_model);
-	}
-	switch (col) {
-	case 0:
-		if (e_select_names_table_model->data[row].name == NULL) {
-			fill_in_info(e_select_names_table_model);
-		}
-		return e_select_names_table_model->data[row].name;
-		break;
-	case 1:
-		if (e_select_names_table_model->data[row].email == NULL) {
-			fill_in_info(e_select_names_table_model);
-		}
-		return e_select_names_table_model->data[row].email;
-		break;
-	case 2:
-		/* underline column*/
-		return (void*)TRUE;
-		break;
-	}
-	return "";
-}
-
-/* This function sets the value at a particular point in our ETableModel. */
-static void
-e_select_names_table_model_set_value_at (ETableModel *etc, int col, int row, const void *val)
-{
-}
-
-/* This function returns whether a particular cell is editable. */
-static gboolean
-e_select_names_table_model_is_cell_editable (ETableModel *etc, int col, int row)
-{
-	return FALSE;
-}
-
-/* This function duplicates the value passed to it. */
-static void *
-e_select_names_table_model_duplicate_value (ETableModel *etc, int col, const void *value)
-{
-	return g_strdup(value);
-}
-
-/* This function frees the value passed to it. */
-static void
-e_select_names_table_model_free_value (ETableModel *etc, int col, void *value)
-{
-	g_free(value);
-}
-
-static void *
-e_select_names_table_model_initialize_value (ETableModel *etc, int col)
-{
-	return g_strdup("");
-}
-
-static gboolean
-e_select_names_table_model_value_is_empty (ETableModel *etc, int col, const void *value)
-{
-	return !(value && *(char *)value);
-}
-
-static char *
-e_select_names_table_model_value_to_string (ETableModel *etc, int col, const void *value)
-{
-	return g_strdup(value);
-}
-
-static void
-e_select_names_table_model_model_changed (ESelectNamesModel     *source,
-					  ESelectNamesTableModel *model)
-{
-	e_table_model_pre_change(E_TABLE_MODEL(model));
-	clear_info(model);
-	e_table_model_changed(E_TABLE_MODEL(model));
-}
-
-/* Set_arg handler for the model */
-static void
-e_select_names_table_model_set_property (GObject *object, guint prop_id,
-					 const GValue *value, GParamSpec *pspec)
-{
-	ESelectNamesTableModel *model;
-	
-	model = E_SELECT_NAMES_TABLE_MODEL (object);
-
-	switch (prop_id) {
-	case PROP_SOURCE:
-		e_select_names_table_model_drop_source (model);
-		e_select_names_table_model_add_source (model, E_SELECT_NAMES_MODEL(g_value_get_object (value)));
-		break;
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-/* Get_arg handler for the model */
-static void
-e_select_names_table_model_get_property (GObject *object, guint prop_id,
-					 GValue *value, GParamSpec *pspec)
-{
-	ESelectNamesTableModel *model;
-
-	model = E_SELECT_NAMES_TABLE_MODEL (object);
-
-	switch (prop_id) {
-	case PROP_SOURCE:
-		g_value_set_object (value, model->source);
-		break;
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-/**
- * e_select_names_table_model_init:
- */
-static void
-e_select_names_table_model_init (ESelectNamesTableModel *model)
-{
-	model->source = NULL;
-	model->source_changed_id = 0;
-
-	model->count = -1;
-	model->data = NULL;
-}
-
-static void
-e_select_names_table_model_class_init (ESelectNamesTableModelClass *klass)
-{
-	GObjectClass *object_class;
-	ETableModelClass *table_model_class;
-
-	object_class = G_OBJECT_CLASS(klass);
-	table_model_class = E_TABLE_MODEL_CLASS(klass);
-
-	parent_class = g_type_class_peek_parent (klass);
-
-	object_class->dispose = e_select_names_table_model_dispose;
-	object_class->get_property = e_select_names_table_model_get_property;
-	object_class->set_property = e_select_names_table_model_set_property;
-
-	g_object_class_install_property (object_class, PROP_SOURCE, 
-					 g_param_spec_object ("source",
-							      _("Source"),
-							      /*_( */"XXX blurb" /*)*/,
-							      E_TYPE_SELECT_NAMES_MODEL,
-							      G_PARAM_READWRITE));
-
-	table_model_class->column_count = e_select_names_table_model_col_count;
-	table_model_class->row_count = e_select_names_table_model_row_count;
-	table_model_class->value_at = e_select_names_table_model_value_at;
-	table_model_class->set_value_at = e_select_names_table_model_set_value_at;
-	table_model_class->is_cell_editable = e_select_names_table_model_is_cell_editable;
-	table_model_class->duplicate_value = e_select_names_table_model_duplicate_value;
-	table_model_class->free_value = e_select_names_table_model_free_value;
-	table_model_class->initialize_value = e_select_names_table_model_initialize_value;
-	table_model_class->value_is_empty = e_select_names_table_model_value_is_empty;
-	table_model_class->value_to_string = e_select_names_table_model_value_to_string;
-}
diff --git a/addressbook/gui/component/select-names/e-select-names-table-model.h b/addressbook/gui/component/select-names/e-select-names-table-model.h
deleted file mode 100644
index 1fd1026f19..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-table-model.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors:
- *   Chris Lahey <clahey@ximian.com>
- *
- * Copyright (C) 2000 Ximian, Inc.
- */
-
-#ifndef __E_SELECT_NAMES_TABLE_MODEL_H__
-#define __E_SELECT_NAMES_TABLE_MODEL_H__
-
-#include <time.h>
-#include <stdio.h>
-#include <gtk/gtkobject.h>
-#include <gal/e-table/e-table-model.h>
-#include "e-select-names-model.h"
-
-#define E_TYPE_SELECT_NAMES_TABLE_MODEL            (e_select_names_table_model_get_type ())
-#define E_SELECT_NAMES_TABLE_MODEL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_SELECT_NAMES_TABLE_MODEL, ESelectNamesTableModel))
-#define E_SELECT_NAMES_TABLE_MODEL_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_SELECT_NAMES_TABLE_MODEL, ESelectNamesTableModelClass))
-#define E_IS_SELECT_NAMES_TABLE_MODEL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_SELECT_NAMES_TABLE_MODEL))
-#define E_IS_SELECT_NAMES_TABLE_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), E_TYPE_SELECT_NAMES_TABLE_MODEL))
-
-typedef struct {
-	char *name;
-	char *email;
-} ESelectNamesTableModelData;
-
-typedef struct _ESelectNamesTableModel ESelectNamesTableModel;
-typedef struct _ESelectNamesTableModelClass ESelectNamesTableModelClass;
-
-struct _ESelectNamesTableModel {
-	ETableModel parent;
-
-	ESelectNamesModel *source;
-	int source_changed_id;
-
-	int count;
-	ESelectNamesTableModelData *data; /* This is used as an array. */
-};
-
-struct _ESelectNamesTableModelClass {
-	ETableModelClass parent_class;
-};
-
-ETableModel *e_select_names_table_model_new  (ESelectNamesModel *source);
-
-/* Standard Gtk function */			      
-GType       e_select_names_table_model_get_type (void);
-
-#endif /* ! __E_SELECT_NAMES_TABLE_MODEL_H__ */
diff --git a/addressbook/gui/component/select-names/e-select-names-text-model.c b/addressbook/gui/component/select-names/e-select-names-text-model.c
deleted file mode 100644
index 269e0599a3..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-text-model.c
+++ /dev/null
@@ -1,801 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: 
- *   Chris Lahey    <clahey@ximian.com>
- *   Jon Trowbridge <trow@ximian.com>
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <gal/e-text/e-text-model-repos.h>
-#include <libgnome/gnome-i18n.h>
-
-#include <addressbook/gui/contact-editor/e-contact-editor.h>
-#include "e-select-names-text-model.h"
-#include "e-addressbook-util.h"
-
-static FILE *out = NULL; /* stream for debugging spew */
-
-/* Object argument IDs */
-enum {
-	PROP_0,
-	PROP_SOURCE,
-};
-
-static void e_select_names_text_model_class_init (ESelectNamesTextModelClass *klass);
-static void e_select_names_text_model_init       (ESelectNamesTextModel *model);
-static void e_select_names_text_model_dispose      (GObject *object);
-static void e_select_names_text_model_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void e_select_names_text_model_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-
-static void e_select_names_text_model_set_source (ESelectNamesTextModel *model, ESelectNamesModel *source);
-
-static const gchar *e_select_names_text_model_get_text      (ETextModel *model);
-static void         e_select_names_text_model_set_text      (ETextModel *model, const gchar *text);
-static void         e_select_names_text_model_insert        (ETextModel *model, gint position, const gchar *text);
-static void         e_select_names_text_model_insert_length (ETextModel *model, gint position, const gchar *text, gint length);
-static void         e_select_names_text_model_delete        (ETextModel *model, gint position, gint length);
-
-static gint         e_select_names_text_model_obj_count   (ETextModel *model);
-static const gchar *e_select_names_text_model_get_nth_obj (ETextModel *model, gint n, gint *len);
-static void         e_select_names_text_model_activate_obj (ETextModel *model, gint n);
-
-
-static ETextModelClass *parent_class;
-#define PARENT_TYPE e_text_model_get_type()
-
-/**
- * e_select_names_text_model_get_type:
- * @void: 
- * 
- * Registers the &ESelectNamesTextModel class if necessary, and returns the type ID
- * associated to it.
- * 
- * Return value: The type ID of the &ESelectNamesTextModel class.
- **/
-GtkType
-e_select_names_text_model_get_type (void)
-{
-	static GType type = 0;
-
-	if (!type) {
-		static const GTypeInfo info =  {
-			sizeof (ESelectNamesTextModelClass),
-			NULL,           /* base_init */
-			NULL,           /* base_finalize */
-			(GClassInitFunc) e_select_names_text_model_class_init,
-			NULL,           /* class_finalize */
-			NULL,           /* class_data */
-			sizeof (ESelectNamesTextModel),
-			0,             /* n_preallocs */
-			(GInstanceInitFunc) e_select_names_text_model_init,
-		};
-
-		type = g_type_register_static (PARENT_TYPE, "ESelectNamesTextModel", &info, 0);
-	}
-
-	return type;
-}
-
-static void
-e_select_names_text_model_class_init (ESelectNamesTextModelClass *klass)
-{
-	GObjectClass *object_class;
-	ETextModelClass *text_model_class;
-
-	object_class = G_OBJECT_CLASS(klass);
-	text_model_class = E_TEXT_MODEL_CLASS(klass);
-
-	parent_class = g_type_class_peek_parent (klass);
-
-	object_class->dispose = e_select_names_text_model_dispose;
-	object_class->get_property = e_select_names_text_model_get_property;
-	object_class->set_property = e_select_names_text_model_set_property;
-
-	g_object_class_install_property (object_class, PROP_SOURCE, 
-					 g_param_spec_object ("source",
-							      _("Source"),
-							      /*_( */"XXX blurb" /*)*/,
-							      E_TYPE_SELECT_NAMES_MODEL,
-							      G_PARAM_READWRITE));
-
-	text_model_class->get_text      = e_select_names_text_model_get_text;
-	text_model_class->set_text      = e_select_names_text_model_set_text;
-	text_model_class->insert        = e_select_names_text_model_insert;
-	text_model_class->insert_length = e_select_names_text_model_insert_length;
-	text_model_class->delete        = e_select_names_text_model_delete;
-
-	text_model_class->obj_count     = e_select_names_text_model_obj_count;
-	text_model_class->get_nth_obj   = e_select_names_text_model_get_nth_obj;
-	text_model_class->object_activated = e_select_names_text_model_activate_obj;
-
-	if (getenv ("EVO_DEBUG_SELECT_NAMES_TEXT_MODEL")) {
-		out = fopen ("/tmp/evo-debug-select-names-text-model", "w");
-		if (out)
-			setvbuf (out, NULL, _IONBF, 0);
-	}
-}
-
-static void
-dump_model (ESelectNamesTextModel *text_model)
-{
-	ESelectNamesModel *model = text_model->source;
-	gint i;
-
-	if (out == NULL)
-		return;
-	
-	fprintf (out, "\n*** Model State: count=%d\n", e_select_names_model_count (model));
-
-	for (i=0; i<e_select_names_model_count (model); ++i)
-		fprintf (out, "[%d] \"%s\" %s\n", i,
-			 e_select_names_model_get_string (model, i),
-			 e_select_names_model_get_card (model, i) ? "<card>" : "");
-	fprintf (out, "\n");
-}
-
-static void
-e_select_names_text_model_init (ESelectNamesTextModel *model)
-{
-	const gchar *default_sep;
-
-	model->last_magic_comma_pos = -1;
-
-	if (getenv ("EVOLUTION_DISABLE_MAGIC_COMMA"))
-		default_sep = ",";
-	else
-		default_sep = ", ";
-
-	e_select_names_text_model_set_separator (model, default_sep);
-}
-
-static void
-e_select_names_text_model_dispose (GObject *object)
-{
-	ESelectNamesTextModel *model;
-	
-	model = E_SELECT_NAMES_TEXT_MODEL (object);
-
-	if (model->text) {
-		g_free (model->text);
-		model->text = NULL;
-	}
-	if (model->sep) {
-		g_free (model->sep);
-		model->sep = NULL;
-	}
-	
-	e_select_names_text_model_set_source (model, NULL);
-	
-	if (G_OBJECT_CLASS(parent_class)->dispose)
-		G_OBJECT_CLASS(parent_class)->dispose(object);
-}
-
-static void
-e_select_names_text_model_set_property (GObject *object, guint prop_id,
-					 const GValue *value, GParamSpec *pspec)
-{
-	ESelectNamesTextModel *model;
-	
-	model = E_SELECT_NAMES_TEXT_MODEL (object);
-
-	switch (prop_id) {
-	case PROP_SOURCE:
-		e_select_names_text_model_set_source(model, E_SELECT_NAMES_MODEL (g_value_get_object(value)));
-		break;
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-static void
-e_select_names_text_model_get_property (GObject *object, guint prop_id,
-					 GValue *value, GParamSpec *pspec)
-{
-	ESelectNamesTextModel *model;
-
-	model = E_SELECT_NAMES_TEXT_MODEL (object);
-
-	switch (prop_id) {
-	case PROP_SOURCE:
-		g_value_set_object (value, model->source);
-		break;
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-static void
-resize_cb (ESelectNamesModel *source, gint index, gint old_len, gint new_len, ETextModel *model)
-{
-	EReposDeleteShift repos_del;
-	EReposInsertShift repos_ins;
-	gint pos;
-	gint seplen = E_SELECT_NAMES_TEXT_MODEL (model)->seplen;
-
-	e_select_names_model_name_pos (source, seplen, index, &pos, NULL);
-
-	if (new_len < old_len) {
-
-		repos_del.model = model;
-		repos_del.pos = pos;
-		repos_del.len = old_len - new_len;
-		e_text_model_reposition (model, e_repos_delete_shift, &repos_del);
-
-	} else if (old_len < new_len) {
-
-		repos_ins.model = model;
-		repos_ins.pos = pos;
-		repos_ins.len = new_len - old_len;
-		e_text_model_reposition (model, e_repos_insert_shift, &repos_ins);
-
-	}
-}
-
-static void
-changed_cb (ESelectNamesModel *source, ETextModel *model)
-{
-	ESelectNamesTextModel *text_model = E_SELECT_NAMES_TEXT_MODEL (model);
-	
-	g_free (text_model->text);
-	text_model->text = NULL;
-
-	e_text_model_changed (model);
-}
-
-
-static void
-e_select_names_text_model_set_source (ESelectNamesTextModel *model,
-				      ESelectNamesModel     *source)
-{
-	if (source == model->source)
-		return;
-	
-	if (model->source) {
-		g_signal_handler_disconnect (model->source, model->source_changed_id);
-		g_signal_handler_disconnect (model->source, model->source_resize_id);
-		g_object_unref (model->source);
-	}
-
-	model->source = source;
-
-	if (model->source) {
-		g_object_ref (model->source);
-		model->source_changed_id = g_signal_connect (model->source,
-							     "changed",
-							     G_CALLBACK (changed_cb),
-							     model);
-		model->source_resize_id = g_signal_connect (model->source,
-							    "resized",
-							    G_CALLBACK (resize_cb),
-							    model);
-	}
-}
-
-ETextModel *
-e_select_names_text_model_new (ESelectNamesModel *source)
-{
-	ETextModel *model = g_object_new (E_TYPE_SELECT_NAMES_TEXT_MODEL, NULL);
-	e_select_names_text_model_set_source (E_SELECT_NAMES_TEXT_MODEL (model), source);
-	return model;
-}
-
-void
-e_select_names_text_model_set_separator (ESelectNamesTextModel *model, const char *sep)
-{
-	g_return_if_fail (E_IS_SELECT_NAMES_TEXT_MODEL (model));
-	g_return_if_fail (sep && *sep);
-
-	g_free (model->sep);
-	model->sep = g_strdup (sep);
-	model->seplen = strlen (sep);
-}
-
-static const gchar *
-e_select_names_text_model_get_text (ETextModel *model)
-{
-	ESelectNamesTextModel *snm = E_SELECT_NAMES_TEXT_MODEL(model);
-
-	if (snm == NULL)
-		return "";
-	else if (snm->text == NULL)
-		snm->text = e_select_names_model_get_textification (snm->source, snm->sep);
-
-	return snm->text;
-}
-
-static void
-e_select_names_text_model_set_text (ETextModel *model, const gchar *text)
-{
-	ESelectNamesTextModel *snm = E_SELECT_NAMES_TEXT_MODEL(model);
-
-	e_select_names_model_delete_all (snm->source);
-	e_select_names_text_model_insert (model, 0, text);
-}
-
-static void
-e_select_names_text_model_insert (ETextModel *model, gint position, const gchar *text)
-{
-	e_select_names_text_model_insert_length (model, position, text, strlen (text));
-}
-
-static void
-e_select_names_text_model_insert_length (ETextModel *model, gint pos, const gchar *text, gint length)
-{
-	ESelectNamesTextModel *text_model = E_SELECT_NAMES_TEXT_MODEL (model);
-	ESelectNamesModel *source = text_model->source;
-
-	gint i;
-
-	if (out) {
-		gchar *tmp = g_strndup (text, length);
-		fprintf (out, ">> insert  \"%s\" (len=%d) at %d\n", tmp, length, pos);
-		g_free (tmp);
-	}
-
-	pos = CLAMP (pos, 0, strlen (e_select_names_model_get_textification (source, text_model->sep)));
-
-	/* We want to control all cursor motions ourselves, rather than taking hints
-	   from the ESelectNamesModel. */
-	g_signal_handler_block (source, text_model->source_resize_id);
-
-	/* We handle this one character at a time. */
-
-	for (i = 0; i < length && text[i]; ++i) {
-		gint index, start_pos, text_len;
-		gboolean inside_quote = FALSE;
-
-		text_model->last_magic_comma_pos = -1;
-
-		if (out) 
-			fprintf (out, "processing [%c]\n", text[i]);
-
-		e_select_names_model_text_pos (source, text_model->seplen, pos, &index, &start_pos, &text_len);
-
-		if (out) 
-			fprintf (out, "index=%d start_pos=%d text_len=%d\n", index, start_pos, text_len);
-
-		if (text[i] == *text_model->sep && index >= 0) { /* Is this a quoted or an unquoted separator we are dealing with? */
-			const EDestination *dest = e_select_names_model_get_destination (source, index);
-			if (dest) {
-				const gchar *str = e_destination_get_textrep (dest, FALSE);
-				gint j;
-				if (out)
-					fprintf (out, "str=%s pos=%d\n", str, pos);
-				for (j=0; j<pos-start_pos && str[j]; ++j)
-					if (str[j] == '"') {
-						inside_quote = !inside_quote;
-						if (out)
-							fprintf (out, "flip to %d at %d\n", start_pos+j, inside_quote);
-					}
-			}
-			if (out)
-				fprintf (out, inside_quote ? "inside quote\n" : "not inside quote\n");
-		}
-
-
-		if (text[i] == *text_model->sep && !inside_quote) {
-
-			/* This is the case of hitting , first thing in an empty entry */
-			if (index == -1) {
-				EReposAbsolute repos;
-				
-				e_select_names_model_insert (source, 0, e_destination_new ());
-				e_select_names_model_insert (source, 0, e_destination_new ());
-
-				repos.model = model;
-				repos.pos = -1; /* At end */
-				e_text_model_reposition (model, e_repos_absolute, &repos);
-				
-
-			} else if (pos <= start_pos || pos == start_pos + text_len) {
-				EReposInsertShift repos;
-				gint ins_point = index;
-
-				if (text_len != 0 && pos == start_pos + text_len)
-					++ins_point;
-				
-				/* Block adjacent blank cards. */
-				if (! ((ins_point < e_select_names_model_count (source) &&
-					(e_select_names_model_get_string (source, ins_point) == NULL)) 
-				       || (ins_point > 0 && (e_select_names_model_get_string (source, ins_point-1) == NULL)))) {
-
-					e_select_names_model_insert (source, ins_point, e_destination_new ());
-
-					repos.model = model;
-					repos.pos = pos;
-					repos.len = text_model->seplen;
-					e_text_model_reposition (model, e_repos_insert_shift, &repos);
-					pos += text_model->seplen;
-				} 
-
-			} else {
-				EReposInsertShift repos;
-				gint offset = MAX (pos - start_pos, 0);
-				const gchar *str = e_select_names_model_get_string (source, index);
-				gchar *str1 = g_strndup (str, offset);
-				gchar *str2 = g_strdup (str+offset);
-				EDestination *d1 = e_destination_new (), *d2 = e_destination_new ();
-
-				e_destination_set_raw (d1, str1);
-				e_destination_set_raw (d2, str2);
-
-				e_select_names_model_replace (source, index, d1);
-				e_select_names_model_insert (source, index+1, d2);
-
-				g_free (str1);
-				g_free (str2);
-
-				repos.model = model;
-				repos.pos = pos;
-				repos.len = text_model->seplen;
-				e_text_model_reposition (model, e_repos_insert_shift, &repos);
-				pos += text_model->seplen;
-			}
-
-			if (text_model->seplen > 1)
-				text_model->last_magic_comma_pos = pos;
-
-		} else {
-			EReposInsertShift repos;
-			gint offset = MAX (pos - start_pos, 0);
-			const gchar *str;
-			gchar *new_str = NULL;
-			gint this_length = 1;
-			gboolean whitespace = isspace ((gint) text[i]);
-
-			str = index >= 0 ? e_select_names_model_get_string (source, index) : NULL;
-			if (str && *str) {
-				if (pos <= start_pos) {
-					if (whitespace) {
-						/* swallow leading whitespace */
-						this_length = 0;
-					} else {
-						/* Adjust for our "magic white space" */
-						/* FIXME: This code does the wrong thing if seplen > 2 */
-						new_str = g_strdup_printf("%c%s%s", text[i], pos < start_pos ? " " : "", str);
-						if (pos < start_pos)
-							++this_length;
-					}
-				} else {
-					new_str = g_strdup_printf ("%.*s%c%s", offset, str, text[i], str + offset);
-				}
-			} else {
-				if (whitespace) {
-					/* swallow leading whitespace */
-					this_length = 0;
-				} else {
-					new_str = g_strdup_printf ("%c", text[i]);
-				}
-			}
-
-			if (new_str) {
-
-				EDestination *dest;
-				dest = index >= 0 ? e_destination_copy (e_select_names_model_get_destination (source, index)) : e_destination_new ();
-				e_destination_set_raw (dest, new_str);
-				e_select_names_model_replace (source, index, dest);
-				
-				/* e_select_names_model_replace (source, index, dest); */
-
-				if (this_length > 0) {
-					repos.model = model;
-					repos.pos = pos;
-					repos.len = this_length;
-					e_text_model_reposition (model, e_repos_insert_shift, &repos);
-
-					pos += this_length;
-				}
-
-				g_free (new_str);
-			}
-		}
-	}
-
-	dump_model (text_model);
-
-	g_signal_handler_unblock (source, text_model->source_resize_id);
-}
-
-
-static void
-e_select_names_text_model_delete (ETextModel *model, gint pos, gint length)
-{
-	ESelectNamesTextModel *text_model = E_SELECT_NAMES_TEXT_MODEL (model);
-	ESelectNamesModel *source = text_model->source;
-	gint index, start_pos, text_len, offset;
-		
-	if (out) {
-		const gchar *str = e_select_names_model_get_textification (source, text_model->sep);
-		gint i, len;
-
-		fprintf (out, ">> delete %d at pos %d\n", length, pos);
-
-		len = strlen (str);
-		for (i=0; i<pos && i<len; ++i)
-			fprintf (out, "%c", str[i]);
-		fprintf (out, "[");
-		for (i=pos; i<pos+length && i<len; ++i)
-			fprintf (out, "%c", str[i]);
-		fprintf (out, "]");
-		for (i=pos+length; i<len; ++i)
-			fprintf (out, "%c", str[i]);
-		fprintf (out, "\n");
-	}
-
-	if (length < 0)
-		return;
-
-	if (text_model->last_magic_comma_pos == pos+1 && length == 1) {
-		pos -= text_model->seplen-1;
-		if (pos >= 0)
-			length = text_model->seplen;
-		text_model->last_magic_comma_pos = -1;
-	}
-
-	e_select_names_model_text_pos (source, text_model->seplen, pos, &index, &start_pos, &text_len);
-
-	if (out) 
-		fprintf (out, "index=%d, start_pos=%d, text_len=%d\n", index, start_pos, text_len);
-
-	/* We want to control all cursor motions ourselves, rather than taking hints
-	   from the ESelectNamesModel. */
-	g_signal_handler_block (source, E_SELECT_NAMES_TEXT_MODEL (model)->source_resize_id);
-
-	/* First, we handle a few tricky cases. */
-
-	if (pos < start_pos) {
-		EReposAbsolute repos;
-
-		repos.model = model;
-		repos.pos = pos;
-		e_text_model_reposition (model, e_repos_absolute, &repos);
-
-		length -= start_pos - pos;
-
-		if (length > 0)
-			e_select_names_text_model_delete (model, start_pos, length);
-		goto finished;
-	}
-
-	if (pos == start_pos + text_len) {
-		/* We are positioned right at the end of an entry, possibly right in front of a comma. */
-
-		if (index+1 < e_select_names_model_count (source)) {
-			EReposDeleteShift repos;
-			EDestination *new_dest;
-			const gchar *str1 = e_select_names_model_get_string (source, index);
-			const gchar *str2 = e_select_names_model_get_string (source, index+1);
-			gchar *new_str;
-
-			while (str1 && *str1 && isspace ((gint) *str1))
-				++str1;
-			while (str2 && *str2 && isspace ((gint) *str2))
-				++str2;
-			
-			if (str1 && str2)
-				new_str = g_strdup_printf ("%s%s%s", str1, text_model->sep+1, str2);
-			else if (str1)
-				new_str = g_strdup (str1);
-			else if (str2)
-				new_str = g_strdup (str2);
-			else
-				new_str = g_strdup ("");
-
-			if (out)
-				fprintf (out, "joining \"%s\" and \"%s\" to \"%s\"\n", str1, str2, new_str);
-
-			e_select_names_model_delete (source, index+1);
-
-			new_dest = e_destination_new ();
-			e_destination_set_raw (new_dest, new_str);
-			e_select_names_model_replace (source, index, new_dest);
-			g_free (new_str);
-
-			repos.model = model;
-			repos.pos = pos;
-			repos.len = text_model->seplen;
-
-			e_text_model_reposition (model, e_repos_delete_shift, &repos);
-
-			if (length > 1)
-				e_select_names_text_model_delete (model, pos, length-1);
-		} else {
-			/* If we are at the end of the last entry (which we must be if we end up in this block),
-			   we can just do nothing.  So this else-block is here just to give us a place to
-			   put this comment. */
-		}
-
-		goto finished;
-	}
-	
-	if (pos + length > start_pos + text_len) {
-		/* Uh oh... our changes straddle two objects. */
-
-		if (pos == start_pos) { /* Delete the whole thing */
-			EReposDeleteShift repos;
-		
-			e_select_names_model_delete (source, index);
-
-			if (out) 
-				fprintf (out, "deleted all of %d\n", index);
-
-			repos.model = model;
-			repos.pos = pos;
-			repos.len = text_len + text_model->seplen;
-		
-			e_text_model_reposition (model, e_repos_delete_shift, &repos);
-
-			length -= text_len + text_model->seplen;
-			if (length > 0)
-				e_select_names_text_model_delete (model, pos, length);
-
-		} else {
-			/* Delete right up to the end, and then call e_select_names_text_model_delete again
-			   to finish the job. */
-			gint len1, len2;
-			
-			len1 = text_len - (pos - start_pos);
-			len2 = length - len1;
-
-			if (out) 
-				fprintf (out, "two-stage delete: %d, %d\n", len1, len2);
-
-
-			e_select_names_text_model_delete (model, pos, len1);
-			e_select_names_text_model_delete (model, pos, len2);
-		}
-
-		goto finished;
-	}
-
-	/* Our changes are confined to just one entry. */
-	if (length > 0) {
-		const gchar *str;
-		gchar *new_str;
-		
-		offset = pos - start_pos;
-		
-		str = e_select_names_model_get_string (source, index);
-		new_str = str ? g_strdup_printf ("%.*s%s", offset, str, str + offset + length) : NULL;
-		
-		if (new_str) {
-			EReposDeleteShift repos;
-			EDestination *dest;
-
-			dest = index >= 0 ? e_destination_copy (e_select_names_model_get_destination (source, index)) : e_destination_new ();
-			e_destination_set_raw (dest, new_str);
-			e_select_names_model_replace (source, index, dest);
-			
-			if (out)
-				fprintf (out, "new_str: \"%s\"\n", new_str);
-
-			g_free (new_str);
-			
-			repos.model = model;
-			repos.pos = pos;
-			repos.len = length;
-			
-			e_text_model_reposition (model, e_repos_delete_shift, &repos);
-			
-		} else {
-			EReposDeleteShift repos;
-			
-			e_select_names_model_delete (source, index);
-			
-			if (out)
-				fprintf (out, "deleted %d\n", index);
-
-			
-			repos.model = model;
-			repos.pos = pos;
-			repos.len = text_model->seplen;
-			
-			e_text_model_reposition (model, e_repos_delete_shift, &repos);
-		}
-	}
-
- finished:
-	E_SELECT_NAMES_TEXT_MODEL (model)->last_magic_comma_pos = -1;
-	g_signal_handler_unblock (source, E_SELECT_NAMES_TEXT_MODEL (model)->source_resize_id);
-	dump_model (E_SELECT_NAMES_TEXT_MODEL (model));
-}
-
-static gint
-e_select_names_text_model_obj_count (ETextModel *model)
-{
-	ESelectNamesModel *source = E_SELECT_NAMES_TEXT_MODEL (model)->source;
-	gint i, count;
-
-	count = i = e_select_names_model_count (source);
-	while (i > 0) {
-		const EDestination *dest;
-		--i;
-		dest = e_select_names_model_get_destination (source, i);
-		if (e_destination_get_card (dest) == NULL)
-			--count;
-	}
-
-	return count;
-}
-
-static gint
-nth_obj_index (ESelectNamesModel *source, gint n)
-{
-	gint i, N;
-
-	i = 0;
-	N = e_select_names_model_count (source);
-	
-	do {
-		const EDestination *dest = e_select_names_model_get_destination (source, i);
-		if (e_destination_get_card (dest))
-			--n;
-		++i;
-	} while (n >= 0 && i < N);
-
-	if (i <= N)
-		--i;
-	else
-		i = -1;
-
-	return i;
-}
-
-static const gchar *
-e_select_names_text_model_get_nth_obj (ETextModel *model, gint n, gint *len)
-{
-	ESelectNamesTextModel *text_model = E_SELECT_NAMES_TEXT_MODEL (model);
-	ESelectNamesModel *source = text_model->source;
-	gint i, pos;
-
-	i = nth_obj_index (source, n);
-	if (i < 0)
-		return NULL;
-	
-	e_select_names_model_name_pos (source, text_model->seplen, i, &pos,  len);
-	if (pos < 0)
-		return NULL;
-	
-	if (text_model->text == NULL)
-		text_model->text = e_select_names_model_get_textification (source, text_model->sep);
-	return text_model->text + pos;
-}
-
-static void
-e_select_names_text_model_activate_obj (ETextModel *model, gint n)
-{
-	ESelectNamesModel *source = E_SELECT_NAMES_TEXT_MODEL (model)->source;
-	ECard *card;
-	gint i;
-
-	i = nth_obj_index (source, n);
-	g_return_if_fail (i >= 0);
-
-	card = e_select_names_model_get_card (source, i);
-	g_return_if_fail (card != NULL);
-	
-	/* present read-only contact editor when someone double clicks from here */
-	if (e_card_evolution_list (card)) {
-		EContactListEditor *ce;
-		ce = e_addressbook_show_contact_list_editor (e_card_get_book(card), card, FALSE, FALSE);
-		e_contact_list_editor_raise (ce);
-	}
-	else {
-		EContactEditor *ce;
-		ce = e_addressbook_show_contact_editor (e_card_get_book(card), card, FALSE, FALSE);
-		e_contact_editor_raise (ce);
-	}
-}
-
-
-
diff --git a/addressbook/gui/component/select-names/e-select-names-text-model.h b/addressbook/gui/component/select-names/e-select-names-text-model.h
deleted file mode 100644
index eec062aee6..0000000000
--- a/addressbook/gui/component/select-names/e-select-names-text-model.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors:
- *   Chris Lahey    <clahey@ximian.com>
- *   Jon Trowbridge <trow@ximian.com>
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- */
-
-#ifndef __E_SELECT_NAMES_TEXT_MODEL_H__
-#define __E_SELECT_NAMES_TEXT_MODEL_H__
-
-#include <time.h>
-#include <stdio.h>
-#include <gtk/gtkobject.h>
-#include <gal/e-text/e-text-model.h>
-#include "e-select-names-model.h"
-
-#define E_TYPE_SELECT_NAMES_TEXT_MODEL            (e_select_names_text_model_get_type ())
-#define E_SELECT_NAMES_TEXT_MODEL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_SELECT_NAMES_TEXT_MODEL, ESelectNamesTextModel))
-#define E_SELECT_NAMES_TEXT_MODEL_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_SELECT_NAMES_TEXT_MODEL, ESelectNamesTextModelClass))
-#define E_IS_SELECT_NAMES_TEXT_MODEL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_SELECT_NAMES_TEXT_MODEL))
-#define E_IS_SELECT_NAMES_TEXT_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), E_TYPE_SELECT_NAMES_TEXT_MODEL))
-
-typedef struct _ESelectNamesTextModel ESelectNamesTextModel;
-typedef struct _ESelectNamesTextModelClass ESelectNamesTextModelClass;
-
-struct _ESelectNamesTextModel {
-	ETextModel parent;
-
-	ESelectNamesModel *source;
-	gint source_changed_id;
-	gint source_resize_id;
-
-	gchar *text;
-
-	gchar *sep;
-	gint seplen;
-	
-	gint last_magic_comma_pos;
-};
-
-struct _ESelectNamesTextModelClass {
-	ETextModelClass parent_class;
-};
-
-ETextModel *e_select_names_text_model_new           (ESelectNamesModel *source);
-void        e_select_names_text_model_set_separator (ESelectNamesTextModel *model, const char *sep);
-
-/* Standard Gtk function */			      
-GType       e_select_names_text_model_get_type (void);
-
-#endif /* ! __E_SELECT_NAMES_TEXT_MODEL_H__ */
diff --git a/addressbook/gui/component/select-names/e-select-names.c b/addressbook/gui/component/select-names/e-select-names.c
deleted file mode 100644
index 962a745abe..0000000000
--- a/addressbook/gui/component/select-names/e-select-names.c
+++ /dev/null
@@ -1,843 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* e-select-names.c
- * Copyright (C) 2000  Ximian, Inc.
- * Author: Chris Lahey <clahey@ximian.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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 library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <string.h>
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <libgnome/gnome-i18n.h>
-
-#include <gal/e-table/e-table-simple.h>
-#include <gal/e-table/e-table-without.h>
-#include <gal/widgets/e-popup-menu.h>
-
-#include <addressbook/gui/widgets/e-addressbook-model.h>
-#include <addressbook/gui/widgets/e-addressbook-table-adapter.h>
-#include <addressbook/gui/component/e-cardlist-model.h>
-#include <addressbook/backend/ebook/e-book.h>
-#include <addressbook/backend/ebook/e-book-util.h>
-#include <addressbook/gui/component/addressbook-component.h>
-#include <addressbook/gui/component/addressbook-storage.h>
-#include <addressbook/gui/component/addressbook.h>
-#include <shell/evolution-shell-client.h>
-#include <shell/evolution-folder-selector-button.h>
-
-#include "e-select-names.h"
-#include <addressbook/backend/ebook/e-card-simple.h>
-#include "e-select-names-table-model.h"
-#include <gal/widgets/e-categories-master-list-option-menu.h>
-#include <gal/e-text/e-entry.h>
-#include <e-util/e-categories-master-list-wombat.h>
-#include "e-util/e-sexp.h"
-
-static void e_select_names_init		(ESelectNames		 *names);
-static void e_select_names_class_init	(ESelectNamesClass	 *klass);
-static void e_select_names_dispose (GObject *object);
-static void update_query (GtkWidget *widget, ESelectNames *e_select_names);
-
-static void sync_table_and_models (ESelectNamesModel *triggering_model, ESelectNames *esl);
-
-static GtkDialogClass *parent_class = NULL;
-#define PARENT_TYPE gtk_dialog_get_type()
-
-/* The arguments we take */
-enum {
-	ARG_0,
-};
-
-typedef struct {
-	char                   *title;
-	ESelectNamesModel      *source;
-	ESelectNamesTableModel *table_model;
-	ESelectNames           *names;
-	GtkWidget              *label;
-	GtkWidget              *button;
-	GtkWidget              *recipient_table;
-	gulong                  changed_id;
-} ESelectNamesChild;
-
-GType
-e_select_names_get_type (void)
-{
-	static GType type = 0;
-
-	if (!type) {
-		static const GTypeInfo info =  {
-			sizeof (ESelectNamesClass),
-			NULL,           /* base_init */
-			NULL,           /* base_finalize */
-			(GClassInitFunc) e_select_names_class_init,
-			NULL,           /* class_finalize */
-			NULL,           /* class_data */
-			sizeof (ESelectNames),
-			0,             /* n_preallocs */
-			(GInstanceInitFunc) e_select_names_init,
-		};
-
-		type = g_type_register_static (PARENT_TYPE, "ESelectNames", &info, 0);
-	}
-
-	return type;
-}
-
-static void
-e_select_names_class_init (ESelectNamesClass *klass)
-{
-	GObjectClass *object_class;
-
-	object_class = G_OBJECT_CLASS (klass);
-
-	parent_class = g_type_class_peek_parent (klass);
-
-	object_class->dispose = e_select_names_dispose;
-}
-
-GtkWidget *e_addressbook_create_ebook_table(char *name, char *string1, char *string2, int num1, int num2);
-GtkWidget *e_addressbook_create_folder_selector(char *name, char *string1, char *string2, int num1, int num2);
-
-static void
-search_result (EAddressbookModel *model, EBookViewStatus status, ESelectNames *esn)
-{
-	sync_table_and_models (NULL, esn);
-}
-
-static void
-set_book(EBook *book, EBookStatus status, ESelectNames *esn)
-{
-	g_object_set(esn->model,
-		     "book", book,
-		     NULL);
-	update_query (NULL, esn);
-	g_object_unref(book);
-	g_object_unref(esn->model);
-	g_object_unref(esn);
-}
-
-static void
-addressbook_model_set_uri(ESelectNames *e_select_names, EAddressbookModel *model, const char *uri)
-{
-	EBook *book;
-	char *book_uri;
-
-	book_uri = e_book_expand_uri (uri);
-
-	/* If uri == the current uri, then we don't have to do anything */
-	book = e_addressbook_model_get_ebook (model);
-	if (book) {
-		const gchar *current_uri = e_book_get_uri (book);
-		if (current_uri && !strcmp (book_uri, current_uri)) {
-			g_free (book_uri);
-			return;
-		}
-	}
-
-	book = e_book_new();
-
-	g_object_ref(e_select_names);
-	g_object_ref(model);
-	addressbook_load_uri(book, book_uri, (EBookCallback) set_book, e_select_names);
-
-	g_free (book_uri);
-}
-
-static void *
-card_key (ECard *card)
-{
-	EBook *book;
-	const gchar *book_uri;
-	
-	if (card == NULL)
-		return NULL;
-
-	g_assert (E_IS_CARD (card));
-
-	book = e_card_get_book (card);
-	book_uri = book ? e_book_get_uri (book) : "NoBook";
-	return g_strdup_printf ("%s|%s", book_uri ? book_uri : "NoURI", e_card_get_id (card));
-}
-
-static void
-sync_one_model (gpointer k, gpointer val, gpointer closure)
-{
-	ETableWithout *etw = E_TABLE_WITHOUT (closure);
-	ESelectNamesChild *child = val;
-	ESelectNamesModel *model = child->source;
-	gint i, count;
-	ECard *card;
-	void *key;
-	
-	count = e_select_names_model_count (model);
-	for (i = 0; i < count; ++i) {
-		card = e_select_names_model_get_card (model, i);
-		if (card) {
-			key = card_key (card);
-			e_table_without_hide (etw, key);
-			g_free (key);
-		}
-	}
-}
-
-static void
-sync_table_and_models (ESelectNamesModel *triggering_model, ESelectNames *esl)
-{
-	e_table_without_show_all (E_TABLE_WITHOUT (esl->without));
-	g_hash_table_foreach (esl->children, sync_one_model, esl->without);
-}
-
-static void
-real_add_address_cb (int model_row, gpointer closure)
-{
-	ESelectNamesChild *child = closure;
-	ESelectNames *names = child->names;
-	ECard *card;
-	EDestination *dest = e_destination_new ();
-	gint mapped_row;
-
-	mapped_row = e_table_subset_view_to_model_row (E_TABLE_SUBSET (names->without), model_row);
-
-	card = e_addressbook_model_get_card (E_ADDRESSBOOK_MODEL(names->model), mapped_row);
-	
-	if (card != NULL) {
-		e_destination_set_card (dest, card, 0);
-
-		e_select_names_model_append (child->source, dest);
-		e_select_names_model_clean (child->source, FALSE);
-
-		g_object_unref(card);
-	}
-}
-
-static void
-real_add_address(ESelectNames *names, ESelectNamesChild *child)
-{
-	e_select_names_model_freeze (child->source);
-	e_table_selected_row_foreach(e_table_scrolled_get_table(names->table),
-				     real_add_address_cb, child);
-	e_select_names_model_thaw (child->source);
-}
-
-static void
-add_address(ETable *table, int row, int col, GdkEvent *event, ESelectNames *names)
-{
-	ESelectNamesChild *child;
-
-	child = g_hash_table_lookup(names->children, names->def);
-	if (child) {
-		real_add_address(names, child);
-	}
-}
-
-static void
-sensitize_button (gpointer key, gpointer data, gpointer user_data)
-{
-	gboolean *sensitive = user_data;
-	ESelectNamesChild *child = data;
-
-	gtk_widget_set_sensitive (child->button, *sensitive);
-}
-
-static void
-selection_change (ETable *table, ESelectNames *names)
-{
-	gboolean sensitive;
-
-	sensitive = e_table_selected_count (table) > 0;
-
-	g_hash_table_foreach (names->children, sensitize_button, &sensitive);
-}
-
-static void *
-esn_get_key_fn (ETableModel *source, int row, void *closure)
-{
-	EAddressbookModel *model = E_ADDRESSBOOK_MODEL (closure);
-	ECard *card = e_addressbook_model_get_card (model, row);
-	void *key = card_key (card);
-	g_object_unref (card);
-	return key;
-}
-
-static void *
-esn_dup_key_fn (const void *key, void *closure)
-{
-	void *dup = (void *) g_strdup ((const gchar *) key);
-	return dup;
-}
-
-static void
-esn_free_gotten_key_fn (void *key, void *closure)
-{
-	g_free (key);
-}
-
-static void
-esn_free_duped_key_fn (void *key, void *closure)
-{
-	g_free (key);
-}
-
-GtkWidget *
-e_addressbook_create_ebook_table(char *name, char *string1, char *string2, int num1, int num2)
-{
-	ETableModel *adapter;
-	ETableModel *without;
-	EAddressbookModel *model;
-	GtkWidget *table;
-
-	model = e_addressbook_model_new ();
-	adapter = E_TABLE_MODEL (e_addressbook_table_adapter_new (model));
-
-	g_object_set(model,
-		     "editable", FALSE,
-		     NULL);
-
-	without = e_table_without_new (adapter,
-				       g_str_hash,
-				       g_str_equal,
-				       esn_get_key_fn,
-				       esn_dup_key_fn,
-				       esn_free_gotten_key_fn,
-				       esn_free_duped_key_fn,
-				       model);
-
-	table = e_table_scrolled_new_from_spec_file (without,
-						     NULL,
-						     EVOLUTION_ETSPECDIR "/e-select-names.etspec",
-						     NULL);
-
-	g_object_set_data(G_OBJECT(table), "adapter", adapter);
-	g_object_set_data(G_OBJECT(table), "without", without);
-	g_object_set_data(G_OBJECT(table), "model", model);
-
-	return table;
-}
-
-GtkWidget *
-e_addressbook_create_folder_selector(char *name, char *string1, char *string2, int num1, int num2)
-{
-	return g_object_new (EVOLUTION_TYPE_FOLDER_SELECTOR_BUTTON, NULL);
-}
-
-static void
-folder_selected (EvolutionFolderSelectorButton *button, GNOME_Evolution_Folder *folder,
-		 ESelectNames *e_select_names)
-{
-	addressbook_model_set_uri(e_select_names, e_select_names->model, folder->physicalUri);
-
-	e_config_listener_set_string (e_book_get_config_database(),
-				      "/apps/evolution/addressbook/select_names/last_used_uri", folder->physicalUri);
-}
-
-static void
-update_query (GtkWidget *widget, ESelectNames *e_select_names)
-{
-	char *category = "";
-	const char *search = "";
-	char *query;
-	char *q_array[4];
-	int i;
-	GString *s = g_string_new ("");
-
-	if (e_select_names->categories) {
-		category = e_categories_master_list_option_menu_get_category (E_CATEGORIES_MASTER_LIST_OPTION_MENU (e_select_names->categories));
-	}
-	if (e_select_names->select_entry) {
-		search = gtk_entry_get_text (GTK_ENTRY (e_select_names->select_entry));
-	}
-
-	e_sexp_encode_string (s, search);
-
-	i = 0;
-	q_array[i++] = "(contains \"email\" \"\")";
-	if (category && *category)
-		q_array[i++] = g_strdup_printf ("(is \"category\" \"%s\")", category);
-	if (search && *search)
-		q_array[i++] = g_strdup_printf ("(or (beginswith \"email\" %s) "
-						"    (beginswith \"full_name\" %s) "
-						"    (beginswith \"nickname\" %s)"
-						"    (beginswith \"file_as\" %s))",
-						s->str, s->str, s->str, s->str);
-	q_array[i++] = NULL;
-	if (i > 2) {
-		char *temp = g_strjoinv (" ", q_array);
-		query = g_strdup_printf ("(and %s)", temp);
-		g_free (temp);
-	} else {
-		query = g_strdup (q_array[0]);
-	}
-	g_object_set (e_select_names->model,
-		      "query", query,
-		      NULL);
-	for (i = 1; q_array[i]; i++) {
-		g_free (q_array[i]);
-	}
-	g_free (query);
-	g_string_free (s, TRUE);
-}
-
-static void
-status_message (EAddressbookModel *model, const gchar *message, ESelectNames *e_select_names)
-{
-	if (message == NULL)
-		gtk_label_set_text (GTK_LABEL (e_select_names->status_message), "");
-	else
-		gtk_label_set_text (GTK_LABEL (e_select_names->status_message), message);
-}
-
-static void
-categories_changed (GtkWidget *widget, ESelectNames *e_select_names)
-{
-	update_query (widget, e_select_names);
-}
-
-static void
-select_entry_changed (GtkWidget *widget, ESelectNames *e_select_names)
-{
-	if (e_select_names->select_entry) {
-		const char *select_string = gtk_entry_get_text (GTK_ENTRY (e_select_names->select_entry));
-		char *select_strcoll_string = g_utf8_collate_key (select_string, -1);
-		int count;
-		ETable *table;
-		int i;
-
-		table = e_table_scrolled_get_table (e_select_names->table);
-
-		count = e_table_model_row_count (e_select_names->without);
-
-		for (i = 0; i < count; i++) {
-			int model_row = e_table_view_to_model_row (table, i);
-			char *row_strcoll_string =
-				g_utf8_collate_key (e_table_model_value_at (e_select_names->without,
-									    E_CARD_SIMPLE_FIELD_NAME_OR_ORG,
-									    model_row),
-						    -1);
-			if (g_utf8_collate (select_strcoll_string, row_strcoll_string) <= 0) {
-				g_free (row_strcoll_string);
-				break;
-			}
-			g_free (row_strcoll_string);
-		}
-		g_free (select_strcoll_string);
-		if (i == count)
-			i --;
-
-		if (count > 0) {
-			i = e_table_view_to_model_row (table, i);
-			e_table_set_cursor_row (table, i);
-		}
-	}
-}
-
-GtkWidget *e_select_names_create_categories (gchar *name,
-					     gchar *string1, gchar *string2,
-					     gint int1, gint int2);
-
-GtkWidget *
-e_select_names_create_categories (gchar *name,
-				  gchar *string1, gchar *string2,
-				  gint int1, gint int2)
-{
-	ECategoriesMasterList *ecml;
-	GtkWidget *option_menu;
-
-	ecml = e_categories_master_list_wombat_new ();
-	option_menu = e_categories_master_list_option_menu_new (ecml);
-	g_object_unref (ecml);
-
-	return option_menu;
-}
-
-static void
-clear_widget (gpointer data, GObject *where_object_was)
-{
-	GtkWidget **widget_ref = data;
-	*widget_ref = NULL;
-}
-
-static void
-e_select_names_init (ESelectNames *e_select_names)
-{
-	GladeXML *gui;
-	GtkWidget *widget, *button;
-
-	gui = glade_xml_new (EVOLUTION_GLADEDIR "/select-names.glade", NULL, NULL);
-	e_select_names->gui = gui;
-
-	e_select_names->children = g_hash_table_new(g_str_hash, g_str_equal);
-	e_select_names->child_count = 0;
-	e_select_names->def = NULL;
-
-	widget = glade_xml_get_widget(gui, "table-top");
-	if (!widget) {
-		return;
-	}
-	gtk_widget_ref(widget);
-	gtk_container_remove(GTK_CONTAINER(widget->parent), widget);
-	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(e_select_names)->vbox), widget, TRUE, TRUE, 0);
-	gtk_widget_unref(widget);
-
-	gtk_dialog_add_buttons (GTK_DIALOG (e_select_names),
-				GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-				GTK_STOCK_OK, GTK_RESPONSE_OK,
-				NULL);
-
-	gtk_dialog_set_default_response (GTK_DIALOG (e_select_names),
-					 GTK_RESPONSE_OK);
-
-	gtk_window_set_modal (GTK_WINDOW (e_select_names), TRUE);
-
-	gtk_window_set_title(GTK_WINDOW(e_select_names), _("Select Contacts from Addressbook")); 
-	gtk_window_set_resizable(GTK_WINDOW(e_select_names), TRUE);
-
-	e_select_names->table = E_TABLE_SCROLLED(glade_xml_get_widget(gui, "table-source"));
-	e_select_names->model = g_object_get_data(G_OBJECT(e_select_names->table), "model");
-	e_select_names->adapter = g_object_get_data(G_OBJECT(e_select_names->table), "adapter");
-	e_select_names->without = g_object_get_data(G_OBJECT(e_select_names->table), "without");
-	gtk_widget_show (GTK_WIDGET (e_select_names->table));
-
-	e_select_names->status_message = glade_xml_get_widget (gui, "status-message");
-	if (e_select_names->status_message && !GTK_IS_LABEL (e_select_names->status_message))
-		e_select_names->status_message = NULL;
-	if (e_select_names->status_message) {
-		e_select_names->status_id = g_signal_connect (e_select_names->model, "status_message",
-							      G_CALLBACK (status_message), e_select_names);
-		g_object_weak_ref (G_OBJECT (e_select_names->status_message), clear_widget, &e_select_names->status_message);
-	}
-
-	e_select_names->search_id = g_signal_connect (e_select_names->model,
-						      "search_result", G_CALLBACK (search_result),
-						      e_select_names);
-
-	e_select_names->categories = glade_xml_get_widget (gui, "custom-categories");
-	if (e_select_names->categories && !E_IS_CATEGORIES_MASTER_LIST_OPTION_MENU (e_select_names->categories))
-		e_select_names->categories = NULL;
-	if (e_select_names->categories) {
-		g_signal_connect(e_select_names->categories, "changed",
-				 G_CALLBACK(categories_changed), e_select_names);
-		g_object_weak_ref (G_OBJECT (e_select_names->categories), clear_widget, &e_select_names->categories);
-	}
-	gtk_widget_show (e_select_names->categories);
-
-	e_select_names->select_entry = glade_xml_get_widget (gui, "entry-select");
-	if (e_select_names->select_entry && !GTK_IS_ENTRY (e_select_names->select_entry))
-		e_select_names->select_entry = NULL;
-	if (e_select_names->select_entry) {
-		g_signal_connect(e_select_names->select_entry, "changed",
-				 G_CALLBACK(select_entry_changed), e_select_names);
-		g_signal_connect(e_select_names->select_entry, "activate",
-				 G_CALLBACK(update_query), e_select_names);
-		g_object_weak_ref (G_OBJECT (e_select_names->select_entry), clear_widget, &e_select_names->select_entry);
-	}
-
-	button  = glade_xml_get_widget (gui, "button-find");
-	if (button && GTK_IS_BUTTON (button))
-		g_signal_connect(button, "clicked",
-				 G_CALLBACK(update_query), e_select_names);
-
-	button = glade_xml_get_widget (gui, "folder-selector");
-	if (button && EVOLUTION_IS_FOLDER_SELECTOR_BUTTON (button))
-		g_signal_connect(button, "selected",
-				 G_CALLBACK(folder_selected), e_select_names);
-	gtk_widget_show (button);
-
-	g_signal_connect (e_table_scrolled_get_table (e_select_names->table), "double_click",
-			  G_CALLBACK (add_address), e_select_names);
-	g_signal_connect (e_table_scrolled_get_table (e_select_names->table), "selection_change",
-			  G_CALLBACK (selection_change), e_select_names);
-	selection_change (e_table_scrolled_get_table (e_select_names->table), e_select_names);
-}
-
-static void e_select_names_child_free(char *key, ESelectNamesChild *child, ESelectNames *e_select_names)
-{
-	g_signal_handler_disconnect(child->source, child->changed_id);
-
-	g_free(child->title);
-	g_object_unref(child->table_model);
-	g_object_unref(child->source);
-	g_free(key);
-	g_free(child);
-}
-
-static void
-e_select_names_dispose (GObject *object)
-{
-	ESelectNames *e_select_names = E_SELECT_NAMES(object);
-
-	printf("eselectnames dispose\n");
-
-	if (e_select_names->status_id) {
-		g_signal_handler_disconnect(e_select_names->model, e_select_names->status_id);
-		e_select_names->status_id = 0;
-	}
-
-	if (e_select_names->search_id) {
-		g_signal_handler_disconnect(e_select_names->model, e_select_names->search_id);
-		e_select_names->search_id = 0;
-	}
-
-	if (e_select_names->gui) {
-		g_object_unref(e_select_names->gui);
-		e_select_names->gui = NULL;
-	}
-
-	if (e_select_names->children) {
-		g_hash_table_foreach(e_select_names->children, (GHFunc) e_select_names_child_free, e_select_names);
-		g_hash_table_destroy(e_select_names->children);
-		e_select_names->children = NULL;
-	}
-
-	if (e_select_names->without) {
-		g_object_unref(e_select_names->without);
-		e_select_names->without = NULL;
-	}
-	if (e_select_names->adapter) {
-		g_object_unref(e_select_names->adapter);
-		e_select_names->adapter = NULL;
-	}
-	if (e_select_names->model) {
-		g_object_unref(e_select_names->model);
-		e_select_names->model = NULL;
-	}
-
-	if (e_select_names->def) {
-		g_free(e_select_names->def);
-		e_select_names->def = NULL;
-	}
-
-	if (G_OBJECT_CLASS(parent_class)->dispose)
-		G_OBJECT_CLASS(parent_class)->dispose(object);
-}
-
-GtkWidget*
-e_select_names_new (EvolutionShellClient *shell_client)
-{
-	ESelectNames *e_select_names;
-	const char *selector_types[] = { "contacts/*", NULL };
-	char *contacts_uri;
-	GtkWidget *button;
-	EConfigListener *db;
-
-	e_select_names = g_object_new (E_TYPE_SELECT_NAMES, NULL);
-
-	db = e_book_get_config_database ();
-	contacts_uri = e_config_listener_get_string_with_default (
-		db, "/apps/evolution/addressbook/select_names/last_used_uri",
-		NULL, NULL);
-	if (!contacts_uri)
-		contacts_uri = g_strdup (e_book_get_default_book_uri ());
-
-	button = glade_xml_get_widget (e_select_names->gui, "folder-selector");
-	evolution_folder_selector_button_construct (EVOLUTION_FOLDER_SELECTOR_BUTTON (button),
-						    shell_client,
-						    _("Find contact in"),
-						    contacts_uri,
-						    selector_types);
-
-	addressbook_model_set_uri(e_select_names, e_select_names->model, contacts_uri);
-
-	g_free (contacts_uri);
-
-	return GTK_WIDGET (e_select_names);
-}
-
-static void
-button_clicked(GtkWidget *button, ESelectNamesChild *child)
-{
-	real_add_address(child->names, child);
-}
-
-static void
-remove_address(ETable *table, int row, int col, GdkEvent *event, ESelectNamesChild *child)
-{
-	e_select_names_model_delete (child->source, row);
-}
-
-struct _RightClickData {
-	ESelectNamesChild *child;
-	int row;
-};
-typedef struct _RightClickData RightClickData;
-
-static void
-remove_cb (GtkWidget *widget, void *data)
-{
-	RightClickData *rcdata = (RightClickData *)data;
-
-	e_select_names_model_delete (rcdata->child->source, rcdata->row);
-
-	/* Free everything we've created */
-	g_free (rcdata);
-}
-
-static void
-section_right_click_cb (ETable *et, int row, int col, GdkEvent *ev, ESelectNamesChild *child)
-{
-	static EPopupMenu right_click_menu[] = {
-		E_POPUP_ITEM (N_("Remove"), G_CALLBACK (remove_cb), 0),
-		E_POPUP_TERMINATOR
-	};
-	RightClickData *rcdata = g_new0 (RightClickData, 1);
-
-	rcdata->row = row;
-	rcdata->child = child;
-
-	e_popup_menu_run (right_click_menu, (GdkEvent *)ev, 0, 0, rcdata);
-}
-
-void
-e_select_names_add_section (ESelectNames *e_select_names,
-			    const char *name, const char *id,
-			    ESelectNamesModel *source)
-{
-	ESelectNamesChild *child;
-	GtkWidget *button;
-	GtkWidget *label;
-	GtkWidget *alignment;
-	GtkTable *table;
-	char *label_text;
-	ETable *etable;
-	ETableExtras *extras;
-	ECell *string_cell;
-
-	GtkWidget *sw;
-
-	if (g_hash_table_lookup(e_select_names->children, id)) {
-		return;
-	}
-
-	table = GTK_TABLE(glade_xml_get_widget (e_select_names->gui, "table-recipients"));
-
-	child = g_new(ESelectNamesChild, 1);
-
-	child->names = e_select_names;
-	child->title = g_strdup (_(name));
-
-	child->table_model = (ESelectNamesTableModel*)e_select_names_table_model_new (source);
-
-	child->source = source;
-	g_object_ref(child->source);
-
-	e_select_names->child_count++;
-
-	alignment = gtk_alignment_new(0, 0, 1, 0);
-
-	label_text = g_strconcat (child->title, " ->", NULL);
-
-	label = gtk_label_new ("");
-
-	gtk_label_set_markup (GTK_LABEL(label), label_text);
-
-	g_free (label_text);
-
-	button = gtk_button_new ();
-	gtk_container_add (GTK_CONTAINER (button), label);
-	child->label = label;
-	child->button = button;
-
-	gtk_container_add(GTK_CONTAINER(alignment), button);
-	gtk_widget_show_all(alignment);
-	g_signal_connect(button, "clicked",
-			 G_CALLBACK(button_clicked), child);
-	gtk_table_attach(table, alignment,
-			 0, 1,
-			 e_select_names->child_count,
-			 e_select_names->child_count + 1,
-			 GTK_FILL, GTK_FILL,
-			 0, 0);
-
-	etable = e_table_scrolled_get_table (e_select_names->table);
-	gtk_widget_set_sensitive (button, e_table_selected_count (etable) > 0);
-
-	extras = e_table_extras_new ();
-	string_cell = e_table_extras_get_cell (extras, "string");
-
-	g_object_set (string_cell,
-		      "underline_column", 2,
-		      NULL);
-		      
-	sw = e_table_scrolled_new_from_spec_file (E_TABLE_MODEL (child->table_model),
-						  extras,
-						  EVOLUTION_ETSPECDIR "/e-select-names-section.etspec",
-						  NULL);
-	g_object_unref (extras);
-
-	child->recipient_table = GTK_WIDGET (e_table_scrolled_get_table (E_TABLE_SCROLLED (sw)));
-
-	g_signal_connect (child->recipient_table,
-			  "right_click",
-			  G_CALLBACK (section_right_click_cb),
-			  child);
-
-	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
-					GTK_POLICY_AUTOMATIC,
-					GTK_POLICY_AUTOMATIC);
-	
-	g_signal_connect(child->recipient_table, "double_click",
-			 G_CALLBACK(remove_address), child);
-
-	child->changed_id = g_signal_connect (child->source,
-					      "changed",
-					      G_CALLBACK (sync_table_and_models),
-					      e_select_names);
-	
-	gtk_widget_show_all (sw);
-	
-	gtk_table_attach(table, sw,
-			 1, 2,
-			 e_select_names->child_count,
-			 e_select_names->child_count + 1,
-			 GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND,
-			 0, 0);
-
-	g_hash_table_insert(e_select_names->children, g_strdup(id), child);
-
-	sync_table_and_models (child->source, e_select_names);
-}
-
-void
-e_select_names_set_default (ESelectNames *e_select_names,
-			    const char *id)
-{
-	ESelectNamesChild *child;
-
-	if (e_select_names->def) {
-		child = g_hash_table_lookup(e_select_names->children, e_select_names->def);
-		if (child) {
-			GtkWidget *label = child->label;
-
-			/* set the previous default to non-bold */
-			gtk_label_set_markup (GTK_LABEL (label), child->title);
-		}
-	}
-
-	g_free(e_select_names->def);
-	e_select_names->def = g_strdup(id);
-
-	if (e_select_names->def) {
-		child = g_hash_table_lookup(e_select_names->children, e_select_names->def);
-		if (child) {
-			GtkWidget *label = child->label;
-			char *markup = g_strconcat ("<b>", child->title, "</b>", NULL);
-
-			/* set the new default to bold */
-			gtk_label_set_markup (GTK_LABEL (label), markup);
-			g_free (markup);
-		}
-	}
-}
diff --git a/addressbook/gui/component/select-names/e-select-names.etspec b/addressbook/gui/component/select-names/e-select-names.etspec
deleted file mode 100644
index 114f84cc8c..0000000000
--- a/addressbook/gui/component/select-names/e-select-names.etspec
+++ /dev/null
@@ -1,7 +0,0 @@
-<ETableSpecification no-headers="true" cursor-mode="line">
-  <ETableColumn model_col= "44" _title="Name" expansion="1.0" minimum_width="20" resizable="true" cell="string" compare="collate" search="string"/>
-    <ETableState>
-	<column source="0"/>
-	    <grouping> <leaf column="0" ascending="true"/> </grouping>
-    </ETableState>
-</ETableSpecification>
diff --git a/addressbook/gui/component/select-names/e-select-names.h b/addressbook/gui/component/select-names/e-select-names.h
deleted file mode 100644
index 8e672da92a..0000000000
--- a/addressbook/gui/component/select-names/e-select-names.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* e-select-names.h
- * Copyright (C) 2000  Ximian, Inc.
- * Author: Chris Lahey <clahey@ximian.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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 library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef __E_SELECT_NAMES_H__
-#define __E_SELECT_NAMES_H__
-
-#include <glib.h>
-#include <gtk/gtkwidget.h>
-#include <gtk/gtkdialog.h>
-#include <glade/glade.h>
-#include <gal/e-table/e-table.h>
-#include <gal/e-table/e-table-scrolled.h>
-
-#include "evolution-shell-client.h"
-#include "e-addressbook-model.h"
-
-#include "e-select-names-model.h"
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-/* ESelectNames - A dialog displaying information about a contact.
- *
- * The following arguments are available:
- *
- * name		type		read/write	description
- * --------------------------------------------------------------------------------
- */
-
-#define E_TYPE_SELECT_NAMES		(e_select_names_get_type ())
-#define E_SELECT_NAMES(obj)		(G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_SELECT_NAMES, ESelectNames))
-#define E_SELECT_NAMES_CLASS(klass)	(G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_SELECT_NAMES, ESelectNamesClass))
-#define E_IS_SELECT_NAMES(obj)		(G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_SELECT_NAMES))
-#define E_IS_SELECT_NAMES_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE ((obj), E_TYPE_SELECT_NAMES))
-
-typedef struct _ESelectNames       ESelectNames;
-typedef struct _ESelectNamesClass  ESelectNamesClass;
-typedef struct _ESelectNamesFolder ESelectNamesFolder;
-
-struct _ESelectNames
-{
-	GtkDialog parent;
-	
-	/* item specific fields */
-	GladeXML *gui;
-	
-	GHashTable *children; /* Of type char * to ESelectNamesChild */
-	int child_count;
-	ETableScrolled *table;
-	ETableModel *adapter;
-	ETableModel *without;
-	EAddressbookModel *model;
-	GtkWidget *categories;
-	GtkWidget *select_entry;
-	GtkWidget *status_message;
-	char *def;
-	ESelectNamesFolder *current_folder;
-
-	/* signal handlers */
-	gulong status_id;
-	gulong search_id;
-};
-
-struct _ESelectNamesClass
-{
-	GtkDialogClass parent_class;
-};
-
-
-GtkWidget *e_select_names_new          (EvolutionShellClient *shell_client);
-GType      e_select_names_get_type     (void);
-
-void       e_select_names_add_section  (ESelectNames         *e_select_names,
-				       	const char           *name,
-				       	const char           *id,
-				       	ESelectNamesModel    *source);
-void       e_select_names_set_default  (ESelectNames         *e_select_names,
-					const char           *id);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* __E_SELECT_NAMES_H__ */
diff --git a/addressbook/gui/component/select-names/e-simple-card-bonobo.c b/addressbook/gui/component/select-names/e-simple-card-bonobo.c
deleted file mode 100644
index 07203618b3..0000000000
--- a/addressbook/gui/component/select-names/e-simple-card-bonobo.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-simple-card-bonobo.c
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors:
- * Ettore Perazzoli <ettore@ximian.com>
- * Chris Lahey <clahey@ximian.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "e-simple-card-bonobo.h"
-
-#include <gal/util/e-util.h>
-
-#include "Evolution-Addressbook-SelectNames.h"
-
-
-#define PARENT_TYPE BONOBO_TYPE_OBJECT
-static BonoboObjectClass *parent_class = NULL;
-
-struct _ESimpleCardBonoboPrivate {
-	ECardSimple *card_simple;
-};
-
-
-
-static GNOME_Evolution_Addressbook_SimpleCard_Arbitrary *
-impl_SimpleCard_get_arbitrary (PortableServer_Servant servant,
-			       const CORBA_char *key,
-			       CORBA_Environment *ev)
-{
-	ESimpleCardBonobo *simple_card;
-	ESimpleCardBonoboPrivate *priv;
-	GNOME_Evolution_Addressbook_SimpleCard_Arbitrary *ret_val = GNOME_Evolution_Addressbook_SimpleCard_Arbitrary__alloc ();
-
-	simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object (servant));
-	priv = simple_card->priv;
-
-	if (priv->card_simple) {
-		const ECardArbitrary *arbitrary = e_card_simple_get_arbitrary (priv->card_simple, key);
-		ret_val->key = CORBA_string_dup (arbitrary->key);
-		ret_val->value = CORBA_string_dup (arbitrary->value);
-		ret_val->type = CORBA_string_dup (arbitrary->type);
-	} else {
-		ret_val->key = CORBA_string_dup ("");
-		ret_val->value = CORBA_string_dup ("");
-		ret_val->type = CORBA_string_dup ("");
-	}
-
-	return ret_val;
-}
-
-static void
-impl_SimpleCard_set_arbitrary (PortableServer_Servant servant,
-			       const CORBA_char *key,
-			       const CORBA_char *type,
-			       const CORBA_char *value,
-			       CORBA_Environment *ev)
-{
-	ESimpleCardBonobo *simple_card;
-	ESimpleCardBonoboPrivate *priv;
-
-	simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object (servant));
-	priv = simple_card->priv;
-
-	if (priv->card_simple) {
-		e_card_simple_set_arbitrary (priv->card_simple, key, type, value);
-	}
-}
-
-static CORBA_char *
-impl_SimpleCard_get (PortableServer_Servant servant,
-		     GNOME_Evolution_Addressbook_SimpleCard_Field field,
-		     CORBA_Environment *ev)
-{
-	ESimpleCardBonobo *simple_card;
-	ESimpleCardBonoboPrivate *priv;
-
-	simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object (servant));
-	priv = simple_card->priv;
-
-	if (priv->card_simple) {
-		char *value = e_card_simple_get (priv->card_simple,
-						 field);
-		char *ret_val = CORBA_string_dup (value ? value : "");
-		g_free (value);
-		return ret_val;
-	} else {
-		return CORBA_string_dup ("");
-	}
-}
-
-static void
-impl_SimpleCard_set (PortableServer_Servant servant,
-		     GNOME_Evolution_Addressbook_SimpleCard_Field field,
-		     const CORBA_char *value,
-		     CORBA_Environment *ev)
-{
-
-	ESimpleCardBonobo *simple_card;
-	ESimpleCardBonoboPrivate *priv;
-
-	simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object (servant));
-	priv = simple_card->priv;
-
-	if (priv->card_simple) {
-		e_card_simple_set (priv->card_simple,
-				   field,
-				   value);
-	}
-}
-
-
-/* GtkObject methods.  */
-
-static void
-impl_dispose (GObject *object)
-{
-	ESimpleCardBonobo *simple_card;
-	ESimpleCardBonoboPrivate *priv;
-
-	simple_card = E_SIMPLE_CARD_BONOBO (object);
-	priv = simple_card->priv;
-
-	if (priv) {
-		if (priv->card_simple) {
-			g_object_unref (priv->card_simple);
-		}
-
-		g_free (priv);
-		simple_card->priv = NULL;
-	}
-
-	if (G_OBJECT_CLASS(parent_class)->dispose)
-		G_OBJECT_CLASS(parent_class)->dispose(object);
-}
-
-
-static void
-e_simple_card_bonobo_class_init (ESimpleCardBonoboClass *klass)
-{
-	GObjectClass *object_class;
-	POA_GNOME_Evolution_Addressbook_SimpleCard__epv *epv;
-
-	object_class = G_OBJECT_CLASS (klass);
-	parent_class = g_type_class_ref (BONOBO_TYPE_OBJECT);
-
-	object_class->dispose = impl_dispose;
-
-	epv                      = &klass->epv;
-	epv->getArbitrary        = impl_SimpleCard_get_arbitrary;
-	epv->setArbitrary        = impl_SimpleCard_set_arbitrary;
-	epv->get                 = impl_SimpleCard_get;
-	epv->set                 = impl_SimpleCard_set;
-}
-
-static void
-e_simple_card_bonobo_init (ESimpleCardBonobo *simple_card)
-{
-	ESimpleCardBonoboPrivate *priv;
-
-	priv = g_new (ESimpleCardBonoboPrivate, 1);
-
-	priv->card_simple = NULL;
-
-	simple_card->priv = priv;
-}
-
-
-void
-e_simple_card_bonobo_construct (ESimpleCardBonobo *simple_card,
-				ECardSimple *card_simple)
-{
-	g_return_if_fail (simple_card != NULL);
-	g_return_if_fail (E_IS_SIMPLE_CARD_BONOBO (simple_card));
-
-	simple_card->priv->card_simple = card_simple;
-	g_object_ref (card_simple);
-}
-
-ESimpleCardBonobo *
-e_simple_card_bonobo_new (ECardSimple *card_simple)
-{
-	ESimpleCardBonobo *simple_card;
-
-	simple_card = g_object_new (E_TYPE_SIMPLE_CARD_BONOBO, NULL);
-
-	e_simple_card_bonobo_construct (simple_card, card_simple);
-
-	return simple_card;
-}
-
-
-BONOBO_TYPE_FUNC_FULL (
-		       ESimpleCardBonobo,
-		       GNOME_Evolution_Addressbook_SimpleCard,
-		       PARENT_TYPE,
-		       e_simple_card_bonobo);
diff --git a/addressbook/gui/component/select-names/e-simple-card-bonobo.h b/addressbook/gui/component/select-names/e-simple-card-bonobo.h
deleted file mode 100644
index 7bc2d65830..0000000000
--- a/addressbook/gui/component/select-names/e-simple-card-bonobo.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-simple-card-bonobo.h
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors:
- * Ettore Perazzoli <ettore@ximian.com>
- * Chris Lahey <clahey@ximian.com>
- */
-
-#ifndef __E_SIMPLE_CARD_BONOBO_H__
-#define __E_SIMPLE_CARD_BONOBO_H__
-
-#include <bonobo/bonobo-object.h>
-
-#include "Evolution-Addressbook-SelectNames.h"
-#include <addressbook/backend/ebook/e-card-simple.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#define E_TYPE_SIMPLE_CARD_BONOBO	    (e_simple_card_bonobo_get_type ())
-#define E_SIMPLE_CARD_BONOBO(obj)	    (G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_SIMPLE_CARD_BONOBO, ESimpleCardBonobo))
-#define E_SIMPLE_CARD_BONOBO_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_SIMPLE_CARD_BONOBO, ESimpleCardBonoboClass))
-#define E_IS_SIMPLE_CARD_BONOBO(obj)	    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_SIMPLE_CARD_BONOBO))
-#define E_IS_SIMPLE_CARD_BONOBO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), E_TYPE_SIMPLE_CARD_BONOBO))
-
-
-typedef struct _ESimpleCardBonobo        ESimpleCardBonobo;
-typedef struct _ESimpleCardBonoboPrivate ESimpleCardBonoboPrivate;
-typedef struct _ESimpleCardBonoboClass   ESimpleCardBonoboClass;
-
-struct _ESimpleCardBonobo {
-	BonoboObject parent;
-
-	ESimpleCardBonoboPrivate *priv;
-};
-
-struct _ESimpleCardBonoboClass {
-	BonoboObjectClass parent_class;
-
-	POA_GNOME_Evolution_Addressbook_SimpleCard__epv epv;
-};
-
-
-GType              e_simple_card_bonobo_get_type   (void);
-ESimpleCardBonobo *e_simple_card_bonobo_new        (ECardSimple                            *card_simple);
-void               e_simple_card_bonobo_construct  (ESimpleCardBonobo *simple_card,
-						    ECardSimple *card_simple);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __E_SIMPLE_CARD_BONOBO_H__ */
diff --git a/addressbook/gui/component/select-names/recipient.glade b/addressbook/gui/component/select-names/recipient.glade
deleted file mode 100644
index edcf6bbab0..0000000000
--- a/addressbook/gui/component/select-names/recipient.glade
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd" >
-
-<glade-interface>
-  <widget class="GtkWindow" id="window1">
-    <property name="visible">no</property>
-    <property name="title" translatable="yes">window1</property>
-    <property name="type">GTK_WINDOW_TOPLEVEL</property>
-    <property name="modal">no</property>
-    <property name="allow_shrink">no</property>
-    <property name="allow_grow">yes</property>
-    <property name="window-position">GTK_WIN_POS_NONE</property>
-
-    <child>
-      <widget class="GtkHBox" id="hbox-top">
-        <property name="homogeneous">no</property>
-        <property name="spacing">4</property>
-        <property name="visible">yes</property>
-
-        <child>
-          <widget class="GtkAlignment" id="alignment1">
-            <property name="xalign">1.08033e-07</property>
-            <property name="yalign">0</property>
-            <property name="xscale">1</property>
-            <property name="yscale">0</property>
-            <property name="visible">yes</property>
-
-            <child>
-              <widget class="GtkButton" id="text-button">
-                <property name="can_focus">yes</property>
-                <property name="label" translatable="yes">-&gt;</property>
-                <property name="visible">yes</property>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="padding">0</property>
-            <property name="expand">no</property>
-            <property name="fill">yes</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/addressbook/gui/component/select-names/select-names.glade b/addressbook/gui/component/select-names/select-names.glade
deleted file mode 100644
index 9a6b38f461..0000000000
--- a/addressbook/gui/component/select-names/select-names.glade
+++ /dev/null
@@ -1,451 +0,0 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
-<glade-interface>
-
-<widget class="GtkDialog" id="dialog-top">
-  <property name="title" translatable="yes">Select Names</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="default_width">417</property>
-  <property name="default_height">332</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="has_separator">True</property>
-
-  <child internal-child="vbox">
-    <widget class="GtkVBox" id="dialog-vbox1">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">3</property>
-
-      <child internal-child="action_area">
-	<widget class="GtkHButtonBox" id="dialog-action_area1">
-	  <property name="visible">True</property>
-	  <property name="layout_style">GTK_BUTTONBOX_END</property>
-
-	  <child>
-	    <widget class="GtkButton" id="button4">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="has_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-ok</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="response_id">0</property>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkButton" id="button5">
-	      <property name="visible">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-cancel</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="response_id">0</property>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">True</property>
-	  <property name="pack_type">GTK_PACK_END</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkTable" id="table-top">
-	  <property name="visible">True</property>
-	  <property name="n_rows">3</property>
-	  <property name="n_columns">1</property>
-	  <property name="homogeneous">False</property>
-	  <property name="row_spacing">3</property>
-	  <property name="column_spacing">3</property>
-
-	  <child>
-	    <widget class="GtkHSeparator" id="hseparator1">
-	      <property name="visible">True</property>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">0</property>
-	      <property name="right_attach">1</property>
-	      <property name="top_attach">1</property>
-	      <property name="bottom_attach">2</property>
-	      <property name="x_options"></property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkFrame" id="frame1">
-	      <property name="visible">True</property>
-	      <property name="label_xalign">0</property>
-	      <property name="label_yalign">0.5</property>
-	      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-
-	      <child>
-		<widget class="GtkTable" id="table5">
-		  <property name="border_width">3</property>
-		  <property name="visible">True</property>
-		  <property name="n_rows">2</property>
-		  <property name="n_columns">2</property>
-		  <property name="homogeneous">False</property>
-		  <property name="row_spacing">3</property>
-		  <property name="column_spacing">3</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label30">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">_Folder:</property>
-		      <property name="use_underline">True</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_CENTER</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">0</property>
-		      <property name="right_attach">1</property>
-		      <property name="top_attach">0</property>
-		      <property name="bottom_attach">1</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkLabel" id="label31">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">_Category:</property>
-		      <property name="use_underline">True</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_CENTER</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">0</property>
-		      <property name="right_attach">1</property>
-		      <property name="top_attach">1</property>
-		      <property name="bottom_attach">2</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment5">
-		      <property name="visible">True</property>
-		      <property name="xalign">7.45058e-09</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">0</property>
-		      <property name="yscale">1</property>
-
-		      <child>
-			<widget class="Custom" id="custom-categories">
-			  <property name="visible">True</property>
-			  <property name="creation_function">e_select_names_create_categories</property>
-			  <property name="int1">0</property>
-			  <property name="int2">0</property>
-			  <property name="last_modification_time">Tue, 19 Feb 2002 23:06:24 GMT</property>
-			</widget>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">1</property>
-		      <property name="right_attach">2</property>
-		      <property name="top_attach">1</property>
-		      <property name="bottom_attach">2</property>
-		      <property name="y_options">fill</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="Custom" id="folder-selector">
-		      <property name="visible">True</property>
-		      <property name="creation_function">e_addressbook_create_folder_selector</property>
-		      <property name="int1">0</property>
-		      <property name="int2">0</property>
-		      <property name="last_modification_time">Mon, 15 Jul 2002 02:21:32 GMT</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">1</property>
-		      <property name="right_attach">2</property>
-		      <property name="top_attach">0</property>
-		      <property name="bottom_attach">1</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options">fill</property>
-		    </packing>
-		  </child>
-		</widget>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label1">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">Show Contacts</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		</widget>
-		<packing>
-		  <property name="type">label_item</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">0</property>
-	      <property name="right_attach">1</property>
-	      <property name="top_attach">0</property>
-	      <property name="bottom_attach">1</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkVBox" id="vbox5">
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">0</property>
-
-	      <child>
-		<widget class="GtkTable" id="table4">
-		  <property name="visible">True</property>
-		  <property name="n_rows">2</property>
-		  <property name="n_columns">2</property>
-		  <property name="homogeneous">False</property>
-		  <property name="row_spacing">3</property>
-		  <property name="column_spacing">3</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label32">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Type a name into the entry, or
-select one from the list below:</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">0</property>
-		      <property name="right_attach">1</property>
-		      <property name="top_attach">0</property>
-		      <property name="bottom_attach">1</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkTable" id="table-recipients">
-		      <property name="visible">True</property>
-		      <property name="n_rows">1</property>
-		      <property name="n_columns">2</property>
-		      <property name="homogeneous">False</property>
-		      <property name="row_spacing">3</property>
-		      <property name="column_spacing">3</property>
-
-		      <child>
-			<widget class="GtkLabel" id="label20">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Selected Contacts:</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</property>
-			  <property name="wrap">True</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="left_attach">1</property>
-			  <property name="right_attach">2</property>
-			  <property name="top_attach">0</property>
-			  <property name="bottom_attach">1</property>
-			  <property name="x_options">fill</property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">1</property>
-		      <property name="right_attach">2</property>
-		      <property name="top_attach">1</property>
-		      <property name="bottom_attach">2</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment4">
-		      <property name="visible">True</property>
-		      <property name="xalign">7.45058e-09</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-
-		      <child>
-			<widget class="GtkVBox" id="vbox6">
-			  <property name="border_width">3</property>
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">3</property>
-
-			  <child>
-			    <widget class="GtkHBox" id="hbox1">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">3</property>
-
-			      <child>
-				<widget class="GtkEntry" id="entry-select">
-				  <property name="visible">True</property>
-				  <property name="can_focus">True</property>
-				  <property name="editable">True</property>
-				  <property name="visibility">True</property>
-				  <property name="max_length">0</property>
-				  <property name="text" translatable="yes"></property>
-				  <property name="has_frame">True</property>
-				  <property name="invisible_char" translatable="yes">*</property>
-				  <property name="activates_default">False</property>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">True</property>
-				  <property name="fill">True</property>
-				</packing>
-			      </child>
-
-			      <child>
-				<widget class="GtkButton" id="button-find">
-				  <property name="visible">True</property>
-				  <property name="can_focus">True</property>
-				  <property name="label" translatable="yes">Find</property>
-				  <property name="use_underline">True</property>
-				  <property name="relief">GTK_RELIEF_NORMAL</property>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkAlignment" id="alignment3">
-			      <property name="visible">True</property>
-			      <property name="xalign">0.5</property>
-			      <property name="yalign">0.5</property>
-			      <property name="xscale">1</property>
-			      <property name="yscale">1</property>
-
-			      <child>
-				<widget class="Custom" id="table-source">
-				  <property name="visible">True</property>
-				  <property name="creation_function">e_addressbook_create_ebook_table</property>
-				  <property name="int1">0</property>
-				  <property name="int2">0</property>
-				  <property name="last_modification_time">Sat, 10 Jun 2000 22:02:57 GMT</property>
-				</widget>
-			      </child>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">0</property>
-		      <property name="right_attach">1</property>
-		      <property name="top_attach">1</property>
-		      <property name="bottom_attach">2</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">True</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">0</property>
-	      <property name="right_attach">1</property>
-	      <property name="top_attach">1</property>
-	      <property name="bottom_attach">2</property>
-	      <property name="x_options">fill</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="status-message">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes"></property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">3</property>
-	    </widget>
-	    <packing>
-	      <property name="left_attach">0</property>
-	      <property name="right_attach">1</property>
-	      <property name="top_attach">2</property>
-	      <property name="bottom_attach">3</property>
-	      <property name="x_options">fill</property>
-	      <property name="y_options"></property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-</glade-interface>
-- 
cgit