diff options
Diffstat (limited to 'shell/importer')
-rw-r--r-- | shell/importer/.cvsignore | 10 | ||||
-rw-r--r-- | shell/importer/GNOME_Evolution_Importer.idl | 83 | ||||
-rw-r--r-- | shell/importer/Makefile.am | 50 | ||||
-rw-r--r-- | shell/importer/evolution-importer-client.c | 249 | ||||
-rw-r--r-- | shell/importer/evolution-importer-client.h | 71 | ||||
-rw-r--r-- | shell/importer/evolution-importer-listener.c | 229 | ||||
-rw-r--r-- | shell/importer/evolution-importer-listener.h | 69 | ||||
-rw-r--r-- | shell/importer/evolution-importer.c | 282 | ||||
-rw-r--r-- | shell/importer/evolution-importer.h | 91 | ||||
-rw-r--r-- | shell/importer/import.glade | 103 | ||||
-rw-r--r-- | shell/importer/importer.c | 623 | ||||
-rw-r--r-- | shell/importer/importer.h | 29 |
12 files changed, 0 insertions, 1889 deletions
diff --git a/shell/importer/.cvsignore b/shell/importer/.cvsignore deleted file mode 100644 index a1e30a4161..0000000000 --- a/shell/importer/.cvsignore +++ /dev/null @@ -1,10 +0,0 @@ -.deps -.libs -Makefile.in -Makefile -GNOME_Evolution_Importer-stubs.c -GNOME_Evolution_Importer-skels.c -GNOME_Evolution_Importer-common.c -GNOME_Evolution_Importer.h -*.lo -*.la diff --git a/shell/importer/GNOME_Evolution_Importer.idl b/shell/importer/GNOME_Evolution_Importer.idl deleted file mode 100644 index fe49ab82c5..0000000000 --- a/shell/importer/GNOME_Evolution_Importer.idl +++ /dev/null @@ -1,83 +0,0 @@ -/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * Interfaces for the importer framework. - * - * Authors: - * Iain Holmes <iain@helixcode.com> - * - * Copyright (C) 2000 Helix Code, Inc. - */ - -#include <Bonobo.idl> - -module GNOME { -module Evolution { - interface ImporterListener : Bonobo::Unknown { - enum ImporterResult { - OK, - UNSUPPORTED_OPERATION, - NOT_READY, - BUSY, - UNKNOWN_DATA, - BAD_DATA, - BAD_FILE - }; - - /** - * notifyResult: - * @result: The result of the import. - * @more_items: Are there any more items to be processed? - * - * Notifies the listener of the result and whether there are - * any more items to be imported. - */ - oneway void notifyResult (in ImporterResult result, - in boolean more_items); - }; - - interface Importer : Bonobo::Unknown { - - /** - * processItem: - * @listener: The ImporterListener that will be notified of the - * progress. - * - * Processes the next item. - * - */ - oneway void processItem (in ImporterListener listener); - - /** - * getError: - * - * Retrieve a detailed explaination of the error. - * - * Returns: A string. - */ - string getError (); - - /** - * supportFormat: - * @filename: The filename of the file. - * - * Checks if the importer created by this factory can - * import the file specified. - * - * Returns: A boolean, TRUE if it can import the file, - * FALSE otherwise. - */ - boolean supportFormat (in string filename); - - /** - * loadFile: - * @filename: The filename of the file. - * - * Loads the file and prepares an Importer object that can - * process files of this type. - * - * Returns: An Importer object. - */ - boolean loadFile (in string filename); - }; -}; -}; diff --git a/shell/importer/Makefile.am b/shell/importer/Makefile.am deleted file mode 100644 index 96bbbafd5c..0000000000 --- a/shell/importer/Makefile.am +++ /dev/null @@ -1,50 +0,0 @@ -INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/shell \ - -I$(includedir) $(GNOME_INCLUDEDIR) \ - -DG_LOG_DOMAIN=\"Evolution-Importer\" -g -Wall \ - -Wmissing-prototypes -Wmissing-declarations \ - -DEVOLUTION_GLADEDIR=\"$(datadir)/evolution/glade\" - -lib_LTLIBRARIES = libevolution-importer.la - -IDLS = \ - GNOME_Evolution_Importer.idl - -IDL_GENERATED = \ - GNOME_Evolution_Importer.h \ - GNOME_Evolution_Importer-common.c \ - GNOME_Evolution_Importer-skels.c \ - GNOME_Evolution_Importer-stubs.c - -GNOME_Evolution_Importer-impl.o: GNOME_Evolution_Importer.h - -$(IDL_GENERATED): $(IDLS) - $(ORBIT_IDL) -I $(srcdir) -I $(datadir)/idl `$(GNOME_CONFIG) --cflags idl` \ - $(srcdir)/GNOME_Evolution_Importer.idl - -idldir = $(datadir)/idl -idl_DATA = $(IDLS) - -libevolution_importerincludedir = $(includedir)/evolution/importer -libevolution_importer_la_SOURCES = \ - $(IDL_GENERATED) \ - evolution-importer-client.c \ - evolution-importer-listener.c \ - evolution-importer.c \ - importer.c \ - importer.h - -libevolution_importerinclude_HEADERS = \ - GNOME_Evolution_Importer.h \ - evolution-importer-client.h \ - evolution-importer-listener.h \ - evolution-importer.h - -libevolution_importer_la_LIBADD = \ - $(top_builddir)/e-util/libeutil.la \ - $(EXTRA_GNOME_LIBS) \ - $(GTKHTML_LIBS) - -gladedir = $(datadir)/evolution/glade -glade_DATA = import.glade - -EXTRA_DIST = $(glade_DATA) $(IDLS) diff --git a/shell/importer/evolution-importer-client.c b/shell/importer/evolution-importer-client.c deleted file mode 100644 index 9b3bc3490f..0000000000 --- a/shell/importer/evolution-importer-client.c +++ /dev/null @@ -1,249 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ -/* evolution-importer-client.c - * - * Copyright (C) 2000 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Iain Holmes <iain@ximian.com> - * Based on evolution-shell-component-client.c by Ettore Perazzoli - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <bonobo/bonobo-object.h> -#include <bonobo/bonobo-main.h> -#include <gal/util/e-util.h> - -#include <liboaf/liboaf.h> - -#include "GNOME_Evolution_Importer.h" -#include "evolution-importer-client.h" - - -#define PARENT_TYPE BONOBO_OBJECT_CLIENT_TYPE -static BonoboObjectClass *parent_class = NULL; - - -static void -destroy (GtkObject *object) -{ - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void -class_init (EvolutionImporterClientClass *klass) -{ - GtkObjectClass *object_class; - - object_class = GTK_OBJECT_CLASS (klass); - parent_class = gtk_type_class (PARENT_TYPE); - - object_class->destroy = destroy; -} - -static void -init (EvolutionImporterClient *client) -{ -} - -static void -evolution_importer_client_construct (EvolutionImporterClient *client, - CORBA_Object corba_object) -{ - g_return_if_fail (client != NULL); - g_return_if_fail (EVOLUTION_IS_IMPORTER_CLIENT (client)); - g_return_if_fail (corba_object != CORBA_OBJECT_NIL); - - bonobo_object_client_construct (BONOBO_OBJECT_CLIENT (client), corba_object); -} - -/** - * evolution_importer_client_new: - * @objref: The CORBA_Object to make a client for. - * - * Makes a client for @objref. @objref should be an Evolution_Importer. - * - * Returns: A newly created EvolutionImporterClient. - */ -EvolutionImporterClient * -evolution_importer_client_new (const CORBA_Object objref) -{ - EvolutionImporterClient *client; - - g_return_val_if_fail (objref != CORBA_OBJECT_NIL, NULL); - - client = gtk_type_new (evolution_importer_client_get_type ()); - evolution_importer_client_construct (client, objref); - - return client; -} - -/** - * evolution_importer_client_new_from_id: - * @id: The oafiid of the component to make a client for. - * - * Makes a client for the object returned by activating @id. - * - * Returns: A newly created EvolutionImporterClient. - */ -EvolutionImporterClient * -evolution_importer_client_new_from_id (const char *id) -{ - CORBA_Environment ev; - CORBA_Object objref; - - g_return_val_if_fail (id != NULL, NULL); - - CORBA_exception_init (&ev); - objref = oaf_activate_from_id ((char *) id, 0, NULL, &ev); - if (ev._major != CORBA_NO_EXCEPTION) { - CORBA_exception_free (&ev); - g_warning ("Could not start %s.", id); - return NULL; - } - - CORBA_exception_free (&ev); - if (objref == CORBA_OBJECT_NIL) { - g_warning ("Could not activate component %s", id); - return NULL; - } - - return evolution_importer_client_new (objref); -} - -/* API */ -/** - * evolution_importer_client_support_format: - * @client: The EvolutionImporterClient. - * @filename: Name of the file to check. - * - * Checks whether @client is able to import @filename. - * - * Returns: TRUE if @client can import @filename, FALSE otherwise. - */ -gboolean -evolution_importer_client_support_format (EvolutionImporterClient *client, - const char *filename) -{ - GNOME_Evolution_Importer corba_importer; - gboolean result; - CORBA_Environment ev; - - g_return_val_if_fail (client != NULL, FALSE); - g_return_val_if_fail (EVOLUTION_IS_IMPORTER_CLIENT (client), FALSE); - g_return_val_if_fail (filename != NULL, FALSE); - - CORBA_exception_init (&ev); - corba_importer = bonobo_object_corba_objref (BONOBO_OBJECT (client)); - result = GNOME_Evolution_Importer_supportFormat (corba_importer, - filename, &ev); - CORBA_exception_free (&ev); - - return result; -} - -/** - * evolution_importer_client_load_file: - * @client: The EvolutionImporterClient. - * @filename: The file to load. - * - * Loads and initialises the importer. - * - * Returns: TRUE on sucess, FALSE on failure. - */ -gboolean -evolution_importer_client_load_file (EvolutionImporterClient *client, - const char *filename) -{ - GNOME_Evolution_Importer corba_importer; - gboolean result; - CORBA_Environment ev; - - g_return_val_if_fail (client != NULL, FALSE); - g_return_val_if_fail (EVOLUTION_IS_IMPORTER_CLIENT (client), FALSE); - g_return_val_if_fail (filename != NULL, FALSE); - - CORBA_exception_init (&ev); - corba_importer = bonobo_object_corba_objref (BONOBO_OBJECT (client)); - result = GNOME_Evolution_Importer_loadFile (corba_importer, - filename, &ev); - CORBA_exception_free (&ev); - - return result; -} - -/** - * evolution_importer_client_process_item: - * @client: The EvolutionImporterClient. - * @listener: The EvolutionImporterListener. - * - * Starts importing the next item in the file. @listener will be notified - * when the item has finished. - */ -void -evolution_importer_client_process_item (EvolutionImporterClient *client, - EvolutionImporterListener *listener) -{ - GNOME_Evolution_Importer corba_importer; - GNOME_Evolution_ImporterListener corba_listener; - CORBA_Environment ev; - - g_return_if_fail (client != NULL); - g_return_if_fail (EVOLUTION_IS_IMPORTER_CLIENT (client)); - g_return_if_fail (listener != NULL); - g_return_if_fail (EVOLUTION_IS_IMPORTER_LISTENER (listener)); - - CORBA_exception_init (&ev); - - corba_importer = bonobo_object_corba_objref (BONOBO_OBJECT (client)); - corba_listener = bonobo_object_corba_objref (BONOBO_OBJECT (listener)); - GNOME_Evolution_Importer_processItem (corba_importer, - corba_listener, &ev); - CORBA_exception_free (&ev); -} - -/** - * evolution_importer_client_get_error: - * @client: The EvolutionImporterClient. - * - * Gets the error as a string. - * - * Returns: The error as a string. If there is no error NULL is returned. - * Importers need not support this method and if so, NULL is also returned. - */ -const char * -evolution_importer_client_get_error (EvolutionImporterClient *client) -{ - GNOME_Evolution_Importer corba_importer; - CORBA_char *str; - CORBA_Environment ev; - - g_return_val_if_fail (client != NULL, NULL); - g_return_val_if_fail (EVOLUTION_IS_IMPORTER_CLIENT (client), NULL); - - corba_importer = bonobo_object_corba_objref (BONOBO_OBJECT (client)); - - CORBA_exception_init (&ev); - str = GNOME_Evolution_Importer_getError (corba_importer, &ev); - - return str; -} - -E_MAKE_TYPE (evolution_importer_client, "EvolutionImporterClient", - EvolutionImporterClient, class_init, init, PARENT_TYPE) diff --git a/shell/importer/evolution-importer-client.h b/shell/importer/evolution-importer-client.h deleted file mode 100644 index 178d20254f..0000000000 --- a/shell/importer/evolution-importer-client.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ -/* evolution-importer-client.h - * - * Copyright (C) 2000 Helix Code, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Iain Holmes <iain@helixcode.com> - */ - -#ifndef EVOLUTION_IMPORTER_CLIENT_H -#define EVOLUTION_IMPORTER_CLIENT_H - -#include <bonobo/bonobo-object-client.h> -#include <importer/evolution-importer.h> -#include <importer/evolution-importer-listener.h> - -#ifdef __cplusplus -extern "C" { -#pragma } -#endif - -#define EVOLUTION_TYPE_IMPORTER_CLIENT (evolution_importer_client_get_type ()) -#define EVOLUTION_IMPORTER_CLIENT(obj) (GTK_CHECK_CAST ((obj), EVOLUTION_TYPE_IMPORTER_CLIENT, EvolutionImporterClient)) -#define EVOLUTION_IMPORTER_CLIENT_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), EVOLUTION_TYPE_IMPORTER_CLIENT, EvolutionImporterClientClass)) -#define EVOLUTION_IS_IMPORTER_CLIENT(obj) (GTK_CHECK_TYPE ((obj), EVOLUTION_TYPE_IMPORTER_CLIENT)) -#define EVOLUTION_IS_IMPORTER_CLIENT_CLASS(klass) (GTK_CHECK_TYPE ((klass), EVOLUTION_TYPE_IMPORTER_CLIENT)) - - -typedef struct _EvolutionImporterClient EvolutionImporterClient; -typedef struct _EvolutionImporterClientClass EvolutionImporterClientClass; - -struct _EvolutionImporterClient { - BonoboObjectClient parent; -}; - -struct _EvolutionImporterClientClass { - BonoboObjectClientClass parent_class; -}; - -GtkType evolution_importer_client_get_type (void); - -EvolutionImporterClient *evolution_importer_client_new (const CORBA_Object objref); -EvolutionImporterClient *evolution_importer_client_new_from_id (const char *id); - -gboolean evolution_importer_client_support_format (EvolutionImporterClient *client, - const char *filename); -gboolean evolution_importer_client_load_file (EvolutionImporterClient *client, - const char *filename); -void evolution_importer_client_process_item (EvolutionImporterClient *client, - EvolutionImporterListener *listener); -const char *evolution_importer_client_get_error (EvolutionImporterClient *client); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/shell/importer/evolution-importer-listener.c b/shell/importer/evolution-importer-listener.c deleted file mode 100644 index 35e73634d5..0000000000 --- a/shell/importer/evolution-importer-listener.c +++ /dev/null @@ -1,229 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ -/* evolution-importer-client.c - * - * Copyright (C) 2000 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Iain Holmes <iain@ximian.com> - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <bonobo/bonobo-object.h> -#include <gal/util/e-util.h> - -#include "GNOME_Evolution_Importer.h" -#include "evolution-importer-listener.h" - -#define PARENT_TYPE (bonobo_object_get_type ()) - -static BonoboObjectClass *parent_class; - -struct _EvolutionImporterListenerPrivate { - EvolutionImporterListenerCallback callback; - - void *closure; -}; - -static POA_GNOME_Evolution_ImporterListener__vepv Listener_vepv; - -static POA_GNOME_Evolution_ImporterListener * -create_servant (void) -{ - POA_GNOME_Evolution_ImporterListener *servant; - CORBA_Environment ev; - - servant = (POA_GNOME_Evolution_ImporterListener *) g_new0 (BonoboObjectServant, 1); - servant->vepv = &Listener_vepv; - - CORBA_exception_init (&ev); - POA_GNOME_Evolution_ImporterListener__init ((PortableServer_Servant) servant, &ev); - if (ev._major != CORBA_NO_EXCEPTION) { - g_free (servant); - CORBA_exception_free (&ev); - return NULL; - } - - CORBA_exception_free (&ev); - - return servant; -} - -static EvolutionImporterResult -corba_result_to_evolution (GNOME_Evolution_ImporterListener_ImporterResult corba_result) -{ - switch (corba_result) { - case GNOME_Evolution_ImporterListener_OK: - return EVOLUTION_IMPORTER_OK; - case GNOME_Evolution_ImporterListener_UNSUPPORTED_OPERATION: - return EVOLUTION_IMPORTER_UNSUPPORTED_OPERATION; - case GNOME_Evolution_ImporterListener_UNKNOWN_DATA: - return EVOLUTION_IMPORTER_UNKNOWN_DATA; - case GNOME_Evolution_ImporterListener_BAD_DATA: - return EVOLUTION_IMPORTER_BAD_DATA; - case GNOME_Evolution_ImporterListener_BAD_FILE: - return EVOLUTION_IMPORTER_BAD_FILE; - case GNOME_Evolution_ImporterListener_NOT_READY: - return EVOLUTION_IMPORTER_NOT_READY; - case GNOME_Evolution_ImporterListener_BUSY: - return EVOLUTION_IMPORTER_BUSY; - default: - return EVOLUTION_IMPORTER_UNKNOWN_ERROR; - } -} - -static void -impl_GNOME_Evolution_ImporterListener_notifyResult (PortableServer_Servant servant, - GNOME_Evolution_ImporterListener_ImporterResult result, - CORBA_boolean more_items, - CORBA_Environment *ev) -{ - BonoboObject *bonobo_object; - EvolutionImporterListener *listener; - EvolutionImporterListenerPrivate *priv; - EvolutionImporterResult out_result; - - bonobo_object = bonobo_object_from_servant (servant); - listener = EVOLUTION_IMPORTER_LISTENER (bonobo_object); - priv = listener->private; - - out_result = corba_result_to_evolution (result); - if (priv->callback) { - (priv->callback) (listener, out_result, more_items, - priv->closure); - } - - return; -} - - -/* GtkObject methods */ -static void -destroy (GtkObject *object) -{ - EvolutionImporterListener *listener; - EvolutionImporterListenerPrivate *priv; - - listener = EVOLUTION_IMPORTER_LISTENER (object); - priv = listener->private; - - if (priv == NULL) - return; - - g_free (priv); - listener->private = NULL; - - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void -corba_class_init (void) -{ - POA_GNOME_Evolution_ImporterListener__vepv *vepv; - POA_GNOME_Evolution_ImporterListener__epv *epv; - PortableServer_ServantBase__epv *base_epv; - - base_epv = g_new0 (PortableServer_ServantBase__epv, 1); - base_epv->_private = NULL; - base_epv->finalize = NULL; - base_epv->default_POA = NULL; - - epv = g_new0 (POA_GNOME_Evolution_ImporterListener__epv, 1); - epv->notifyResult = impl_GNOME_Evolution_ImporterListener_notifyResult; - - vepv = &Listener_vepv; - vepv->_base_epv = base_epv; - vepv->Bonobo_Unknown_epv = bonobo_object_get_epv (); - vepv->GNOME_Evolution_ImporterListener_epv = epv; -} - -static void -class_init (EvolutionImporterListenerClass *klass) -{ - GtkObjectClass *object_class; - - object_class = GTK_OBJECT_CLASS (klass); - object_class->destroy = destroy; - - parent_class = gtk_type_class (PARENT_TYPE); - - corba_class_init (); -} - -static void -init (EvolutionImporterListener *listener) -{ - EvolutionImporterListenerPrivate *priv; - - priv = g_new0 (EvolutionImporterListenerPrivate, 1); - listener->private = priv; -} - -E_MAKE_TYPE (evolution_importer_listener, "EvolutionImporterListener", - EvolutionImporterListener, class_init, init, PARENT_TYPE); - -static void -evolution_importer_listener_construct (EvolutionImporterListener *listener, - GNOME_Evolution_ImporterListener corba_object, - EvolutionImporterListenerCallback callback, - void *closure) -{ - EvolutionImporterListenerPrivate *priv; - - g_return_if_fail (listener != NULL); - g_return_if_fail (EVOLUTION_IS_IMPORTER_LISTENER (listener)); - g_return_if_fail (corba_object != CORBA_OBJECT_NIL); - g_return_if_fail (callback != NULL); - - priv = listener->private; - priv->callback = callback; - priv->closure = closure; - - bonobo_object_construct (BONOBO_OBJECT (listener), corba_object); -} - -/** - * evolution_importer_listener_new - * @callback: The #EvolutionImporterListenerCallback callback. - * @closure: The data that will be passed to that callback. - * - * Creates a new #EvolutionImporterListener object which calls @callback when - * something happens. - * Returns: A newly allocated #EvolutionImporterListener. - */ -EvolutionImporterListener * -evolution_importer_listener_new (EvolutionImporterListenerCallback callback, - void *closure) -{ - EvolutionImporterListener *listener; - POA_GNOME_Evolution_ImporterListener *servant; - GNOME_Evolution_ImporterListener corba_object; - - servant = create_servant (); - if (servant == NULL) - return NULL; - - listener = gtk_type_new (evolution_importer_listener_get_type ()); - corba_object = bonobo_object_activate_servant (BONOBO_OBJECT (listener), - servant); - - evolution_importer_listener_construct (listener, corba_object, - callback, closure); - return listener; -} diff --git a/shell/importer/evolution-importer-listener.h b/shell/importer/evolution-importer-listener.h deleted file mode 100644 index 33c4617332..0000000000 --- a/shell/importer/evolution-importer-listener.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ -/* evolution-importer-listener.h - * - * Copyright (C) 2000 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Iain Holmes <iain@ximian.com> - */ - -#ifndef EVOLUTION_IMPORTER_LISTENER_H -#define EVOLUTION_IMPORTER_LISTENER_H - -#include <bonobo/bonobo-object.h> - -#include "evolution-importer.h" - -#ifdef __cplusplus -extern "C" { -#pragma } -#endif /* cplusplus */ - -#define EVOLUTION_TYPE_IMPORTER_LISTENER (evolution_importer_listener_get_type ()) -#define EVOLUTION_IMPORTER_LISTENER(obj) (GTK_CHECK_CAST ((obj), EVOLUTION_TYPE_IMPORTER_LISTENER, EvolutionImporterListener)) -#define EVOLUTION_IMPORTER_LISTENER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), EVOLUTION_TYPE_IMPORTER_LISTENER, EvolutionImporterListenerClass)) -#define EVOLUTION_IS_IMPORTER_LISTENER(obj) (GTK_CHECK_TYPE ((obj), EVOLUTION_TYPE_IMPORTER_LISTENER)) -#define EVOLUTION_IS_IMPORTER_LISTENER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), EVOLUTION_TYPE_IMPORTER_LISTENER)) - -typedef struct _EvolutionImporterListener EvolutionImporterListener; -typedef struct _EvolutionImporterListenerPrivate EvolutionImporterListenerPrivate; -typedef struct _EvolutionImporterListenerClass EvolutionImporterListenerClass; - -typedef void (* EvolutionImporterListenerCallback) (EvolutionImporterListener *listener, - EvolutionImporterResult result, - gboolean more_items, - void *closure); -struct _EvolutionImporterListener { - BonoboObject parent; - - EvolutionImporterListenerPrivate *private; -}; - -struct _EvolutionImporterListenerClass { - BonoboObjectClass parent_class; -}; - -GtkType evolution_importer_listener_get_type (void); - -EvolutionImporterListener *evolution_importer_listener_new (EvolutionImporterListenerCallback callback, - void *closure); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/shell/importer/evolution-importer.c b/shell/importer/evolution-importer.c deleted file mode 100644 index 85d2446a19..0000000000 --- a/shell/importer/evolution-importer.c +++ /dev/null @@ -1,282 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ -/* evolution-importer.c - * - * Copyright (C) 2000 Helix Code, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Iain Holmes <iain@helixcode.com> - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <bonobo/bonobo-object.h> -#include <gal/util/e-util.h> - -#include "GNOME_Evolution_Importer.h" -#include "evolution-importer.h" - - -#define PARENT_TYPE BONOBO_OBJECT_TYPE -static BonoboObjectClass *parent_class = NULL; - -struct _EvolutionImporterPrivate { - EvolutionImporterLoadFileFn load_file_fn; - EvolutionImporterSupportFormatFn support_format_fn; - EvolutionImporterProcessItemFn process_item_fn; - EvolutionImporterGetErrorFn get_error_fn; - - void *closure; -}; - - -static POA_GNOME_Evolution_Importer__vepv Importer_vepv; - -static POA_GNOME_Evolution_Importer * -create_servant (void) -{ - POA_GNOME_Evolution_Importer *servant; - CORBA_Environment ev; - - servant = (POA_GNOME_Evolution_Importer *) g_new0 (BonoboObjectServant, 1); - servant->vepv = &Importer_vepv; - - CORBA_exception_init (&ev); - POA_GNOME_Evolution_Importer__init ((PortableServer_Servant) servant, &ev); - if (ev._major != CORBA_NO_EXCEPTION) { - g_free (servant); - CORBA_exception_free (&ev); - return NULL; - } - - CORBA_exception_free (&ev); - - return servant; -} - -static CORBA_boolean -impl_GNOME_Evolution_Importer_supportFormat (PortableServer_Servant servant, - const CORBA_char *filename, - CORBA_Environment *ev) -{ - BonoboObject *bonobo_object; - EvolutionImporter *importer; - EvolutionImporterPrivate *priv; - - bonobo_object = bonobo_object_from_servant (servant); - importer = EVOLUTION_IMPORTER (bonobo_object); - priv = importer->private; - - if (priv->support_format_fn != NULL) - return (priv->support_format_fn) (importer, filename, - priv->closure); - else - return FALSE; -} - -static CORBA_boolean -impl_GNOME_Evolution_Importer_loadFile (PortableServer_Servant servant, - const CORBA_char *filename, - CORBA_Environment *ev) -{ - BonoboObject *bonobo_object; - EvolutionImporter *importer; - EvolutionImporterPrivate *priv; - - bonobo_object = bonobo_object_from_servant (servant); - importer = EVOLUTION_IMPORTER (bonobo_object); - priv = importer->private; - - if (priv->load_file_fn != NULL) - return (priv->load_file_fn) (importer, filename, priv->closure); - else - return FALSE; -} - -static void -impl_GNOME_Evolution_Importer_processItem (PortableServer_Servant servant, - GNOME_Evolution_ImporterListener listener, - CORBA_Environment *ev) -{ - BonoboObject *bonobo_object; - EvolutionImporter *importer; - EvolutionImporterPrivate *priv; - - bonobo_object = bonobo_object_from_servant (servant); - importer = EVOLUTION_IMPORTER (bonobo_object); - priv = importer->private; - - if (priv->process_item_fn != NULL) - (priv->process_item_fn) (importer, listener, priv->closure, ev); - else - GNOME_Evolution_ImporterListener_notifyResult (listener, - GNOME_Evolution_ImporterListener_UNSUPPORTED_OPERATION, FALSE, ev); -} - -static CORBA_char * -impl_GNOME_Evolution_Importer_getError (PortableServer_Servant servant, - CORBA_Environment *ev) -{ - BonoboObject *bonobo_object; - EvolutionImporter *importer; - EvolutionImporterPrivate *priv; - CORBA_char *out_str; - - bonobo_object = bonobo_object_from_servant (servant); - importer = EVOLUTION_IMPORTER (bonobo_object); - priv = importer->private; - - if (priv->get_error_fn != NULL) { - out_str = (priv->get_error_fn) (importer, priv->closure); - return CORBA_string_dup (out_str ? out_str : ""); - } else - return CORBA_string_dup (""); -} - - -static void -destroy (GtkObject *object) -{ - EvolutionImporter *importer; - EvolutionImporterPrivate *priv; - - importer = EVOLUTION_IMPORTER (object); - priv = importer->private; - - if (priv == NULL) - return; - - g_free (priv); - importer->private = NULL; - - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void -corba_class_init (void) -{ - POA_GNOME_Evolution_Importer__vepv *vepv; - POA_GNOME_Evolution_Importer__epv *epv; - PortableServer_ServantBase__epv *base_epv; - - base_epv = g_new0 (PortableServer_ServantBase__epv, 1); - - epv = g_new0 (POA_GNOME_Evolution_Importer__epv, 1); - epv->supportFormat = impl_GNOME_Evolution_Importer_supportFormat; - epv->loadFile = impl_GNOME_Evolution_Importer_loadFile; - epv->processItem = impl_GNOME_Evolution_Importer_processItem; - epv->getError = impl_GNOME_Evolution_Importer_getError; - - vepv = &Importer_vepv; - vepv->_base_epv = base_epv; - vepv->Bonobo_Unknown_epv = bonobo_object_get_epv (); - vepv->GNOME_Evolution_Importer_epv = epv; -} - -static void -class_init (EvolutionImporterClass *klass) -{ - GtkObjectClass *object_class; - - object_class = GTK_OBJECT_CLASS (klass); - object_class->destroy = destroy; - - parent_class = gtk_type_class (PARENT_TYPE); - corba_class_init (); -} - -static void -init (EvolutionImporter *importer) -{ - EvolutionImporterPrivate *priv; - - priv = g_new0 (EvolutionImporterPrivate, 1); - - importer->private = priv; -} - - - -static void -evolution_importer_construct (EvolutionImporter *importer, - GNOME_Evolution_Importer corba_object, - EvolutionImporterSupportFormatFn support_format_fn, - EvolutionImporterLoadFileFn load_file_fn, - EvolutionImporterProcessItemFn process_item_fn, - EvolutionImporterGetErrorFn get_error_fn, - void *closure) -{ - EvolutionImporterPrivate *priv; - - g_return_if_fail (importer != NULL); - g_return_if_fail (EVOLUTION_IS_IMPORTER (importer)); - g_return_if_fail (corba_object != CORBA_OBJECT_NIL); - g_return_if_fail (support_format_fn != NULL); - g_return_if_fail (load_file_fn != NULL); - g_return_if_fail (process_item_fn != NULL); - - bonobo_object_construct (BONOBO_OBJECT (importer), corba_object); - - priv = importer->private; - priv->support_format_fn = support_format_fn; - priv->load_file_fn = load_file_fn; - priv->process_item_fn = process_item_fn; - priv->get_error_fn = get_error_fn; - - priv->closure = closure; -} - -/** - * evolution_importer_new: - * @support_format_fn: The function to be called by the supportFormat method. - * @load_file_fn: The function to be called by the loadFile method. - * @process_item_fn: The function to be called by the processItem method. - * @get_error_fn: The function to be called by the getError method. - * @closure: The data to be passed to all of the above functions. - * - * Creates a new EvolutionImporter object. Of the parameters only - * @get_error_function and @closure may be #NULL. - * - * Returns: A newly created EvolutionImporter object. - */ -EvolutionImporter * -evolution_importer_new (EvolutionImporterSupportFormatFn support_format_fn, - EvolutionImporterLoadFileFn load_file_fn, - EvolutionImporterProcessItemFn process_item_fn, - EvolutionImporterGetErrorFn get_error_fn, - void *closure) -{ - EvolutionImporter *importer; - POA_GNOME_Evolution_Importer *servant; - GNOME_Evolution_Importer corba_object; - - servant = create_servant (); - if (servant == NULL) - return NULL; - - importer = gtk_type_new (evolution_importer_get_type ()); - corba_object = bonobo_object_activate_servant (BONOBO_OBJECT (importer), - servant); - evolution_importer_construct (importer, corba_object, - support_format_fn, load_file_fn, - process_item_fn, get_error_fn, closure); - return importer; -} - -E_MAKE_TYPE (evolution_importer, "EvolutionImporter", EvolutionImporter, - class_init, init, PARENT_TYPE); diff --git a/shell/importer/evolution-importer.h b/shell/importer/evolution-importer.h deleted file mode 100644 index fa5c944c2c..0000000000 --- a/shell/importer/evolution-importer.h +++ /dev/null @@ -1,91 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ -/* evolution-importer.h - * - * Copyright (C) 2000 Helix Code, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Iain Holmes <iain@helixcode.com> - */ - -#ifndef EVOLUTION_IMPORTER_H -#define EVOLUTION_IMPORTER_H - -#include <bonobo/bonobo-object.h> - -#ifdef __cplusplus -extern "C" { -#pragma } -#endif /* cplusplus */ - -#define EVOLUTION_TYPE_IMPORTER (evolution_importer_get_type ()) -#define EVOLUTION_IMPORTER(obj) (GTK_CHECK_CAST ((obj), EVOLUTION_TYPE_IMPORTER, EvolutionImporter)) -#define EVOLUTION_IMPORTER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), EVOLUTION_TYPE_IMPORTER, EvolutionImporterClass)) -#define EVOLUTION_IS_IMPORTER(obj) (GTK_CHECK_TYPE ((obj), EVOLUTION_TYPE_IMPORTER)) -#define EVOLUTION_IS_IMPORTER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), EVOLUTION_TYPE_IMPORTER)) - -typedef struct _EvolutionImporter EvolutionImporter; -typedef struct _EvolutionImporterPrivate EvolutionImporterPrivate; -typedef struct _EvolutionImporterClass EvolutionImporterClass; - -typedef gboolean (* EvolutionImporterSupportFormatFn) (EvolutionImporter *importer, - const char *filename, - void *closure); -typedef gboolean (* EvolutionImporterLoadFileFn) (EvolutionImporter *importer, - const char *filename, - void *closure); -typedef void (* EvolutionImporterProcessItemFn) (EvolutionImporter *importer, - CORBA_Object listener, - void *closure, - CORBA_Environment *ev); -typedef char *(* EvolutionImporterGetErrorFn) (EvolutionImporter *importer, - void *closure); - -typedef enum { - EVOLUTION_IMPORTER_OK, - EVOLUTION_IMPORTER_UNSUPPORTED_OPERATION, - EVOLUTION_IMPORTER_INTERRUPTED, - EVOLUTION_IMPORTER_BUSY, - EVOLUTION_IMPORTER_NOT_READY, - EVOLUTION_IMPORTER_UNKNOWN_DATA, - EVOLUTION_IMPORTER_BAD_DATA, - EVOLUTION_IMPORTER_BAD_FILE, - EVOLUTION_IMPORTER_UNKNOWN_ERROR -} EvolutionImporterResult; - -struct _EvolutionImporter { - BonoboObject parent; - - EvolutionImporterPrivate *private; -}; - -struct _EvolutionImporterClass { - BonoboObjectClass parent_class; -}; - -GtkType evolution_importer_get_type (void); - -EvolutionImporter *evolution_importer_new (EvolutionImporterSupportFormatFn support_format_fn, - EvolutionImporterLoadFileFn load_file_fn, - EvolutionImporterProcessItemFn process_item_fn, - EvolutionImporterGetErrorFn get_error_fn, - void *closure); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/shell/importer/import.glade b/shell/importer/import.glade deleted file mode 100644 index d3163c9bbe..0000000000 --- a/shell/importer/import.glade +++ /dev/null @@ -1,103 +0,0 @@ -<?xml version="1.0"?> -<GTK-Interface> - -<project> - <name>import</name> - <program_name>import</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> - <use_widget_names>False</use_widget_names> - <output_main_file>True</output_main_file> - <output_support_files>True</output_support_files> - <output_build_files>True</output_build_files> - <backup_source_files>True</backup_source_files> - <main_source_file>interface.c</main_source_file> - <main_header_file>interface.h</main_header_file> - <handler_source_file>callbacks.c</handler_source_file> - <handler_header_file>callbacks.h</handler_header_file> - <support_source_file>support.c</support_source_file> - <support_header_file>support.h</support_header_file> - <translatable_strings_file></translatable_strings_file> -</project> - -<widget> - <class>GtkWindow</class> - <name>importwizard</name> - <cxx_use_heap>True</cxx_use_heap> - <visible>False</visible> - <title>Evolution Importer Utility</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>druid1</name> - <cxx_use_heap>True</cxx_use_heap> - - <widget> - <class>GnomeDruidPageStart</class> - <name>page1</name> - <cxx_use_heap>True</cxx_use_heap> - <title>Evolution Import Utility</title> - <text>Welcome to the Evolution Import Utility. -With this wizard you will be guided through the process of -importing external files into Evolution.</text> - <title_color>1,1,1</title_color> - <text_color>0,0,0</text_color> - <background_color>153,174,191</background_color> - <logo_background_color>255,255,255</logo_background_color> - <textbox_color>255,255,255</textbox_color> - </widget> - - <widget> - <class>GnomeDruidPageStandard</class> - <name>page2</name> - <cxx_use_heap>True</cxx_use_heap> - <title>Select a file</title> - <title_color>1,1,1</title_color> - <background_color>153,174,191</background_color> - <logo_background_color>255,255,255</logo_background_color> - - <widget> - <class>GtkVBox</class> - <child_name>GnomeDruidPageStandard:vbox</child_name> - <name>druid-vbox1</name> - <cxx_use_heap>True</cxx_use_heap> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - <child> - <padding>0</padding> - <expand>True</expand> - <fill>True</fill> - </child> - - <widget> - <class>Placeholder</class> - </widget> - </widget> - </widget> - - <widget> - <class>GnomeDruidPageFinish</class> - <name>page3</name> - <cxx_use_heap>True</cxx_use_heap> - <title>Import</title> - <text>Click "Import" to begin importing the file into Evolution. </text> - <background_color>153,174,191</background_color> - <logo_background_color>255,255,255</logo_background_color> - <textbox_color>255,255,255</textbox_color> - <text_color>0,0,0</text_color> - <title_color>1,1,1</title_color> - </widget> - </widget> -</widget> - -</GTK-Interface> diff --git a/shell/importer/importer.c b/shell/importer/importer.c deleted file mode 100644 index b664be7379..0000000000 --- a/shell/importer/importer.c +++ /dev/null @@ -1,623 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ -/* importer.c - * - * Copyright (C) 2000 Helix Code, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Iain Holmes <iain@helixcode.com> - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <gnome.h> - -#include <liboaf/liboaf.h> - -#include <evolution-importer-client.h> - -#include <glade/glade.h> -#include <gtkhtml/gtkhtml.h> -#include <e-util/e-html-utils.h> -#include <gal/widgets/e-gui-utils.h> - -#include "importer.h" -#include "GNOME_Evolution_Importer.h" - -typedef struct _ImportDialogFilePage { - GtkWidget *vbox; - GtkWidget *filename; - GtkWidget *filetype; - GtkWidget *menu; - - gboolean need_filename; -} ImportDialogFilePage; - -typedef struct _ImportData { - GladeXML *wizard; - GtkWidget *dialog; - GtkWidget *druid; - ImportDialogFilePage *filepage; - GtkWidget *filedialog; - GtkWidget *vbox; - - char *choosen_iid; -} ImportData; - -/* Some HTML helper functions from mail/mail-config-gui.c */ -static void -html_size_req (GtkWidget *widget, - GtkRequisition *requisition) -{ - requisition->height = GTK_LAYOUT (widget)->height; -} - -/* Returns a GtkHTML which is already inside a GtkScrolledWindow. If - * @white is TRUE, the GtkScrolledWindow will be inside a GtkFrame. - */ -static GtkWidget * -html_new (gboolean white) -{ - GtkWidget *html, *scrolled, *frame; - GtkStyle *style; - - html = gtk_html_new (); - GTK_LAYOUT (html)->height = 0; - gtk_signal_connect (GTK_OBJECT (html), "size_request", - GTK_SIGNAL_FUNC (html_size_req), NULL); - gtk_html_set_editable (GTK_HTML (html), FALSE); - style = gtk_rc_get_style (html); - if (style) { - gtk_html_set_default_background_color (GTK_HTML (html), - white ? &style->white: - &style->bg[0]); - } - gtk_widget_set_sensitive (html, FALSE); - scrolled = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), - GTK_POLICY_NEVER, GTK_POLICY_NEVER); - gtk_container_add (GTK_CONTAINER (scrolled), html); - if (white) { - frame = gtk_frame_new (NULL); - gtk_frame_set_shadow_type (GTK_FRAME (frame), - GTK_SHADOW_ETCHED_IN); - gtk_container_add (GTK_CONTAINER (frame), scrolled); - gtk_widget_show_all (frame); - } else { - gtk_widget_show_all (scrolled); - } - - return html; -} - -static void -put_html (GtkHTML *html, - const char *text) -{ - GtkHTMLStream *handle; - char *htmltext; - - htmltext = e_text_to_html (text, E_TEXT_TO_HTML_CONVERT_NL); - handle = gtk_html_begin (html); - gtk_html_write (html, handle, "<HTML><BODY>", 12); - gtk_html_write (html, handle, text, strlen (text)); - gtk_html_write (html, handle, "</BODY></HTML>", 14); - g_free (htmltext); - gtk_html_end (html, handle, GTK_HTML_STREAM_OK); -} - -/* Importing functions */ - -/* Data to be passed around */ -typedef struct _ImporterComponentData { - EvolutionImporterClient *client; - EvolutionImporterListener *listener; - char *filename; - - GnomeDialog *dialog; - GtkWidget *contents; - - int item; - - gboolean stop; - gboolean destroyed; -} ImporterComponentData; - -static gboolean importer_timeout_fn (gpointer data); -static void -import_cb (EvolutionImporterListener *listener, - EvolutionImporterResult result, - gboolean more_items, - void *data) -{ - ImporterComponentData *icd = (ImporterComponentData *) data; - char *label; - - if (icd->stop != TRUE) { - if (result == EVOLUTION_IMPORTER_NOT_READY) { - /* Importer isn't ready yet. - Wait 5 seconds and try again. */ - - label = g_strdup_printf (_("Importing %s\nImporter not ready." - "\nWaiting 5 seconds to retry."), - icd->filename); - gtk_label_set_text (GTK_LABEL (icd->contents), label); - g_free (label); - while (gtk_events_pending ()) - gtk_main_iteration (); - - gtk_timeout_add (5000, importer_timeout_fn, data); - return; - } - - if (result == EVOLUTION_IMPORTER_BUSY) { - gtk_timeout_add (5000, importer_timeout_fn, data); - return; - } - - if (more_items) { - label = g_strdup_printf (_("Importing %s\nImporting item %d."), - icd->filename, ++(icd->item)); - gtk_label_set_text (GTK_LABEL (icd->contents), label); - g_free (label); - while (gtk_events_pending ()) - gtk_main_iteration (); - - g_idle_add_full (G_PRIORITY_LOW, importer_timeout_fn, - data, NULL); - return; - } - } - - g_free (icd->filename); - if (!icd->destroyed) - gtk_object_destroy (GTK_OBJECT (icd->dialog)); - bonobo_object_unref (BONOBO_OBJECT (icd->listener)); - bonobo_object_unref (BONOBO_OBJECT (icd->client)); - g_free (icd); -} - -static gboolean -importer_timeout_fn (gpointer data) -{ - ImporterComponentData *icd = (ImporterComponentData *) data; - char *label; - - label = g_strdup_printf (_("Importing %s\nImporting item %d."), - icd->filename, icd->item); - gtk_label_set_text (GTK_LABEL (icd->contents), label); - g_free (label); - while (gtk_events_pending ()) - gtk_main_iteration (); - - evolution_importer_client_process_item (icd->client, icd->listener); - return FALSE; -} - -static void -dialog_clicked_cb (GnomeDialog *dialog, - int button_number, - ImporterComponentData *icd) -{ - if (button_number != 0) - return; /* Interesting... */ - - icd->stop = TRUE; -} - -static void -dialog_destroy_cb (GtkObject *object, - ImporterComponentData *icd) -{ - icd->stop = TRUE; - icd->destroyed = TRUE; -} - -static char * -get_iid_for_filetype (const char *filename) -{ - OAF_ServerInfoList *info_list; - CORBA_Environment ev; - GList *can_handle = NULL, *l; - char *ret_iid; - int i, len = 0; - - CORBA_exception_init (&ev); - info_list = oaf_query ("repo_ids.has ('IDL:GNOME/Evolution/Importer:1.0')", NULL, &ev); - - for (i = 0; i < info_list->_length; i++) { - CORBA_Environment ev2; - CORBA_Object importer; - const OAF_ServerInfo *info; - - info = info_list->_buffer + i; - - CORBA_exception_init (&ev2); - importer = oaf_activate_from_id ((char *) info->iid, 0, NULL, &ev2); - if (ev2._major != CORBA_NO_EXCEPTION) { - g_warning ("Error activating %s", info->iid); - CORBA_exception_free (&ev2); - continue; - } - - if (GNOME_Evolution_Importer_supportFormat (importer, - filename, &ev2)) { - can_handle = g_list_prepend (can_handle, - g_strdup (info->iid)); - len++; - } - - bonobo_object_release_unref (importer, &ev2); - CORBA_exception_free (&ev2); - } - - if (len == 1) { - ret_iid = can_handle->data; - g_list_free (can_handle); - return ret_iid; - } else if (len > 1) { - /* FIXME: Some way to choose between multiple iids */ - /* FIXME: Free stuff */ - g_warning ("Multiple iids can support %s", filename); - ret_iid = g_strdup (can_handle->data); - - for (l = can_handle; l; l = l->next) - g_free (l->data); - g_list_free (can_handle); - return ret_iid; - } else { - return NULL; - } -} - -static void -start_import (const char *filename, - const char *iid) -{ - ImporterComponentData *icd; - char *label; - char *real_iid; - - if (iid == NULL || strcmp (iid, "Automatic") == 0) { - /* Work out the component to use */ - real_iid = get_iid_for_filetype (filename); - } else { - real_iid = g_strdup (iid); - } - - g_print ("Importing with: %s\n", real_iid); - - if (real_iid == NULL) { - char *message; - - message = g_strdup_printf (_("There is no importer that is able to handle\n%s"), filename); - e_notice (NULL, GNOME_MESSAGE_BOX_ERROR, message); - g_free (message); - - return; - } - - icd = g_new (ImporterComponentData, 1); - icd->stop = FALSE; - icd->destroyed = FALSE; - icd->dialog = GNOME_DIALOG (gnome_dialog_new (_("Importing"), - GNOME_STOCK_BUTTON_CANCEL, - NULL)); - gtk_signal_connect (GTK_OBJECT (icd->dialog), "clicked", - GTK_SIGNAL_FUNC (dialog_clicked_cb), icd); - gtk_signal_connect (GTK_OBJECT (icd->dialog), "destroy", - GTK_SIGNAL_FUNC (dialog_destroy_cb), icd); - - label = g_strdup_printf (_("Importing %s.\nStarting %s"), - filename, real_iid); - icd->contents = gtk_label_new (label); - g_free (label); - - gtk_box_pack_start (GTK_BOX (icd->dialog->vbox), icd->contents, - TRUE, TRUE, 0); - gtk_widget_show_all (GTK_WIDGET (icd->dialog)); - while (gtk_events_pending ()) - gtk_main_iteration (); - - icd->client = evolution_importer_client_new_from_id (real_iid); - g_free (real_iid); - - if (evolution_importer_client_load_file (icd->client, filename) == FALSE) { - label = g_strdup_printf (_("Error loading %s"), filename); - gtk_label_set_text (GTK_LABEL (icd->contents), label); - g_free (label); - while (gtk_events_pending ()) - gtk_main_iteration (); - - bonobo_object_unref (BONOBO_OBJECT (icd->client)); - gtk_object_unref (GTK_OBJECT (icd->dialog)); - g_free (icd); - return; - } - - icd->filename = g_strdup (filename); - icd->item = 1; - - label = g_strdup_printf (_("Importing %s\nImporting item 1."), - filename); - gtk_label_set_text (GTK_LABEL (icd->contents), label); - g_free (label); - while (gtk_events_pending ()) - gtk_main_iteration (); - - icd->listener = evolution_importer_listener_new (import_cb, icd); - evolution_importer_client_process_item (icd->client, icd->listener); -} - -static void -filename_changed (GtkEntry *entry, - ImportData *data) -{ - ImportDialogFilePage *page; - char *filename; - - page = data->filepage; - - filename = gtk_entry_get_text (entry); - if (filename != NULL && *filename != '\0') - page->need_filename = FALSE; - else - page->need_filename = TRUE; - - gnome_druid_set_buttons_sensitive (GNOME_DRUID (data->druid), - TRUE, !page->need_filename, TRUE); -} - -static const char * -get_name_from_component_info (const OAF_ServerInfo *info) -{ - OAF_Property *property; - const char *name; - - property = oaf_server_info_prop_find ((OAF_ServerInfo *) info, - "evolution:menu-name"); - if (property == NULL || property->v._d != OAF_P_STRING) - return NULL; - - name = property->v._u.value_string; - - return name; -} - -static void -item_selected (GtkWidget *item, - ImportData *data) -{ - char *iid; - - g_free (data->choosen_iid); - iid = gtk_object_get_data (GTK_OBJECT (item), "oafiid"); - g_print ("iid: %s\n", iid); - if (iid == NULL) - data->choosen_iid = g_strdup ("Automatic"); - else - data->choosen_iid = g_strdup (iid); -} - -static GtkWidget * -create_plugin_menu (ImportData *data) -{ - OAF_ServerInfoList *info_list; - CORBA_Environment ev; - int i; - GtkWidget *menu; - GtkWidget *item; - - menu = gtk_menu_new (); - item = gtk_menu_item_new_with_label (_("Automatic")); - gtk_object_set_data_full (GTK_OBJECT (item), "oafiid", - g_strdup ("Automatic"), g_free); - gtk_menu_append (GTK_MENU (menu), item); - - CORBA_exception_init (&ev); - info_list = oaf_query ("repo_ids.has ('IDL:GNOME/Evolution/Importer:1.0')", NULL, &ev); - for (i = 0; i < info_list->_length; i++) { - const OAF_ServerInfo *info; - char *name = NULL; - - info = info_list->_buffer + i; - - name = g_strdup (get_name_from_component_info (info)); - if (name == NULL) { - name = g_strdup (info->iid); - } - - item = gtk_menu_item_new_with_label (name); - g_free (name); - - gtk_signal_connect (GTK_OBJECT (item), "activate", - GTK_SIGNAL_FUNC (item_selected), data); - - gtk_object_set_data_full (GTK_OBJECT (item), "oafiid", - g_strdup (info->iid), g_free); - gtk_menu_append (GTK_MENU (menu), item); - } - - return menu; -} - -static ImportDialogFilePage * -importer_file_page_new (ImportData *data) -{ - ImportDialogFilePage *page; - GtkWidget *table, *label; - int row = 0; - - page = g_new0 (ImportDialogFilePage, 1); - - page->vbox = gtk_vbox_new (FALSE, 5); - page->need_filename = TRUE; - - table = gtk_table_new (2, 2, FALSE); - gtk_table_set_row_spacings (GTK_TABLE (table), 2); - gtk_table_set_col_spacings (GTK_TABLE (table), 10); - gtk_container_set_border_width (GTK_CONTAINER (table), 8); - gtk_box_pack_start (GTK_BOX (page->vbox), table, TRUE, TRUE, 0); - - label = gtk_label_new (_("Filename:")); - gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row + 1, - GTK_FILL, 0, 0, 0); - gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5); - - page->filename = gnome_file_entry_new (NULL, _("Select a file")); - gtk_signal_connect (GTK_OBJECT (gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (page->filename))), - "changed", GTK_SIGNAL_FUNC (filename_changed), - data); - - gtk_table_attach (GTK_TABLE (table), page->filename, 1, 2, - row, row + 1, GTK_EXPAND | GTK_FILL, 0, 0, 0); - - row++; - - label = gtk_label_new (_("File type:")); - gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row + 1, - GTK_FILL, 0, 0, 0); - gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5); - - page->filetype = gtk_option_menu_new (); - page->menu = create_plugin_menu (data); - gtk_option_menu_set_menu (GTK_OPTION_MENU (page->filetype), page->menu); - - gtk_table_attach (GTK_TABLE (table), page->filetype, 1, 2, - row, row + 1, GTK_EXPAND | GTK_FILL, 0, 0, 0); - gtk_widget_show_all (table); - - return page; -} - -static void -import_druid_cancel (GnomeDruid *druid, - ImportData *data) -{ - gtk_widget_destroy (GTK_WIDGET (data->dialog)); -} - -static void -import_druid_destroy (GtkObject *object, - ImportData *data) -{ - gtk_object_unref (GTK_OBJECT (data->wizard)); - g_free (data->choosen_iid); - g_free (data); -} - -static void -import_druid_finish (GnomeDruidPage *page, - GnomeDruid *druid, - ImportData *data) -{ - char *filename; - char *iid; - - filename = g_strdup (gtk_entry_get_text (GTK_ENTRY (gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (data->filepage->filename))))); - iid = g_strdup (data->choosen_iid); - - gtk_widget_destroy (data->dialog); - start_import (filename, iid); - - g_free (filename); - g_free (iid); -} - -static gboolean -prepare_file_page (GnomeDruidPage *page, - GnomeDruid *druid, - ImportData *data) -{ - g_print ("Prepare thyself\n"); - gnome_druid_set_buttons_sensitive (druid, TRUE, - !data->filepage->need_filename, - TRUE); - return FALSE; -} - -/* Hack to change the Finish button */ -static void -druid_finish_button_change (GnomeDruid *druid) -{ - GtkWidget *button = druid->finish; - GtkWidget *hbox = GTK_BIN (button)->child, *hbox2; - GtkBoxChild *child; - GtkWidget *label; - - /* Get the second item from the children list */ - hbox2 = ((GtkBoxChild *)GTK_BOX (hbox)->children->data)->widget; - - g_return_if_fail (GTK_IS_BOX (hbox2)); - child = (GtkBoxChild *)g_list_nth_data (GTK_BOX (hbox2)->children, 0); - label = child->widget; - - /* Safety check :) */ - g_return_if_fail (GTK_IS_LABEL (label)); - - gtk_label_set_text (GTK_LABEL (label), _("Import")); -} - -void -show_import_wizard (void) -{ - ImportData *data = g_new0 (ImportData, 1); - GnomeDruidPageStart *start; - GnomeDruidPageFinish *finish; - GtkWidget *html; - - data->wizard = glade_xml_new (EVOLUTION_GLADEDIR "/import.glade", NULL); - data->dialog = glade_xml_get_widget (data->wizard, "importwizard"); - gtk_window_set_wmclass (GTK_WINDOW (data->dialog), "importdruid", - "Evolution:shell"); - - data->druid = glade_xml_get_widget (data->wizard, "druid1"); - gtk_signal_connect (GTK_OBJECT (data->druid), "cancel", - GTK_SIGNAL_FUNC (import_druid_cancel), data); - - druid_finish_button_change (GNOME_DRUID (data->druid)); - start = GNOME_DRUID_PAGE_START (glade_xml_get_widget (data->wizard, "page1")); - data->filedialog = glade_xml_get_widget (data->wizard, "page2"); - gtk_signal_connect (GTK_OBJECT (data->filedialog), "prepare", - GTK_SIGNAL_FUNC (prepare_file_page), data); - - finish = GNOME_DRUID_PAGE_FINISH (glade_xml_get_widget (data->wizard, "page3")); - - data->filepage = importer_file_page_new (data); - data->vbox = data->filepage->vbox; - - html = html_new (TRUE); - put_html (GTK_HTML (html), - _("Choose the file that you want to import into Evolution, " - "and select what type of file it is from the list.\n\n" - "You can select \"Automatic\" if you do not know, and " - "Evolution will attempt to work it out.")); - gtk_box_pack_start (GTK_BOX (data->vbox), html->parent->parent, - FALSE, TRUE, 0); - gtk_box_reorder_child (GTK_BOX (data->vbox), html->parent->parent, 0); - - gtk_box_pack_start (GTK_BOX (GNOME_DRUID_PAGE_STANDARD (data->filedialog)->vbox), data->vbox, TRUE, TRUE, 0); - - /* Finish page */ - gtk_signal_connect (GTK_OBJECT (finish), "finish", - GTK_SIGNAL_FUNC (import_druid_finish), data); - gtk_signal_connect (GTK_OBJECT (data->dialog), "destroy", - GTK_SIGNAL_FUNC (import_druid_destroy), data); - - gtk_widget_show_all (data->dialog); -} diff --git a/shell/importer/importer.h b/shell/importer/importer.h deleted file mode 100644 index ed457b9e15..0000000000 --- a/shell/importer/importer.h +++ /dev/null @@ -1,29 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ -/* importer.c - * - * Copyright (C) 2000 Helix Code, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Iain Holmes <iain@helixcode.com> - */ - -#ifndef __IMPORTER_H__ -#define __IMPORTER_H__ - -void show_import_wizard (void); - -#endif |