Get rid of the old `evolution-service-repository' cruft and start
implementing new CORBA storage interfaces for the shell. svn path=/trunk/; revision=3178
This commit is contained in:
25
.cvsignore
25
.cvsignore
@ -1,21 +1,24 @@
|
||||
ABOUT-NLS
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
configure
|
||||
config.cache
|
||||
config.guess
|
||||
config.sub
|
||||
ltconfig
|
||||
ltmain.sh
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.h
|
||||
config.cache
|
||||
libtool
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
install-sh
|
||||
intl
|
||||
libtool
|
||||
ltconfig
|
||||
ltmain.sh
|
||||
missing
|
||||
mkinstalldirs
|
||||
stamp-h
|
||||
Makefile
|
||||
stamp.h
|
||||
stamp-h.in
|
||||
stamp.h
|
||||
xlibtool
|
||||
xltmain.sh
|
||||
intl
|
||||
ABOUT-NLS
|
@ -1,3 +1,11 @@
|
||||
2000-05-23 Ettore Perazzoli <ettore@helixcode.com>
|
||||
|
||||
* Makefile.am: Don't link to `evolution-service-repository.o'
|
||||
anymore.
|
||||
|
||||
* folder-browser-factory.c: Don't use crufty service-repository
|
||||
anymore.
|
||||
|
||||
2000-05-21 Ettore Perazzoli <ettore@helixcode.com>
|
||||
|
||||
* message-list.c (get_message_info): Made static.
|
||||
|
@ -51,7 +51,6 @@ evolution_mail_LDADD = \
|
||||
../shell/Evolution-common.o \
|
||||
../shell/Evolution-stubs.o \
|
||||
../shell/Evolution-skels.o \
|
||||
../shell/evolution-service-repository.o \
|
||||
../composer/libcomposer.la \
|
||||
../widgets/e-table/libetable.a \
|
||||
../widgets/e-text/libetext.a \
|
||||
|
@ -18,7 +18,6 @@
|
||||
#include "folder-browser.h"
|
||||
#include "mail.h"
|
||||
#include "shell/Evolution.h"
|
||||
#include "shell/evolution-service-repository.h"
|
||||
|
||||
#ifdef USING_OAF
|
||||
#define CONTROL_FACTORY_ID "OAFIID:control-factory:evolution-mail:25902062-543b-4f44-8702-d90145fcdbf2"
|
||||
@ -26,49 +25,6 @@
|
||||
#define CONTROL_FACTORY_ID "control-factory:evolution-mail"
|
||||
#endif
|
||||
|
||||
static void
|
||||
folder_browser_set_shell (EvolutionServiceRepository *sr,
|
||||
Evolution_Shell shell,
|
||||
void *closure)
|
||||
{
|
||||
FolderBrowser *folder_browser;
|
||||
CORBA_Environment ev;
|
||||
|
||||
g_return_if_fail (closure);
|
||||
g_return_if_fail (IS_FOLDER_BROWSER (closure));
|
||||
g_return_if_fail (shell != CORBA_OBJECT_NIL);
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
folder_browser = FOLDER_BROWSER (closure);
|
||||
|
||||
folder_browser->shell = shell;
|
||||
|
||||
/* test the component->shell registration */
|
||||
Evolution_Shell_register_service (shell, Evolution_Shell_MAIL_STORE, "a_service", &ev);
|
||||
|
||||
CORBA_exception_free (&ev);
|
||||
}
|
||||
|
||||
static void
|
||||
folder_browser_control_add_service_repository_interface (BonoboControl *control,
|
||||
GtkWidget *folder_browser)
|
||||
{
|
||||
EvolutionServiceRepository *sr;
|
||||
|
||||
/*
|
||||
* create an implementation for the Evolution::ServiceRepository
|
||||
* interface
|
||||
*/
|
||||
sr = evolution_service_repository_new (folder_browser_set_shell,
|
||||
(void *)folder_browser);
|
||||
|
||||
/* add the interface to the control */
|
||||
bonobo_object_add_interface (BONOBO_OBJECT (control),
|
||||
BONOBO_OBJECT (sr));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
random_cb (GtkWidget *button, gpointer user_data)
|
||||
{
|
||||
@ -204,13 +160,6 @@ folder_browser_factory (BonoboGenericFactory *factory, void *closure)
|
||||
bonobo_control_set_property_bag (control,
|
||||
FOLDER_BROWSER (folder_browser)->properties);
|
||||
|
||||
/* for the moment, the control has the ability to register
|
||||
* some services itself, but this should not last.
|
||||
*
|
||||
* It's not the way to do it, but we don't have the
|
||||
* correct infrastructure in the shell now.
|
||||
*/
|
||||
folder_browser_control_add_service_repository_interface (control, folder_browser);
|
||||
return BONOBO_OBJECT (control);
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,39 @@
|
||||
2000-05-23 Ettore Perazzoli <ettore@helixcode.com>
|
||||
|
||||
* e-shell.c: New member `corba_storage_registry' in
|
||||
`EShellPrivate'.
|
||||
(init): Initialize it to NULL.
|
||||
(destroy): Unref it if not NULL.
|
||||
(setup_corba_storages): New function to set up the CORBA storage
|
||||
registry and `bonobo_object_add_interface()' it to the shell.
|
||||
(setup_storages): Call it from here.
|
||||
|
||||
* e-shell.h, e-shell.c: Derive EShell from BonoboObject instead of
|
||||
GtkObject.
|
||||
|
||||
* e-storage.c (e_storage_remove_folder): Return value changed into
|
||||
`gboolean'; return false if an error occurs, true otherwise.
|
||||
(e_storage_new_folder): Likewise.
|
||||
|
||||
* e-corba-storage-registry.c: New.
|
||||
* e-corba-storage-registry.h: New.
|
||||
|
||||
* e-corba-storage.c: New.
|
||||
* e-corba-storage.h: New.
|
||||
|
||||
* Evolution.idl: Include the new IDLs, but no
|
||||
`evolution-service-repository.idl' anymore.
|
||||
|
||||
* Evolution-Shell.idl: New.
|
||||
* Evolution-ShellComponent.idl: New.
|
||||
* Evolution-Storage.idl: New.
|
||||
|
||||
* evolution-service-repository.idl: Removed.
|
||||
* evolution-service-repository.c: Removed.
|
||||
* evolution-service-repository.h: Removed.
|
||||
|
||||
* e-folder-type-repository.c (folder_type_new): Free `icon_path'.
|
||||
|
||||
2000-05-18 Dan Winship <danw@helixcode.com>
|
||||
|
||||
* main.c (new_view_idle_cb): add development_warning (moved from
|
||||
|
18
shell/Evolution-Shell.idl
Normal file
18
shell/Evolution-Shell.idl
Normal file
@ -0,0 +1,18 @@
|
||||
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
/*
|
||||
* Interface for the Evolution shell.
|
||||
*
|
||||
* Authors:
|
||||
* Ettore Perazzoli <ettore@helixcode.com>
|
||||
*
|
||||
* Copyright (C) 2000 Helix Code, Inc.
|
||||
*/
|
||||
|
||||
#include <Bonobo.idl>
|
||||
|
||||
module Evolution {
|
||||
interface Shell : Bonobo::Unknown {
|
||||
/* Nothing for now. */
|
||||
void dummy_method ();
|
||||
};
|
||||
};
|
17
shell/Evolution-ShellComponent.idl
Normal file
17
shell/Evolution-ShellComponent.idl
Normal file
@ -0,0 +1,17 @@
|
||||
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
/*
|
||||
* Interface for the Evolution components.
|
||||
*
|
||||
* Authors:
|
||||
* Ettore Perazzoli <ettore@helixcode.com>
|
||||
*
|
||||
* Copyright (C) 2000 Helix Code, Inc.
|
||||
*/
|
||||
|
||||
#include <Bonobo.h>
|
||||
|
||||
module Evolution {
|
||||
interface ShellComponent : Bonobo::Unknown {
|
||||
void set_shell (in Shell shell);
|
||||
};
|
||||
};
|
53
shell/Evolution-Storage.idl
Normal file
53
shell/Evolution-Storage.idl
Normal file
@ -0,0 +1,53 @@
|
||||
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
/*
|
||||
* Storage interface for the Evolution shell.
|
||||
*
|
||||
* Authors:
|
||||
* Ettore Perazzoli <ettore@helixcode.com>
|
||||
*
|
||||
* Copyright (C) 2000 Helix Code, Inc.
|
||||
*/
|
||||
|
||||
#include <Bonobo.h>
|
||||
|
||||
module Evolution {
|
||||
struct Folder {
|
||||
string type;
|
||||
string description;
|
||||
string name;
|
||||
string physical_uri;
|
||||
};
|
||||
|
||||
interface Storage;
|
||||
interface StorageListener;
|
||||
|
||||
interface Storage : Bonobo::Unknown {
|
||||
attribute string name;
|
||||
|
||||
void set_listener (in StorageListener storage_listener);
|
||||
};
|
||||
|
||||
interface StorageListener {
|
||||
exception Exists {};
|
||||
exception NotFound {};
|
||||
|
||||
void destroyed ();
|
||||
|
||||
void new_folder (in string path, in Folder folder)
|
||||
raises (Exists);
|
||||
|
||||
void removed_folder (in string path)
|
||||
raises (NotFound);
|
||||
};
|
||||
|
||||
interface StorageRegistry : Bonobo::Unknown {
|
||||
exception Exists {};
|
||||
exception NotFound {};
|
||||
|
||||
StorageListener register_storage (in Storage storage, in string name)
|
||||
raises (Exists);
|
||||
|
||||
void unregister_storage (in string name)
|
||||
raises (NotFound);
|
||||
};
|
||||
};
|
@ -1,14 +1,15 @@
|
||||
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
|
||||
/*
|
||||
* CORBA interface for the Evolution shell
|
||||
* CORBA interface for the Evolution shell.
|
||||
*
|
||||
* Authors:
|
||||
* Miguel de Icaza (miguel@kernel.org)
|
||||
* Ettore Perazzoli <ettore@helixcode.com>
|
||||
*
|
||||
* (C) 2000 Helix Code, Inc.
|
||||
* Copyright (C) 2000 Helix Code, Inc.
|
||||
*/
|
||||
#include <Bonobo.idl>
|
||||
#include <Shell.idl>
|
||||
#include <evolution-service-repository.idl>
|
||||
|
||||
#include <Bonobo.idl>
|
||||
|
||||
#include <Evolution-Storage.idl>
|
||||
#include <Evolution-Shell.idl>
|
||||
#include <Evolution-ShellComponent.idl>
|
||||
|
@ -21,8 +21,18 @@ EVOLUTION_CORBA_GENERATED = \
|
||||
|
||||
CLEANFILES = $(EVOLUTION_CORBA_GENERATED)
|
||||
|
||||
IDLS = \
|
||||
Evolution.idl \
|
||||
Evolution-Shell.idl \
|
||||
Evolution-ShellComponent.idl \
|
||||
Evolution-Storage.idl
|
||||
|
||||
evolution_SOURCES = \
|
||||
$(EVOLUTION_CORBA_GENERATED) \
|
||||
e-corba-storage.c \
|
||||
e-corba-storage.h \
|
||||
e-corba-storage-registry.c \
|
||||
e-corba-storage-registry.h \
|
||||
e-folder-type-repository.c \
|
||||
e-folder-type-repository.h \
|
||||
e-folder.c \
|
||||
@ -54,13 +64,11 @@ evolution_SOURCES = \
|
||||
e-storage-watcher.h \
|
||||
e-storage.c \
|
||||
e-storage.h \
|
||||
evolution-service-repository.c \
|
||||
evolution-service-repository.h \
|
||||
main.c
|
||||
|
||||
Evolution-impl.o: Evolution.h
|
||||
|
||||
$(EVOLUTION_CORBA_GENERATED): Evolution.idl evolution-service-repository.idl
|
||||
$(EVOLUTION_CORBA_GENERATED): $(IDLS)
|
||||
$(ORBIT_IDL) -I$(datadir)/idl -I`$(GNOME_CONFIG) --datadir`/idl -I$(srcdir) $(srcdir)/Evolution.idl
|
||||
|
||||
evolution_LDADD = \
|
||||
@ -70,9 +78,7 @@ evolution_LDADD = \
|
||||
$(top_builddir)/e-util/libeutil.la \
|
||||
$(BONOBO_GNOME_LIBS)
|
||||
|
||||
EXTRA_DIST = Evolution.idl \
|
||||
Shell.idl \
|
||||
evolution-service-repository.idl
|
||||
EXTRA_DIST = $(IDLS)
|
||||
|
||||
if ENABLE_PURIFY
|
||||
PLINK = $(LIBTOOL) --mode=link $(PURIFY) $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
|
236
shell/e-corba-storage-registry.c
Normal file
236
shell/e-corba-storage-registry.c
Normal file
@ -0,0 +1,236 @@
|
||||
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
||||
/* e-corba-storage-registry.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: Ettore Perazzoli
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include "e-util/e-util.h"
|
||||
|
||||
#include "e-corba-storage.h"
|
||||
|
||||
#include "e-corba-storage-registry.h"
|
||||
|
||||
|
||||
#define PARENT_TYPE BONOBO_OBJECT_TYPE
|
||||
static BonoboObjectClass *parent_class = NULL;
|
||||
|
||||
struct _ECorbaStorageRegistryPrivate {
|
||||
EStorageSet *storage_set;
|
||||
};
|
||||
|
||||
|
||||
/* CORBA interface implementation. */
|
||||
|
||||
static POA_Evolution_StorageRegistry__vepv storage_registry_vepv;
|
||||
|
||||
static POA_Evolution_StorageRegistry *
|
||||
create_servant (void)
|
||||
{
|
||||
POA_Evolution_StorageRegistry *servant;
|
||||
CORBA_Environment ev;
|
||||
|
||||
servant = (POA_Evolution_StorageRegistry *) g_new0 (BonoboObjectServant, 1);
|
||||
servant->vepv = &storage_registry_vepv;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
POA_Evolution_StorageRegistry__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 Evolution_StorageListener
|
||||
impl_StorageRegistry_register_storage (PortableServer_Servant servant,
|
||||
const Evolution_Storage storage_interface,
|
||||
const CORBA_char *name,
|
||||
CORBA_Environment *ev)
|
||||
{
|
||||
BonoboObject *bonobo_object;
|
||||
ECorbaStorageRegistry *storage_registry;
|
||||
ECorbaStorageRegistryPrivate *priv;
|
||||
EStorage *storage;
|
||||
Evolution_StorageListener listener_interface;
|
||||
|
||||
bonobo_object = bonobo_object_from_servant (servant);
|
||||
storage_registry = E_CORBA_STORAGE_REGISTRY (bonobo_object);
|
||||
priv = storage_registry->priv;
|
||||
|
||||
storage = e_corba_storage_new (storage_interface, name);
|
||||
|
||||
/* FIXME check failure. */
|
||||
e_storage_set_add_storage (priv->storage_set, storage);
|
||||
|
||||
listener_interface = CORBA_Object_duplicate (e_corba_storage_get_StorageListener
|
||||
(E_CORBA_STORAGE (storage)), ev);
|
||||
|
||||
return listener_interface;
|
||||
}
|
||||
|
||||
static void
|
||||
impl_StorageRegistry_unregister_storage (PortableServer_Servant servant,
|
||||
const CORBA_char *name,
|
||||
CORBA_Environment *ev)
|
||||
{
|
||||
BonoboObject *bonobo_object;
|
||||
ECorbaStorageRegistry *storage_registry;
|
||||
ECorbaStorageRegistryPrivate *priv;
|
||||
EStorage *storage;
|
||||
|
||||
bonobo_object = bonobo_object_from_servant (servant);
|
||||
storage_registry = E_CORBA_STORAGE_REGISTRY (bonobo_object);
|
||||
priv = storage_registry->priv;
|
||||
|
||||
storage = e_storage_set_get_storage (priv->storage_set, name);
|
||||
if (storage == NULL) {
|
||||
CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
|
||||
ex_Evolution_StorageRegistry_NotFound,
|
||||
NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
/* FIXME: Yucky to get the storage by name and then remove it. */
|
||||
/* FIXME: Check failure. */
|
||||
e_storage_set_remove_storage (priv->storage_set, storage);
|
||||
}
|
||||
|
||||
|
||||
/* GtkObject methods. */
|
||||
|
||||
static void
|
||||
destroy (GtkObject *object)
|
||||
{
|
||||
ECorbaStorageRegistry *corba_storage_registry;
|
||||
ECorbaStorageRegistryPrivate *priv;
|
||||
|
||||
corba_storage_registry = E_CORBA_STORAGE_REGISTRY (object);
|
||||
priv = corba_storage_registry->priv;
|
||||
|
||||
if (priv->storage_set != NULL)
|
||||
gtk_object_unref (GTK_OBJECT (priv->storage_set));
|
||||
g_free (priv);
|
||||
|
||||
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
|
||||
}
|
||||
|
||||
|
||||
/* Initialization. */
|
||||
|
||||
static void
|
||||
corba_class_init (void)
|
||||
{
|
||||
POA_Evolution_StorageRegistry__vepv *vepv;
|
||||
POA_Evolution_StorageRegistry__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_Evolution_StorageRegistry__epv, 1);
|
||||
epv->register_storage = impl_StorageRegistry_register_storage;
|
||||
epv->unregister_storage = impl_StorageRegistry_unregister_storage;
|
||||
|
||||
vepv = &storage_registry_vepv;
|
||||
vepv->_base_epv = base_epv;
|
||||
vepv->Evolution_StorageRegistry_epv = epv;
|
||||
}
|
||||
|
||||
static void
|
||||
class_init (ECorbaStorageRegistryClass *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 (ECorbaStorageRegistry *corba_storage_registry)
|
||||
{
|
||||
ECorbaStorageRegistryPrivate *priv;
|
||||
|
||||
priv = g_new (ECorbaStorageRegistryPrivate, 1);
|
||||
priv->storage_set = NULL;
|
||||
|
||||
corba_storage_registry->priv = priv;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
e_corba_storage_registry_construct (ECorbaStorageRegistry *corba_storage_registry,
|
||||
Evolution_StorageRegistry corba_object,
|
||||
EStorageSet *storage_set)
|
||||
{
|
||||
ECorbaStorageRegistryPrivate *priv;
|
||||
|
||||
g_return_if_fail (corba_storage_registry != NULL);
|
||||
g_return_if_fail (E_IS_CORBA_STORAGE_REGISTRY (corba_storage_registry));
|
||||
g_return_if_fail (corba_object != CORBA_OBJECT_NIL);
|
||||
|
||||
bonobo_object_construct (BONOBO_OBJECT (corba_storage_registry), corba_object);
|
||||
|
||||
priv = corba_storage_registry->priv;
|
||||
|
||||
gtk_object_ref (GTK_OBJECT (storage_set));
|
||||
priv->storage_set = storage_set;
|
||||
}
|
||||
|
||||
ECorbaStorageRegistry *
|
||||
e_corba_storage_registry_new (EStorageSet *storage_set)
|
||||
{
|
||||
ECorbaStorageRegistry *corba_storage_registry;
|
||||
POA_Evolution_StorageRegistry *servant;
|
||||
Evolution_StorageRegistry corba_object;
|
||||
|
||||
g_return_val_if_fail (storage_set != NULL, NULL);
|
||||
g_return_val_if_fail (E_IS_STORAGE_SET (storage_set), NULL);
|
||||
|
||||
servant = create_servant ();
|
||||
if (servant == NULL)
|
||||
return NULL;
|
||||
|
||||
corba_storage_registry = gtk_type_new (e_corba_storage_registry_get_type ());
|
||||
|
||||
corba_object = bonobo_object_activate_servant (BONOBO_OBJECT (corba_storage_registry),
|
||||
servant);
|
||||
|
||||
e_corba_storage_registry_construct (corba_storage_registry, corba_object, storage_set);
|
||||
|
||||
return corba_storage_registry;
|
||||
}
|
||||
|
||||
|
||||
E_MAKE_TYPE (e_corba_storage_registry, "ECorbaStorageRegistry", ECorbaStorageRegistry, class_init, init, PARENT_TYPE)
|
73
shell/e-corba-storage-registry.h
Normal file
73
shell/e-corba-storage-registry.h
Normal file
@ -0,0 +1,73 @@
|
||||
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
||||
/* e-corba-storage-registry.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: Ettore Perazzoli
|
||||
*/
|
||||
|
||||
#ifndef __E_CORBA_STORAGE_REGISTRY_H__
|
||||
#define __E_CORBA_STORAGE_REGISTRY_H__
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <bonobo/bonobo-object.h>
|
||||
|
||||
#include "Evolution.h"
|
||||
#include "e-storage-set.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#pragma }
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#define E_TYPE_CORBA_STORAGE_REGISTRY (e_corba_storage_registry_get_type ())
|
||||
#define E_CORBA_STORAGE_REGISTRY(obj) (GTK_CHECK_CAST ((obj), E_TYPE_CORBA_STORAGE_REGISTRY, ECorbaStorageRegistry))
|
||||
#define E_CORBA_STORAGE_REGISTRY_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_CORBA_STORAGE_REGISTRY, ECorbaStorageRegistryClass))
|
||||
#define E_IS_CORBA_STORAGE_REGISTRY(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_CORBA_STORAGE_REGISTRY))
|
||||
#define E_IS_CORBA_STORAGE_REGISTRY_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_TYPE_CORBA_STORAGE_REGISTRY))
|
||||
|
||||
|
||||
typedef struct _ECorbaStorageRegistry ECorbaStorageRegistry;
|
||||
typedef struct _ECorbaStorageRegistryPrivate ECorbaStorageRegistryPrivate;
|
||||
typedef struct _ECorbaStorageRegistryClass ECorbaStorageRegistryClass;
|
||||
|
||||
struct _ECorbaStorageRegistry {
|
||||
BonoboObject parent;
|
||||
|
||||
ECorbaStorageRegistryPrivate *priv;
|
||||
};
|
||||
|
||||
struct _ECorbaStorageRegistryClass {
|
||||
BonoboObjectClass parent_class;
|
||||
};
|
||||
|
||||
|
||||
GtkType e_corba_storage_registry_get_type (void);
|
||||
void e_corba_storage_registry_construct (ECorbaStorageRegistry *corba_storage_registry,
|
||||
Evolution_StorageRegistry corba_object,
|
||||
EStorageSet *storage_set);
|
||||
ECorbaStorageRegistry *e_corba_storage_registry_new (EStorageSet *storage_set);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __E_CORBA_STORAGE_REGISTRY_H__ */
|
349
shell/e-corba-storage.c
Normal file
349
shell/e-corba-storage.c
Normal file
@ -0,0 +1,349 @@
|
||||
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
||||
/* e-corba-storage.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: Ettore Perazzoli
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <bonobo.h>
|
||||
|
||||
#include "e-util/e-util.h"
|
||||
|
||||
#include "Evolution.h"
|
||||
|
||||
#include "e-corba-storage.h"
|
||||
|
||||
|
||||
#define PARENT_TYPE E_TYPE_STORAGE
|
||||
static EStorageClass *parent_class = NULL;
|
||||
|
||||
typedef struct _StorageListenerServant StorageListenerServant;
|
||||
|
||||
struct _ECorbaStoragePrivate {
|
||||
char *name;
|
||||
|
||||
Evolution_Storage storage_interface;
|
||||
|
||||
/* The Evolution::StorageListener interface we expose. */
|
||||
|
||||
Evolution_StorageListener storage_listener_interface;
|
||||
StorageListenerServant *storage_listener_servant;
|
||||
};
|
||||
|
||||
|
||||
/* Implementation of the CORBA Evolution::StorageListener interface. */
|
||||
|
||||
static POA_Evolution_StorageListener__vepv storage_listener_vepv;
|
||||
|
||||
struct _StorageListenerServant {
|
||||
POA_Evolution_StorageListener servant;
|
||||
EStorage *storage;
|
||||
};
|
||||
|
||||
static StorageListenerServant *
|
||||
storage_listener_servant_new (ECorbaStorage *corba_storage)
|
||||
{
|
||||
StorageListenerServant *servant;
|
||||
|
||||
servant = g_new0 (StorageListenerServant, 1);
|
||||
|
||||
servant->servant.vepv = &storage_listener_vepv;
|
||||
|
||||
gtk_object_ref (GTK_OBJECT (corba_storage));
|
||||
servant->storage = E_STORAGE (corba_storage);
|
||||
|
||||
return servant;
|
||||
}
|
||||
|
||||
static void
|
||||
storage_listener_servant_free (StorageListenerServant *servant)
|
||||
{
|
||||
gtk_object_unref (GTK_OBJECT (servant->storage));
|
||||
|
||||
g_free (servant);
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void
|
||||
impl_StorageListener_destroy (PortableServer_Servant servant,
|
||||
CORBA_Environment *ev)
|
||||
{
|
||||
/* FIXME */
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
impl_StorageListener_new_folder (PortableServer_Servant servant,
|
||||
const CORBA_char *path,
|
||||
const Evolution_Folder *folder,
|
||||
CORBA_Environment *ev)
|
||||
{
|
||||
StorageListenerServant *storage_listener_servant;
|
||||
EStorage *storage;
|
||||
EFolder *e_folder;
|
||||
|
||||
storage_listener_servant = (StorageListenerServant *) servant;
|
||||
storage = storage_listener_servant->storage;
|
||||
|
||||
e_folder = e_folder_new (folder->name,
|
||||
folder->type,
|
||||
folder->description);
|
||||
|
||||
if (! e_storage_new_folder (storage, path, e_folder)) {
|
||||
CORBA_exception_set (ev,
|
||||
CORBA_USER_EXCEPTION,
|
||||
ex_Evolution_StorageListener_Exists,
|
||||
NULL);
|
||||
gtk_object_unref (GTK_OBJECT (e_folder));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
impl_StorageListener_removed_folder (PortableServer_Servant servant,
|
||||
const CORBA_char *path,
|
||||
CORBA_Environment *ev)
|
||||
{
|
||||
StorageListenerServant *storage_listener_servant;
|
||||
EStorage *storage;
|
||||
|
||||
storage_listener_servant = (StorageListenerServant *) servant;
|
||||
storage = storage_listener_servant->storage;
|
||||
|
||||
if (! e_storage_remove_folder (storage, path))
|
||||
CORBA_exception_set (ev,
|
||||
CORBA_USER_EXCEPTION,
|
||||
ex_Evolution_StorageListener_NotFound,
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
||||
static gboolean
|
||||
setup_storage_listener (ECorbaStorage *corba_storage)
|
||||
{
|
||||
StorageListenerServant *servant;
|
||||
ECorbaStoragePrivate *priv;
|
||||
Evolution_StorageListener storage_listener_interface;
|
||||
CORBA_Environment ev;
|
||||
|
||||
priv = corba_storage->priv;
|
||||
|
||||
servant = storage_listener_servant_new (corba_storage);
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
POA_Evolution_StorageListener__init (servant, &ev);
|
||||
if (ev._major != CORBA_NO_EXCEPTION)
|
||||
goto error;
|
||||
|
||||
CORBA_free (PortableServer_POA_activate_object (bonobo_poa (), servant, &ev));
|
||||
if (ev._major != CORBA_NO_EXCEPTION)
|
||||
goto error;
|
||||
|
||||
storage_listener_interface = PortableServer_POA_servant_to_reference (bonobo_poa (),
|
||||
servant, &ev);
|
||||
if (ev._major != CORBA_NO_EXCEPTION)
|
||||
goto error;
|
||||
|
||||
priv->storage_listener_interface = storage_listener_interface;
|
||||
priv->storage_listener_servant = servant;
|
||||
|
||||
return TRUE;
|
||||
|
||||
error:
|
||||
storage_listener_servant_free (servant);
|
||||
CORBA_exception_free (&ev);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/* GtkObject methods. */
|
||||
|
||||
static void
|
||||
destroy (GtkObject *object)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
ECorbaStorage *corba_storage;
|
||||
ECorbaStoragePrivate *priv;
|
||||
|
||||
corba_storage = E_CORBA_STORAGE (object);
|
||||
priv = corba_storage->priv;
|
||||
|
||||
g_free (priv->name);
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
if (priv->storage_interface != CORBA_OBJECT_NIL) {
|
||||
Bonobo_Unknown_unref (priv->storage_interface, &ev);
|
||||
CORBA_Object_release (priv->storage_interface, &ev);
|
||||
}
|
||||
|
||||
if (priv->storage_listener_interface != CORBA_OBJECT_NIL)
|
||||
CORBA_Object_release (priv->storage_listener_interface, &ev);
|
||||
|
||||
if (priv->storage_listener_servant != NULL) {
|
||||
PortableServer_ObjectId *object_id;
|
||||
|
||||
object_id = PortableServer_POA_servant_to_id (bonobo_poa (), priv->storage_listener_servant,
|
||||
&ev);
|
||||
PortableServer_POA_deactivate_object (bonobo_poa (), object_id, &ev);
|
||||
|
||||
POA_Evolution_StorageListener__fini (priv->storage_listener_servant, &ev);
|
||||
CORBA_free (object_id);
|
||||
}
|
||||
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
g_free (priv);
|
||||
|
||||
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
|
||||
}
|
||||
|
||||
|
||||
/* EStorage methods. */
|
||||
|
||||
static const char *
|
||||
get_name (EStorage *storage)
|
||||
{
|
||||
ECorbaStorage *corba_storage;
|
||||
ECorbaStoragePrivate *priv;
|
||||
|
||||
corba_storage = E_CORBA_STORAGE (storage);
|
||||
priv = corba_storage->priv;
|
||||
|
||||
return priv->name;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
corba_class_init (void)
|
||||
{
|
||||
POA_Evolution_StorageListener__vepv *vepv;
|
||||
POA_Evolution_StorageListener__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_Evolution_StorageListener__epv, 1);
|
||||
epv->new_folder = impl_StorageListener_new_folder;
|
||||
epv->removed_folder = impl_StorageListener_removed_folder;
|
||||
|
||||
vepv = &storage_listener_vepv;
|
||||
vepv->_base_epv = base_epv;
|
||||
vepv->Evolution_StorageListener_epv = epv;
|
||||
}
|
||||
|
||||
static void
|
||||
class_init (ECorbaStorageClass *klass)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
EStorageClass *storage_class;
|
||||
|
||||
object_class = GTK_OBJECT_CLASS (klass);
|
||||
object_class->destroy = destroy;
|
||||
|
||||
storage_class = E_STORAGE_CLASS (klass);
|
||||
storage_class->get_name = get_name;
|
||||
|
||||
corba_class_init ();
|
||||
|
||||
parent_class = gtk_type_class (PARENT_TYPE);
|
||||
}
|
||||
|
||||
static void
|
||||
init (ECorbaStorage *corba_storage)
|
||||
{
|
||||
ECorbaStoragePrivate *priv;
|
||||
|
||||
priv = g_new (ECorbaStoragePrivate, 1);
|
||||
priv->name = NULL;
|
||||
priv->storage_interface = CORBA_OBJECT_NIL;
|
||||
|
||||
corba_storage->priv = priv;
|
||||
}
|
||||
|
||||
|
||||
/* FIXME: OK to have a boolean construct function? */
|
||||
void
|
||||
e_corba_storage_construct (ECorbaStorage *corba_storage,
|
||||
const Evolution_Storage storage_interface,
|
||||
const char *name)
|
||||
{
|
||||
ECorbaStoragePrivate *priv;
|
||||
CORBA_Environment ev;
|
||||
|
||||
g_return_if_fail (corba_storage != NULL);
|
||||
g_return_if_fail (E_IS_CORBA_STORAGE (corba_storage));
|
||||
g_return_if_fail (storage_interface != CORBA_OBJECT_NIL);
|
||||
g_return_if_fail (name != NULL);
|
||||
|
||||
e_storage_construct (E_STORAGE (corba_storage));
|
||||
|
||||
priv = corba_storage->priv;
|
||||
|
||||
priv->name = g_strdup (name);
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
Bonobo_Unknown_ref (storage_interface, &ev);
|
||||
if (ev._major != CORBA_NO_EXCEPTION) {
|
||||
g_warning ("%s -- Cannot reference Bonobo object", __FUNCTION__);
|
||||
} else {
|
||||
priv->storage_interface = CORBA_Object_duplicate (storage_interface, &ev);
|
||||
}
|
||||
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
setup_storage_listener (corba_storage);
|
||||
}
|
||||
|
||||
EStorage *
|
||||
e_corba_storage_new (const Evolution_Storage storage_interface,
|
||||
const char *name)
|
||||
{
|
||||
EStorage *new;
|
||||
|
||||
g_return_val_if_fail (storage_interface != CORBA_OBJECT_NIL, NULL);
|
||||
g_return_val_if_fail (name != NULL, NULL);
|
||||
|
||||
new = gtk_type_new (e_corba_storage_get_type ());
|
||||
|
||||
e_corba_storage_construct (E_CORBA_STORAGE (new), storage_interface, name);
|
||||
|
||||
return new;
|
||||
}
|
||||
|
||||
|
||||
const Evolution_StorageListener
|
||||
e_corba_storage_get_StorageListener (ECorbaStorage *corba_storage)
|
||||
{
|
||||
g_return_val_if_fail (corba_storage != NULL, NULL);
|
||||
g_return_val_if_fail (E_IS_CORBA_STORAGE (corba_storage), NULL);
|
||||
|
||||
return corba_storage->priv->storage_listener_interface;
|
||||
}
|
||||
|
||||
|
||||
E_MAKE_TYPE (e_corba_storage, "ECorbaStorage", ECorbaStorage, class_init, init, PARENT_TYPE)
|
76
shell/e-corba-storage.h
Normal file
76
shell/e-corba-storage.h
Normal file
@ -0,0 +1,76 @@
|
||||
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
||||
/* e-corba-storage.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: Ettore Perazzoli
|
||||
*/
|
||||
|
||||
#ifndef __E_CORBA_STORAGE_H__
|
||||
#define __E_CORBA_STORAGE_H__
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include "e-storage.h"
|
||||
|
||||
#include "Evolution.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#pragma }
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#define E_TYPE_CORBA_STORAGE (e_corba_storage_get_type ())
|
||||
#define E_CORBA_STORAGE(obj) (GTK_CHECK_CAST ((obj), E_TYPE_CORBA_STORAGE, ECorbaStorage))
|
||||
#define E_CORBA_STORAGE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_CORBA_STORAGE, ECorbaStorageClass))
|
||||
#define E_IS_CORBA_STORAGE(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_CORBA_STORAGE))
|
||||
#define E_IS_CORBA_STORAGE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_TYPE_CORBA_STORAGE))
|
||||
|
||||
|
||||
typedef struct _ECorbaStorage ECorbaStorage;
|
||||
typedef struct _ECorbaStoragePrivate ECorbaStoragePrivate;
|
||||
typedef struct _ECorbaStorageClass ECorbaStorageClass;
|
||||
|
||||
struct _ECorbaStorage {
|
||||
EStorage parent;
|
||||
|
||||
ECorbaStoragePrivate *priv;
|
||||
};
|
||||
|
||||
struct _ECorbaStorageClass {
|
||||
EStorageClass parent_class;
|
||||
};
|
||||
|
||||
|
||||
GtkType e_corba_storage_get_type (void);
|
||||
void e_corba_storage_construct (ECorbaStorage *corba_storage,
|
||||
const Evolution_Storage storage_interface,
|
||||
const char *name);
|
||||
EStorage *e_corba_storage_new (const Evolution_Storage storage_interface,
|
||||
const char *name);
|
||||
|
||||
/* FIXME: I don't like this call. */
|
||||
const Evolution_StorageListener e_corba_storage_get_StorageListener (ECorbaStorage *corba_storage);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __E_CORBA_STORAGE_H__ */
|
@ -89,6 +89,8 @@ folder_type_new (const char *name,
|
||||
else
|
||||
new->icon_pixbuf = gdk_pixbuf_new_from_file (icon_path);
|
||||
|
||||
g_free (icon_path);
|
||||
|
||||
icon_path = e_shell_get_icon_path (icon_name, TRUE);
|
||||
if (icon_path != NULL) {
|
||||
new->mini_icon_pixbuf = gdk_pixbuf_new_from_file (icon_path);
|
||||
|
@ -83,7 +83,7 @@ remove (EFolder *folder)
|
||||
static const char *
|
||||
get_physical_uri (EFolder *folder)
|
||||
{
|
||||
g_warning ("`%s' does not implement `EFolder::remove()'",
|
||||
g_warning ("`%s' does not implement `EFolder::get_physical_uri()'",
|
||||
gtk_type_name (GTK_OBJECT_TYPE (folder)));
|
||||
return NULL;
|
||||
}
|
||||
|
@ -279,7 +279,7 @@ GnomeUIInfo e_shell_view_menu [] = {
|
||||
{ GNOME_APP_UI_SUBTREE, N_("_Actions"), NULL, menu_actions },
|
||||
GNOMEUIINFO_MENU_HELP_TREE (menu_help),
|
||||
|
||||
#warning Should provide a help menu here; Bonobo needs it
|
||||
/* FIXME: Should provide a help menu here; Bonobo needs it. */
|
||||
|
||||
GNOMEUIINFO_END
|
||||
};
|
||||
|
113
shell/e-shell.c
113
shell/e-shell.c
@ -28,8 +28,11 @@
|
||||
#include <gtk/gtkobject.h>
|
||||
#include <gtk/gtktypeutils.h>
|
||||
|
||||
#include "Evolution.h"
|
||||
|
||||
#include "e-util/e-util.h"
|
||||
|
||||
#include "e-corba-storage-registry.h"
|
||||
#include "e-folder-type-repository.h"
|
||||
#include "e-local-storage.h"
|
||||
#include "e-shell-view.h"
|
||||
@ -39,8 +42,8 @@
|
||||
#include "e-shell.h"
|
||||
|
||||
|
||||
#define PARENT_TYPE GTK_TYPE_OBJECT
|
||||
static GtkObjectClass *parent_class = NULL;
|
||||
#define PARENT_TYPE BONOBO_OBJECT_TYPE
|
||||
static BonoboObjectClass *parent_class = NULL;
|
||||
|
||||
struct _EShellPrivate {
|
||||
char *local_directory;
|
||||
@ -50,6 +53,8 @@ struct _EShellPrivate {
|
||||
EStorageSet *storage_set;
|
||||
EShortcuts *shortcuts;
|
||||
EFolderTypeRepository *folder_type_repository;
|
||||
|
||||
ECorbaStorageRegistry *corba_storage_registry;
|
||||
};
|
||||
|
||||
#define SHORTCUTS_FILE_NAME "shortcuts.xml"
|
||||
@ -62,9 +67,63 @@ enum {
|
||||
|
||||
static guint signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
|
||||
/* CORBA interface implementation. */
|
||||
|
||||
static POA_Evolution_Shell__vepv shell_vepv;
|
||||
|
||||
static POA_Evolution_Shell *
|
||||
create_servant (void)
|
||||
{
|
||||
POA_Evolution_Shell *servant;
|
||||
CORBA_Environment ev;
|
||||
|
||||
servant = (POA_Evolution_Shell *) g_new0 (BonoboObjectServant, 1);
|
||||
servant->vepv = &shell_vepv;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
POA_Evolution_Shell__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 void
|
||||
impl_Shell_dummy_method (PortableServer_Servant servant,
|
||||
CORBA_Environment *ev)
|
||||
{
|
||||
g_print ("Evolution::Shell::dummy_method invoked!\n");
|
||||
}
|
||||
|
||||
|
||||
/* Initialization of the storages. */
|
||||
|
||||
static gboolean
|
||||
setup_corba_storages (EShell *shell)
|
||||
{
|
||||
EShellPrivate *priv;
|
||||
|
||||
priv = shell->priv;
|
||||
|
||||
g_assert (priv->storage_set != NULL);
|
||||
priv->corba_storage_registry = e_corba_storage_registry_new (priv->storage_set);
|
||||
|
||||
if (priv->corba_storage_registry == NULL)
|
||||
return FALSE;
|
||||
|
||||
bonobo_object_add_interface (BONOBO_OBJECT (shell),
|
||||
BONOBO_OBJECT (priv->corba_storage_registry));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
setup_storages (EShell *shell)
|
||||
{
|
||||
@ -89,7 +148,7 @@ setup_storages (EShell *shell)
|
||||
priv->storage_set = e_storage_set_new (shell->priv->folder_type_repository);
|
||||
e_storage_set_add_storage (priv->storage_set, local_storage);
|
||||
|
||||
return TRUE;
|
||||
return setup_corba_storages (shell);
|
||||
}
|
||||
|
||||
|
||||
@ -144,18 +203,43 @@ destroy (GtkObject *object)
|
||||
|
||||
g_list_free (priv->views);
|
||||
|
||||
if (priv->corba_storage_registry != NULL)
|
||||
bonobo_object_unref (BONOBO_OBJECT (priv->corba_storage_registry));
|
||||
|
||||
g_free (priv);
|
||||
|
||||
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
|
||||
}
|
||||
|
||||
|
||||
/* Initialization. */
|
||||
|
||||
static void
|
||||
corba_class_init (void)
|
||||
{
|
||||
POA_Evolution_Shell__vepv *vepv;
|
||||
POA_Evolution_Shell__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_Evolution_Shell__epv, 1);
|
||||
epv->dummy_method = impl_Shell_dummy_method;
|
||||
|
||||
vepv = &shell_vepv;
|
||||
vepv->Bonobo_Unknown_epv = bonobo_object_get_epv ();
|
||||
vepv->Evolution_Shell_epv = epv;
|
||||
}
|
||||
|
||||
static void
|
||||
class_init (EShellClass *klass)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
|
||||
parent_class = gtk_type_class (gtk_object_get_type ());
|
||||
parent_class = gtk_type_class (PARENT_TYPE);
|
||||
|
||||
object_class = GTK_OBJECT_CLASS (klass);
|
||||
object_class->destroy = destroy;
|
||||
@ -169,6 +253,8 @@ class_init (EShellClass *klass)
|
||||
GTK_TYPE_NONE, 0);
|
||||
|
||||
gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL);
|
||||
|
||||
corba_class_init ();
|
||||
}
|
||||
|
||||
static void
|
||||
@ -184,6 +270,7 @@ init (EShell *shell)
|
||||
priv->storage_set = NULL;
|
||||
priv->shortcuts = NULL;
|
||||
priv->folder_type_repository = NULL;
|
||||
priv->corba_storage_registry = NULL;
|
||||
|
||||
shell->priv = priv;
|
||||
}
|
||||
@ -191,6 +278,7 @@ init (EShell *shell)
|
||||
|
||||
void
|
||||
e_shell_construct (EShell *shell,
|
||||
Evolution_Shell corba_object,
|
||||
const char *local_directory)
|
||||
{
|
||||
EShellPrivate *priv;
|
||||
@ -201,12 +289,11 @@ e_shell_construct (EShell *shell,
|
||||
g_return_if_fail (local_directory != NULL);
|
||||
g_return_if_fail (g_path_is_absolute (local_directory));
|
||||
|
||||
GTK_OBJECT_UNSET_FLAGS (shell, GTK_FLOATING);
|
||||
bonobo_object_construct (BONOBO_OBJECT (shell), corba_object);
|
||||
|
||||
priv = shell->priv;
|
||||
|
||||
priv->local_directory = g_strdup (local_directory);
|
||||
|
||||
priv->folder_type_repository = e_folder_type_repository_new ();
|
||||
|
||||
if (! setup_storages (shell))
|
||||
@ -231,14 +318,22 @@ e_shell_new (const char *local_directory)
|
||||
{
|
||||
EShell *new;
|
||||
EShellPrivate *priv;
|
||||
Evolution_Shell corba_object;
|
||||
POA_Evolution_Shell *servant;
|
||||
|
||||
servant = create_servant ();
|
||||
if (servant == NULL)
|
||||
return NULL;
|
||||
|
||||
new = gtk_type_new (e_shell_get_type ());
|
||||
e_shell_construct (new, local_directory);
|
||||
|
||||
corba_object = bonobo_object_activate_servant (BONOBO_OBJECT (new), servant);
|
||||
e_shell_construct (new, corba_object, local_directory);
|
||||
|
||||
priv = new->priv;
|
||||
|
||||
if (priv->shortcuts == NULL || priv->storage_set == NULL) {
|
||||
gtk_object_unref (GTK_OBJECT (new));
|
||||
bonobo_object_unref (BONOBO_OBJECT (new));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -303,7 +398,7 @@ e_shell_quit (EShell *shell)
|
||||
g_return_if_fail (shell != NULL);
|
||||
g_return_if_fail (E_IS_SHELL (shell));
|
||||
|
||||
gtk_object_destroy (GTK_OBJECT (shell));
|
||||
bonobo_object_unref (BONOBO_OBJECT (shell));
|
||||
}
|
||||
|
||||
|
||||
|
@ -28,8 +28,9 @@
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <gtk/gtkobject.h>
|
||||
#include <bonobo/bonobo-object.h>
|
||||
|
||||
#include "Evolution.h"
|
||||
#include "e-shortcuts.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -49,25 +50,26 @@ typedef struct _EShellPrivate EShellPrivate;
|
||||
typedef struct _EShellClass EShellClass;
|
||||
|
||||
struct _EShell {
|
||||
GtkObject parent;
|
||||
BonoboObject parent;
|
||||
|
||||
EShellPrivate *priv;
|
||||
};
|
||||
|
||||
struct _EShellClass {
|
||||
GtkObjectClass parent_class;
|
||||
BonoboObjectClass parent_class;
|
||||
|
||||
void (* no_views_left) (EShell *shell);
|
||||
};
|
||||
|
||||
|
||||
GtkType e_shell_get_type (void);
|
||||
void e_shell_construct (EShell *shell,
|
||||
const char *local_directory);
|
||||
EShell *e_shell_new (const char *local_directory);
|
||||
GtkType e_shell_get_type (void);
|
||||
void e_shell_construct (EShell *shell,
|
||||
Evolution_Shell corba_object,
|
||||
const char *local_directory);
|
||||
EShell *e_shell_new (const char *local_directory);
|
||||
|
||||
GtkWidget *e_shell_new_view (EShell *shell,
|
||||
const char *uri);
|
||||
GtkWidget *e_shell_new_view (EShell *shell,
|
||||
const char *uri);
|
||||
|
||||
EShortcuts *e_shell_get_shortcuts (EShell *shell);
|
||||
EStorageSet *e_shell_get_storage_set (EShell *shell);
|
||||
|
@ -28,8 +28,9 @@
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include "e-folder-type-repository.h"
|
||||
#include <gtk/gtkwidget.h>
|
||||
|
||||
#include "e-folder-type-repository.h"
|
||||
#include "e-storage.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -400,7 +400,7 @@ e_storage_get_name (EStorage *storage)
|
||||
/* These functions are used by subclasses to add and remove folders from the
|
||||
state stored in the storage object. */
|
||||
|
||||
void
|
||||
gboolean
|
||||
e_storage_new_folder (EStorage *storage,
|
||||
const char *path,
|
||||
EFolder *e_folder)
|
||||
@ -411,12 +411,12 @@ e_storage_new_folder (EStorage *storage,
|
||||
const char *name;
|
||||
char *full_path;
|
||||
|
||||
g_return_if_fail (storage != NULL);
|
||||
g_return_if_fail (E_IS_STORAGE (storage));
|
||||
g_return_if_fail (path != NULL);
|
||||
g_return_if_fail (g_path_is_absolute (path));
|
||||
g_return_if_fail (e_folder != NULL);
|
||||
g_return_if_fail (E_IS_FOLDER (e_folder));
|
||||
g_return_val_if_fail (storage != NULL, FALSE);
|
||||
g_return_val_if_fail (E_IS_STORAGE (storage), FALSE);
|
||||
g_return_val_if_fail (path != NULL, FALSE);
|
||||
g_return_val_if_fail (g_path_is_absolute (path), FALSE);
|
||||
g_return_val_if_fail (e_folder != NULL, FALSE);
|
||||
g_return_val_if_fail (E_IS_FOLDER (e_folder), FALSE);
|
||||
|
||||
priv = storage->priv;
|
||||
|
||||
@ -424,12 +424,12 @@ e_storage_new_folder (EStorage *storage,
|
||||
if (parent_folder == NULL) {
|
||||
g_warning ("%s: Trying to add a subfolder to a path that does not exist yet -- %s",
|
||||
__FUNCTION__, path);
|
||||
return;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
name = e_folder_get_name (e_folder);
|
||||
g_assert (name != NULL);
|
||||
g_return_if_fail (*name != G_DIR_SEPARATOR);
|
||||
g_return_val_if_fail (*name != G_DIR_SEPARATOR, FALSE);
|
||||
|
||||
full_path = g_concat_dir_and_file (path, name);
|
||||
|
||||
@ -437,36 +437,40 @@ e_storage_new_folder (EStorage *storage,
|
||||
if (folder != NULL) {
|
||||
g_warning ("%s: Trying to add a subfolder for a path that already exists -- %s",
|
||||
__FUNCTION__, full_path);
|
||||
return;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
folder = folder_new (e_folder);
|
||||
folder_add_subfolder (parent_folder, folder);
|
||||
|
||||
g_hash_table_insert (priv->path_to_folder, full_path, folder);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
gboolean
|
||||
e_storage_remove_folder (EStorage *storage,
|
||||
const char *path)
|
||||
{
|
||||
EStoragePrivate *priv;
|
||||
Folder *folder;
|
||||
|
||||
g_return_if_fail (storage != NULL);
|
||||
g_return_if_fail (E_IS_STORAGE (storage));
|
||||
g_return_if_fail (path != NULL);
|
||||
g_return_if_fail (g_path_is_absolute (path));
|
||||
g_return_val_if_fail (storage != NULL, FALSE);
|
||||
g_return_val_if_fail (E_IS_STORAGE (storage), FALSE);
|
||||
g_return_val_if_fail (path != NULL, FALSE);
|
||||
g_return_val_if_fail (g_path_is_absolute (path), FALSE);
|
||||
|
||||
priv = storage->priv;
|
||||
|
||||
folder = g_hash_table_lookup (priv->path_to_folder, path);
|
||||
if (folder == NULL) {
|
||||
g_warning ("%s: Folder not found -- %s", __FUNCTION__, path);
|
||||
return;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
folder_destroy (folder);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -73,18 +73,15 @@ EStorage *e_storage_new (void);
|
||||
gboolean e_storage_path_is_relative (const char *path);
|
||||
gboolean e_storage_path_is_absolute (const char *path);
|
||||
|
||||
GList *e_storage_list_folders (EStorage *storage,
|
||||
const char *path);
|
||||
EStorageWatcher *e_storage_get_watcher_for_path (EStorage *storage,
|
||||
const char *path);
|
||||
EFolder *e_storage_get_folder (EStorage *storage,
|
||||
const char *path);
|
||||
GList *e_storage_list_folders (EStorage *storage, const char *path);
|
||||
EStorageWatcher *e_storage_get_watcher_for_path (EStorage *storage, const char *path);
|
||||
EFolder *e_storage_get_folder (EStorage *storage, const char *path);
|
||||
|
||||
const char *e_storage_get_name (EStorage *storage);
|
||||
|
||||
/* Protected. C++ anyone? */
|
||||
void e_storage_new_folder (EStorage *storage, const char *path, EFolder *folder);
|
||||
void e_storage_remove_folder (EStorage *storage, const char *path);
|
||||
gboolean e_storage_new_folder (EStorage *storage, const char *path, EFolder *folder);
|
||||
gboolean e_storage_remove_folder (EStorage *storage, const char *path);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -1,279 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
|
||||
/*
|
||||
* Author:
|
||||
* Bertrand Guiheneuf (bg@aful.org)
|
||||
*
|
||||
* Dumped from bonobo/bonobo-persist-stream.c
|
||||
*
|
||||
* (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
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <gtk/gtksignal.h>
|
||||
#include <gtk/gtkmarshal.h>
|
||||
#include "evolution-service-repository.h"
|
||||
|
||||
/* Parent class */
|
||||
static BonoboObjectClass *evolution_service_repository_parent_class;
|
||||
|
||||
|
||||
/* CORBA implementation Entry Point Vector */
|
||||
POA_Evolution_ServiceRepository__vepv evolution_service_repository_vepv;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
*function assigned to the
|
||||
* Evolution::ServiceRepository::set_shell
|
||||
* method.
|
||||
* This function calls the set_shell_fn in
|
||||
* the EvolutionServiceRepository
|
||||
*/
|
||||
static void
|
||||
impl_set_shell (PortableServer_Servant servant,
|
||||
Evolution_Shell shell,
|
||||
CORBA_Environment *ev)
|
||||
{
|
||||
BonoboObject *object = bonobo_object_from_servant (servant);
|
||||
EvolutionServiceRepository *sr = EVOLUTION_SERVICE_REPOSITORY (object);
|
||||
|
||||
if (sr->set_shell_fn != NULL) {
|
||||
(*sr->set_shell_fn)(sr, shell, sr->closure);
|
||||
} else {
|
||||
GtkObjectClass *oc = GTK_OBJECT (sr)->klass;
|
||||
EvolutionServiceRepositoryClass *class = EVOLUTION_SERVICE_REPOSITORY_CLASS (oc);
|
||||
(*class->set_shell)(sr, shell);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* evolution_service_repository_get_epv:
|
||||
* create and initialize the ServiceRepository
|
||||
* epv.
|
||||
*/
|
||||
POA_Evolution_ServiceRepository__epv *
|
||||
evolution_service_repository_get_epv (void)
|
||||
{
|
||||
POA_Evolution_ServiceRepository__epv *epv;
|
||||
|
||||
epv = g_new0 (POA_Evolution_ServiceRepository__epv, 1);
|
||||
|
||||
epv->set_shell = impl_set_shell;
|
||||
|
||||
return epv;
|
||||
}
|
||||
|
||||
|
||||
/* create the Evolution_ServiceRepository vepv */
|
||||
static void
|
||||
init_service_repository_corba_class (void)
|
||||
{
|
||||
/* create the Bonobo interface epv */
|
||||
evolution_service_repository_vepv.Bonobo_Unknown_epv =
|
||||
bonobo_object_get_epv ();
|
||||
|
||||
/* create the ServiceRepository interface epv.
|
||||
* Defined above */
|
||||
evolution_service_repository_vepv.Evolution_ServiceRepository_epv =
|
||||
evolution_service_repository_get_epv ();
|
||||
}
|
||||
|
||||
|
||||
/* default implementation for the ::set_shell method */
|
||||
static void
|
||||
evolution_service_repository_set_shell_default (EvolutionServiceRepository *service_repository,
|
||||
Evolution_Shell shell)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
evolution_service_repository_destroy (GtkObject *object)
|
||||
{
|
||||
GTK_OBJECT_CLASS (evolution_service_repository_parent_class)->destroy (object);
|
||||
}
|
||||
|
||||
|
||||
/* initialize the Gtk object class */
|
||||
static void
|
||||
evolution_service_repository_class_init (EvolutionServiceRepositoryClass *klass)
|
||||
{
|
||||
GtkObjectClass *object_class = (GtkObjectClass *) klass;
|
||||
|
||||
evolution_service_repository_parent_class = gtk_type_class (bonobo_object_get_type ());
|
||||
|
||||
/*
|
||||
* Override and initialize methods
|
||||
*/
|
||||
object_class->destroy = evolution_service_repository_destroy;
|
||||
klass->set_shell = evolution_service_repository_set_shell_default;
|
||||
|
||||
/* create the corba class */
|
||||
init_service_repository_corba_class ();
|
||||
}
|
||||
|
||||
static void
|
||||
evolution_service_repository_init (EvolutionServiceRepository *service_repository)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* evolution_service_repository_get_type:
|
||||
*
|
||||
* Returns: the GtkType for the EvolutionServiceRepository class.
|
||||
*/
|
||||
GtkType
|
||||
evolution_service_repository_get_type (void)
|
||||
{
|
||||
static GtkType type = 0;
|
||||
|
||||
if (!type){
|
||||
GtkTypeInfo info = {
|
||||
"EvolutionServiceRepository",
|
||||
sizeof (EvolutionServiceRepository),
|
||||
sizeof (EvolutionServiceRepositoryClass),
|
||||
(GtkClassInitFunc) evolution_service_repository_class_init,
|
||||
(GtkObjectInitFunc) evolution_service_repository_init,
|
||||
NULL, /* reserved 1 */
|
||||
NULL, /* reserved 2 */
|
||||
(GtkClassInitFunc) NULL
|
||||
};
|
||||
|
||||
type = gtk_type_unique (bonobo_object_get_type (), &info);
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* evolution_service_repository_construct: construct the object
|
||||
* @sr: the gtk service repository object to construct
|
||||
* @corba_service_repository: the corresponding corba object
|
||||
* @set_shell_fn: the ::set_shell implementation for this object
|
||||
* @closure: data to pass to the set_shell operation
|
||||
*
|
||||
* This construct an EvolutionServiceRepository object.
|
||||
* The caller can give the function that will implement
|
||||
* the Corba interface. If those methods are %NULL then the
|
||||
* default class method will be called instead.
|
||||
*
|
||||
* Return value: The constructed service repository.
|
||||
**/
|
||||
EvolutionServiceRepository *
|
||||
evolution_service_repository_construct (EvolutionServiceRepository *sr,
|
||||
Evolution_ServiceRepository corba_service_repository,
|
||||
EvolutionServiceRepositorySetShellFn set_shell_fn,
|
||||
void *closure)
|
||||
{
|
||||
g_return_val_if_fail (sr != NULL, NULL);
|
||||
g_return_val_if_fail (EVOLUTION_IS_SERVICE_REPOSITORY (sr), NULL);
|
||||
g_return_val_if_fail (corba_service_repository != CORBA_OBJECT_NIL, NULL);
|
||||
|
||||
bonobo_object_construct (BONOBO_OBJECT (sr),
|
||||
corba_service_repository);
|
||||
|
||||
sr->closure = closure;
|
||||
sr->set_shell_fn = set_shell_fn;
|
||||
|
||||
return sr;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* construct the corba
|
||||
* Evolution_ServiceRepository object
|
||||
*/
|
||||
static Evolution_ServiceRepository
|
||||
create_evolution_service_repository (BonoboObject *object)
|
||||
{
|
||||
POA_Evolution_ServiceRepository *servant;
|
||||
CORBA_Environment ev;
|
||||
|
||||
/* create a servant */
|
||||
servant = (POA_Evolution_ServiceRepository *) g_new0 (BonoboObjectServant, 1);
|
||||
|
||||
/* initialize its virtual entry point vector */
|
||||
servant->vepv = &evolution_service_repository_vepv;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
/* initialise the servant */
|
||||
POA_Evolution_ServiceRepository__init ((PortableServer_Servant) servant, &ev);
|
||||
if (ev._major != CORBA_NO_EXCEPTION){
|
||||
g_free (servant);
|
||||
CORBA_exception_free (&ev);
|
||||
return CORBA_OBJECT_NIL;
|
||||
}
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
/* activate it and return */
|
||||
return (Evolution_ServiceRepository) bonobo_object_activate_servant (object, servant);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* evolution_service_repository_new: create a new EvolutionServiceRepository object
|
||||
* @set_shell_fn: The ::set_shell method
|
||||
* @closure: The data passed to the ::set_shell method
|
||||
*
|
||||
* Create a full EvolutionServiceRepository. Also create the correspoding
|
||||
* servant. The ::set_shell method calls set_shell_fn unless set_shell_fn
|
||||
* is %NULL, in which case, the class default method is called.
|
||||
*
|
||||
* Return value: The newly created EvolutionServiceRepository object
|
||||
**/
|
||||
EvolutionServiceRepository *
|
||||
evolution_service_repository_new (EvolutionServiceRepositorySetShellFn set_shell_fn,
|
||||
void *closure)
|
||||
{
|
||||
Evolution_ServiceRepository corba_sr;
|
||||
EvolutionServiceRepository *sr;
|
||||
|
||||
/* create the gtk object */
|
||||
sr = gtk_type_new (evolution_service_repository_get_type ());
|
||||
|
||||
/* create the Corba object */
|
||||
corba_sr = create_evolution_service_repository (
|
||||
BONOBO_OBJECT (sr));
|
||||
|
||||
/* check for an error in the creation of the corba object */
|
||||
if (corba_sr == CORBA_OBJECT_NIL){
|
||||
gtk_object_destroy (GTK_OBJECT (sr));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* construct the object */
|
||||
evolution_service_repository_construct (sr, corba_sr, set_shell_fn, closure);
|
||||
|
||||
return sr;
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
#ifndef _EVOLUTION_SERVICE_REPOSITORY_H
|
||||
#define _EVOLUTION_SERVICE_REPOSITORY_H 1
|
||||
|
||||
#include <bonobo/bonobo-object.h>
|
||||
#include "Evolution.h"
|
||||
|
||||
BEGIN_GNOME_DECLS
|
||||
|
||||
#define EVOLUTION_SERVICE_REPOSITORY_TYPE (evolution_service_repository_get_type ())
|
||||
#define EVOLUTION_SERVICE_REPOSITORY(o) (GTK_CHECK_CAST ((o), EVOLUTION_SERVICE_REPOSITORY_TYPE, EvolutionServiceRepository))
|
||||
#define EVOLUTION_SERVICE_REPOSITORY_CLASS(k) (GTK_CHECK_CLASS_CAST((k), EVOLUTION_SERVICE_REPOSITORY_TYPE, EvolutionServiceRepositoryClass))
|
||||
#define EVOLUTION_IS_SERVICE_REPOSITORY(o) (GTK_CHECK_TYPE ((o), EVOLUTION_SERVICE_REPOSITORY_TYPE))
|
||||
#define EVOLUTION_IS_SERVICE_REPOSITORY_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), EVOLUTION_SERVICE_REPOSITORY_TYPE))
|
||||
|
||||
typedef struct _EvolutionServiceRepository EvolutionServiceRepositoryPrivate;
|
||||
typedef struct _EvolutionServiceRepository EvolutionServiceRepository;
|
||||
|
||||
typedef void (*EvolutionServiceRepositorySetShellFn) (EvolutionServiceRepository *sr, const Evolution_Shell shell, void *closure);
|
||||
|
||||
|
||||
struct _EvolutionServiceRepository {
|
||||
BonoboObject object;
|
||||
|
||||
|
||||
EvolutionServiceRepositorySetShellFn set_shell_fn;
|
||||
|
||||
void *closure;
|
||||
|
||||
EvolutionServiceRepositoryPrivate *priv;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
typedef struct {
|
||||
BonoboObjectClass parent_class;
|
||||
|
||||
void (*set_shell) (EvolutionServiceRepository *sr, Evolution_Shell shell);
|
||||
|
||||
} EvolutionServiceRepositoryClass;
|
||||
|
||||
|
||||
|
||||
GtkType evolution_service_repository_get_type (void);
|
||||
|
||||
EvolutionServiceRepository * evolution_service_repository_new (
|
||||
EvolutionServiceRepositorySetShellFn set_shell_fn,
|
||||
void *closure);
|
||||
|
||||
EvolutionServiceRepository * evolution_service_repository_construct (
|
||||
EvolutionServiceRepository *sr,
|
||||
Evolution_ServiceRepository corba_service_repository,
|
||||
EvolutionServiceRepositorySetShellFn set_shell_fn,
|
||||
void *closure);
|
||||
|
||||
|
||||
POA_Evolution_ServiceRepository__epv *evolution_service_repository_get_epv (void);
|
||||
|
||||
extern POA_Evolution_ServiceRepository__vepv evolution_service_repository_vepv;
|
||||
|
||||
END_GNOME_DECLS
|
||||
|
||||
|
||||
#endif /* _EVOLUTION_SERVICE_REPOSITORY_H */
|
||||
|
@ -1,21 +0,0 @@
|
||||
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
|
||||
/*
|
||||
* Component Interface
|
||||
*
|
||||
* Authors:
|
||||
* Bertrand Guiheneuf (bg@aful.org)
|
||||
*
|
||||
* (C) 2000 Helix Code, Inc.
|
||||
*/
|
||||
#include <Bonobo.idl>
|
||||
|
||||
module Evolution {
|
||||
interface ServiceRepository : Bonobo::Unknown {
|
||||
|
||||
void set_shell (in Shell shell);
|
||||
|
||||
|
||||
};
|
||||
};
|
||||
|
Reference in New Issue
Block a user