diff options
author | Chris Toshok <toshok@ximian.com> | 2002-04-19 05:26:48 +0800 |
---|---|---|
committer | Chris Toshok <toshok@src.gnome.org> | 2002-04-19 05:26:48 +0800 |
commit | 9b7cc54d6ff67c83590706ee0b6749a7e1f3ca21 (patch) | |
tree | 3738f8f1fb02399157515420ff995ad5a428936f /addressbook | |
parent | 0c7e55e75cc787269ab570588f3873b6279aede1 (diff) | |
download | gsoc2013-evolution-9b7cc54d6ff67c83590706ee0b6749a7e1f3ca21.tar gsoc2013-evolution-9b7cc54d6ff67c83590706ee0b6749a7e1f3ca21.tar.gz gsoc2013-evolution-9b7cc54d6ff67c83590706ee0b6749a7e1f3ca21.tar.bz2 gsoc2013-evolution-9b7cc54d6ff67c83590706ee0b6749a7e1f3ca21.tar.lz gsoc2013-evolution-9b7cc54d6ff67c83590706ee0b6749a7e1f3ca21.tar.xz gsoc2013-evolution-9b7cc54d6ff67c83590706ee0b6749a7e1f3ca21.tar.zst gsoc2013-evolution-9b7cc54d6ff67c83590706ee0b6749a7e1f3ca21.zip |
fix memory leaks.
2002-04-18 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-ldap.c (get_ldap_library_info): fix
memory leaks.
* gui/component/GNOME_Evolution_Addressbook.oaf.in: remove the
Addressbook_ConfigControl stuff to LDAP_ConfigControl.
* gui/component/Makefile.am (evolution_addressbook_SOURCES):
remove addressbook-config.* and add ldap-config.*
(glade_DATA): same.
(evolution_addressbook_LDADD): add LDAP_LIBS.
* gui/component/addressbook-component.c (owner_set_cb):
addressbook_config_register_factory =>
ldap_config_register_factory.
* gui/component/addressbook.c (book_open_cb): remove source->type
check - they're always LDAP.
(load_uri_cb): same.
* gui/component/addressbook-storage.c (ldap_unparse_ssl): new
function.
(ldap_parse_ssl): new function.
(addressbook_storage_init_source_uri): use a more flexible scheme
to build up the uri's, and add in the ssl parameter.
(load_source_data): fill in source->ssl, and remove source->type
assignment.
(addressbook_source_copy): copy source->ssl, and remove
source->type copy.
(create_ldap_folder): addressbook_create_new_source =>
ldap_config_create_new_source.
* gui/component/addressbook-storage.h: remove
AddressbookSourceType (it was always LDAP), and add
AddressbookLDAPSSLType.
svn path=/trunk/; revision=16524
Diffstat (limited to 'addressbook')
-rw-r--r-- | addressbook/ChangeLog | 37 | ||||
-rw-r--r-- | addressbook/backend/pas/pas-backend-ldap.c | 4 | ||||
-rw-r--r-- | addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in | 11 | ||||
-rw-r--r-- | addressbook/gui/component/Makefile.am | 18 | ||||
-rw-r--r-- | addressbook/gui/component/addressbook-component.c | 4 | ||||
-rw-r--r-- | addressbook/gui/component/addressbook-config.c | 589 | ||||
-rw-r--r-- | addressbook/gui/component/addressbook-config.glade | 1210 | ||||
-rw-r--r-- | addressbook/gui/component/addressbook-storage.c | 65 | ||||
-rw-r--r-- | addressbook/gui/component/addressbook-storage.h | 17 | ||||
-rw-r--r-- | addressbook/gui/component/addressbook.c | 5 | ||||
-rw-r--r-- | addressbook/gui/component/ldap-config.c | 1664 | ||||
-rw-r--r-- | addressbook/gui/component/ldap-config.glade | 5819 | ||||
-rw-r--r-- | addressbook/gui/component/ldap-config.h (renamed from addressbook/gui/component/addressbook-config.h) | 11 |
13 files changed, 7606 insertions, 1848 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index 8fb8c5fc2b..7b151d6ebc 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,3 +1,40 @@ +2002-04-18 Chris Toshok <toshok@ximian.com> + + * backend/pas/pas-backend-ldap.c (get_ldap_library_info): fix + memory leaks. + + * gui/component/GNOME_Evolution_Addressbook.oaf.in: remove the + Addressbook_ConfigControl stuff to LDAP_ConfigControl. + + * gui/component/Makefile.am (evolution_addressbook_SOURCES): + remove addressbook-config.* and add ldap-config.* + (glade_DATA): same. + (evolution_addressbook_LDADD): add LDAP_LIBS. + + * gui/component/addressbook-component.c (owner_set_cb): + addressbook_config_register_factory => + ldap_config_register_factory. + + * gui/component/addressbook.c (book_open_cb): remove source->type + check - they're always LDAP. + (load_uri_cb): same. + + * gui/component/addressbook-storage.c (ldap_unparse_ssl): new + function. + (ldap_parse_ssl): new function. + (addressbook_storage_init_source_uri): use a more flexible scheme + to build up the uri's, and add in the ssl parameter. + (load_source_data): fill in source->ssl, and remove source->type + assignment. + (addressbook_source_copy): copy source->ssl, and remove + source->type copy. + (create_ldap_folder): addressbook_create_new_source => + ldap_config_create_new_source. + + * gui/component/addressbook-storage.h: remove + AddressbookSourceType (it was always LDAP), and add + AddressbookLDAPSSLType. + 2002-04-18 Dan Winship <danw@ximian.com> * backend/ebook/e-book-util.c (e_book_load_default_book): Append diff --git a/addressbook/backend/pas/pas-backend-ldap.c b/addressbook/backend/pas/pas-backend-ldap.c index b8adccf7f1..9af0a8c1a4 100644 --- a/addressbook/backend/pas/pas-backend-ldap.c +++ b/addressbook/backend/pas/pas-backend-ldap.c @@ -448,12 +448,14 @@ get_ldap_library_info () info.ldapai_vendor_version % 1000); g_message ("extensions present:"); + /* yuck. we have to free these? */ for (i = 0; info.ldapai_extensions[i]; i++) { char *extension = info.ldapai_extensions[i]; g_message (extension); - /* yuck. we have to free this? */ ldap_memfree (extension); } + ldap_memfree (info.ldapai_extensions); + ldap_memfree (info.ldapai_vendor_name); } ldap_unbind_ext_s (ldap, NULL, NULL); diff --git a/addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in b/addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in index cfcd262220..1c12c46faf 100644 --- a/addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in +++ b/addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in @@ -131,7 +131,7 @@ </oaf_server> -<oaf_server iid="OAFIID:GNOME_Evolution_Addressbook_ConfigControlFactory" +<oaf_server iid="OAFIID:GNOME_Evolution_LDAPStorage_ConfigControlFactory" type="exe" location="evolution-addressbook"> @@ -144,9 +144,9 @@ </oaf_server> -<oaf_server iid="OAFIID:GNOME_Evolution_Addresbook_ConfigControl" +<oaf_server iid="OAFIID:GNOME_Evolution_LDAPStorage_ConfigControl" type="factory" - location="OAFIID:GNOME_Evolution_Addressbook_ConfigControlFactory"> + location="OAFIID:GNOME_Evolution_LDAPStorage_ConfigControlFactory"> <oaf_attribute name="repo_ids" type="stringv"> <item value="IDL:GNOME/Evolution/ConfigControl:1.0"/> @@ -161,11 +161,6 @@ <oaf_attribute name="evolution:config_item:icon_name" type="string" value="evolution-contacts.png"/> - <oaf_attribute name="evolution:config_item:type" type="stringv"> - <item value="contacts"/> - <item value="ldap-contacts"/> - </oaf_attribute> - <oaf_attribute name="evolution:config_item:priority" type="string" value="-6"/> <oaf_attribute name="description" type="string" diff --git a/addressbook/gui/component/Makefile.am b/addressbook/gui/component/Makefile.am index 01e35b60d8..eb4de0d536 100644 --- a/addressbook/gui/component/Makefile.am +++ b/addressbook/gui/component/Makefile.am @@ -27,8 +27,6 @@ bin_PROGRAMS = \ evolution_addressbook_SOURCES = \ addressbook-component.c \ addressbook-component.h \ - addressbook-config.c \ - addressbook-config.h \ addressbook-factory.c \ addressbook-storage.c \ addressbook-storage.h \ @@ -39,7 +37,9 @@ evolution_addressbook_SOURCES = \ e-address-widget.h \ e-address-widget.c \ e-address-popup.h \ - e-address-popup.c + e-address-popup.c \ + ldap-config.c \ + ldap-config.h evolution_addressbook_LDADD = \ select-names/libeselectnames.la \ @@ -59,7 +59,7 @@ evolution_addressbook_LDADD = \ $(top_builddir)/filter/libfilter.la \ $(top_builddir)/e-util/libeutil.la \ $(top_builddir)/widgets/menus/libmenus.la \ - $(EVOLUTION_ADDRESSBOOK_LIBS) + $(EVOLUTION_ADDRESSBOOK_LIBS) $(LDAP_LIBS) evolution_addressbook_LDFLAGS = `gnome-config --libs gdk_pixbuf` -export-dynamic @@ -70,14 +70,14 @@ oaf_in_files = GNOME_Evolution_Addressbook.oaf.in oaf_DATA = $(oaf_in_files:.oaf.in=.oaf) gladedir = $(datadir)/evolution/glade -glade_DATA = addressbook-config.glade +glade_DATA = ldap-config.glade iconsdir = $(datadir)/images/evolution -EXTRA_DIST = \ - $(glade_DATA) \ - $(oaf_DATA) \ - addressbook-config.glade \ +extra_dist = \ + $(glade_data) \ + $(oaf_data) \ + ldap-config.glade \ $(oaf_in_files) if ENABLE_PURIFY diff --git a/addressbook/gui/component/addressbook-component.c b/addressbook/gui/component/addressbook-component.c index 512066519d..f126368c85 100644 --- a/addressbook/gui/component/addressbook-component.c +++ b/addressbook/gui/component/addressbook-component.c @@ -44,9 +44,9 @@ #include "ebook/e-card.h" #include "ebook/e-book-util.h" +#include "ldap-config.h" #include "addressbook-storage.h" #include "addressbook-component.h" -#include "addressbook-config.h" #include "addressbook.h" #include "addressbook/gui/merging/e-card-merging.h" #include "addressbook/gui/widgets/e-addressbook-util.h" @@ -369,7 +369,7 @@ owner_set_cb (EvolutionShellComponent *shell_component, if (global_shell_client == NULL) global_shell_client = shell_client; - addressbook_config_register_factory (bonobo_object_corba_objref (BONOBO_OBJECT (shell_client))); + ldap_config_register_factory (bonobo_object_corba_objref (BONOBO_OBJECT (shell_client))); addressbook_storage_setup (shell_component, evolution_homedir); } diff --git a/addressbook/gui/component/addressbook-config.c b/addressbook/gui/component/addressbook-config.c deleted file mode 100644 index 9b898f336e..0000000000 --- a/addressbook/gui/component/addressbook-config.c +++ /dev/null @@ -1,589 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - -#include <config.h> - -#include "addressbook-config.h" - -#include "addressbook-storage.h" - -#include "evolution-config-control.h" - -#include <gal/widgets/e-unicode.h> -#include <e-util/e-html-utils.h> - -#include <gtkhtml/gtkhtml.h> - -#include <libgnome/gnome-defs.h> -#include <libgnome/gnome-i18n.h> -#include <libgnomeui/gnome-dialog.h> -#include <libgnomeui/gnome-stock.h> - -#include <bonobo/bonobo-generic-factory.h> - -#include <glade/glade.h> - -#include <stdlib.h> - - -#define CONFIG_CONTROL_FACTORY_ID "OAFIID:GNOME_Evolution_Addressbook_ConfigControlFactory" - -typedef struct _AddressbookSourceDialog AddressbookSourceDialog; -typedef struct _AddressbookSourcePageItem AddressbookSourcePageItem; - -struct _AddressbookSourceDialog { - GladeXML *gui; - - GtkWidget *dialog; - - GtkWidget *notebook; - GtkWidget *basic_notebook; - GtkWidget *advanced_notebook; - - GtkWidget *name; - GtkWidget *host; - - GtkWidget *auth_checkbutton; - GtkWidget *auth_optionmenu; - GtkWidget *auth_notebook; - GtkWidget *email; - GtkWidget *binddn; - int auth; - - GtkWidget *port; - GtkWidget *rootdn; - GtkWidget *limit; - GtkWidget *scope_optionmenu; - AddressbookLDAPScopeType ldap_scope; - - gint id; /* button we closed the dialog with */ - - AddressbookSource *source; /* our result if the Ok button was clicked */ -}; - -static void -addressbook_source_edit_changed (GtkWidget *item, AddressbookSourceDialog *dialog) -{ - char *data; - gboolean complete = TRUE; - - if (complete) { - data = e_utf8_gtk_editable_get_chars (GTK_EDITABLE (dialog->name), 0, -1); - if (!data || !*data) - complete = FALSE; - g_free (data); - } - - if (complete) { - if (complete) { - data = e_utf8_gtk_editable_get_chars (GTK_EDITABLE (dialog->host), 0, -1); - if (!data || !*data) - complete = FALSE; - g_free (data); - } - - if (complete) { - data = e_utf8_gtk_editable_get_chars (GTK_EDITABLE (dialog->port), 0, -1); - if (!data || !*data) - complete = FALSE; - /* XXX more validation on port here */ - g_free (data); - } - } - - gnome_dialog_set_sensitive (GNOME_DIALOG (dialog->dialog), 0, complete); -} - -static void -auth_checkbutton_changed (GtkWidget *item, AddressbookSourceDialog *dialog) -{ - /* make sure the change is reflected by the state of the dialog's OK button */ - addressbook_source_edit_changed (item, dialog); - - - gtk_widget_set_sensitive (dialog->auth_optionmenu, - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(dialog->auth_checkbutton))); - gtk_widget_set_sensitive (dialog->auth_notebook, - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(dialog->auth_checkbutton))); -} - -static void -scope_optionmenu_activated (GtkWidget *item, AddressbookSourceDialog *dialog) -{ - /* make sure the change is reflected by the state of the dialog's OK button */ - addressbook_source_edit_changed (item, dialog); - - dialog->ldap_scope = g_list_index (gtk_container_children (GTK_CONTAINER (item->parent)), - item); -} - -static void -auth_optionmenu_activated (GtkWidget *item, AddressbookSourceDialog *dialog) -{ - /* make sure the change is reflected by the state of the dialog's OK button */ - addressbook_source_edit_changed (item, dialog); - - dialog->auth = g_list_index (gtk_container_children (GTK_CONTAINER (item->parent)), - item) + 1; - - gtk_notebook_set_page (GTK_NOTEBOOK(dialog->auth_notebook), dialog->auth - 1); -} - -typedef struct { - GtkWidget *notebook; - int page_num; -} FocusHelpClosure; - -static void -focus_help (GtkWidget *w, GdkEventFocus *event, FocusHelpClosure *closure) -{ - gtk_notebook_set_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; - - gtk_signal_connect_full (GTK_OBJECT (widget), - "focus_in_event" /* XXX */, - (GtkSignalFunc) focus_help, NULL, - focus_closure, - (GtkDestroyNotify) g_free, - FALSE, FALSE); -} - -static void -addressbook_source_dialog_set_source (AddressbookSourceDialog *dialog, AddressbookSource *source) -{ - char *string; - e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->name), source ? source->name : ""); - e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->host), source ? source->host : ""); - e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->email), source ? source->email_addr : ""); - e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->binddn), source ? source->binddn : ""); - e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->port), source ? source->port : "389"); - e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->rootdn), source ? source->rootdn : ""); - - string = g_strdup_printf ("%d", source ? source->limit : 100); - e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->limit), string); - g_free (string); - - dialog->auth = source ? source->auth : ADDRESSBOOK_LDAP_AUTH_NONE; - if (dialog->auth != ADDRESSBOOK_LDAP_AUTH_NONE) { - gtk_option_menu_set_history (GTK_OPTION_MENU(dialog->auth_optionmenu), dialog->auth - 1); - gtk_notebook_set_page (GTK_NOTEBOOK(dialog->auth_notebook), dialog->auth - 1); - } - - dialog->ldap_scope = source ? source->scope : ADDRESSBOOK_LDAP_SCOPE_ONELEVEL; - gtk_option_menu_set_history (GTK_OPTION_MENU(dialog->scope_optionmenu), dialog->ldap_scope); - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(dialog->auth_checkbutton), source && source->auth != ADDRESSBOOK_LDAP_AUTH_NONE); - gtk_widget_set_sensitive (dialog->auth_optionmenu, source && source->auth != ADDRESSBOOK_LDAP_AUTH_NONE); - gtk_widget_set_sensitive (dialog->auth_notebook, source && source->auth != ADDRESSBOOK_LDAP_AUTH_NONE); -} - -static AddressbookSource * -addressbook_source_dialog_get_source (AddressbookSourceDialog *dialog) -{ - AddressbookSource *source = g_new0 (AddressbookSource, 1); - - source->name = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->name)); - source->host = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->host)); - source->email_addr = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->email)); - source->binddn = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->binddn)); - source->port = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->port)); - source->rootdn = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->rootdn)); - source->limit = atoi(e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->limit))); - source->scope = dialog->ldap_scope; - source->auth = dialog->auth; - - addressbook_storage_init_source_uri (source); - - return source; -} - -static void -addressbook_source_dialog_ok_clicked (GtkWidget *widget, AddressbookSourceDialog *dialog) -{ - dialog->source = addressbook_source_dialog_get_source (dialog); -} - -static void -add_scope_activate_cb (GtkWidget *item, AddressbookSourceDialog *dialog) -{ - gtk_signal_connect (GTK_OBJECT (item), "activate", - GTK_SIGNAL_FUNC (scope_optionmenu_activated), dialog); -} - -static void -add_auth_activate_cb (GtkWidget *item, AddressbookSourceDialog *dialog) -{ - gtk_signal_connect (GTK_OBJECT (item), "activate", - GTK_SIGNAL_FUNC (auth_optionmenu_activated), dialog); -} - - -static AddressbookSourceDialog* -addressbook_source_dialog (GladeXML *gui, AddressbookSource *source, GtkWidget *parent) -{ - AddressbookSourceDialog *dialog = g_new0 (AddressbookSourceDialog, 1); - GtkWidget *menu; - - dialog->gui = gui; - - dialog->dialog = glade_xml_get_widget (gui, "add_addressbook"); - - if (source) - gtk_window_set_title (GTK_WINDOW (dialog->dialog), _("Edit Addressbook")); - - gtk_window_set_modal (GTK_WINDOW (dialog->dialog), TRUE); - gtk_window_set_policy (GTK_WINDOW (dialog->dialog), - FALSE, TRUE, FALSE); - - gnome_dialog_set_parent (GNOME_DIALOG (dialog->dialog), - GTK_WINDOW (parent)); - - dialog->notebook = glade_xml_get_widget (gui, "add-addressbook-notebook"); - dialog->basic_notebook = glade_xml_get_widget (gui, "basic-notebook"); - dialog->advanced_notebook = glade_xml_get_widget (gui, "advanced-notebook"); - - /* BASIC STUFF */ - dialog->name = glade_xml_get_widget (gui, "account-name-entry"); - gtk_signal_connect (GTK_OBJECT (dialog->name), "changed", - GTK_SIGNAL_FUNC (addressbook_source_edit_changed), dialog); - add_focus_handler (dialog->name, dialog->basic_notebook, 0); - - dialog->host = glade_xml_get_widget (gui, "server-name-entry"); - gtk_signal_connect (GTK_OBJECT (dialog->host), "changed", - GTK_SIGNAL_FUNC (addressbook_source_edit_changed), dialog); - add_focus_handler (dialog->host, dialog->basic_notebook, 1); - - /* BASIC -> AUTH STUFF */ - dialog->auth_notebook = glade_xml_get_widget (gui, "auth-notebook"); - - dialog->auth_checkbutton = glade_xml_get_widget (gui, "auth-checkbutton"); - add_focus_handler (dialog->auth_checkbutton, dialog->basic_notebook, 2); - gtk_signal_connect (GTK_OBJECT (dialog->auth_checkbutton), "toggled", - GTK_SIGNAL_FUNC (auth_checkbutton_changed), dialog); - - dialog->auth_optionmenu = glade_xml_get_widget (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, dialog->basic_notebook, 3); - - dialog->email = glade_xml_get_widget (gui, "email-entry"); - add_focus_handler (dialog->email, dialog->basic_notebook, 4); - - dialog->binddn = glade_xml_get_widget (gui, "dn-entry"); - add_focus_handler (dialog->binddn, dialog->basic_notebook, 5); - - /* ADVANCED STUFF */ - dialog->port = glade_xml_get_widget (gui, "port-entry"); - gtk_signal_connect (GTK_OBJECT (dialog->port), "changed", - GTK_SIGNAL_FUNC (addressbook_source_edit_changed), dialog); - add_focus_handler (dialog->port, dialog->advanced_notebook, 0); - - dialog->rootdn = glade_xml_get_widget (gui, "rootdn-entry"); - gtk_signal_connect (GTK_OBJECT (dialog->rootdn), "changed", - GTK_SIGNAL_FUNC (addressbook_source_edit_changed), dialog); - add_focus_handler (dialog->rootdn, dialog->advanced_notebook, 1); - - dialog->scope_optionmenu = glade_xml_get_widget (gui, "scope-optionmenu"); - add_focus_handler (dialog->scope_optionmenu, dialog->advanced_notebook, 2); - 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->limit = glade_xml_get_widget (gui, "limit-entry"); - gtk_signal_connect (GTK_OBJECT (dialog->limit), "changed", - GTK_SIGNAL_FUNC (addressbook_source_edit_changed), dialog); - add_focus_handler (dialog->limit, dialog->advanced_notebook, 3); - - /* fill in source info if there is some */ - addressbook_source_dialog_set_source (dialog, source); - - /* always start out on the first page. */ - gtk_notebook_set_page (GTK_NOTEBOOK (dialog->notebook), 0); - - gnome_dialog_set_sensitive (GNOME_DIALOG (dialog->dialog), 0, FALSE); - - gnome_dialog_button_connect( GNOME_DIALOG (dialog->dialog), 0, - GTK_SIGNAL_FUNC (addressbook_source_dialog_ok_clicked), - dialog); - - /* and set focus to be the Account field (the first editable - field on the first page) */ - gtk_widget_grab_focus (dialog->name); - - return dialog; -} - -static AddressbookSourceDialog * -addressbook_config_source_with_gui (GladeXML *gui, AddressbookSource *source, GtkWidget *parent) -{ - AddressbookSourceDialog* dialog; - - dialog = addressbook_source_dialog (gui, source, parent); - - gnome_dialog_close_hides (GNOME_DIALOG(dialog->dialog), TRUE); - - dialog->id = gnome_dialog_run_and_close (GNOME_DIALOG (dialog->dialog)); - - return dialog; -} - -void -addressbook_create_new_source (const char *new_source, GtkWidget *parent) -{ - AddressbookSourceDialog *dialog; - GladeXML *gui; - - gui = glade_xml_new (EVOLUTION_GLADEDIR "/addressbook-config.glade", NULL); - - dialog = addressbook_source_dialog (gui, NULL, parent); - - e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->name), new_source); - - gnome_dialog_close_hides (GNOME_DIALOG(dialog->dialog), TRUE); - - dialog->id = gnome_dialog_run_and_close (GNOME_DIALOG (dialog->dialog)); - - gtk_object_unref (GTK_OBJECT (dialog->gui)); - - if (dialog->id == 0) { - /* Ok was clicked */ - addressbook_storage_add_source (addressbook_source_copy(dialog->source)); - addressbook_storage_write_sources(); - } -} - - - -typedef struct { - EvolutionConfigControl *config_control; - GtkWidget *page; - - GladeXML *gui; - GNOME_Evolution_Shell shell; - - GtkWidget *clistSources; - GtkWidget *addSource; - GtkWidget *editSource; - GtkWidget *deleteSource; - gint source_row; -} AddressbookDialog; - -static void -update_sensitivity (AddressbookDialog *dialog) -{ - gboolean sensitive = dialog->source_row != -1; - - gtk_widget_set_sensitive (dialog->editSource, sensitive); - gtk_widget_set_sensitive (dialog->deleteSource, sensitive); -} - -static void -add_source_clicked (GtkWidget *widget, AddressbookDialog *dialog) -{ - AddressbookSourceDialog *sdialog; - - sdialog = addressbook_config_source_with_gui (dialog->gui, NULL, dialog->page); - if (sdialog->id == 0) { - /* Ok was clicked */ - AddressbookSource *source = addressbook_source_copy(sdialog->source); - gint row; - gchar *text[2]; - - text[0] = source->name; - text[1] = source->host; - - row = e_utf8_gtk_clist_append (GTK_CLIST(dialog->clistSources), text); - gtk_clist_set_row_data_full (GTK_CLIST(dialog->clistSources), row, source, (GtkDestroyNotify) addressbook_source_free); - - evolution_config_control_changed (dialog->config_control); - update_sensitivity (dialog); - } -} - -static void -edit_source_clicked (GtkWidget *widget, AddressbookDialog *dialog) -{ - AddressbookSource *source; - AddressbookSourceDialog *sdialog; - - source = gtk_clist_get_row_data (GTK_CLIST (dialog->clistSources), dialog->source_row); - - sdialog = addressbook_config_source_with_gui (dialog->gui, source, dialog->page); - if (sdialog->id == 0) { - /* Ok was clicked */ - source = addressbook_source_copy(sdialog->source); - - e_utf8_gtk_clist_set_text (GTK_CLIST (dialog->clistSources), dialog->source_row, 0, source->name); - e_utf8_gtk_clist_set_text (GTK_CLIST (dialog->clistSources), dialog->source_row, 1, source->host); - gtk_clist_set_row_data (GTK_CLIST (dialog->clistSources), dialog->source_row, source); - - evolution_config_control_changed (dialog->config_control); - - update_sensitivity (dialog); - } -} - -static void -delete_source_clicked (GtkWidget *widget, AddressbookDialog *dialog) -{ - gtk_clist_remove (GTK_CLIST (dialog->clistSources), dialog->source_row); - dialog->source_row = -1; - - evolution_config_control_changed (dialog->config_control); - - update_sensitivity (dialog); -} - -static void -sources_select_row (GtkWidget *widget, gint row, gint column, - GdkEventButton *event, AddressbookDialog *dialog) -{ - dialog->source_row = row; - - update_sensitivity (dialog); -} - -static void -config_control_destroy_callback (EvolutionConfigControl *config_control, - void *data) -{ - AddressbookDialog *dialog; - - dialog = (AddressbookDialog *) data; - - gtk_object_unref (GTK_OBJECT (dialog->gui)); - g_free (dialog); -} - -static void -config_control_apply_callback (EvolutionConfigControl *config_control, - void *data) -{ - AddressbookDialog *dialog; - int i; - - dialog = (AddressbookDialog *) data; - - addressbook_storage_clear_sources(); - - for (i = 0; i < GTK_CLIST(dialog->clistSources)->rows; i ++) { - AddressbookSource *source = (AddressbookSource*)gtk_clist_get_row_data (GTK_CLIST (dialog->clistSources), i); - addressbook_storage_add_source (addressbook_source_copy (source)); - } - - addressbook_storage_write_sources(); -} - -static EvolutionConfigControl * -config_control_new (GNOME_Evolution_Shell shell) -{ - AddressbookDialog *dialog; - GladeXML *gui; - GtkWidget *clist; - GList *l; - - dialog = g_new0 (AddressbookDialog, 1); - - dialog->source_row = -1; - - gui = glade_xml_new (EVOLUTION_GLADEDIR "/addressbook-config.glade", NULL); - dialog->gui = gui; - dialog->shell = shell; - - dialog->page = glade_xml_get_widget (gui, "addressbook_sources_main_hbox"); - - gtk_widget_ref (dialog->page); - gtk_container_remove (GTK_CONTAINER (dialog->page->parent), dialog->page); - - dialog->config_control = evolution_config_control_new (dialog->page); - gtk_signal_connect (GTK_OBJECT (dialog->config_control), "apply", - GTK_SIGNAL_FUNC (config_control_apply_callback), dialog); - gtk_signal_connect (GTK_OBJECT (dialog->config_control), "destroy", - GTK_SIGNAL_FUNC (config_control_destroy_callback), dialog); - - gtk_widget_unref (dialog->page); - - clist = glade_xml_get_widget (gui, "clistSources"); - dialog->clistSources = clist; - - gtk_clist_column_titles_passive (GTK_CLIST (clist)); - gtk_clist_set_column_width (GTK_CLIST (clist), 0, 80); - - dialog->addSource = glade_xml_get_widget (gui, "addSource"); - gtk_signal_connect (GTK_OBJECT(dialog->addSource), "clicked", - GTK_SIGNAL_FUNC (add_source_clicked), - dialog); - - dialog->editSource = glade_xml_get_widget (gui, "editSource"); - gtk_signal_connect (GTK_OBJECT(dialog->editSource), "clicked", - GTK_SIGNAL_FUNC (edit_source_clicked), - dialog); - - dialog->deleteSource = glade_xml_get_widget (gui, "deleteSource"); - gtk_signal_connect (GTK_OBJECT(dialog->deleteSource), "clicked", - GTK_SIGNAL_FUNC (delete_source_clicked), - dialog); - - update_sensitivity (dialog); - - l = addressbook_storage_get_sources (); - for (; l != NULL; l = l->next) { - AddressbookSource *source; - gint row; - gchar *text[2]; - - source = addressbook_source_copy ((AddressbookSource*)l->data); - - text[0] = source->name; - text[1] = source->host; - - row = e_utf8_gtk_clist_append (GTK_CLIST(clist), text); - gtk_clist_set_row_data_full (GTK_CLIST(clist), row, source, (GtkDestroyNotify) addressbook_source_free); - } - - gtk_signal_connect (GTK_OBJECT (clist), "select_row", - GTK_SIGNAL_FUNC (sources_select_row), - dialog); - - return dialog->config_control; -} - - -/* Implementation of the factory for the configuration control. */ - -static BonoboGenericFactory *factory = NULL; - -static BonoboObject * -config_control_factory_fn (BonoboGenericFactory *factory, - void *data) -{ - GNOME_Evolution_Shell shell; - EvolutionConfigControl *control; - - shell = (GNOME_Evolution_Shell) data; - - control = config_control_new (shell); - return BONOBO_OBJECT (control); -} - -gboolean -addressbook_config_register_factory (GNOME_Evolution_Shell shell) -{ - g_return_val_if_fail (shell != CORBA_OBJECT_NIL, FALSE); - - factory = bonobo_generic_factory_new (CONFIG_CONTROL_FACTORY_ID, - config_control_factory_fn, - shell); - - if (factory != NULL) { - return TRUE; - } else { - g_warning ("Cannot register factory %s", CONFIG_CONTROL_FACTORY_ID); - return FALSE; - } -} diff --git a/addressbook/gui/component/addressbook-config.glade b/addressbook/gui/component/addressbook-config.glade deleted file mode 100644 index 7396c3c818..0000000000 --- a/addressbook/gui/component/addressbook-config.glade +++ /dev/null @@ -1,1210 +0,0 @@ -<?xml version="1.0"?> -<GTK-Interface> - -<project> - <name>addressbook-config-mockup</name> - <program_name>addressbook-config-mockup</program_name> - <directory></directory> - <source_directory>src</source_directory> - <pixmaps_directory>pixmaps</pixmaps_directory> - <language>C</language> - <gnome_support>True</gnome_support> - <gettext_support>True</gettext_support> -</project> - -<widget> - <class>GnomeDialog</class> - <name>add_addressbook</name> - <visible>False</visible> - <title>Add Addressbook</title> - <type>GTK_WINDOW_TOPLEVEL</type> - <position>GTK_WIN_POS_NONE</position> - <modal>False</modal> - <default_width>417</default_width> - <default_height>332</default_height> - <allow_shrink>False</allow_shrink> - <allow_grow>True</allow_grow> - <auto_shrink>False</auto_shrink> - <auto_close>False</auto_close> - <hide_on_close>False</hide_on_close> - - <widget> - <class>GtkVBox</class> - <child_name>GnomeDialog:vbox</child_name> - <name>dialog-vbox1</name> - <homogeneous>False</homogeneous> - <spacing>8</spacing> - <child> - <padding>4</padding> - <expand>True</expand> - <fill>True</fill> - </child> - - <widget> - <class>GtkHButtonBox</class> - <child_name>GnomeDialog:action_area</child_name> - <name>dialog-action_area1</name> - <layout_style>GTK_BUTTONBOX_END</layout_style> - <spacing>8</spacing> - <child_min_width>85</child_min_width> - <child_min_height>27</child_min_height> - <child_ipad_x>7</child_ipad_x> - <child_ipad_y>0</child_ipad_y> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>True</fill> - <pack>GTK_PACK_END</pack> - </child> - - <widget> - <class>GtkButton</class> - <name>button1</name> - <can_default>True</can_default> - <can_focus>True</can_focus> - <stock_button>GNOME_STOCK_BUTTON_OK</stock_button> - </widget> - - <widget> - <class>GtkButton</class> - <name>button3</name> - <can_default>True</can_default> - <can_focus>True</can_focus> - <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button> - </widget> - </widget> - - <widget> - <class>GtkNotebook</class> - <name>main_notebook</name> - <can_focus>True</can_focus> - <show_tabs>True</show_tabs> - <show_border>True</show_border> - <tab_pos>GTK_POS_TOP</tab_pos> - <scrollable>False</scrollable> - <tab_hborder>2</tab_hborder> - <tab_vborder>2</tab_vborder> - <popup_enable>False</popup_enable> - <child> - <padding>0</padding> - <expand>True</expand> - <fill>True</fill> - </child> - - <widget> - <class>GtkVBox</class> - <name>vbox1</name> - <border_width>3</border_width> - <homogeneous>False</homogeneous> - <spacing>3</spacing> - - <widget> - <class>GtkLabel</class> - <name>label29</name> - <label>The information below is required in order to add an addressbook. </label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>True</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - </widget> - - <widget> - <class>GtkTable</class> - <name>table1</name> - <border_width>3</border_width> - <rows>2</rows> - <columns>2</columns> - <homogeneous>False</homogeneous> - <row_spacing>3</row_spacing> - <column_spacing>3</column_spacing> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>True</fill> - </child> - - <widget> - <class>GtkLabel</class> - <name>label15</name> - <label>_Account name:</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <default_focus_target>account-name-entry</default_focus_target> - <child> - <left_attach>0</left_attach> - <right_attach>1</right_attach> - <top_attach>0</top_attach> - <bottom_attach>1</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>False</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - </widget> - - <widget> - <class>GtkEntry</class> - <name>account-name-entry</name> - <can_focus>True</can_focus> - <editable>True</editable> - <text_visible>True</text_visible> - <text_max_length>0</text_max_length> - <text></text> - <child> - <left_attach>1</left_attach> - <right_attach>2</right_attach> - <top_attach>0</top_attach> - <bottom_attach>1</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>True</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - </widget> - - <widget> - <class>GtkLabel</class> - <name>label16</name> - <label>_Server name:</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <default_focus_target>server-name-entry</default_focus_target> - <child> - <left_attach>0</left_attach> - <right_attach>1</right_attach> - <top_attach>1</top_attach> - <bottom_attach>2</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>False</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - </widget> - - <widget> - <class>GtkEntry</class> - <name>server-name-entry</name> - <can_focus>True</can_focus> - <editable>True</editable> - <text_visible>True</text_visible> - <text_max_length>0</text_max_length> - <text></text> - <child> - <left_attach>1</left_attach> - <right_attach>2</right_attach> - <top_attach>1</top_attach> - <bottom_attach>2</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>True</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - </widget> - </widget> - - <widget> - <class>GtkAlignment</class> - <name>alignment2</name> - <xalign>0</xalign> - <yalign>0.5</yalign> - <xscale>1</xscale> - <yscale>1</yscale> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - - <widget> - <class>GtkVBox</class> - <name>auth-vbox</name> - <homogeneous>False</homogeneous> - <spacing>3</spacing> - - <widget> - <class>GtkHBox</class> - <name>hbox9</name> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - - <widget> - <class>GtkCheckButton</class> - <name>auth-checkbutton</name> - <can_focus>True</can_focus> - <label>A_uthenticate with server using:</label> - <active>False</active> - <draw_indicator>True</draw_indicator> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - </widget> - - <widget> - <class>GtkHBox</class> - <name>hbox10</name> - <homogeneous>False</homogeneous> - <spacing>3</spacing> - <child> - <padding>0</padding> - <expand>True</expand> - <fill>True</fill> - </child> - - <widget> - <class>GtkOptionMenu</class> - <name>auth-optionmenu</name> - <can_focus>True</can_focus> - <items>Email address -Distinguished name (DN) -</items> - <initial_choice>0</initial_choice> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - </widget> - </widget> - </widget> - - <widget> - <class>GtkNotebook</class> - <name>auth-notebook</name> - <show_tabs>False</show_tabs> - <show_border>False</show_border> - <tab_pos>GTK_POS_TOP</tab_pos> - <scrollable>False</scrollable> - <tab_hborder>2</tab_hborder> - <tab_vborder>2</tab_vborder> - <popup_enable>False</popup_enable> - <child> - <padding>0</padding> - <expand>True</expand> - <fill>True</fill> - </child> - - <widget> - <class>GtkHBox</class> - <name>hbox5</name> - <border_width>3</border_width> - <homogeneous>False</homogeneous> - <spacing>3</spacing> - - <widget> - <class>GtkLabel</class> - <name>email-label</name> - <label>_Email address:</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <default_focus_target>email-entry</default_focus_target> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - </widget> - - <widget> - <class>GtkEntry</class> - <name>email-entry</name> - <can_focus>True</can_focus> - <editable>True</editable> - <text_visible>True</text_visible> - <text_max_length>0</text_max_length> - <text></text> - <child> - <padding>0</padding> - <expand>True</expand> - <fill>True</fill> - </child> - </widget> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label52</name> - <label>label52</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkHBox</class> - <name>hbox6</name> - <homogeneous>False</homogeneous> - <spacing>3</spacing> - - <widget> - <class>GtkLabel</class> - <name>dn-label</name> - <label>_Distinguished Name:</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <default_focus_target>dn-entry</default_focus_target> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - </widget> - - <widget> - <class>GtkEntry</class> - <name>dn-entry</name> - <can_focus>True</can_focus> - <editable>True</editable> - <text_visible>True</text_visible> - <text_max_length>0</text_max_length> - <text></text> - <child> - <padding>0</padding> - <expand>True</expand> - <fill>True</fill> - </child> - </widget> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label53</name> - <label>label53</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - </widget> - </widget> - </widget> - - <widget> - <class>GtkNotebook</class> - <name>basic-notebook</name> - <show_tabs>False</show_tabs> - <show_border>False</show_border> - <tab_pos>GTK_POS_TOP</tab_pos> - <scrollable>False</scrollable> - <tab_hborder>2</tab_hborder> - <tab_vborder>2</tab_vborder> - <popup_enable>False</popup_enable> - <child> - <padding>0</padding> - <expand>True</expand> - <fill>True</fill> - </child> - - <widget> - <class>GtkLabel</class> - <name>label28</name> - <label>This name will be used to identify your account. It is for display purposes only.</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>True</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label18</name> - <label>label18</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <name>label31</name> - <label>This is the name of the server where your addressbook is located.</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>True</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label19</name> - <label>label19</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <name>label57</name> - <label>Check this if the server requires you to authenticate.</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>True</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label56</name> - <label>label56</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <name>label61</name> - <label>This is the method evolution will use to authenticate you. Note that setting this to "Email Address" requires anonymous access to your ldap server.</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>True</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label60</name> - <label>label60</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <name>label48</name> - <label>Evolution will use this email address to authenticate you with the server</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>True</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label47</name> - <label>label47</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <name>label59</name> - <label>Evolution will use this Distinquished Name (DN) to authenticate you with the server</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>True</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label58</name> - <label>label58</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - </widget> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label12</name> - <label>Basic</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkVBox</class> - <name>vbox2</name> - <border_width>3</border_width> - <homogeneous>False</homogeneous> - <spacing>3</spacing> - - <widget> - <class>GtkLabel</class> - <name>label30</name> - <label>This information is not required for most ldap servers. </label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>True</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - </widget> - - <widget> - <class>GtkTable</class> - <name>table2</name> - <border_width>3</border_width> - <rows>4</rows> - <columns>2</columns> - <homogeneous>False</homogeneous> - <row_spacing>3</row_spacing> - <column_spacing>3</column_spacing> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - - <widget> - <class>GtkLabel</class> - <name>label22</name> - <label>_Port:</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <default_focus_target>port-entry</default_focus_target> - <child> - <left_attach>0</left_attach> - <right_attach>1</right_attach> - <top_attach>0</top_attach> - <bottom_attach>1</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>False</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - </widget> - - <widget> - <class>GtkEntry</class> - <name>port-entry</name> - <can_focus>True</can_focus> - <editable>True</editable> - <text_visible>True</text_visible> - <text_max_length>0</text_max_length> - <text>389</text> - <child> - <left_attach>1</left_attach> - <right_attach>2</right_attach> - <top_attach>0</top_attach> - <bottom_attach>1</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>True</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - </widget> - - <widget> - <class>GtkLabel</class> - <name>label23</name> - <label>Search _base:</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <default_focus_target>rootdn-entry</default_focus_target> - <child> - <left_attach>0</left_attach> - <right_attach>1</right_attach> - <top_attach>1</top_attach> - <bottom_attach>2</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>False</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - </widget> - - <widget> - <class>GtkEntry</class> - <name>rootdn-entry</name> - <can_focus>True</can_focus> - <editable>True</editable> - <text_visible>True</text_visible> - <text_max_length>0</text_max_length> - <text></text> - <child> - <left_attach>1</left_attach> - <right_attach>2</right_attach> - <top_attach>1</top_attach> - <bottom_attach>2</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>True</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - </widget> - - <widget> - <class>GtkLabel</class> - <name>label24</name> - <label>Search s_cope: </label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <child> - <left_attach>0</left_attach> - <right_attach>1</right_attach> - <top_attach>2</top_attach> - <bottom_attach>3</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>False</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - </widget> - - <widget> - <class>GtkAlignment</class> - <name>alignment1</name> - <xalign>7.45058e-09</xalign> - <yalign>7.45058e-09</yalign> - <xscale>0</xscale> - <yscale>1</yscale> - <child> - <left_attach>1</left_attach> - <right_attach>2</right_attach> - <top_attach>2</top_attach> - <bottom_attach>3</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>True</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - - <widget> - <class>GtkOptionMenu</class> - <name>scope-optionmenu</name> - <can_focus>True</can_focus> - <items>One -Base -Sub -</items> - <initial_choice>0</initial_choice> - </widget> - </widget> - - <widget> - <class>GtkLabel</class> - <name>label49</name> - <label>_Download Limit</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <default_focus_target>limit-entry</default_focus_target> - <child> - <left_attach>0</left_attach> - <right_attach>1</right_attach> - <top_attach>3</top_attach> - <bottom_attach>4</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>False</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - </widget> - - <widget> - <class>GtkEntry</class> - <name>limit-entry</name> - <can_focus>True</can_focus> - <editable>True</editable> - <text_visible>True</text_visible> - <text_max_length>0</text_max_length> - <text>100</text> - <child> - <left_attach>1</left_attach> - <right_attach>2</right_attach> - <top_attach>3</top_attach> - <bottom_attach>4</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>True</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - </widget> - </widget> - - <widget> - <class>GtkNotebook</class> - <name>advanced-notebook</name> - <show_tabs>False</show_tabs> - <show_border>False</show_border> - <tab_pos>GTK_POS_TOP</tab_pos> - <scrollable>False</scrollable> - <tab_hborder>2</tab_hborder> - <tab_vborder>2</tab_vborder> - <popup_enable>False</popup_enable> - <child> - <padding>0</padding> - <expand>True</expand> - <fill>True</fill> - </child> - - <widget> - <class>GtkLabel</class> - <name>label35</name> - <label>This is the port that your ldap server uses.</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>True</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label25</name> - <label>label18</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <name>label36</name> - <label>This is the base node for all your searches on the ldap server. Contact your server administrator for more information.</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>True</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label26</name> - <label>label19</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <name>label37</name> - <label>This information is used by your ldap server to specify which nodes are used in a search. Contact your server administrator for more information.</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>True</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label27</name> - <label>label20</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <name>label51</name> - <label>This is the maximum number of cards to download. Setting this number too large will slow down this addressbook.</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>True</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label50</name> - <label>label50</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>True</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - </widget> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label13</name> - <label>Advanced</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - </widget> - </widget> -</widget> - -<widget> - <class>GnomeDialog</class> - <name>addressbook_sources</name> - <visible>False</visible> - <title>Addressbook Sources</title> - <type>GTK_WINDOW_TOPLEVEL</type> - <position>GTK_WIN_POS_NONE</position> - <modal>False</modal> - <default_width>355</default_width> - <default_height>285</default_height> - <allow_shrink>True</allow_shrink> - <allow_grow>True</allow_grow> - <auto_shrink>False</auto_shrink> - <auto_close>False</auto_close> - <hide_on_close>False</hide_on_close> - - <widget> - <class>GtkVBox</class> - <child_name>GnomeDialog:vbox</child_name> - <name>dialog-vbox2</name> - <homogeneous>False</homogeneous> - <spacing>8</spacing> - <child> - <padding>4</padding> - <expand>True</expand> - <fill>True</fill> - </child> - - <widget> - <class>GtkHButtonBox</class> - <child_name>GnomeDialog:action_area</child_name> - <name>dialog-action_area2</name> - <layout_style>GTK_BUTTONBOX_END</layout_style> - <spacing>8</spacing> - <child_min_width>85</child_min_width> - <child_min_height>27</child_min_height> - <child_ipad_x>7</child_ipad_x> - <child_ipad_y>0</child_ipad_y> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>True</fill> - <pack>GTK_PACK_END</pack> - </child> - - <widget> - <class>GtkButton</class> - <name>button7</name> - <can_default>True</can_default> - <can_focus>True</can_focus> - <stock_button>GNOME_STOCK_BUTTON_OK</stock_button> - </widget> - - <widget> - <class>GtkButton</class> - <name>button8</name> - <can_default>True</can_default> - <can_focus>True</can_focus> - <stock_button>GNOME_STOCK_BUTTON_APPLY</stock_button> - </widget> - - <widget> - <class>GtkButton</class> - <name>button9</name> - <can_default>True</can_default> - <can_focus>True</can_focus> - <stock_button>GNOME_STOCK_BUTTON_CLOSE</stock_button> - </widget> - </widget> - - <widget> - <class>GtkHBox</class> - <name>addressbook_sources_main_hbox</name> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - <child> - <padding>0</padding> - <expand>True</expand> - <fill>True</fill> - </child> - - <widget> - <class>GtkScrolledWindow</class> - <name>scrolledwindow2</name> - <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy> - <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy> - <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy> - <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy> - <child> - <padding>0</padding> - <expand>True</expand> - <fill>True</fill> - </child> - - <widget> - <class>GtkCList</class> - <name>clistSources</name> - <can_focus>True</can_focus> - <columns>2</columns> - <column_widths>100,80</column_widths> - <selection_mode>GTK_SELECTION_SINGLE</selection_mode> - <show_titles>True</show_titles> - <shadow_type>GTK_SHADOW_IN</shadow_type> - - <widget> - <class>GtkLabel</class> - <child_name>CList:title</child_name> - <name>label43</name> - <label>Account Name</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>CList:title</child_name> - <name>label44</name> - <label>Server Name</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - </widget> - </widget> - - <widget> - <class>GtkVBox</class> - <name>vbox4</name> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - - <widget> - <class>GtkLabel</class> - <name>label45</name> - <label> -</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - </widget> - - <widget> - <class>GtkVButtonBox</class> - <name>vbuttonbox3</name> - <layout_style>GTK_BUTTONBOX_START</layout_style> - <spacing>0</spacing> - <child_min_width>85</child_min_width> - <child_min_height>27</child_min_height> - <child_ipad_x>7</child_ipad_x> - <child_ipad_y>0</child_ipad_y> - <child> - <padding>0</padding> - <expand>True</expand> - <fill>True</fill> - </child> - - <widget> - <class>GtkButton</class> - <name>addSource</name> - <can_default>True</can_default> - <can_focus>True</can_focus> - <label>_Add</label> - <relief>GTK_RELIEF_NORMAL</relief> - </widget> - - <widget> - <class>GtkButton</class> - <name>editSource</name> - <can_default>True</can_default> - <can_focus>True</can_focus> - <label>_Edit</label> - <relief>GTK_RELIEF_NORMAL</relief> - </widget> - - <widget> - <class>GtkButton</class> - <name>deleteSource</name> - <can_default>True</can_default> - <can_focus>True</can_focus> - <label>De_lete</label> - <relief>GTK_RELIEF_NORMAL</relief> - </widget> - </widget> - </widget> - </widget> - </widget> -</widget> - -</GTK-Interface> diff --git a/addressbook/gui/component/addressbook-storage.c b/addressbook/gui/component/addressbook-storage.c index 95af6c52ad..2b54c5019e 100644 --- a/addressbook/gui/component/addressbook-storage.c +++ b/addressbook/gui/component/addressbook-storage.c @@ -65,7 +65,7 @@ #include "evolution-shell-component.h" -#include "addressbook-config.h" +#include "ldap-config.h" #define ADDRESSBOOK_SOURCES_XML "addressbook-sources.xml" @@ -151,7 +151,7 @@ create_ldap_folder (EvolutionStorage *storage, const Bonobo_Listener listener, notify_listener (listener, GNOME_Evolution_Storage_INVALID_URI); return; } - addressbook_create_new_source (path + 1, NULL); + ldap_config_create_new_source (path + 1, NULL); notify_listener (listener, GNOME_Evolution_Storage_OK); } @@ -322,6 +322,38 @@ ldap_parse_scope (const char *scope) } #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) { @@ -331,18 +363,27 @@ addressbook_storage_auth_type_to_string (AddressbookLDAPAuthType 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_sprintfa (str, "%s:%s/%s?"/*trigraph prevention*/"?%s", + source->host, source->port, source->rootdn, ldap_unparse_scope (source->scope)); + if (source->limit != 100) - source->uri = g_strdup_printf ("ldap://%s:%s/%s?"/*trigraph prevention*/ "?%s;limit=%d", - source->host, source->port, - source->rootdn, ldap_unparse_scope(source->scope), - source->limit); - else - source->uri = g_strdup_printf ("ldap://%s:%s/%s?"/*trigraph prevention*/ "?%s", - source->host, source->port, - source->rootdn, ldap_unparse_scope(source->scope)); + g_string_sprintfa (str, ";limit=%d", source->limit); + + if (source->ssl != ADDRESSBOOK_LDAP_SSL_WHENEVER_POSSIBLE) + g_string_sprintfa (str, ";ssl=%s", ldap_unparse_ssl (source->ssl)); + + /* XXX need to do timeout info */ + + source->uri = str->str; + + g_string_free (str, FALSE); } #ifdef HAVE_LDAP @@ -395,12 +436,12 @@ load_source_data (const char *file_path) source = g_new0 (AddressbookSource, 1); if (!strcmp (child->name, "contactserver")) { - source->type = ADDRESSBOOK_SOURCE_LDAP; 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); @@ -645,7 +686,6 @@ addressbook_source_copy (const AddressbookSource *source) copy = g_new0 (AddressbookSource, 1); copy->name = g_strdup (source->name); copy->description = g_strdup (source->description); - copy->type = source->type; copy->uri = g_strdup (source->uri); copy->host = g_strdup (source->host); @@ -653,6 +693,7 @@ addressbook_source_copy (const AddressbookSource *source) 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; diff --git a/addressbook/gui/component/addressbook-storage.h b/addressbook/gui/component/addressbook-storage.h index 6d0c6252cf..edaa5cfb83 100644 --- a/addressbook/gui/component/addressbook-storage.h +++ b/addressbook/gui/component/addressbook-storage.h @@ -27,12 +27,6 @@ #include "evolution-storage.h" typedef enum { - ADDRESSBOOK_SOURCE_LDAP, - ADDRESSBOOK_SOURCE_FILE, - ADDRESSBOOK_SOURCE_LAST -} AddressbookSourceType; - -typedef enum { ADDRESSBOOK_LDAP_AUTH_NONE, ADDRESSBOOK_LDAP_AUTH_SIMPLE_EMAIL, ADDRESSBOOK_LDAP_AUTH_SIMPLE_BINDDN, @@ -45,8 +39,13 @@ typedef enum { ADDRESSBOOK_LDAP_SCOPE_LAST } AddressbookLDAPScopeType; +typedef enum { + ADDRESSBOOK_LDAP_SSL_NEVER, + ADDRESSBOOK_LDAP_SSL_WHENEVER_POSSIBLE, + ADDRESSBOOK_LDAP_SSL_ALWAYS +} AddressbookLDAPSSLType; + typedef struct { - AddressbookSourceType type; char *name; char *description; char *host; @@ -54,11 +53,13 @@ typedef struct { 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; - char *uri; /* filled in from the above */ int limit; + + char *uri; /* filled in from the above */ } AddressbookSource; void addressbook_storage_setup (EvolutionShellComponent *shell_component, diff --git a/addressbook/gui/component/addressbook.c b/addressbook/gui/component/addressbook.c index 42f05f8217..99ba3b9521 100644 --- a/addressbook/gui/component/addressbook.c +++ b/addressbook/gui/component/addressbook.c @@ -32,7 +32,7 @@ #include "evolution-activity-client.h" #include "e-contact-editor.h" #include "e-contact-save-as.h" -#include "addressbook-config.h" +#include "ldap-config.h" #include "addressbook.h" #include "addressbook-component.h" #include "addressbook/gui/search/e-addressbook-search-dialog.h" @@ -519,7 +519,7 @@ book_open_cb (EBook *book, EBookStatus status, gpointer closure) source = addressbook_storage_get_source_by_uri (view->uri); - if (source && source->type == ADDRESSBOOK_SOURCE_LDAP) { + if (source) { #if HAVE_LDAP label = gtk_label_new ( _("We were unable to open this addressbook. This either\n" @@ -629,7 +629,6 @@ load_uri_cb (EBook *book, EBookStatus status, gpointer closure) /* check if the addressbook needs authentication */ if (source && - source->type == ADDRESSBOOK_SOURCE_LDAP && source->auth != ADDRESSBOOK_LDAP_AUTH_NONE) { const char *password; char *pass_dup = NULL; diff --git a/addressbook/gui/component/ldap-config.c b/addressbook/gui/component/ldap-config.c new file mode 100644 index 0000000000..59e924c5af --- /dev/null +++ b/addressbook/gui/component/ldap-config.c @@ -0,0 +1,1664 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ + +/*#define STANDALONE*/ +/*#define NEW_ADVANCED_UI*/ + +#include <config.h> + +#include "ldap-config.h" + +#include "addressbook-storage.h" + +#include "evolution-config-control.h" + +#include <gal/widgets/e-unicode.h> +#include <gal/e-table/e-table-memory-store.h> +#include <gal/e-table/e-table-scrolled.h> +#include <e-util/e-html-utils.h> + +#include <gtkhtml/gtkhtml.h> + +#include <libgnome/gnome-defs.h> +#include <libgnome/gnome-i18n.h> +#include <libgnomeui/gnome-dialog.h> +#include <libgnomeui/gnome-stock.h> + +#include <bonobo/bonobo-generic-factory.h> + +#include <glade/glade.h> + +#include <stdlib.h> + +#include "ldap.h" +#include "ldap_schema.h" + +#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_LDAPStorage_ConfigControlFactory" + +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_GUI +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_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; + + gtk_signal_connect_full (GTK_OBJECT (widget), + "focus_in_event" /* XXX */, + (GtkSignalFunc) focus_help, NULL, + focus_closure, + (GtkDestroyNotify) g_free, + FALSE, FALSE); +} + + +typedef struct { + EvolutionConfigControl *config_control; + GtkWidget *page; + + GladeXML *gui; + GNOME_Evolution_Shell shell; + + GtkWidget *sourcesTable; + ETableModel *sourcesModel; + GtkWidget *addSource; + GtkWidget *editSource; + GtkWidget *deleteSource; + +} AddressbookDialog; + +typedef struct { + AddressbookDialog *addressbook_dialog; + GladeXML *gui; + + GtkWidget *window; + GtkWidget *druid; /* only used (obviously) in the druid */ + + /* info page fields */ + GtkSignalFunc 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 */ + GtkSignalFunc connecting_modify_func; + GtkWidget *port_combo; + GtkWidget *ssl_optionmenu; + int ssl; /* XXX this should be AddressbookLDAPSSLType */ + + /* searching page fields */ + GtkSignalFunc 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) */ + GtkSignalFunc 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; +#endif + + /* stuff for the account editor window */ + int source_model_row; + GtkWidget *ok_button; + GtkWidget *apply_button; + GtkWidget *close_button; + GtkWidget *advanced_button_notebook; + GtkWidget *notebook; /* the toplevel notebook */ +#ifdef NEW_ADVANCED_UI + GtkWidget *objectclasses_tab; + GtkWidget *objectclasses_label; + GtkWidget *mappings_tab; + GtkWidget *mappings_label; + GtkWidget *dn_customization_tab; + GtkWidget *dn_customization_label; +#endif + gboolean advanced; + +} AddressbookSourceDialog; + + +/* ldap api foo */ +static LDAP * +addressbook_ldap_init (AddressbookSource *source) +{ + LDAP *ldap = ldap_init (source->host, atoi(source->port)); + + if (!ldap) { + gnome_error_dialog (_("Failed to connect to LDAP server")); + + return NULL; + } + + /* XXX do TLS if it's configured in */ + + return ldap; +} + +static int +addressbook_ldap_auth (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) + gnome_error_dialog (_("Failed to authenticate with LDAP server")); + return ldap_error; + +} + +static int +addressbook_root_dse_query (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, NULL, 0, resp); + if (LDAP_SUCCESS != ldap_error) + gnome_error_dialog (_("Could not perform query on Root DSE")); + + return ldap_error; +} + + +static AddressbookSource * +addressbook_dialog_get_source (AddressbookSourceDialog *dialog) +{ + AddressbookSource *source = g_new0 (AddressbookSource, 1); + + source->name = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->display_name)); + source->host = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->host)); + source->email_addr = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->email)); + source->binddn = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->binddn)); + source->port = e_utf8_gtk_entry_get_text (GTK_ENTRY (GTK_COMBO(dialog->port_combo)->entry)); + source->rootdn = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->rootdn)); + source->limit = atoi(e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->limit_spinbutton))); + source->scope = dialog->scope; + source->auth = dialog->auth; + + addressbook_storage_init_source_uri (source); + + return source; +} + +static void +addressbook_source_dialog_set_source (AddressbookSourceDialog *dialog, AddressbookSource *source) +{ + char *string; + e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->display_name), source ? source->name : ""); + e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->host), source ? source->host : ""); + e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->email), source ? source->email_addr : ""); + e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->binddn), source ? source->binddn : ""); + e_utf8_gtk_entry_set_text (GTK_ENTRY (GTK_COMBO(dialog->port_combo)->entry), source ? source->port : LDAP_PORT_STRING); + e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->rootdn), source ? source->rootdn : ""); + + string = g_strdup_printf ("%d", source ? source->limit : 100); + e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->limit_spinbutton), string); + g_free (string); + +#if 0 + dialog->auth = source ? source->auth : ADDRESSBOOK_LDAP_AUTH_NONE; + if (dialog->auth != ADDRESSBOOK_LDAP_AUTH_NONE) { + gtk_option_menu_set_history (GTK_OPTION_MENU(dialog->auth_optionmenu), dialog->auth - 1); + gtk_notebook_set_page (GTK_NOTEBOOK(dialog->auth_notebook), dialog->auth - 1); + } + + dialog->ldap_scope = source ? source->scope : ADDRESSBOOK_LDAP_SCOPE_ONELEVEL; + gtk_option_menu_set_history (GTK_OPTION_MENU(dialog->scope_optionmenu), dialog->ldap_scope); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(dialog->auth_checkbutton), source && source->auth != ADDRESSBOOK_LDAP_AUTH_NONE); + gtk_widget_set_sensitive (dialog->auth_optionmenu, source && source->auth != ADDRESSBOOK_LDAP_AUTH_NONE); + gtk_widget_set_sensitive (dialog->auth_notebook, source && source->auth != ADDRESSBOOK_LDAP_AUTH_NONE); +#endif +} + +static void +addressbook_add_server_druid_destroy (GtkWidget *widget, AddressbookSourceDialog *dialog) +{ + /* XXX free other stuff */ + + 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; + void *source_data[2]; + + printf ("in finish (%s,%s)\n", source->name, source->host); + + source_data[0] = source->name; + source_data[1] = source->host; + + e_table_memory_store_insert (E_TABLE_MEMORY_STORE (dialog->sourcesModel), + -1, source_data, source); + + 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_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_page (GTK_NOTEBOOK(dialog->auth_label_notebook), dialog->auth - 1); + gtk_notebook_set_page (GTK_NOTEBOOK(dialog->auth_entry_notebook), dialog->auth - 1); + } +} + +static void +add_auth_activate_cb (GtkWidget *item, AddressbookSourceDialog *dialog) +{ + gtk_signal_connect (GTK_OBJECT (item), "activate", + GTK_SIGNAL_FUNC (auth_optionmenu_activated), dialog); +} + +static void +setup_general_tab (AddressbookSourceDialog *dialog, GtkSignalFunc 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"); + gtk_signal_connect (GTK_OBJECT (dialog->host), "changed", + 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"); + gtk_signal_connect (GTK_OBJECT (dialog->email), "changed", + modify_func, dialog); + add_focus_handler (dialog->email, general_tab_help, 1); + dialog->binddn = glade_xml_get_widget (dialog->gui, "dn-entry"); + gtk_signal_connect (GTK_OBJECT (dialog->binddn), "changed", + 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; + char *string; + + string = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->host)); + if (!string || !string[0]) + valid = FALSE; + g_free (string); + + if (valid) { + if (dialog->auth != ADDRESSBOOK_LDAP_AUTH_NONE) { + if (dialog->auth == ADDRESSBOOK_LDAP_AUTH_SIMPLE_BINDDN) + string = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->binddn)); + else + string = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->email)); + + if (!string || !string[0]) + valid = FALSE; + g_free (string); + } + } + + 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 */); +} + +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_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_children (GTK_CONTAINER (item->parent)), + item); + + connecting_tab_help = glade_xml_get_widget (dialog->gui, "connecting-tab-help"); + + gtk_notebook_set_page (GTK_NOTEBOOK(connecting_tab_help), ssl_type + 1); +} + +static void +add_ssl_activate_cb (GtkWidget *item, AddressbookSourceDialog *dialog) +{ + gtk_signal_connect (GTK_OBJECT (item), "activate", + GTK_SIGNAL_FUNC (ssl_optionmenu_activated), dialog); + gtk_signal_connect (GTK_OBJECT (item), "select", + GTK_SIGNAL_FUNC (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 */ + char *string = e_utf8_gtk_entry_get_text (GTK_ENTRY (item)); + + dialog->connecting_modify_func (item, dialog); + + if (!strcmp (string, LDAPS_PORT_STRING)) { + dialog->ssl = 0; /* XXX 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); + } + + + g_free (string); +} + +static void +setup_connecting_tab (AddressbookSourceDialog *dialog, GtkSignalFunc 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); + gtk_signal_connect (GTK_OBJECT (GTK_COMBO(dialog->port_combo)->entry), "changed", + modify_func, dialog); + gtk_signal_connect (GTK_OBJECT (GTK_COMBO(dialog->port_combo)->entry), "changed", + 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; + char *string; + + string = e_utf8_gtk_entry_get_text (GTK_ENTRY (GTK_COMBO(dialog->port_combo)->entry)); + if (!string || !string[0]) + valid = FALSE; + g_free (string); + + 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 */); +} + +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); + + gtk_object_set_data (GTK_OBJECT (table), "model", model); + + return table; +} + +static gboolean +do_ldap_root_dse_query (ETableModel *model, AddressbookSource *source, char ***rvalues) +{ + LDAP* ldap; + char *attrs[2]; + int ldap_error; + char **values; + LDAPMessage *resp; + int i; + + ldap = addressbook_ldap_init (source); + if (!ldap) + return FALSE; + + if (LDAP_SUCCESS != addressbook_ldap_auth (source, ldap)) + goto fail; + + attrs[0] = "namingContexts"; + attrs[1] = NULL; + + ldap_error = addressbook_root_dse_query (source, ldap, attrs, &resp); + + if (ldap_error != LDAP_SUCCESS) + goto fail; + + values = ldap_get_values (ldap, resp, "namingContexts"); + if (!values || values[0] == NULL) { + gnome_ok_dialog (_("The server responded with no supported search bases")); + goto fail; + } + + for (i = 0; values[i]; i++) + e_table_memory_store_insert (E_TABLE_MEMORY_STORE (model), + -1, (void**)&values[i], GINT_TO_POINTER(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) +{ + gnome_dialog_set_sensitive (GNOME_DIALOG (dialog), + 0 /* 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"); + selection_model = e_table_get_selection_model (e_table_scrolled_get_table (E_TABLE_SCROLLED(supported_bases_table))); + model = gtk_object_get_data (GTK_OBJECT (supported_bases_table), "model"); + + gtk_signal_connect (GTK_OBJECT (selection_model), "selection_changed", + search_base_selection_model_changed, dialog); + + search_base_selection_model_changed (selection_model, dialog); + + if (do_ldap_root_dse_query (model, source, &values)) { + gnome_dialog_close_hides (GNOME_DIALOG(dialog), TRUE); + + id = gnome_dialog_run_and_close (GNOME_DIALOG (dialog)); + + if (id == 0) { + int i; + /* OK was clicked */ + + /* ugh. */ + for (i = 0; values[i]; i ++) { + if (e_selection_model_is_row_selected (selection_model, i)) { + e_utf8_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); + + gtk_object_unref (GTK_OBJECT (selection_model)); +} + +static void +scope_optionmenu_activated (GtkWidget *item, AddressbookSourceDialog *dialog) +{ + dialog->scope = g_list_index (gtk_container_children (GTK_CONTAINER (item->parent)), + item); + + dialog->searching_modify_func (item, dialog); +} + +static void +add_scope_activate_cb (GtkWidget *item, AddressbookSourceDialog *dialog) +{ + gtk_signal_connect (GTK_OBJECT (item), "activate", + GTK_SIGNAL_FUNC (scope_optionmenu_activated), dialog); +} + +static void +setup_searching_tab (AddressbookSourceDialog *dialog, GtkSignalFunc 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) + gtk_signal_connect (GTK_OBJECT (dialog->rootdn), "changed", + 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) + gtk_signal_connect (GTK_OBJECT (GTK_RANGE(dialog->timeout_scale)->adjustment), + "value_changed", + modify_func, dialog); + + dialog->limit_spinbutton = glade_xml_get_widget (dialog->gui, "download-limit-spinbutton"); + if (modify_func) + gtk_signal_connect (GTK_OBJECT (dialog->limit_spinbutton), "changed", + modify_func, dialog); + + /* special handling for the "Show Supported Bases button" */ + rootdn_button = glade_xml_get_widget (dialog->gui, "rootdn-button"); + gtk_signal_connect (GTK_OBJECT (rootdn_button), "clicked", + GTK_SIGNAL_FUNC(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 */); +} + + +/* display name page */ +static gboolean +display_name_check (AddressbookSourceDialog *dialog) +{ + gboolean valid = TRUE; + char *string; + + string = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->display_name)); + if (!string || !string[0]) + valid = FALSE; + g_free (string); + + return valid; +} + +static void +display_name_page_prepare (GtkWidget *page, GtkWidget *gnome_druid, AddressbookSourceDialog *dialog) +{ + if (!dialog->display_name_changed) { + char *server_name = e_utf8_gtk_entry_get_text (GTK_ENTRY (dialog->host)); + e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->display_name), server_name); + g_free (server_name); + } + + gnome_druid_set_buttons_sensitive (GNOME_DRUID(dialog->druid), + TRUE, /* back */ + display_name_check (dialog), /* next */ + TRUE /* cancel */); +} + +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); + + gtk_object_set_data (GTK_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); + + gtk_object_set_data (GTK_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, (void**)&oc->oc_names[0], oc); + /* 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, (void**)&oc->oc_names[0], oc); + /* 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, (void**)&oc->oc_names[0], oc); + } +} + +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 = gtk_object_get_data (GTK_OBJECT (dialog->objectclasses_server_table), "model"); + + dialog->objectclasses_evolution_table = glade_xml_get_widget (dialog->gui, "objectclasses-evolution-table"); + dialog->objectclasses_evolution_model = gtk_object_get_data (GTK_OBJECT (dialog->objectclasses_evolution_table), "model"); + + table = e_table_scrolled_get_table (E_TABLE_SCROLLED(dialog->objectclasses_server_table)); + gtk_signal_connect (GTK_OBJECT (table), "double_click", + GTK_SIGNAL_FUNC (objectclasses_server_double_click), dialog); + esm = e_table_get_selection_model (table); + gtk_signal_connect (GTK_OBJECT (esm), "selection_changed", + server_selection_model_changed, dialog); + + table = e_table_scrolled_get_table (E_TABLE_SCROLLED(dialog->objectclasses_evolution_table)); + gtk_signal_connect (GTK_OBJECT (table), "double_click", + GTK_SIGNAL_FUNC (objectclasses_evolution_double_click), dialog); + esm = e_table_get_selection_model (table); + gtk_signal_connect (GTK_OBJECT (esm), "selection_changed", + evolution_selection_model_changed, dialog); + + dialog->objectclasses_add_button = glade_xml_get_widget (dialog->gui, "objectclasses-add-button"); + gtk_signal_connect (GTK_OBJECT (dialog->objectclasses_add_button), "clicked", + GTK_SIGNAL_FUNC(objectclasses_add), dialog); + + dialog->objectclasses_remove_button = glade_xml_get_widget (dialog->gui, "objectclasses-remove-button"); + gtk_signal_connect (GTK_OBJECT (dialog->objectclasses_remove_button), "clicked", + GTK_SIGNAL_FUNC(objectclasses_remove), dialog); + + restore_default = glade_xml_get_widget (dialog->gui, "objectclasses-default-button"); + gtk_signal_connect (GTK_OBJECT (restore_default), "clicked", + GTK_SIGNAL_FUNC(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); + + 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, GTK_SIGNAL_FUNC (druid_info_page_modify_cb)); + gtk_signal_connect (GTK_OBJECT(page), "prepare", + GTK_SIGNAL_FUNC(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); + gtk_signal_connect (GTK_OBJECT(page), "prepare", + GTK_SIGNAL_FUNC(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); + gtk_signal_connect (GTK_OBJECT(page), "prepare", + GTK_SIGNAL_FUNC(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"); + gtk_signal_connect (GTK_OBJECT (sdialog->display_name), "changed", + druid_display_name_page_modify_cb, sdialog); + gtk_signal_connect (GTK_OBJECT(page), "prepare", + GTK_SIGNAL_FUNC(display_name_page_prepare), sdialog); + + page = glade_xml_get_widget (sdialog->gui, "add-server-druid-finish-page"); + gtk_signal_connect (GTK_OBJECT(page), "finish", + GTK_SIGNAL_FUNC(addressbook_add_server_druid_finish), sdialog); + gtk_signal_connect (GTK_OBJECT(sdialog->druid), "cancel", + GTK_SIGNAL_FUNC(addressbook_add_server_druid_cancel), sdialog); + gtk_signal_connect (GTK_OBJECT(sdialog->window), "destroy", + GTK_SIGNAL_FUNC(addressbook_add_server_druid_destroy), sdialog); + + gtk_window_set_modal (GTK_WINDOW (sdialog->window), TRUE); + + gtk_widget_show (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); + gtk_widget_set_sensitive (dialog->apply_button, valid); +} + +static void +set_advanced_button_state (AddressbookSourceDialog *dialog) +{ + if (dialog->advanced) { + gtk_notebook_set_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 { + gtk_notebook_set_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); + } +} + +#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; + + ldap = addressbook_ldap_init (source); + if (!ldap) + goto fail; + + if (LDAP_SUCCESS != addressbook_ldap_auth (source, ldap)) + goto fail; + + attrs[0] = "subschemaSubentry"; + attrs[1] = NULL; + + ldap_error = addressbook_root_dse_query (source, ldap, attrs, &resp); + + if (ldap_error != LDAP_SUCCESS) + goto fail; + + values = ldap_get_values (ldap, resp, "subschemaSubentry"); + if (!values || values[0] == NULL) { + gnome_ok_dialog (_("The server did not respond with a schema entry")); + goto fail; + } + + schema_dn = g_strdup (values[0]); + + ldap_value_free (values); + ldap_msgfree (resp); + + attrs[0] = "objectClasses"; + attrs[1] = NULL; + + ldap_error = ldap_search_ext_s (ldap, schema_dn, LDAP_SCOPE_BASE, + "(objectClass=subschema)", attrs, 0, + NULL, NULL, NULL, 0, &resp); + if (LDAP_SUCCESS != ldap_error) { + gnome_error_dialog (_("Could not query for schema information")); + goto fail; + } + + values = ldap_get_values (ldap, resp, "objectClasses"); + if (!values) { + gnome_error_dialog (_("Server did not respond with valid schema information")); + 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, (void**)&oc->oc_names[0], oc); + } + 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; + void *source_data[2]; + + /* check the display name for uniqueness */ + if (FALSE /* XXX */) { + return FALSE; + } + + /* store the new source in the addressbook dialog */ + old_source = e_table_memory_get_data (E_TABLE_MEMORY (dialog->sourcesModel), sdialog->source_model_row); + addressbook_source_free (old_source); + e_table_memory_store_remove (E_TABLE_MEMORY_STORE (dialog->sourcesModel), + sdialog->source_model_row); + + source_data[0] = source->name; + source_data[1] = source->host; + + e_table_memory_store_insert (E_TABLE_MEMORY_STORE (dialog->sourcesModel), + sdialog->source_model_row, source_data, source); + + /* and let the config control know about the change */ + evolution_config_control_changed (dialog->config_control); + + return TRUE; +} + +static void +edit_dialog_apply_clicked (GtkWidget *item, AddressbookSourceDialog *sdialog) +{ + if (!edit_dialog_store_change (sdialog)) + return; + + /* resensitize the buttons */ + gtk_widget_set_sensitive (sdialog->ok_button, FALSE); + gtk_widget_set_sensitive (sdialog->apply_button, FALSE); +} + +static void +edit_dialog_close_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)) + edit_dialog_close_clicked (item, sdialog); +} + +static AddressbookSourceDialog* +addressbook_edit_server_dialog (AddressbookDialog *dialog, AddressbookSource *source, int model_row) +{ + AddressbookSourceDialog *sdialog = g_new0 (AddressbookSourceDialog, 1); + GtkWidget *general_tab_help; + GtkWidget *fewer_options_button, *more_options_button; + + sdialog->addressbook_dialog = dialog; + sdialog->source_model_row = model_row; + + sdialog->gui = glade_xml_new (EVOLUTION_GLADEDIR "/" GLADE_FILE_NAME, 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, GTK_SIGNAL_FUNC (editor_modify_cb)); + sdialog->display_name = glade_xml_get_widget (sdialog->gui, "account-editor-display-name-entry"); + gtk_signal_connect (GTK_OBJECT (sdialog->display_name), "changed", + 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, GTK_SIGNAL_FUNC (editor_modify_cb)); + + /* searching tab */ + reparent_to_vbox (sdialog, "account-editor-searching-vbox", "searching-tab"); + setup_searching_tab (sdialog, GTK_SIGNAL_FUNC (editor_modify_cb)); + +#ifdef NEW_ADVANCED_UI + /* objectclasses tab */ + reparent_to_vbox (sdialog, "account-editor-objectclasses-vbox", "objectclasses-tab"); + setup_objectclasses_tab (sdialog, GTK_SIGNAL_FUNC (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->ok_button = glade_xml_get_widget (sdialog->gui, "account-editor-ok-button"); + /* XXX signal */ + sdialog->apply_button = glade_xml_get_widget (sdialog->gui, "account-editor-apply-button"); + /* XXX signal */ + sdialog->close_button = glade_xml_get_widget (sdialog->gui, "account-editor-close-button"); + /* XXX signal */ + + 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"); + + sdialog->notebook = glade_xml_get_widget (sdialog->gui, "account-editor-notebook"); +#ifdef NEW_ADVANCED_UI + sdialog->objectclasses_label = glade_xml_get_widget (sdialog->gui, "account-editor-objectclasses-label"); + gtk_object_ref (GTK_OBJECT (sdialog->objectclasses_label)); + sdialog->objectclasses_tab = glade_xml_get_widget (sdialog->gui, "account-editor-objectclasses-vbox"); + gtk_object_ref (GTK_OBJECT (sdialog->objectclasses_tab)); + sdialog->mappings_label = glade_xml_get_widget (sdialog->gui, "account-editor-mappings-label"); + gtk_object_ref (GTK_OBJECT (sdialog->mappings_label)); + sdialog->mappings_tab = glade_xml_get_widget (sdialog->gui, "account-editor-mappings-vbox"); + gtk_object_ref (GTK_OBJECT (sdialog->mappings_tab)); + sdialog->dn_customization_label = glade_xml_get_widget (sdialog->gui, "account-editor-dn-customization-label"); + gtk_object_ref (GTK_OBJECT (sdialog->dn_customization_label)); + sdialog->dn_customization_tab = glade_xml_get_widget (sdialog->gui, "account-editor-dn-customization-vbox"); + gtk_object_ref (GTK_OBJECT (sdialog->dn_customization_tab)); +#endif + + addressbook_source_dialog_set_source (sdialog, source); + + set_advanced_button_state (sdialog); + +#ifdef NEW_ADVANCED_UI + gtk_signal_connect (GTK_OBJECT (fewer_options_button), + "clicked", advanced_button_clicked, sdialog); + gtk_signal_connect (GTK_OBJECT (more_options_button), + "clicked", advanced_button_clicked, sdialog); + +#else + gtk_widget_hide (sdialog->advanced_button_notebook); +#endif + +#ifdef NEW_ADVANCED_UI + /* set up a signal handler to query for schema info if the user switches to the advanced tabs */ + gtk_signal_connect (GTK_OBJECT (sdialog->notebook), "switch_page", + GTK_SIGNAL_FUNC (edit_dialog_switch_page), sdialog); +#endif + + gtk_signal_connect (GTK_OBJECT (sdialog->ok_button), + "clicked", GTK_SIGNAL_FUNC(edit_dialog_ok_clicked), sdialog); + gtk_signal_connect (GTK_OBJECT (sdialog->apply_button), + "clicked", GTK_SIGNAL_FUNC(edit_dialog_apply_clicked), sdialog); + gtk_signal_connect (GTK_OBJECT (sdialog->close_button), + "clicked", GTK_SIGNAL_FUNC(edit_dialog_close_clicked), sdialog); + + gtk_widget_set_sensitive (sdialog->ok_button, FALSE); + gtk_widget_set_sensitive (sdialog->apply_button, FALSE); + + 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) +{ + int i; + ESelectionModel *selection_model; + int row_count; + + selection_model = e_table_get_selection_model (e_table_scrolled_get_table (E_TABLE_SCROLLED(dialog->sourcesTable))); + row_count = e_selection_model_row_count (selection_model); + + for (i = 0; i < row_count; i ++) { + if (e_selection_model_is_row_selected (selection_model, i)) { + AddressbookSource *source = e_table_memory_get_data (E_TABLE_MEMORY(dialog->sourcesModel), i); + AddressbookSourceDialog *sdialog; + sdialog = addressbook_edit_server_dialog (dialog, source, i); + break; /* single select so we're done now */ + } + } + +#if 0 + AddressbookSource *source; + AddressbookSourceDialog *sdialog; + + source = gtk_clist_get_row_data (GTK_CLIST (dialog->clistSources), dialog->source_row); + + sdialog = addressbook_config_source_with_gui (dialog->gui, source, dialog->page); + if (sdialog->id == 0) { + /* Ok was clicked */ + source = addressbook_source_copy(sdialog->source); + + e_utf8_gtk_clist_set_text (GTK_CLIST (dialog->clistSources), dialog->source_row, 0, source->name); + e_utf8_gtk_clist_set_text (GTK_CLIST (dialog->clistSources), dialog->source_row, 1, source->host); + gtk_clist_set_row_data (GTK_CLIST (dialog->clistSources), dialog->source_row, source); + + evolution_config_control_changed (dialog->config_control); + + update_sensitivity (dialog); + } +#endif +} + +static void +delete_source_clicked (GtkWidget *widget, AddressbookDialog *dialog) +{ + int i; + ESelectionModel *selection_model; + int row_count; + + selection_model = e_table_get_selection_model (e_table_scrolled_get_table (E_TABLE_SCROLLED(dialog->sourcesTable))); + row_count = e_selection_model_row_count (selection_model); + + for (i = 0; i < row_count; i ++) { + if (e_selection_model_is_row_selected (selection_model, i)) { + AddressbookSource *source = e_table_memory_get_data (E_TABLE_MEMORY(dialog->sourcesModel), i); + e_table_memory_store_remove (E_TABLE_MEMORY_STORE (dialog->sourcesModel), i); + addressbook_source_free (source); + + break; /* single select so we're done now */ + } + } + + evolution_config_control_changed (dialog->config_control); +} + +static void +config_control_destroy_callback (EvolutionConfigControl *config_control, + void *data) +{ + AddressbookDialog *dialog; + + dialog = (AddressbookDialog *) data; + + gtk_object_unref (GTK_OBJECT (dialog->gui)); + g_free (dialog); +} + +static void +config_control_apply_callback (EvolutionConfigControl *config_control, + void *data) +{ + AddressbookDialog *dialog; + int i; + int count; + + dialog = (AddressbookDialog *) data; + + addressbook_storage_clear_sources(); + + count = e_table_model_row_count (E_TABLE_MODEL (dialog->sourcesModel)); + + for (i = 0; i < count; i ++) { + AddressbookSource *source = e_table_memory_get_data (E_TABLE_MEMORY (dialog->sourcesModel), i); + addressbook_storage_add_source (addressbook_source_copy (source)); + } + + addressbook_storage_write_sources(); +} + +static void +sources_selection_changed (ESelectionModel *esm, AddressbookDialog *dialog) +{ + gboolean sensitive = e_selection_model_selected_count (esm) == 1; + + gtk_widget_set_sensitive (dialog->editSource, sensitive); + gtk_widget_set_sensitive (dialog->deleteSource, sensitive); +} + +static AddressbookDialog * +ldap_dialog_new (GNOME_Evolution_Shell shell) +{ + AddressbookDialog *dialog; + GList *l; + ESelectionModel *esm; + + dialog = g_new0 (AddressbookDialog, 1); + + dialog->gui = glade_xml_new (EVOLUTION_GLADEDIR "/" GLADE_FILE_NAME, NULL); + dialog->shell = shell; + + dialog->sourcesTable = glade_xml_get_widget (dialog->gui, "sourcesTable"); + dialog->sourcesModel = gtk_object_get_data (GTK_OBJECT (dialog->sourcesTable), "model"); + + dialog->addSource = glade_xml_get_widget (dialog->gui, "addSource"); + gtk_signal_connect (GTK_OBJECT(dialog->addSource), "clicked", + GTK_SIGNAL_FUNC (add_source_clicked), + dialog); + + dialog->editSource = glade_xml_get_widget (dialog->gui, "editSource"); + gtk_signal_connect (GTK_OBJECT(dialog->editSource), "clicked", + GTK_SIGNAL_FUNC (edit_source_clicked), + dialog); + + dialog->deleteSource = glade_xml_get_widget (dialog->gui, "deleteSource"); + gtk_signal_connect (GTK_OBJECT(dialog->deleteSource), "clicked", + GTK_SIGNAL_FUNC (delete_source_clicked), + dialog); + + l = addressbook_storage_get_sources (); + for (; l != NULL; l = l->next) { + AddressbookSource *source; + void *source_data[2]; + + source = addressbook_source_copy ((AddressbookSource*)l->data); + + source_data[0] = source->name; + source_data[1] = source->host; + + e_table_memory_store_insert (E_TABLE_MEMORY_STORE (dialog->sourcesModel), + -1, source_data, source); + } + + esm = e_table_get_selection_model (e_table_scrolled_get_table (E_TABLE_SCROLLED(dialog->sourcesTable))); + gtk_signal_connect (GTK_OBJECT (esm), "selection_changed", + GTK_SIGNAL_FUNC (sources_selection_changed), dialog); + + sources_selection_changed (esm, dialog); + + dialog->page = glade_xml_get_widget (dialog->gui, "addressbook-sources"); + + return dialog; +} + +static ETableMemoryStoreColumnInfo sources_table_columns[] = { + E_TABLE_MEMORY_STORE_STRING, + E_TABLE_MEMORY_STORE_STRING, + E_TABLE_MEMORY_STORE_TERMINATOR +}; + +#define SOURCES_TABLE_SPEC \ +"<ETableSpecification cursor-mode=\"line\"> \ + <ETableColumn model_col= \"0\" _title=\"Account Name\" expansion=\"1.0\" minimum_width=\"20\" resizable=\"true\" cell=\"string\" compare=\"string\"/> \ + <ETableColumn model_col= \"1\" _title=\"Server Name\" expansion=\"1.0\" minimum_width=\"20\" resizable=\"true\" cell=\"string\" compare=\"string\"/> \ + <ETableState> \ + <column source=\"0\"/> \ + <column source=\"1\"/> \ + <grouping></grouping> \ + </ETableState> \ +</ETableSpecification>" + +GtkWidget* +addressbook_dialog_create_sources_table (char *name, char *string1, char *string2, int num1, int num2) +{ + GtkWidget *table; + ETableModel *model; + + + model = e_table_memory_store_new (sources_table_columns); + + table = e_table_scrolled_new (model, NULL, SOURCES_TABLE_SPEC, NULL); + + gtk_object_set_data (GTK_OBJECT (table), "model", model); + + return table; +} + +static EvolutionConfigControl * +config_control_new (GNOME_Evolution_Shell shell) +{ + AddressbookDialog *dialog; + + dialog = ldap_dialog_new (shell); + + gtk_widget_ref (dialog->page); + + gtk_container_remove (GTK_CONTAINER (dialog->page->parent), dialog->page); + + dialog->config_control = evolution_config_control_new (dialog->page); + gtk_signal_connect (GTK_OBJECT (dialog->config_control), "apply", + GTK_SIGNAL_FUNC (config_control_apply_callback), dialog); + gtk_signal_connect (GTK_OBJECT (dialog->config_control), "destroy", + GTK_SIGNAL_FUNC (config_control_destroy_callback), dialog); + + gtk_widget_unref (dialog->page); + + return dialog->config_control; +} + + +/* Implementation of the factory for the configuration control. */ + +static BonoboGenericFactory *factory = NULL; + +static BonoboObject * +config_control_factory_fn (BonoboGenericFactory *factory, + void *data) +{ + GNOME_Evolution_Shell shell; + EvolutionConfigControl *control; + + shell = (GNOME_Evolution_Shell) data; + + control = config_control_new (shell); + return BONOBO_OBJECT (control); +} + +gboolean +ldap_config_register_factory (GNOME_Evolution_Shell shell) +{ + g_return_val_if_fail (shell != CORBA_OBJECT_NIL, FALSE); + + factory = bonobo_generic_factory_new (CONFIG_CONTROL_FACTORY_ID, + config_control_factory_fn, + shell); + + if (factory != NULL) { + return TRUE; + } else { + g_warning ("Cannot register factory %s", CONFIG_CONTROL_FACTORY_ID); + return FALSE; + } +} + +void +ldap_config_create_new_source (const char *new_source, GtkWidget *parent) +{ +#if 0 + AddressbookSourceDialog *dialog; + GladeXML *gui; + + gui = glade_xml_new (EVOLUTION_GLADEDIR "/" GLADE_FILE_NAME, NULL); + + dialog = addressbook_source_dialog (gui, NULL, parent); + + e_utf8_gtk_entry_set_text (GTK_ENTRY (dialog->name), new_source); + + gnome_dialog_close_hides (GNOME_DIALOG(dialog->dialog), TRUE); + + dialog->id = gnome_dialog_run_and_close (GNOME_DIALOG (dialog->dialog)); + + gtk_object_unref (GTK_OBJECT (dialog->gui)); + + if (dialog->id == 0) { + /* Ok was clicked */ + addressbook_storage_add_source (addressbook_source_copy(dialog->source)); + addressbook_storage_write_sources(); + } +#endif +} + +#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_gnome_init (); + + bindtextdomain (PACKAGE, EVOLUTION_LOCALEDIR); + textdomain (PACKAGE); + +#if 0 + g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING); +#endif + + gtk_widget_push_visual (gdk_rgb_get_visual ()); + 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/ldap-config.glade b/addressbook/gui/component/ldap-config.glade new file mode 100644 index 0000000000..fd9ebfad8c --- /dev/null +++ b/addressbook/gui/component/ldap-config.glade @@ -0,0 +1,5819 @@ +<?xml version="1.0"?> +<GTK-Interface> + +<project> + <name>addressbook-config-mockup</name> + <program_name>addressbook-config-mockup</program_name> + <directory></directory> + <source_directory>src</source_directory> + <pixmaps_directory>../../../art</pixmaps_directory> + <language>C</language> + <gnome_support>True</gnome_support> + <gettext_support>True</gettext_support> +</project> + +<widget> + <class>GnomeDialog</class> + <name>Add/Edit Attribute Mappings--Simple Version</name> + <visible>False</visible> + <title>Add (or Edit) Attribute Mappings</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <allow_shrink>True</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + <auto_close>False</auto_close> + <hide_on_close>False</hide_on_close> + + <widget> + <class>GtkVBox</class> + <child_name>GnomeDialog:vbox</child_name> + <name>dialog-vbox4</name> + <homogeneous>False</homogeneous> + <spacing>8</spacing> + <child> + <padding>4</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkHButtonBox</class> + <child_name>GnomeDialog:action_area</child_name> + <name>dialog-action_area4</name> + <layout_style>GTK_BUTTONBOX_END</layout_style> + <spacing>8</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>True</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkButton</class> + <name>button37</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_OK</stock_button> + </widget> + + <widget> + <class>GtkButton</class> + <name>button39</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button> + </widget> + </widget> + + <widget> + <class>GtkVBox</class> + <name>vbox30</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox66</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GnomePixmap</class> + <name>pixmap35</name> + <filename>ldap.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label283</name> + <label>Please select and Evolution attribute and an +LDAP attribute to associate with it.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator8</name> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + + <widget> + <class>GtkTable</class> + <name>table18</name> + <border_width>3</border_width> + <rows>2</rows> + <columns>2</columns> + <homogeneous>False</homogeneous> + <row_spacing>3</row_spacing> + <column_spacing>3</column_spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label284</name> + <label>_Evolution attribute:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <default_focus_target>combo-entry2</default_focus_target> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label285</name> + <label>_LDAP attribute:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <default_focus_target>combo-entry3</default_focus_target> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkCombo</class> + <name>combo4</name> + <value_in_list>False</value_in_list> + <ok_if_empty>True</ok_if_empty> + <case_sensitive>False</case_sensitive> + <use_arrows>True</use_arrows> + <use_arrows_always>False</use_arrows_always> + <items></items> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkEntry</class> + <child_name>GtkCombo:entry</child_name> + <name>combo-entry2</name> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + </widget> + + <widget> + <class>GtkCombo</class> + <name>combo5</name> + <value_in_list>False</value_in_list> + <ok_if_empty>True</ok_if_empty> + <case_sensitive>False</case_sensitive> + <use_arrows>True</use_arrows> + <use_arrows_always>False</use_arrows_always> + <items></items> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkEntry</class> + <child_name>GtkCombo:entry</child_name> + <name>combo-entry3</name> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + </widget> + </widget> + </widget> + </widget> +</widget> + +<widget> + <class>GnomeDialog</class> + <name>Add/Edit Attribute Mappings-- Multiple Selection Version</name> + <visible>False</visible> + <title>Add (or Edit) Attribute Mappings</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <default_width>393</default_width> + <default_height>324</default_height> + <allow_shrink>False</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + <auto_close>False</auto_close> + <hide_on_close>False</hide_on_close> + + <widget> + <class>GtkVBox</class> + <child_name>GnomeDialog:vbox</child_name> + <name>vbox31</name> + <homogeneous>False</homogeneous> + <spacing>8</spacing> + <child> + <padding>4</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkHButtonBox</class> + <child_name>GnomeDialog:action_area</child_name> + <name>hbuttonbox9</name> + <layout_style>GTK_BUTTONBOX_END</layout_style> + <spacing>8</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>True</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkButton</class> + <name>button40</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_OK</stock_button> + </widget> + + <widget> + <class>GtkButton</class> + <name>button41</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button> + </widget> + </widget> + + <widget> + <class>GtkVBox</class> + <name>vbox32</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox67</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GnomePixmap</class> + <name>pixmap36</name> + <filename>ldap.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label286</name> + <label>Please select and Evolution attribute and an +LDAP attribute to associate with it.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator9</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkTable</class> + <name>table19</name> + <border_width>3</border_width> + <rows>2</rows> + <columns>2</columns> + <homogeneous>False</homogeneous> + <row_spacing>3</row_spacing> + <column_spacing>3</column_spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label287</name> + <label>_Evolution attribute:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <default_focus_target>entry32</default_focus_target> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkCombo</class> + <name>combo6</name> + <value_in_list>False</value_in_list> + <ok_if_empty>True</ok_if_empty> + <case_sensitive>False</case_sensitive> + <use_arrows>True</use_arrows> + <use_arrows_always>False</use_arrows_always> + <items></items> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkEntry</class> + <child_name>GtkCombo:entry</child_name> + <name>entry32</name> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label288</name> + <label>_LDAP attributes:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>7.45058e-09</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>True</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + </widget> + + <widget> + <class>GtkScrolledWindow</class> + <name>scrolledwindow6</name> + <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy> + <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy> + <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy> + <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + + <widget> + <class>GtkCList</class> + <name>clist4</name> + <can_focus>True</can_focus> + <columns>2</columns> + <column_widths>163,80</column_widths> + <selection_mode>GTK_SELECTION_SINGLE</selection_mode> + <show_titles>True</show_titles> + <shadow_type>GTK_SHADOW_IN</shadow_type> + + <widget> + <class>GtkLabel</class> + <child_name>CList:title</child_name> + <name>label289</name> + <label>Attribute</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>CList:title</child_name> + <name>label290</name> + <label>Select</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + </widget> + </widget> + </widget> + </widget> +</widget> + +<widget> + <class>GtkWindow</class> + <name>account-editor-window</name> + <visible>False</visible> + <title>account-editor</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <allow_shrink>False</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + + <widget> + <class>GtkVBox</class> + <name>vbox37</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + + <widget> + <class>GtkNotebook</class> + <name>account-editor-notebook</name> + <can_focus>True</can_focus> + <show_tabs>True</show_tabs> + <show_border>True</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkVBox</class> + <name>account-editor-general-vbox</name> + <border_width>6</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GtkHBox</class> + <name>hbox100</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>4</spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label431</name> + <label>_Display name:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment45</name> + <xalign>1</xalign> + <yalign>0.5</yalign> + <xscale>0.9</xscale> + <yscale>1</yscale> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkEntry</class> + <name>account-editor-display-name-entry</name> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + </widget> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator12</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label331</name> + <label>General</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkVBox</class> + <name>account-editor-connecting-vbox</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + + <widget> + <class>Placeholder</class> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label334</name> + <label>Connecting</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkVBox</class> + <name>account-editor-searching-vbox</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + + <widget> + <class>Placeholder</class> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label344</name> + <label>Searching</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkVBox</class> + <name>account-editor-objectclasses-vbox</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + + <widget> + <class>Placeholder</class> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>account-editor-objectclasses-label</name> + <label>Objectclasses</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkVBox</class> + <name>account-editor-mappings-vbox</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + + <widget> + <class>Placeholder</class> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>account-editor-mappings-label</name> + <label>Mappings</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkVBox</class> + <name>account-editor-dn-customization-vbox</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + + <widget> + <class>Placeholder</class> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>account-editor-dn-customization-label</name> + <label>DN Customization</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator10</name> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox120</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkNotebook</class> + <name>account-editor-advanced-button-notebook</name> + <show_tabs>False</show_tabs> + <show_border>False</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkHButtonBox</class> + <name>hbuttonbox21</name> + <layout_style>GTK_BUTTONBOX_START</layout_style> + <spacing>0</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + + <widget> + <class>GtkButton</class> + <name>account-editor-fewer-options-button</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label><< Fewer Options</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label554</name> + <label>label554</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHButtonBox</class> + <name>hbuttonbox28</name> + <layout_style>GTK_BUTTONBOX_START</layout_style> + <spacing>0</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + + <widget> + <class>GtkButton</class> + <name>account-editor-more-options-button</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>_More Options >></label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label555</name> + <label>label555</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + + <widget> + <class>GtkHButtonBox</class> + <name>hbuttonbox20</name> + <layout_style>GTK_BUTTONBOX_END</layout_style> + <spacing>0</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkButton</class> + <name>account-editor-ok-button</name> + <sensitive>False</sensitive> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_OK</stock_button> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + + <widget> + <class>GtkButton</class> + <name>account-editor-apply-button</name> + <sensitive>False</sensitive> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_APPLY</stock_button> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + + <widget> + <class>GtkButton</class> + <name>account-editor-close-button</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_CLOSE</stock_button> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + </widget> + </widget> + </widget> +</widget> + +<widget> + <class>GtkWindow</class> + <name>account-druid-window</name> + <visible>False</visible> + <title>account-druid</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <allow_shrink>False</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + + <widget> + <class>GnomeDruid</class> + <name>account-druid</name> + + <widget> + <class>GnomeDruidPageStart</class> + <name>druidpagestart1</name> + <title>LDAP Configuration Assistant</title> + <text>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.</text> + <title_color>255,255,255</title_color> + <text_color>0,0,0</text_color> + <background_color>0,0,0</background_color> + <logo_background_color>0,0,0</logo_background_color> + <textbox_color>255,255,255</textbox_color> + <logo_image>ldap.png</logo_image> + <watermark_image>xstdruidbg-3.png</watermark_image> + </widget> + + <widget> + <class>GnomeDruidPageStandard</class> + <name>add-server-druid-info-page</name> + <title>Step 1: Server Information</title> + <title_color>255,255,255</title_color> + <background_color>0,0,0</background_color> + <logo_background_color>0,0,0</logo_background_color> + + <widget> + <class>GtkVBox</class> + <child_name>GnomeDruidPageStandard:vbox</child_name> + <name>druid-vbox1</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkVBox</class> + <name>account-druid-general-vbox</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label158</name> + <label>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.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>3</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator2</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + </widget> + </widget> + + <widget> + <class>GnomeDruidPageStandard</class> + <name>add-server-druid-connecting-page</name> + <title>Step 2: Connecting to Server</title> + <title_color>255,255,255</title_color> + <background_color>0,0,0</background_color> + <logo_background_color>0,0,0</logo_background_color> + + <widget> + <class>GtkVBox</class> + <child_name>GnomeDruidPageStandard:vbox</child_name> + <name>druid-vbox2</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkVBox</class> + <name>account-druid-connecting-vbox</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label174</name> + <label>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.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>3</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator3</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + </widget> + </widget> + + <widget> + <class>GnomeDruidPageStandard</class> + <name>add-server-druid-searching-page</name> + <title>Step 3: Searching the Directory</title> + <title_color>255,255,255</title_color> + <background_color>0,0,0</background_color> + <logo_background_color>0,0,0</logo_background_color> + + <widget> + <class>GtkVBox</class> + <child_name>GnomeDruidPageStandard:vbox</child_name> + <name>vbox23</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkVBox</class> + <name>account-druid-searching-vbox</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label254</name> + <label>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.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator7</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + </widget> + </widget> + + <widget> + <class>GnomeDruidPageStandard</class> + <name>add-server-druid-display-name-page</name> + <title>Step 4: Display Name</title> + <title_color>255,255,255</title_color> + <background_color>0,0,0</background_color> + <logo_background_color>0,0,0</logo_background_color> + + <widget> + <class>GtkVBox</class> + <child_name>GnomeDruidPageStandard:vbox</child_name> + <name>druid-vbox5</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkVBox</class> + <name>vbox21</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label198</name> + <label>Specifying a display name is the last required step in configuring an LDAP server.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>3</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator5</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkTable</class> + <name>table15</name> + <border_width>3</border_width> + <rows>1</rows> + <columns>2</columns> + <homogeneous>False</homogeneous> + <row_spacing>3</row_spacing> + <column_spacing>3</column_spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkEntry</class> + <name>druid-display-name-entry</name> + <can_focus>True</can_focus> + <has_focus>True</has_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label199</name> + <label>_Display name:</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <default_focus_target>druid-display-name-entry</default_focus_target> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + </widget> + + <widget> + <class>GtkNotebook</class> + <name>notebook15</name> + <show_tabs>False</show_tabs> + <show_border>False</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox41</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap21</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label207</name> + <label>This is the name for this server that will appear in your Evolution folder list. +It is for display purposes only. </label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label208</name> + <label>label163</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox42</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap22</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label215</name> + <label>Selecting this option will let you change Evolution's default settings for LDAP +searches, and for creating and editting contacts. </label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label210</name> + <label>label164</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + </widget> + </widget> + </widget> + + <widget> + <class>GnomeDruidPageFinish</class> + <name>add-server-druid-finish-page</name> + <title>Finished</title> + <text>Congratulations, you are finished setting up this LDAP server. You +are now ready to access this directory. + +Please click the "Finish" button to save the settings you have entered here.</text> + <background_color>0,0,0</background_color> + <logo_background_color>0,0,0</logo_background_color> + <textbox_color>255,255,255</textbox_color> + <text_color>0,0,0</text_color> + <title_color>255,255,255</title_color> + <watermark_image>xstdruidbg-3.png</watermark_image> + </widget> + </widget> +</widget> + +<widget> + <class>GtkWindow</class> + <name>edit_server_window_simple</name> + <visible>False</visible> + <title>edit_server_window_simple</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <allow_shrink>False</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + + <widget> + <class>GtkVBox</class> + <name>vbox67</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + + <widget> + <class>GtkNotebook</class> + <name>notebook25</name> + <can_focus>True</can_focus> + <show_tabs>True</show_tabs> + <show_border>True</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkVBox</class> + <name>vbox68</name> + <border_width>6</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GtkHBox</class> + <name>hbox121</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>4</spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label484</name> + <label>_Display name:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment52</name> + <xalign>1</xalign> + <yalign>0.5</yalign> + <xscale>0.9</xscale> + <yscale>1</yscale> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkEntry</class> + <name>entry54</name> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + </widget> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator13</name> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkTable</class> + <name>table32</name> + <border_width>3</border_width> + <rows>3</rows> + <columns>2</columns> + <homogeneous>False</homogeneous> + <row_spacing>3</row_spacing> + <column_spacing>3</column_spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label485</name> + <label>_Server name:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <default_focus_target>entry55</default_focus_target> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label486</name> + <label>_Log in method:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label487</name> + <label>Distinguished _name:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <default_focus_target>entry56</default_focus_target> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry55</name> + <can_focus>True</can_focus> + <has_focus>True</has_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment53</name> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkOptionMenu</class> + <name>optionmenu18</name> + <can_focus>True</can_focus> + <items>Anonymously +Using email address +Using distinguished name (DN) +</items> + <initial_choice>2</initial_choice> + </widget> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry56</name> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + </widget> + + <widget> + <class>GtkNotebook</class> + <name>notebook26</name> + <show_tabs>False</show_tabs> + <show_border>False</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox122</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap66</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label488</name> + <label>This is the full name of your ldap server. For example, "ldap.mycompany.com".</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label489</name> + <label>label163</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox123</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap67</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label490</name> + <label>label168</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label491</name> + <label>label164</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox124</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap68</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label492</name> + <label>label169</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label493</name> + <label>label165</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>Placeholder</class> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label494</name> + <label>label214</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox125</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap69</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label495</name> + <label>This is the name for this server that will appear in your Evolution folder list. +It is for display purposes only. </label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label496</name> + <label>label452</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label497</name> + <label>General</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkVBox</class> + <name>vbox69</name> + <border_width>6</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GtkTable</class> + <name>table33</name> + <border_width>3</border_width> + <rows>2</rows> + <columns>2</columns> + <homogeneous>False</homogeneous> + <row_spacing>3</row_spacing> + <column_spacing>3</column_spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label498</name> + <label>_Port number:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment54</name> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkVBox</class> + <name>vbox70</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + + <widget> + <class>GtkRadioButton</class> + <name>radiobutton9</name> + <can_focus>True</can_focus> + <label>_Always</label> + <active>False</active> + <draw_indicator>True</draw_indicator> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkRadioButton</class> + <name>radiobutton10</name> + <can_focus>True</can_focus> + <label>_If necessary </label> + <active>False</active> + <draw_indicator>True</draw_indicator> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkRadioButton</class> + <name>radiobutton11</name> + <can_focus>True</can_focus> + <label>_Don't use SSL/TLS</label> + <active>False</active> + <draw_indicator>True</draw_indicator> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment55</name> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkPixmap</class> + <name>pixmap70</name> + <filename>gnome-hint.png</filename> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <build_insensitive>True</build_insensitive> + </widget> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment56</name> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkCombo</class> + <name>combo8</name> + <value_in_list>False</value_in_list> + <ok_if_empty>True</ok_if_empty> + <case_sensitive>False</case_sensitive> + <use_arrows>True</use_arrows> + <use_arrows_always>False</use_arrows_always> + <items>380 +666 +1234 +</items> + + <widget> + <class>GtkEntry</class> + <child_name>GtkCombo:entry</child_name> + <name>entry57</name> + <can_focus>True</can_focus> + <has_focus>True</has_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text>380</text> + </widget> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label499</name> + <label>U_se SSL/TLS:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>7.45058e-09</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>True</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + </widget> + </widget> + + <widget> + <class>GtkNotebook</class> + <name>notebook27</name> + <show_tabs>False</show_tabs> + <show_border>False</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox126</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap71</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label500</name> + <label>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.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label501</name> + <label>label163</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox127</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap72</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label502</name> + <label>Selecting this option means that Evolution will only connect to your LDAP server if +your LDAP server supports SSL or TLS.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label503</name> + <label>label398</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox128</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap73</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label504</name> + <label>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.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label505</name> + <label>label396</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox129</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap74</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label506</name> + <label>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. </label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label507</name> + <label>label397</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label508</name> + <label>Connecting</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkVBox</class> + <name>vbox71</name> + <border_width>6</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GtkTable</class> + <name>table34</name> + <border_width>3</border_width> + <rows>4</rows> + <columns>2</columns> + <homogeneous>False</homogeneous> + <row_spacing>3</row_spacing> + <column_spacing>3</column_spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label509</name> + <label>_Search base:</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label510</name> + <label>S_earch scope: </label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment57</name> + <xalign>7.45058e-09</xalign> + <yalign>7.45058e-09</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkOptionMenu</class> + <name>optionmenu19</name> + <can_focus>True</can_focus> + <items>Sub +One +</items> + <initial_choice>0</initial_choice> + </widget> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox130</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + + <widget> + <class>GtkEntry</class> + <name>entry58</name> + <can_focus>True</can_focus> + <has_focus>True</has_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + + <widget> + <class>GtkButton</class> + <name>button90</name> + <can_focus>True</can_focus> + <label> S_how Supported Bases </label> + <relief>GTK_RELIEF_NORMAL</relief> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label511</name> + <label>_Timeout (minutes):</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>1</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment58</name> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xscale>1</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox131</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GtkLabel</class> + <name>label512</name> + <label>1:00</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkHScale</class> + <name>hscale5</name> + <can_focus>True</can_focus> + <draw_value>False</draw_value> + <value_pos>GTK_POS_LEFT</value_pos> + <digits>0</digits> + <policy>GTK_UPDATE_DELAYED</policy> + <value>3</value> + <lower>1</lower> + <upper>5</upper> + <step>0.5</step> + <page>1</page> + <page_size>0</page_size> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label513</name> + <label>5:00</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>3</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label514</name> + <label>Selected:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>1</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label515</name> + <label>2:30</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label516</name> + <label>_Download limit:</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>3</top_attach> + <bottom_attach>4</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment59</name> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>3</top_attach> + <bottom_attach>4</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox132</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GtkSpinButton</class> + <name>spinbutton5</name> + <can_focus>True</can_focus> + <climb_rate>1</climb_rate> + <digits>0</digits> + <numeric>False</numeric> + <update_policy>GTK_UPDATE_ALWAYS</update_policy> + <snap>False</snap> + <wrap>False</wrap> + <value>100</value> + <lower>0</lower> + <upper>10000</upper> + <step>1</step> + <page>10</page> + <page_size>10</page_size> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label517</name> + <label>cards</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + </widget> + </widget> + + <widget> + <class>GtkNotebook</class> + <name>notebook28</name> + <show_tabs>False</show_tabs> + <show_border>False</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox133</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap75</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label518</name> + <label>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.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label519</name> + <label>label163</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox134</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap76</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label520</name> + <label>The search scope defines how deep you would like the search to extend down the +directory tree. A search scope of "sub" will include all entries below your search base. +A search scope of "one" will only include the entries one level beneath your base. +</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label521</name> + <label>label164</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox135</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap77</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label522</name> + <label>This option controls how long a search will be run.</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label523</name> + <label>label165</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox136</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap78</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label524</name> + <label>This is the maximum number of entries to download. Setting this number to be +too large will slow down your addressbook.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label525</name> + <label>label166</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label526</name> + <label>Searching</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + + <widget> + <class>GtkHSeparator</class> + <name>hseparator14</name> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox142</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkHButtonBox</class> + <name>hbuttonbox25</name> + <layout_style>GTK_BUTTONBOX_START</layout_style> + <spacing>0</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkButton</class> + <name>button100</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>_More Options >></label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + </widget> + + <widget> + <class>GtkHButtonBox</class> + <name>hbuttonbox26</name> + <layout_style>GTK_BUTTONBOX_END</layout_style> + <spacing>0</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkButton</class> + <name>button101</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_OK</stock_button> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + + <widget> + <class>GtkButton</class> + <name>button102</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_APPLY</stock_button> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + + <widget> + <class>GtkButton</class> + <name>button103</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_CLOSE</stock_button> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + </widget> + </widget> + </widget> +</widget> + +<widget> + <class>GnomeDialog</class> + <name>addressbook-sources-window</name> + <visible>False</visible> + <title>Addressbook Sources</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <default_width>355</default_width> + <default_height>285</default_height> + <allow_shrink>True</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + <auto_close>False</auto_close> + <hide_on_close>False</hide_on_close> + + <widget> + <class>GtkVBox</class> + <child_name>GnomeDialog:vbox</child_name> + <name>addressbook-sources-vbox</name> + <homogeneous>False</homogeneous> + <spacing>8</spacing> + <child> + <padding>4</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkHButtonBox</class> + <child_name>GnomeDialog:action_area</child_name> + <name>hbuttonbox27</name> + <layout_style>GTK_BUTTONBOX_END</layout_style> + <spacing>8</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>True</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkButton</class> + <name>button104</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_OK</stock_button> + </widget> + + <widget> + <class>GtkButton</class> + <name>button105</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_APPLY</stock_button> + </widget> + + <widget> + <class>GtkButton</class> + <name>button106</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_CLOSE</stock_button> + </widget> + </widget> + + <widget> + <class>GtkHBox</class> + <name>addressbook-sources</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>Custom</class> + <name>sourcesTable</name> + <creation_function>addressbook_dialog_create_sources_table</creation_function> + <int1>0</int1> + <int2>0</int2> + <last_modification_time>Thu, 11 Apr 2002 00:31:02 GMT</last_modification_time> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + + <widget> + <class>GtkVBox</class> + <name>vbox73</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label529</name> + <label> +</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkVButtonBox</class> + <name>vbuttonbox18</name> + <layout_style>GTK_BUTTONBOX_START</layout_style> + <spacing>0</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkButton</class> + <name>addSource</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>_Add</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + + <widget> + <class>GtkButton</class> + <name>editSource</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>_Edit</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + + <widget> + <class>GtkButton</class> + <name>deleteSource</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>De_lete</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + </widget> + </widget> + </widget> + </widget> +</widget> + +<widget> + <class>GtkWindow</class> + <name>general-tab-window</name> + <visible>False</visible> + <title>general-tab</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <allow_shrink>False</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + + <widget> + <class>GtkVBox</class> + <name>general-tab</name> + <border_width>6</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GtkTable</class> + <name>table36</name> + <border_width>3</border_width> + <rows>3</rows> + <columns>2</columns> + <homogeneous>False</homogeneous> + <row_spacing>3</row_spacing> + <column_spacing>3</column_spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label534</name> + <label>_Server name:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <default_focus_target>server-name-entry</default_focus_target> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label535</name> + <label>_Log in method:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkEntry</class> + <name>server-name-entry</name> + <can_focus>True</can_focus> + <has_focus>True</has_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment63</name> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkOptionMenu</class> + <name>auth-optionmenu</name> + <can_focus>True</can_focus> + <items>Anonymously +Using email address +Using distinguished name (DN) +</items> + <initial_choice>0</initial_choice> + </widget> + </widget> + + <widget> + <class>GtkNotebook</class> + <name>auth-label-notebook</name> + <sensitive>False</sensitive> + <show_tabs>False</show_tabs> + <show_border>False</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label553</name> + <label>Email Address:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label546</name> + <label>label546</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label536</name> + <label>Distinguished _name:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label547</name> + <label>label547</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + + <widget> + <class>GtkNotebook</class> + <name>auth-entry-notebook</name> + <sensitive>False</sensitive> + <show_tabs>False</show_tabs> + <show_border>False</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + + <widget> + <class>GtkEntry</class> + <name>email-entry</name> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label549</name> + <label>label549</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkEntry</class> + <name>dn-entry</name> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label550</name> + <label>label550</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + </widget> + + <widget> + <class>GtkNotebook</class> + <name>general-tab-help</name> + <show_tabs>False</show_tabs> + <show_border>False</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox145</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap79</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label537</name> + <label>This is the full name of your ldap server. For example, "ldap.mycompany.com".</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label538</name> + <label>label163</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox146</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap80</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label539</name> + <label>Evolution will use this email address to authenticate you with the server</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label540</name> + <label>label164</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox147</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap81</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label541</name> + <label>Evolution will use this DN to authenticate you with the server</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label542</name> + <label>label165</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label552</name> + <label>This is the method evolution will use to authenticate you. Note that setting this to "Email Address" requires anonymous access to your ldap server.</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>True</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label551</name> + <label>label551</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox148</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap82</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label544</name> + <label>This is the name for this server that will appear in your Evolution folder list. +It is for display purposes only. </label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label545</name> + <label>label452</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + </widget> +</widget> + +<widget> + <class>GtkWindow</class> + <name>connecting-tab-window</name> + <visible>False</visible> + <title>connecting-tab</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <allow_shrink>False</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + + <widget> + <class>GtkVBox</class> + <name>connecting-tab</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + + <widget> + <class>GtkTable</class> + <name>table14</name> + <border_width>3</border_width> + <rows>2</rows> + <columns>2</columns> + <homogeneous>False</homogeneous> + <row_spacing>3</row_spacing> + <column_spacing>3</column_spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label175</name> + <label>_Port number:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment23</name> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkPixmap</class> + <name>pixmap11</name> + <filename>gnome-hint.png</filename> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <build_insensitive>True</build_insensitive> + </widget> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment21</name> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkCombo</class> + <name>port-combo</name> + <value_in_list>False</value_in_list> + <ok_if_empty>True</ok_if_empty> + <case_sensitive>False</case_sensitive> + <use_arrows>True</use_arrows> + <use_arrows_always>False</use_arrows_always> + <items>389 +636 +3268 +</items> + + <widget> + <class>GtkEntry</class> + <child_name>GtkCombo:entry</child_name> + <name>entry27</name> + <can_focus>True</can_focus> + <has_focus>True</has_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text>389</text> + </widget> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label176</name> + <label>U_se SSL/TLS:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>True</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment60</name> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + + <widget> + <class>GtkOptionMenu</class> + <name>ssl-optionmenu</name> + <can_focus>True</can_focus> + <items>Always +Whenever Possible +Never +</items> + <initial_choice>1</initial_choice> + </widget> + </widget> + </widget> + + <widget> + <class>GtkNotebook</class> + <name>connecting-tab-help</name> + <show_tabs>False</show_tabs> + <show_border>False</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox30</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap7</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label178</name> + <label>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.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label179</name> + <label>label163</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox31</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap8</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label395</name> + <label>Selecting this option means that Evolution will only connect to your LDAP server if +your LDAP server supports SSL or TLS.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label398</name> + <label>label398</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox91</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap43</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label399</name> + <label>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.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label396</name> + <label>label396</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox92</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap44</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label400</name> + <label>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. </label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label397</name> + <label>label397</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + </widget> +</widget> + +<widget> + <class>GtkWindow</class> + <name>searching-tab-window</name> + <visible>False</visible> + <title>searching-tab</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <allow_shrink>False</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + + <widget> + <class>GtkVBox</class> + <name>searching-tab</name> + <border_width>6</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GtkTable</class> + <name>table30</name> + <border_width>3</border_width> + <rows>4</rows> + <columns>2</columns> + <homogeneous>False</homogeneous> + <row_spacing>3</row_spacing> + <column_spacing>3</column_spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label455</name> + <label>_Search base:</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label456</name> + <label>S_earch scope: </label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment49</name> + <xalign>7.45058e-09</xalign> + <yalign>7.45058e-09</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkOptionMenu</class> + <name>scope-optionmenu</name> + <can_focus>True</can_focus> + <items>Sub +One +</items> + <initial_choice>0</initial_choice> + </widget> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox109</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + + <widget> + <class>GtkEntry</class> + <name>rootdn-entry</name> + <can_focus>True</can_focus> + <has_focus>True</has_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + + <widget> + <class>GtkButton</class> + <name>rootdn-button</name> + <can_focus>True</can_focus> + <label> S_how Supported Bases </label> + <relief>GTK_RELIEF_NORMAL</relief> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label457</name> + <label>_Timeout (minutes):</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>1</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment50</name> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xscale>1</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>2</top_attach> + <bottom_attach>3</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox110</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GtkLabel</class> + <name>label458</name> + <label>1:00</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkHScale</class> + <name>timeout-scale</name> + <can_focus>True</can_focus> + <draw_value>False</draw_value> + <value_pos>GTK_POS_LEFT</value_pos> + <digits>0</digits> + <policy>GTK_UPDATE_DELAYED</policy> + <value>3</value> + <lower>1</lower> + <upper>5</upper> + <step>0.5</step> + <page>1</page> + <page_size>0</page_size> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label459</name> + <label>5:00</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>3</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label460</name> + <label>Selected:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>1</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label461</name> + <label>2:30</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label462</name> + <label>_Download limit:</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>3</top_attach> + <bottom_attach>4</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>False</yfill> + </child> + </widget> + + <widget> + <class>GtkAlignment</class> + <name>alignment51</name> + <xalign>0</xalign> + <yalign>0.5</yalign> + <xscale>0</xscale> + <yscale>1</yscale> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>3</top_attach> + <bottom_attach>4</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox111</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GtkSpinButton</class> + <name>download-limit-spinbutton</name> + <can_focus>True</can_focus> + <climb_rate>1</climb_rate> + <digits>0</digits> + <numeric>False</numeric> + <update_policy>GTK_UPDATE_ALWAYS</update_policy> + <snap>False</snap> + <wrap>False</wrap> + <value>100</value> + <lower>0</lower> + <upper>10000</upper> + <step>1</step> + <page>10</page> + <page_size>10</page_size> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label463</name> + <label>cards</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + </widget> + </widget> + + <widget> + <class>GtkNotebook</class> + <name>searching-tab-help</name> + <show_tabs>False</show_tabs> + <show_border>False</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox112</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap60</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label464</name> + <label>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.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label465</name> + <label>label163</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox113</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap61</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label466</name> + <label>The search scope defines how deep you would like the search to extend down the +directory tree. A search scope of "sub" will include all entries below your search base. +A search scope of "one" will only include the entries one level beneath your base. +</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label467</name> + <label>label164</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox114</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap62</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label468</name> + <label>This option controls how long a search will be run.</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label469</name> + <label>label165</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox115</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap63</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label470</name> + <label>This is the maximum number of entries to download. Setting this number to be +too large will slow down your addressbook.</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label471</name> + <label>label166</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + </widget> +</widget> + +<widget> + <class>GtkWindow</class> + <name>objectclasses-tab-window</name> + <visible>False</visible> + <title>objectclasses-tab</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <allow_shrink>False</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + + <widget> + <class>GtkVBox</class> + <name>objectclasses-tab</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GtkHBox</class> + <name>hbox93</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkVBox</class> + <name>vbox51</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label405</name> + <label>Objectclasses Used on Server:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>Custom</class> + <name>objectclasses-server-table</name> + <creation_function>objectclasses_create_server_table</creation_function> + <int1>0</int1> + <int2>0</int2> + <last_modification_time>Tue, 16 Apr 2002 17:09:21 GMT</last_modification_time> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkVBox</class> + <name>vbox52</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label407</name> + <label> +</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkVButtonBox</class> + <name>vbuttonbox15</name> + <layout_style>GTK_BUTTONBOX_START</layout_style> + <spacing>1</spacing> + <child_min_width>47</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkButton</class> + <name>objectclasses-add-button</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>_Add -></label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + + <widget> + <class>GtkButton</class> + <name>objectclasses-remove-button</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label><- _Remove</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + </widget> + </widget> + + <widget> + <class>GtkVBox</class> + <name>vbox53</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label408</name> + <label>Objectclasses Used in Evolution:</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>Custom</class> + <name>objectclasses-evolution-table</name> + <creation_function>objectclasses_create_evolution_table</creation_function> + <int1>0</int1> + <int2>0</int2> + <last_modification_time>Tue, 16 Apr 2002 17:09:43 GMT</last_modification_time> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + </widget> + </widget> + + <widget> + <class>GtkHButtonBox</class> + <name>hbuttonbox16</name> + <border_width>6</border_width> + <layout_style>GTK_BUTTONBOX_DEFAULT_STYLE</layout_style> + <spacing>0</spacing> + <child_min_width>87</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkButton</class> + <name>objectclasses-default-button</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>R_estore Defaults</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + </widget> + </widget> +</widget> + +<widget> + <class>GtkWindow</class> + <name>mappings-tab-window</name> + <visible>False</visible> + <title>mappings-tab</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <allow_shrink>False</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + + <widget> + <class>GtkVBox</class> + <name>mappings-tab</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GtkHBox</class> + <name>hbox94</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkVBox</class> + <name>vbox55</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkScrolledWindow</class> + <name>scrolledwindow21</name> + <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy> + <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy> + <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy> + <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkCList</class> + <name>clist18</name> + <can_focus>True</can_focus> + <columns>2</columns> + <column_widths>146,80</column_widths> + <selection_mode>GTK_SELECTION_SINGLE</selection_mode> + <show_titles>True</show_titles> + <shadow_type>GTK_SHADOW_IN</shadow_type> + + <widget> + <class>GtkLabel</class> + <child_name>CList:title</child_name> + <name>label411</name> + <label>Evolution Attribute</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>CList:title</child_name> + <name>label412</name> + <label>Associated LDAP Attribute</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + </widget> + </widget> + + <widget> + <class>GtkVBox</class> + <name>vbox56</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label413</name> + <label> +</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkVButtonBox</class> + <name>vbuttonbox16</name> + <layout_style>GTK_BUTTONBOX_DEFAULT_STYLE</layout_style> + <spacing>0</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkButton</class> + <name>button71</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>_Add Mapping</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + + <widget> + <class>GtkButton</class> + <name>button72</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>_Edit Mapping</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + + <widget> + <class>GtkButton</class> + <name>button73</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>_Delete Mapping</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + </widget> + </widget> + </widget> + + <widget> + <class>GtkHButtonBox</class> + <name>hbuttonbox17</name> + <layout_style>GTK_BUTTONBOX_DEFAULT_STYLE</layout_style> + <spacing>30</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkButton</class> + <name>button74</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>Re_store Defaults</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + </widget> + </widget> +</widget> + +<widget> + <class>GtkWindow</class> + <name>dn-customization-tab-window</name> + <visible>False</visible> + <title>dn-customization-tab</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <allow_shrink>False</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + + <widget> + <class>GtkVBox</class> + <name>dn-customization-tab</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GtkNotebook</class> + <name>notebook24</name> + <show_tabs>False</show_tabs> + <show_border>False</show_border> + <tab_pos>GTK_POS_TOP</tab_pos> + <scrollable>False</scrollable> + <tab_hborder>2</tab_hborder> + <tab_vborder>2</tab_vborder> + <popup_enable>False</popup_enable> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkHBox</class> + <name>hbox116</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>2</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap64</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label473</name> + <label>To add an attribute to the DN, select it from the list and click the "Add Attribute" button. +Any values that you add to the DN will become required values for any new contacts +that you add to the directory on the LDAP server. </label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>7.45058e-09</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label474</name> + <label>label163</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox117</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + + <widget> + <class>GnomePixmap</class> + <name>pixmap65</name> + <filename>gnome-hint.png</filename> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label475</name> + <label>Selecting this option will let you change Evolution's default settings for LDAP +searches, and for creating and editting contacts. </label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>Notebook:tab</child_name> + <name>label476</name> + <label>label164</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + + <widget> + <class>GtkTable</class> + <name>table31</name> + <border_width>3</border_width> + <rows>2</rows> + <columns>2</columns> + <homogeneous>False</homogeneous> + <row_spacing>3</row_spacing> + <column_spacing>3</column_spacing> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkVBox</class> + <name>vbox64</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>False</xfill> + <yfill>True</yfill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label477</name> + <label></label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkVButtonBox</class> + <name>vbuttonbox17</name> + <layout_style>GTK_BUTTONBOX_START</layout_style> + <spacing>10</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkButton</class> + <name>button78</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>_Add to DN</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + </widget> + </widget> + + <widget> + <class>GtkScrolledWindow</class> + <name>scrolledwindow22</name> + <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy> + <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy> + <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy> + <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>1</top_attach> + <bottom_attach>2</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>True</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + + <widget> + <class>GtkCList</class> + <name>clist19</name> + <can_focus>True</can_focus> + <columns>2</columns> + <column_widths>152,80</column_widths> + <selection_mode>GTK_SELECTION_SINGLE</selection_mode> + <show_titles>True</show_titles> + <shadow_type>GTK_SHADOW_IN</shadow_type> + + <widget> + <class>GtkLabel</class> + <child_name>CList:title</child_name> + <name>label478</name> + <label>LDAP Attribute</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + + <widget> + <class>GtkLabel</class> + <child_name>CList:title</child_name> + <name>label479</name> + <label>Corresponding Evolution Attribute</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + </widget> + </widget> + </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox118</name> + <border_width>3</border_width> + <homogeneous>False</homogeneous> + <spacing>3</spacing> + <child> + <left_attach>0</left_attach> + <right_attach>1</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>True</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>True</xfill> + <yfill>True</yfill> + </child> + + <widget> + <class>GtkLabel</class> + <name>label480</name> + <label>_Distinguished Name (DN):</label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <default_focus_target>entry53</default_focus_target> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkEntry</class> + <name>entry53</name> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + </widget> + + <widget> + <class>GtkHButtonBox</class> + <name>hbuttonbox18</name> + <layout_style>GTK_BUTTONBOX_DEFAULT_STYLE</layout_style> + <spacing>0</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <left_attach>1</left_attach> + <right_attach>2</right_attach> + <top_attach>0</top_attach> + <bottom_attach>1</bottom_attach> + <xpad>0</xpad> + <ypad>0</ypad> + <xexpand>False</xexpand> + <yexpand>False</yexpand> + <xshrink>False</xshrink> + <yshrink>False</yshrink> + <xfill>False</xfill> + <yfill>True</yfill> + </child> + + <widget> + <class>GtkButton</class> + <name>button79</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>_Restore Defaults</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + </widget> + </widget> + </widget> +</widget> + +<widget> + <class>GnomeDialog</class> + <name>supported-bases-dialog</name> + <visible>False</visible> + <title>Supported Search Bases</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <default_width>300</default_width> + <default_height>200</default_height> + <allow_shrink>True</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + <auto_close>False</auto_close> + <hide_on_close>False</hide_on_close> + + <widget> + <class>GtkVBox</class> + <child_name>GnomeDialog:vbox</child_name> + <name>dialog-vbox5</name> + <homogeneous>False</homogeneous> + <spacing>8</spacing> + <child> + <padding>4</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkHButtonBox</class> + <child_name>GnomeDialog:action_area</child_name> + <name>dialog-action_area5</name> + <layout_style>GTK_BUTTONBOX_END</layout_style> + <spacing>8</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>True</fill> + <pack>GTK_PACK_END</pack> + </child> + + <widget> + <class>GtkButton</class> + <name>button107</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_OK</stock_button> + </widget> + + <widget> + <class>GtkButton</class> + <name>button109</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button> + </widget> + </widget> + + <widget> + <class>Custom</class> + <name>supported-bases-table</name> + <creation_function>supported_bases_create_table</creation_function> + <int1>0</int1> + <int2>0</int2> + <last_modification_time>Fri, 12 Apr 2002 20:06:45 GMT</last_modification_time> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + </widget> + </widget> +</widget> + +</GTK-Interface> diff --git a/addressbook/gui/component/addressbook-config.h b/addressbook/gui/component/ldap-config.h index e1bdc18bae..45f538a55d 100644 --- a/addressbook/gui/component/addressbook-config.h +++ b/addressbook/gui/component/ldap-config.h @@ -20,15 +20,14 @@ * Author: Chris Toshok */ -#ifndef __ADDRESSBOOK_CONFIG_H__ -#define __ADDRESSBOOK_CONFIG_H__ +#ifndef __LDAP_CONFIG_H__ +#define __LDAP_CONFIG_H__ #include "addressbook-storage.h" -void addressbook_config (GNOME_Evolution_Shell shell); -void addressbook_create_new_source (const char *new_source, +void ldap_config_create_new_source (const char *new_source, GtkWidget *parent); -gboolean addressbook_config_register_factory (GNOME_Evolution_Shell shell); +gboolean ldap_config_register_factory (GNOME_Evolution_Shell shell); -#endif /* __ADDRESSBOOK_CONFIG_H__ */ +#endif /* __LDAP_CONFIG_H__ */ |