aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEttore Perazzoli <ettore@src.gnome.org>2000-04-28 12:23:19 +0800
committerEttore Perazzoli <ettore@src.gnome.org>2000-04-28 12:23:19 +0800
commit9483369aa04a5d2c4dc5c0034a3e4431153d9c99 (patch)
treeb52233be1d2618e4af4a919800422774133b4998
parent02ed4a60f394f53de32b10459c959ad6a1f7b887 (diff)
downloadgsoc2013-evolution-9483369aa04a5d2c4dc5c0034a3e4431153d9c99.tar
gsoc2013-evolution-9483369aa04a5d2c4dc5c0034a3e4431153d9c99.tar.gz
gsoc2013-evolution-9483369aa04a5d2c4dc5c0034a3e4431153d9c99.tar.bz2
gsoc2013-evolution-9483369aa04a5d2c4dc5c0034a3e4431153d9c99.tar.lz
gsoc2013-evolution-9483369aa04a5d2c4dc5c0034a3e4431153d9c99.tar.xz
gsoc2013-evolution-9483369aa04a5d2c4dc5c0034a3e4431153d9c99.tar.zst
gsoc2013-evolution-9483369aa04a5d2c4dc5c0034a3e4431153d9c99.zip
Made Evolution OAF-compatible.
svn path=/trunk/; revision=2673
-rw-r--r--ChangeLog8
-rw-r--r--acconfig.h5
-rw-r--r--addressbook/ChangeLog33
-rw-r--r--addressbook/backend/ebook/Makefile.am18
-rw-r--r--addressbook/backend/ebook/e-book-view.c2
-rw-r--r--addressbook/backend/ebook/e-book.c14
-rw-r--r--addressbook/backend/ebook/test-client-list.c17
-rw-r--r--addressbook/backend/ebook/test-client.c32
-rw-r--r--addressbook/backend/pas/pas-book-factory.c86
-rw-r--r--addressbook/ename/Makefile.am8
-rw-r--r--addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in30
-rw-r--r--addressbook/gui/component/GNOME_Evolution_Addressbook.oafinfo30
-rw-r--r--addressbook/gui/component/Makefile.am9
-rw-r--r--addressbook/gui/component/addressbook-factory.c39
-rw-r--r--addressbook/gui/component/addressbook.c14
-rw-r--r--addressbook/gui/component/addressbook.oafinfo30
-rw-r--r--calendar/ChangeLog24
-rw-r--r--calendar/cal-client/cal-client.c14
-rw-r--r--calendar/cal-client/client-test.c36
-rw-r--r--calendar/gui/GNOME_Evolution_Calendar_Control.oaf.in28
-rw-r--r--calendar/gui/GNOME_Evolution_Calendar_Control.oafinfo28
-rw-r--r--calendar/gui/Makefile.am9
-rw-r--r--calendar/gui/calendar-control.oafinfo28
-rw-r--r--calendar/gui/evolution-calendar-control.c33
-rw-r--r--calendar/gui/gnomecal.oafinfo27
-rw-r--r--calendar/gui/main.c26
-rw-r--r--calendar/pcs/cal-factory.h3
-rw-r--r--camel/ChangeLog8
-rw-r--r--camel/providers/pop3/Makefile.am9
-rw-r--r--camel/providers/sendmail/Makefile.am6
-rw-r--r--camel/providers/smtp/Makefile.am9
-rw-r--r--configure.in42
-rw-r--r--e-util/ename/Makefile.am8
-rw-r--r--mail/ChangeLog24
-rw-r--r--mail/GNOME_Evolution_Mail.oaf.in28
-rw-r--r--mail/GNOME_Evolution_Mail.oafinfo28
-rw-r--r--mail/Makefile.am14
-rw-r--r--mail/evolution-mail.oafinfo28
-rw-r--r--mail/folder-browser-factory.c13
-rw-r--r--mail/main.c35
-rw-r--r--mail/test-mail.c46
-rw-r--r--shell/ChangeLog13
-rw-r--r--shell/e-shell-view.c30
-rw-r--r--shell/main.c37
-rw-r--r--wombat/ChangeLog11
-rw-r--r--wombat/GNOME_Evolution_Wombat.oaf.in30
-rw-r--r--wombat/GNOME_Evolution_Wombat.oafinfo30
-rw-r--r--wombat/Makefile.am9
-rw-r--r--wombat/wombat.c127
-rw-r--r--wombat/wombat.oafinfo30
50 files changed, 1066 insertions, 180 deletions
diff --git a/ChangeLog b/ChangeLog
index 116493cebf..c71971f004 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2000-04-27 Ettore Perazzoli <ettore@helixcode.com>
+
+ * acconfig.h: New configured #define `USING_OAF'.
+
+ * configure.in: Added `--enable-oaf' option and corresponding
+ `OAF_LIBS' and `OAF_FLAGS' variables. Code friendly provided by
+ Maciej Stachowiak <mjs@eazel.com>.
+
2000-04-27 NotZed <NotZed@HelixCode.com>
* tests/test10.c: Fix for removal of camelmimebodypart, and changes
diff --git a/acconfig.h b/acconfig.h
index 8bb80e1307..e0a4419a23 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -12,8 +12,9 @@
#undef SENDMAIL_PATH
#undef SYSTEM_MAIL_DIR
#undef HAVE_LDAP
+#undef HAVE_TIMEZONE
+#undef HAVE_TM_GMTOFF
+#undef USING_OAF
/* Define this if you want to build against the development gtk */
#undef HAVE_DEVGTK
-#undef HAVE_TIMEZONE
-#undef HAVE_TM_GMTOFF
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index 9d84cc1100..e197a8ae11 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,36 @@
+2000-04-27 Ettore Perazzoli <ettore@helixcode.com>
+
+ * ename/Makefile.am
+ (gnome_libs): Use `BONOBO_GNOME_LIBS'.
+ (INCLUDES): Add `-I$(srcdir)/..'.
+
+ * backend/pas/pas-book-factory.c
+ (register_factory): New function to register the factory.
+ Implementation different according to `USING_OAF'.
+ (pas_book_factory_activate): Use `register_factory()'.
+
+ * gui/component/addressbook.c: New #define `CONTROL_FACTORY_ID',
+ varying depending on whether we are `USING_OAF'.
+ (addressbook_factory_init): Use `CONTROL_FACTORY_ID'.
+
+ * backend/ebook/test-client.c (init_corba): New function,
+ implemented differently according to the `USING_OAF' #define.
+
+ * backend/ebook/e-book.c: New #define `CARDSERVER_OAF_ID'.
+ (e_book_construct): Work with OAF #if `USING_OAF'.
+
+ * backend/ebook/Makefile.am (gnome_libs): Removed.
+ (corbadir): Removed.
+ (ebook_libs): Removed.
+ (test_client_LDADD): Just add `libebook.la'.
+ (test_card_LDADD): Likewise.
+ (test_client_list_LDADD): Likewise.
+
+ * gui/component/addressbook-factory.c
+ (init_corba): New helper function, implemented differently
+ according to `USING_OAF'.
+ (main): Call `init_corba()'.
+
2000-04-27 Christopher James Lahey <clahey@helixcode.com>
* backend/ebook/e-card.c, backend/ebook/e-card.h: Added file as,
diff --git a/addressbook/backend/ebook/Makefile.am b/addressbook/backend/ebook/Makefile.am
index 3dfe72fec4..dd213e1ab7 100644
--- a/addressbook/backend/ebook/Makefile.am
+++ b/addressbook/backend/ebook/Makefile.am
@@ -1,7 +1,5 @@
noinst_PROGRAMS = test-card test-client test-client-list
-corbadir = $(sysconfdir)/CORBA/servers
-
CORBA_SOURCE = \
addressbook.h \
addressbook-common.c \
@@ -24,16 +22,6 @@ INCLUDES = \
-I$(top_builddir)/addressbook/backend \
$(BONOBO_GNOME_CFLAGS)
-gnome_libs = \
- $(GNOME_LIBDIR) \
- $(GNOMEUI_LIBS) \
- $(GNOMEGNORBA_LIBS) \
- $(INTLLIBS)
-
-ebook_libs = \
- libebook.la \
- $(gnome_libs)
-
lib_LTLIBRARIES = libebook.la
libebook_la_SOURCES = \
@@ -65,24 +53,24 @@ test_client_SOURCES = \
test-client.c
test_client_LDADD = \
+ libebook.la \
$(BONOBO_GNOME_LIBS) \
- $(ebook_libs) \
$(top_builddir)/libversit/libversit.la
test_client_list_SOURCES = \
test-client-list.c
test_client_list_LDADD = \
+ libebook.la \
$(BONOBO_GNOME_LIBS) \
- $(ebook_libs) \
$(top_builddir)/libversit/libversit.la
test_card_SOURCES = \
test-card.c
test_card_LDADD = \
+ libebook.la \
$(BONOBO_GNOME_LIBS) \
- $(ebook_libs) \
$(top_builddir)/libversit/libversit.la
BUILT_SOURCES = $(CORBA_SOURCE)
diff --git a/addressbook/backend/ebook/e-book-view.c b/addressbook/backend/ebook/e-book-view.c
index db7e1b9e67..65a90b8ede 100644
--- a/addressbook/backend/ebook/e-book-view.c
+++ b/addressbook/backend/ebook/e-book-view.c
@@ -9,9 +9,9 @@
*/
#include <config.h>
-#include <libgnorba/gnorba.h>
#include <gtk/gtksignal.h>
#include <gtk/gtkmarshal.h>
+
#include "addressbook.h"
#include "e-card-cursor.h"
#include "e-book-view-listener.h"
diff --git a/addressbook/backend/ebook/e-book.c b/addressbook/backend/ebook/e-book.c
index 1b6411ae0a..e3301233a6 100644
--- a/addressbook/backend/ebook/e-book.c
+++ b/addressbook/backend/ebook/e-book.c
@@ -9,9 +9,9 @@
*/
#include <config.h>
-#include <libgnorba/gnorba.h>
#include <gtk/gtksignal.h>
#include <gtk/gtkmarshal.h>
+
#include "addressbook.h"
#include "e-card-cursor.h"
#include "e-book-listener.h"
@@ -19,7 +19,13 @@
GtkObjectClass *e_book_parent_class;
+#ifdef USING_OAF
+#include <liboaf/liboaf.h>
+#define CARDSERVER_OAF_ID "OAFIID:evolution:addressbook-server:0fbc844d-c721-4615-98d0-d67eacf42d80"
+#else
+#include <libgnorba/gnorba.h>
#define CARDSERVER_GOAD_ID "evolution:addressbook-server"
+#endif
typedef enum {
URINotLoaded,
@@ -426,8 +432,14 @@ e_book_construct (EBook *book)
/*
* Connect to the Personal Addressbook Server.
*/
+
+#ifdef USING_OAF
+ book->priv->book_factory = (Evolution_BookFactory)
+ oaf_activate_from_id (CARDSERVER_OAF_ID, 0, NULL, NULL);
+#else
book->priv->book_factory = (Evolution_BookFactory)
goad_server_activate_with_id (NULL, CARDSERVER_GOAD_ID, 0, NULL);
+#endif
if (book->priv->book_factory == CORBA_OBJECT_NIL) {
g_warning ("e_book_construct: Could not obtain a handle "
diff --git a/addressbook/backend/ebook/test-client-list.c b/addressbook/backend/ebook/test-client-list.c
index eaa6e41c94..e492323310 100644
--- a/addressbook/backend/ebook/test-client-list.c
+++ b/addressbook/backend/ebook/test-client-list.c
@@ -2,26 +2,31 @@
#include <config.h>
#include <bonobo.h>
#include <gnome.h>
+
+#ifdef USING_OAF
+#include <liboaf/liboaf.h>
+#else
#include <libgnorba/gnorba.h>
+#endif
#include "e-book.h"
CORBA_Environment ev;
-CORBA_ORB orb;
static void
init_bonobo (int argc, char **argv)
{
-
+#ifdef USING_OAF
+ gnome_init ("blah", "0.0", argc, argv);
+ oaf_init (argc, argv);
+#else
gnome_CORBA_init_with_popt_table (
"blah", "0.0",
&argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev);
+#endif
- orb = gnome_CORBA_ORB ();
-
- if (bonobo_init (orb, NULL, NULL) == FALSE)
+ if (bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE)
g_error (_("Could not initialize Bonobo"));
-
}
static void
diff --git a/addressbook/backend/ebook/test-client.c b/addressbook/backend/ebook/test-client.c
index 15c5410146..ef13c1ab96 100644
--- a/addressbook/backend/ebook/test-client.c
+++ b/addressbook/backend/ebook/test-client.c
@@ -2,7 +2,6 @@
#include <config.h>
#include <bonobo.h>
#include <gnome.h>
-#include <libgnorba/gnorba.h>
#include <e-book.h>
@@ -31,22 +30,39 @@
"
static CORBA_Environment ev;
-static CORBA_ORB orb;
static char *cardstr;
+#ifdef USING_OAF
+
+#include <liboaf/liboaf.h>
+
static void
-init_bonobo (int argc, char **argv)
+init_corba (int *argc, char **argv)
{
+ gnome_init_with_popt_table("blah", "0.0", *argc, argv, NULL, 0, NULL);
+
+ oaf_init (*argc, argv);
+}
+
+#else
+
+#include <libgnorba/gnorba.h>
+static void
+init_corba (int *argc, char **argv)
+{
gnome_CORBA_init_with_popt_table (
"blah", "0.0",
- &argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev);
+ argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev);
+}
- orb = gnome_CORBA_ORB ();
+#endif
- if (bonobo_init (orb, NULL, NULL) == FALSE)
+static void
+init_bonobo (int argc, char **argv)
+{
+ if (bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE)
g_error (_("Could not initialize Bonobo"));
-
}
static void
@@ -155,6 +171,8 @@ main (int argc, char **argv)
{
CORBA_exception_init (&ev);
+
+ init_corba (&argc, argv);
init_bonobo (argc, argv);
cardstr = NULL;
diff --git a/addressbook/backend/pas/pas-book-factory.c b/addressbook/backend/pas/pas-book-factory.c
index 6542ffc48b..651f17523d 100644
--- a/addressbook/backend/pas/pas-book-factory.c
+++ b/addressbook/backend/pas/pas-book-factory.c
@@ -8,11 +8,17 @@
#include <config.h>
#include <ctype.h>
-#include <libgnorba/gnorba.h>
+
#include "addressbook.h"
#include "pas-book-factory.h"
+#ifdef USING_OAF
+#include <liboaf/liboaf.h>
+#define PAS_BOOK_FACTORY_OAF_ID "OAFIID:evolution:addressbook-server:0fbc844d-c721-4615-98d0-d67eacf42d80"
+#else
+#include <libgnorba/gnorba.h>
#define PAS_BOOK_FACTORY_GOAD_ID "evolution:addressbook-server"
+#endif
static BonoboObjectClass *pas_book_factory_parent_class;
POA_Evolution_BookFactory__vepv pas_book_factory_vepv;
@@ -301,25 +307,43 @@ pas_book_factory_new (void)
return factory;
}
-/**
- * pas_book_factory_activate:
- */
-void
-pas_book_factory_activate (PASBookFactory *factory)
+#ifdef USING_OAF
+
+static gboolean
+register_factory (CORBA_Object obj)
{
- CORBA_Environment ev;
- int ret;
+ OAF_RegistrationResult result;
- g_return_if_fail (factory != NULL);
- g_return_if_fail (PAS_IS_BOOK_FACTORY (factory));
+ puts ("about to register addressbook");
+
+ result = oaf_active_server_register (PAS_BOOK_FACTORY_OAF_ID, obj);
+ switch (result) {
+ case OAF_REG_SUCCESS:
+ return TRUE;
+ case OAF_REG_NOT_LISTED:
+ g_message ("Error registering the PAS factory: not listed");
+ return FALSE;
+ case OAF_REG_ALREADY_ACTIVE:
+ g_message ("Error registering the PAS factory: already active");
+ return FALSE;
+ case OAF_REG_ERROR:
+ default:
+ g_message ("Error registering the PAS factory: generic error");
+ return FALSE;
+ }
+}
+
+#else
+
+static gboolean
+register_factory (CORBA_Object obj)
+{
+ CORBA_Environment ev;
CORBA_exception_init (&ev);
+ int ret;
- ret = goad_server_register (
- NULL,
- bonobo_object_corba_objref (BONOBO_OBJECT (factory)),
- PAS_BOOK_FACTORY_GOAD_ID, "server",
- &ev);
+ ret = goad_server_register (NULL, obj, PAS_BOOK_FACTORY_GOAD_ID, "server", &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
g_message ("pas_book_factory_activate: Exception "
@@ -330,22 +354,34 @@ pas_book_factory_activate (PASBookFactory *factory)
CORBA_exception_free (&ev);
- if (ret == -1) {
+ switch (ret) {
+ case 0:
+ return TRUE;
+ case -2:
+ g_message ("pas_book_factory_activate: Another "
+ "PASBookFactory is already running.\n");
+ return FALSE;
+ case -1:
+ default:
g_message ("pas_book_factory_activate: Error "
"registering PASBookFactory!\n");
- return;
+ return FALSE;
}
+}
- if (ret == -2) {
- g_message ("pas_book_factory_activate: Another "
- "PASBookFactory is already running.\n");
- return;
-
- }
+#endif
- return;
-}
+/**
+ * pas_book_factory_activate:
+ */
+void
+pas_book_factory_activate (PASBookFactory *factory)
+{
+ g_return_if_fail (factory != NULL);
+ g_return_if_fail (PAS_IS_BOOK_FACTORY (factory));
+ register_factory (bonobo_object_corba_objref (BONOBO_OBJECT (factory)));
+}
static void
pas_book_factory_init (PASBookFactory *factory)
diff --git a/addressbook/ename/Makefile.am b/addressbook/ename/Makefile.am
index 17a542d9c5..6b63d7dfaf 100644
--- a/addressbook/ename/Makefile.am
+++ b/addressbook/ename/Makefile.am
@@ -1,7 +1,9 @@
INCLUDES = \
-DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
-DG_LOG_DOMAIN=\"EName\" \
- -I$(srcdir) -I$(top_srcdir) \
+ -I$(srcdir) \
+ -I$(srcdir)/.. \
+ -I$(top_srcdir) \
-I. \
-I.. \
-I$(top_builddir) \
@@ -9,9 +11,7 @@ INCLUDES = \
$(GNOME_INCLUDEDIR)
gnome_libs = \
- $(GNOME_LIBDIR) \
- $(GNOMEUI_LIBS) \
- $(GNOMEGNORBA_LIBS) \
+ $(BONOBO_GNOME_LIBS) \
$(INTLLIBS)
ename_libs = \
diff --git a/addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in b/addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in
new file mode 100644
index 0000000000..8f51a1f07a
--- /dev/null
+++ b/addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in
@@ -0,0 +1,30 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:control-factory:addressbook:3e10597b-0591-4d45-b082-d781b7aa6e17"
+ type="exe"
+ location="evolution-addressbook">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:GNOME/GenericFactory:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Factory for the sample Addressbook control"/>
+
+</oaf_server>
+
+<oaf_server iid="OAFIID:control:addressbook:851f883b-2fe7-4c94-a1e3-a1f2a7a03c49"
+ type="factory"
+ location="OAFIID:control-factory:addressbook:3e10597b-0591-4d45-b082-d781b7aa6e17">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:BonoboControl/addressbook-control:1.0"/>
+ <item value="IDL:GNOME/Control:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="A sample Bonobo control which displays an addressbook."/>
+
+</oaf_server>
+
+</oaf_info>
diff --git a/addressbook/gui/component/GNOME_Evolution_Addressbook.oafinfo b/addressbook/gui/component/GNOME_Evolution_Addressbook.oafinfo
new file mode 100644
index 0000000000..8f51a1f07a
--- /dev/null
+++ b/addressbook/gui/component/GNOME_Evolution_Addressbook.oafinfo
@@ -0,0 +1,30 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:control-factory:addressbook:3e10597b-0591-4d45-b082-d781b7aa6e17"
+ type="exe"
+ location="evolution-addressbook">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:GNOME/GenericFactory:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Factory for the sample Addressbook control"/>
+
+</oaf_server>
+
+<oaf_server iid="OAFIID:control:addressbook:851f883b-2fe7-4c94-a1e3-a1f2a7a03c49"
+ type="factory"
+ location="OAFIID:control-factory:addressbook:3e10597b-0591-4d45-b082-d781b7aa6e17">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:BonoboControl/addressbook-control:1.0"/>
+ <item value="IDL:GNOME/Control:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="A sample Bonobo control which displays an addressbook."/>
+
+</oaf_server>
+
+</oaf_info>
diff --git a/addressbook/gui/component/Makefile.am b/addressbook/gui/component/Makefile.am
index c20864912b..9e72319d03 100644
--- a/addressbook/gui/component/Makefile.am
+++ b/addressbook/gui/component/Makefile.am
@@ -35,5 +35,14 @@ evolution_addressbook_LDADD = \
evolution_addressbook_LDFLAGS = `gnome-config --libs gdk_pixbuf`
+if USING_OAF
+oafdir = $(datadir)/oaf
+oaf_DATA = addressbook.oafinfo
+else
gnorbadir = $(sysconfdir)/CORBA/servers
gnorba_DATA = addressbook.gnorba
+endif
+
+EXTRA_DIST = \
+ addressbook.gnorba \
+ addressbook.oafinfo
diff --git a/addressbook/gui/component/addressbook-factory.c b/addressbook/gui/component/addressbook-factory.c
index 83257b1189..aa6214786c 100644
--- a/addressbook/gui/component/addressbook-factory.c
+++ b/addressbook/gui/component/addressbook-factory.c
@@ -10,25 +10,48 @@
#include <config.h>
#include <gnome.h>
-#include <libgnorba/gnorba.h>
#include <bonobo.h>
#include <glade/glade.h>
+
#include "addressbook.h"
-CORBA_Environment ev;
-CORBA_ORB orb;
+#ifdef USING_OAF
+
+#include <liboaf/liboaf.h>
static void
-init_bonobo (int argc, char **argv)
+init_corba (int *argc, char **argv)
{
+ gnome_init_with_popt_table ("evolution-addressbook", "0.0",
+ *argc, argv, oaf_popt_options, 0, NULL);
+
+ oaf_init (*argc, argv);
+}
+
+#else
+
+#include <libgnorba/gnorba.h>
+
+static void
+init_corba (int *argc, char **argv)
+{
+ CORBA_Environment ev;
+
+ CORBA_exception_init (&ev);
gnome_CORBA_init_with_popt_table (
"evolution-addressbook", "0.0",
- &argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev);
+ argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev);
+
+ CORBA_exception_free (&ev);
+}
- orb = gnome_CORBA_ORB ();
+#endif
- if (bonobo_init (orb, NULL, NULL) == FALSE)
+static void
+init_bonobo (int argc, char **argv)
+{
+ if (bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE)
g_error (_("Could not initialize Bonobo"));
glade_gnome_init ();
@@ -37,7 +60,7 @@ init_bonobo (int argc, char **argv)
int
main (int argc, char **argv)
{
- CORBA_exception_init (&ev);
+ init_corba (&argc, argv);
init_bonobo (argc, argv);
diff --git a/addressbook/gui/component/addressbook.c b/addressbook/gui/component/addressbook.c
index bb4b20406f..d634d5a926 100644
--- a/addressbook/gui/component/addressbook.c
+++ b/addressbook/gui/component/addressbook.c
@@ -9,6 +9,7 @@
*/
#include <config.h>
+
#include <gnome.h>
#include <libgnorba/gnorba.h>
#include <bonobo.h>
@@ -20,6 +21,12 @@
#include "e-minicard-view.h"
#include "e-contact-editor.h"
+#ifdef USING_OAF
+#define CONTROL_FACTORY_ID "OAFIID:control-factory:addressbook:3e10597b-0591-4d45-b082-d781b7aa6e17"
+#else
+#define CONTROL_FACTORY_ID "control-factory:addressbook"
+#endif
+
static void
control_deactivate (BonoboControl *control, BonoboUIHandler *uih)
{
@@ -451,10 +458,9 @@ addressbook_factory_init (void)
if (addressbook_control_factory != NULL)
return;
- addressbook_control_factory =
- bonobo_generic_factory_new (
- "control-factory:addressbook",
- addressbook_factory, NULL);
+ addressbook_control_factory = bonobo_generic_factory_new (CONTROL_FACTORY_ID,
+ addressbook_factory,
+ NULL);
if (addressbook_control_factory == NULL) {
g_error ("I could not register a Addressbook factory.");
diff --git a/addressbook/gui/component/addressbook.oafinfo b/addressbook/gui/component/addressbook.oafinfo
new file mode 100644
index 0000000000..8f51a1f07a
--- /dev/null
+++ b/addressbook/gui/component/addressbook.oafinfo
@@ -0,0 +1,30 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:control-factory:addressbook:3e10597b-0591-4d45-b082-d781b7aa6e17"
+ type="exe"
+ location="evolution-addressbook">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:GNOME/GenericFactory:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Factory for the sample Addressbook control"/>
+
+</oaf_server>
+
+<oaf_server iid="OAFIID:control:addressbook:851f883b-2fe7-4c94-a1e3-a1f2a7a03c49"
+ type="factory"
+ location="OAFIID:control-factory:addressbook:3e10597b-0591-4d45-b082-d781b7aa6e17">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:BonoboControl/addressbook-control:1.0"/>
+ <item value="IDL:GNOME/Control:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="A sample Bonobo control which displays an addressbook."/>
+
+</oaf_server>
+
+</oaf_info>
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index 5e5d9c1876..fa05cff137 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,27 @@
+2000-04-27 Ettore Perazzoli <ettore@helixcode.com>
+
+ * gui/evolution-calendar-control.c
+ (init_bonobo): OAFized.
+
+ * gui/main.c (main): Initialize with OAF if `USING_OAF'.
+
+ * gui/evolution-calendar-control.c: New #define
+ `CONTROL_FACTORY_ID', varying according to whether we are
+ `USING_OAF'.
+ (calendar_factory_init): Use `CONTROL_FACTORY_ID'.
+
+ * gui/Makefile.am: Updated for OAF.
+
+ * pcs/cal-factory.h: Explicitly #include
+ "calendar/pcs/evolution-calendar.h" instead of just
+ "evolution-calendar.h".
+
+ * cal-client/cal-client.c (cal_client_construct) [USING_OAF]: Use
+ OAF.
+
+ * cal-client/client-test.c (init_corba): New function, implemented
+ differently depending on `USING_OAF'.
+
2000-04-27 <alves@hungry.com>
* pcs/cal-backend.c (cal_backend_load): fix memory leak
diff --git a/calendar/cal-client/cal-client.c b/calendar/cal-client/cal-client.c
index 34192387b4..bffa12ac65 100644
--- a/calendar/cal-client/cal-client.c
+++ b/calendar/cal-client/cal-client.c
@@ -22,7 +22,13 @@
#include <config.h>
#include <gtk/gtksignal.h>
+
+#ifdef USING_OAF
+#include <liboaf/liboaf.h>
+#else
#include <libgnorba/gnorba.h>
+#endif
+
#include "cal-client.h"
#include "cal-listener.h"
@@ -375,18 +381,24 @@ cal_client_construct (CalClient *client)
CORBA_Environment ev;
int result;
+ CORBA_exception_init (&ev);
g_return_val_if_fail (client != NULL, NULL);
g_return_val_if_fail (IS_CAL_CLIENT (client), NULL);
priv = client->priv;
+#ifdef USING_OAF
+ factory = (Evolution_Calendar_CalFactory) oaf_activate_from_id (
+ "OAFIID:evolution:calendar-factory:1c915858-ece3-4a6f-9d81-ea0f108a9554",
+ OAF_FLAG_NO_LOCAL, NULL, &ev);
+#else
factory = (Evolution_Calendar_CalFactory) goad_server_activate_with_id (
NULL,
"evolution:calendar-factory",
GOAD_ACTIVATE_REMOTE,
NULL);
+#endif
- CORBA_exception_init (&ev);
result = CORBA_Object_is_nil (factory, &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
g_message ("cal_client_construct(): could not see if the factory is NIL");
diff --git a/calendar/cal-client/client-test.c b/calendar/cal-client/client-test.c
index fa8316707d..f4b847eb65 100644
--- a/calendar/cal-client/client-test.c
+++ b/calendar/cal-client/client-test.c
@@ -1,8 +1,7 @@
#include <config.h>
-#include <libgnorba/gnorba.h>
#include <bonobo.h>
+#include <gnome.h>
#include <cal-client/cal-client.h>
-
static CalClient *client1;
static CalClient *client2;
@@ -145,13 +144,25 @@ client_destroy_cb (GtkObject *object, gpointer data)
gtk_main_quit ();
}
-int
-main (int argc, char **argv)
+#ifdef USING_OAF
+
+#include <liboaf/liboaf.h>
+
+static void
+init_corba (int *argc, char **argv)
{
- CORBA_Environment ev;
+ gnome_init ("tl-test", VERSION, *argc, argv);
+ oaf_init (*argc, argv);
+}
- bindtextdomain (PACKAGE, GNOMELOCALEDIR);
- textdomain (PACKAGE);
+#else
+
+#include <libgnorba/gnorba.h>
+
+static void
+init_corba (int *argc, char **argv)
+{
+ CORBA_Environment ev;
CORBA_exception_init (&ev);
gnome_CORBA_init ("tl-test", VERSION, &argc, argv, 0, &ev);
@@ -161,6 +172,17 @@ main (int argc, char **argv)
exit (1);
}
CORBA_exception_free (&ev);
+}
+
+#endif
+
+int
+main (int argc, char **argv)
+{
+ bindtextdomain (PACKAGE, GNOMELOCALEDIR);
+ textdomain (PACKAGE);
+
+ init_corba (&argc, argv);
if (!bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL)) {
g_message ("main(): could not initialize Bonobo");
diff --git a/calendar/gui/GNOME_Evolution_Calendar_Control.oaf.in b/calendar/gui/GNOME_Evolution_Calendar_Control.oaf.in
new file mode 100644
index 0000000000..fb0f138caf
--- /dev/null
+++ b/calendar/gui/GNOME_Evolution_Calendar_Control.oaf.in
@@ -0,0 +1,28 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:control-factory:calendar:f4f90989-0f50-4af2-ad94-8bbdf331f0bc"
+ type="exe"
+ location="evolution-calendar">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:Bonobo/GenericFactory:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Factory for the sample Calendar control"/>
+</oaf_server>
+
+<oaf_server iid="OAFIID:control:calendar:dd34ddae-25c6-486b-a8a8-3e8f0286b54c"
+ type="factory"
+ location="OAFIID:control-factory:calendar:f4f90989-0f50-4af2-ad94-8bbdf331f0bc">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:BonoboControl/calendar-control:1.0"/>
+ <item value="IDL:Bonobo/Control:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="A sample Bonobo control which displays an calendar."/>
+</oaf_server>
+
+</oaf_info>
diff --git a/calendar/gui/GNOME_Evolution_Calendar_Control.oafinfo b/calendar/gui/GNOME_Evolution_Calendar_Control.oafinfo
new file mode 100644
index 0000000000..fb0f138caf
--- /dev/null
+++ b/calendar/gui/GNOME_Evolution_Calendar_Control.oafinfo
@@ -0,0 +1,28 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:control-factory:calendar:f4f90989-0f50-4af2-ad94-8bbdf331f0bc"
+ type="exe"
+ location="evolution-calendar">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:Bonobo/GenericFactory:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Factory for the sample Calendar control"/>
+</oaf_server>
+
+<oaf_server iid="OAFIID:control:calendar:dd34ddae-25c6-486b-a8a8-3e8f0286b54c"
+ type="factory"
+ location="OAFIID:control-factory:calendar:f4f90989-0f50-4af2-ad94-8bbdf331f0bc">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:BonoboControl/calendar-control:1.0"/>
+ <item value="IDL:Bonobo/Control:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="A sample Bonobo control which displays an calendar."/>
+</oaf_server>
+
+</oaf_info>
diff --git a/calendar/gui/Makefile.am b/calendar/gui/Makefile.am
index 07e8ca1531..fa15a9286e 100644
--- a/calendar/gui/Makefile.am
+++ b/calendar/gui/Makefile.am
@@ -81,8 +81,17 @@ evolution_calendar_LDADD = \
evolution_calendar_LDFLAGS = `gnome-config --libs gdk_pixbuf`
+if USING_OAF
+oafdir = $(datadir)/oaf
+oaf_DATA = calendar-control.oafinfo
+else
gnorbadir = $(sysconfdir)/CORBA/servers
gnorba_DATA = calendar-control.gnorba
+endif
+
+EXTRA_DIST = \
+ calendar-control.gnorba \
+ calendar-control.oafinfo
#calendar_pilot_sync_SOURCES = \
# GnomeCal-common.c \
diff --git a/calendar/gui/calendar-control.oafinfo b/calendar/gui/calendar-control.oafinfo
new file mode 100644
index 0000000000..fb0f138caf
--- /dev/null
+++ b/calendar/gui/calendar-control.oafinfo
@@ -0,0 +1,28 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:control-factory:calendar:f4f90989-0f50-4af2-ad94-8bbdf331f0bc"
+ type="exe"
+ location="evolution-calendar">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:Bonobo/GenericFactory:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Factory for the sample Calendar control"/>
+</oaf_server>
+
+<oaf_server iid="OAFIID:control:calendar:dd34ddae-25c6-486b-a8a8-3e8f0286b54c"
+ type="factory"
+ location="OAFIID:control-factory:calendar:f4f90989-0f50-4af2-ad94-8bbdf331f0bc">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:BonoboControl/calendar-control:1.0"/>
+ <item value="IDL:Bonobo/Control:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="A sample Bonobo control which displays an calendar."/>
+</oaf_server>
+
+</oaf_info>
diff --git a/calendar/gui/evolution-calendar-control.c b/calendar/gui/evolution-calendar-control.c
index c8c419d471..54ac148889 100644
--- a/calendar/gui/evolution-calendar-control.c
+++ b/calendar/gui/evolution-calendar-control.c
@@ -2,10 +2,14 @@
#include <config.h>
#include <gnome.h>
-#include <libgnorba/gnorba.h>
#include <bonobo.h>
#include <bonobo/bonobo-control.h>
+#ifdef USING_OAF
+#include <liboaf/liboaf.h>
+#else
+#include <libgnorba/gnorba.h>
+#endif
#include <cal-util/timeutil.h>
#include <gui/alarm.h>
@@ -17,6 +21,11 @@
#define PROPERTY_CALENDAR_URI_IDX 1
+#ifdef USING_OAF
+#define CONTROL_FACTORY_ID "OAFIID:control-factory:calendar:f4f90989-0f50-4af2-ad94-8bbdf331f0bc"
+#else
+#define CONTROL_FACTORY_ID "control-factory:calendar"
+#endif
CORBA_Environment ev;
CORBA_ORB orb;
@@ -36,15 +45,21 @@ control_activate_cb (BonoboControl *control,
static void
-init_bonobo (int argc, char **argv)
+init_bonobo (int *argc, char **argv)
{
+#ifdef USING_OAF
+ /* FIXME: VERSION instead of "0.0". */
+ gnome_init_with_popt_table ("evolution-calendar", "0.0",
+ *argc, argv, oaf_popt_options,
+ 0, NULL);
+ oaf_init (*argc, argv);
+#else
gnome_CORBA_init_with_popt_table (
"evolution-calendar", "0.0",
- &argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev);
+ argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev);
+#endif
- orb = gnome_CORBA_ORB ();
-
- if (bonobo_init (orb, NULL, NULL) == FALSE)
+ if (bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE)
g_error (_("Could not initialize Bonobo"));
}
@@ -144,8 +159,10 @@ calendar_factory_init (void)
if (calendar_control_factory != NULL)
return;
+ puts ("XXXXXX - initializing calendar factory!!!");
+
calendar_control_factory =
- bonobo_generic_factory_new ("control-factory:calendar",
+ bonobo_generic_factory_new (CONTROL_FACTORY_ID,
calendar_factory, NULL);
if (calendar_control_factory == NULL) {
@@ -164,7 +181,7 @@ main (int argc, char **argv)
CORBA_exception_init (&ev);
- init_bonobo (argc, argv);
+ init_bonobo (&argc, argv);
calendar_factory_init ();
diff --git a/calendar/gui/gnomecal.oafinfo b/calendar/gui/gnomecal.oafinfo
new file mode 100644
index 0000000000..c4b91b9dd8
--- /dev/null
+++ b/calendar/gui/gnomecal.oafinfo
@@ -0,0 +1,27 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:IDL:GNOME:Calendar:Repository:1.0:56989bb6-65a1-430c-86a8-81bbe64bf7ab"
+ type="factory"
+ location="OAFIID:IDL:GNOME:Calendar:RepositoryLocator:1.0:83b25bb0-b68b-4c6b-86e7-c303e9897c21">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:Gnome/Calendar/Repository:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Calendar Repository"/>
+</oaf_server>
+
+<oaf_server iid="OAFIID:IDL:GNOME:Calendar:RepositoryLocator:1.0:83b25bb0-b68b-4c6b-86e7-c303e9897c21"
+ type="exe"
+ location="gnomecal">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:GNOME/GenericFactory:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Calendar Server"/>
+</oaf_server>
+
+</oaf_info>
diff --git a/calendar/gui/main.c b/calendar/gui/main.c
index 904868513e..46f4c31e3e 100644
--- a/calendar/gui/main.c
+++ b/calendar/gui/main.c
@@ -9,6 +9,7 @@
*/
#include <config.h>
+
#include <pwd.h>
#include <unistd.h>
#include <sys/types.h>
@@ -325,22 +326,31 @@ int
main (int argc, char **argv)
{
GnomeClient *client;
- CORBA_Environment ev;
GtkWidget *cal_window;
GnomeCalendar *cal_frame;
bindtextdomain (PACKAGE, GNOMELOCALEDIR);
textdomain (PACKAGE);
- CORBA_exception_init (&ev);
- gnome_CORBA_init_with_popt_table ("calendar", VERSION, &argc, argv,
- options, 0, NULL, 0, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("main(): could not initialize the ORB");
+#ifdef USING_OAF
+ gnome_init_with_popt_table ("calendar", VERSION, argc, argv, oaf_popt_options,
+ 0, NULL);
+ oaf_init (argc, argv);
+#else
+ {
+ CORBA_Environment ev;
+
+ CORBA_exception_init (&ev);
+ gnome_CORBA_init_with_popt_table ("calendar", VERSION, &argc, argv,
+ options, 0, NULL, 0, &ev);
+ if (ev._major != CORBA_NO_EXCEPTION) {
+ g_message ("main(): could not initialize the ORB");
+ CORBA_exception_free (&ev);
+ exit (EXIT_FAILURE);
+ }
CORBA_exception_free (&ev);
- exit (EXIT_FAILURE);
}
- CORBA_exception_free (&ev);
+#endif
if (!bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL)) {
g_message ("main(): could not initialize Bonobo");
diff --git a/calendar/pcs/cal-factory.h b/calendar/pcs/cal-factory.h
index 85435e45ae..03b2cc8dc3 100644
--- a/calendar/pcs/cal-factory.h
+++ b/calendar/pcs/cal-factory.h
@@ -24,7 +24,8 @@
#include <libgnome/gnome-defs.h>
#include <bonobo/bonobo-object.h>
-#include "evolution-calendar.h"
+
+#include "calendar/pcs/evolution-calendar.h"
BEGIN_GNOME_DECLS
diff --git a/camel/ChangeLog b/camel/ChangeLog
index e6d7a081a3..65aef6ccc4 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,3 +1,11 @@
+2000-04-27 Ettore Perazzoli <ettore@helixcode.com>
+
+ * providers/pop3/Makefile.am (INCLUDES): Add `-I$(srcdir)/../../..'
+ to pick the Camel includes.
+ * providers/sendmail/Makefile.am (INCLUDES): Likewise.
+
+ * camel.h: Don't #include <camel/data-wrapper-repository.h> anymore.
+
2000-04-27 NotZed <NotZed@HelixCode.com>
* camel-mime-utils.c (check_header): Dont try and check a NULL
diff --git a/camel/providers/pop3/Makefile.am b/camel/providers/pop3/Makefile.am
index c587983ffc..202320b3f0 100644
--- a/camel/providers/pop3/Makefile.am
+++ b/camel/providers/pop3/Makefile.am
@@ -8,9 +8,14 @@ providerdir = $(pkglibdir)/camel-providers/$(VERSION)
provider_LTLIBRARIES = libcamelpop3.la
-INCLUDES = -I.. -I$(srcdir)/.. -I$(includedir) \
+INCLUDES = \
+ -I.. \
+ -I$(srcdir)/.. \
+ -I$(srcdir)/../../.. \
+ -I$(includedir) \
-I$(top_srcdir)/intl \
- $(GTK_INCLUDEDIR) -I$(top_srcdir)/camel \
+ $(GTK_INCLUDEDIR) \
+ -I$(top_srcdir)/camel \
-I$(srcdir)/../mbox
libcamelpop3_la_SOURCES = \
diff --git a/camel/providers/sendmail/Makefile.am b/camel/providers/sendmail/Makefile.am
index aada24aee7..9c9c3f356b 100644
--- a/camel/providers/sendmail/Makefile.am
+++ b/camel/providers/sendmail/Makefile.am
@@ -9,7 +9,11 @@ providerdir = $(pkglibdir)/camel-providers/$(VERSION)
provider_LTLIBRARIES = libcamelsendmail.la
-INCLUDES = -I.. -I$(srcdir)/.. -I$(includedir) \
+INCLUDES = \
+ -I.. \
+ -I$(srcdir)/.. \
+ -I$(srcdir)/../../.. \
+ -I$(includedir) \
-I$(top_srcdir)/intl \
$(GTK_INCLUDEDIR) -I$(top_srcdir)/camel
diff --git a/camel/providers/smtp/Makefile.am b/camel/providers/smtp/Makefile.am
index 25ee71b3c0..dee3a50abb 100644
--- a/camel/providers/smtp/Makefile.am
+++ b/camel/providers/smtp/Makefile.am
@@ -8,9 +8,14 @@ providerdir = $(pkglibdir)/camel-providers/$(VERSION)
provider_LTLIBRARIES = libcamelsmtp.la
-INCLUDES = -I.. -I$(srcdir)/.. -I$(includedir) \
+INCLUDES = \
+ -I.. \
+ -I$(srcdir)/.. \
+ -I$(srcdir)/../../.. \
+ -I$(includedir) \
-I$(top_srcdir)/intl \
- $(GTK_INCLUDEDIR) -I$(top_srcdir)/camel
+ $(GTK_INCLUDEDIR) \
+ -I$(top_srcdir)/camel
libcamelsmtp_la_SOURCES = \
camel-smtp-provider.c \
diff --git a/configure.in b/configure.in
index 1c54b13b4e..f58fc88426 100644
--- a/configure.in
+++ b/configure.in
@@ -166,6 +166,7 @@ dnl ******************************
AC_MSG_CHECKING(for Bonobo > 0.5)
if gnome-config --libs bonobo > /dev/null 2>&1; then
vers=`gnome-config --modversion bonobo`
+ echo $vers
case $vers
in
bonobo-0.[[012345]]) bonobo_ok=false ;;
@@ -299,7 +300,7 @@ AC_SUBST(BONOBO_VFS_GNOME_CFLAGS)
dnl ******************************
dnl Pilot checking
dnl ******************************
-GNOME_PILOT_CHECK
+dnl GNOME_PILOT_CHECK
dnl ******
@@ -321,7 +322,44 @@ AC_DEFINE_UNQUOTED(CAMEL_HARD_LOG_LEVEL, $camel_hard_log_level)
AC_CONFIG_SUBDIRS(libical)
AC_SUBST(CAPPLET_LIBS)
-
+
+dnl ******************************
+dnl Whether to use OAF
+dnl ******************************
+
+AC_ARG_ENABLE(oaf,
+ [ --enable-oaf=[no/yes] Use OAF instead of GOAD.],,enable_oaf=no)
+
+if test "x$enable_oaf" = "xyes"; then
+ AC_PATH_PROG(OAF_CONFIG,oaf-config,no)
+ if test x$OAF_CONFIG = xno; then
+ AC_MSG_ERROR("You enabled OAF support but oaf-config was not found")
+ else
+ OAF_LIBS=`$OAF_CONFIG --libs`
+ OAF_CFLAGS=`$OAF_CONFIG --cflags`
+ GNORBA_LIBNAME=
+ fi
+else
+ OAF_LIBS=
+ OAF_CFLAGS=
+ GNORBA_LIBNAME=gnorba
+fi
+
+AC_SUBST(OAF_LIBS)
+AC_SUBST(OAF_CFLAGS)
+
+AM_CONDITIONAL(USING_OAF, test "x$enable_oaf" = "xyes")
+
+if test "x$enable_oaf" = "xyes"; then
+ AC_DEFINE(USING_OAF)
+ BONOBO_GNOME_LIBS="`oaf-config --libs` $BONOBO_GNOME_LIBS"
+ BONOBO_GNOME_CFLAGS="`oaf-config --cflags ` $BONOBO_GNOME_CFLAGS"
+fi
+
+dnl ******************************
+dnl Makefiles
+dnl ******************************
+
AC_OUTPUT([
Makefile
macros/Makefile
diff --git a/e-util/ename/Makefile.am b/e-util/ename/Makefile.am
index 17a542d9c5..6b63d7dfaf 100644
--- a/e-util/ename/Makefile.am
+++ b/e-util/ename/Makefile.am
@@ -1,7 +1,9 @@
INCLUDES = \
-DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
-DG_LOG_DOMAIN=\"EName\" \
- -I$(srcdir) -I$(top_srcdir) \
+ -I$(srcdir) \
+ -I$(srcdir)/.. \
+ -I$(top_srcdir) \
-I. \
-I.. \
-I$(top_builddir) \
@@ -9,9 +11,7 @@ INCLUDES = \
$(GNOME_INCLUDEDIR)
gnome_libs = \
- $(GNOME_LIBDIR) \
- $(GNOMEUI_LIBS) \
- $(GNOMEGNORBA_LIBS) \
+ $(BONOBO_GNOME_LIBS) \
$(INTLLIBS)
ename_libs = \
diff --git a/mail/ChangeLog b/mail/ChangeLog
index af7b74ab6c..b119e9a18e 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,27 @@
+2000-04-27 Ettore Perazzoli <ettore@helixcode.com>
+
+ * folder-browser-factory.c: New macro `CONTROL_FACTORY_ID', which
+ is #defined to a different value according to whether we are
+ `USING_OAF' or not.
+ (folder_browser_factory_init): Use `CONTROL_FACTORY_ID'.
+
+ * test-mail.c
+ (init_corba): New helper function, implemented differently
+ according to `USING_OAF'.
+ (main): Use `init_corba()'.
+
+ * main.c
+ (init_corba): New helper function, implemented differently
+ according to `USING_OAF'.
+ (init_bonobo): Use `init_corba()'.
+
+ * Makefile.am: Install OAF stuff if `USING_OAF'. Add
+ `-I$(datadir)/idl' to the `orbit-idl' command-line so that we can
+ use Bonobo IDL files installed under our prefix as well. Also,
+ use `$(ORBIT_IDL)' instead of hardcoded `orbit-idl'.
+
+ * evolution-mail.oafinfo: New file.
+
2000-04-27 Dan Winship <danw@helixcode.com>
* mail-format.c: Move text_to_html to e-util.
diff --git a/mail/GNOME_Evolution_Mail.oaf.in b/mail/GNOME_Evolution_Mail.oaf.in
new file mode 100644
index 0000000000..6c284ece5c
--- /dev/null
+++ b/mail/GNOME_Evolution_Mail.oaf.in
@@ -0,0 +1,28 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:control-factory:evolution-mail:25902062-543b-4f44-8702-d90145fcdbf2"
+ type="exe"
+ location="evolution-mail">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:GNOME/GenericFactory:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Evolution mail folder factory component."/>
+</oaf_server>
+
+<oaf_server iid="OAFIID:control:evolution-mail:833d5a71-a201-4a0e-b7e6-5475c5c4cb45"
+ type="factory"
+ location="OAFIID:control-factory:evolution-mail:25902062-543b-4f44-8702-d90145fcdbf2">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:BonoboControl/evolution-mail:1.0"/>
+ <item value="IDL:GNOME/Control:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Evolution mail folder display component."/>
+</oaf_server>
+
+</oaf_info>
diff --git a/mail/GNOME_Evolution_Mail.oafinfo b/mail/GNOME_Evolution_Mail.oafinfo
new file mode 100644
index 0000000000..6c284ece5c
--- /dev/null
+++ b/mail/GNOME_Evolution_Mail.oafinfo
@@ -0,0 +1,28 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:control-factory:evolution-mail:25902062-543b-4f44-8702-d90145fcdbf2"
+ type="exe"
+ location="evolution-mail">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:GNOME/GenericFactory:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Evolution mail folder factory component."/>
+</oaf_server>
+
+<oaf_server iid="OAFIID:control:evolution-mail:833d5a71-a201-4a0e-b7e6-5475c5c4cb45"
+ type="factory"
+ location="OAFIID:control-factory:evolution-mail:25902062-543b-4f44-8702-d90145fcdbf2">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:BonoboControl/evolution-mail:1.0"/>
+ <item value="IDL:GNOME/Control:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Evolution mail folder display component."/>
+</oaf_server>
+
+</oaf_info>
diff --git a/mail/Makefile.am b/mail/Makefile.am
index 4c2193330f..283333d2a4 100644
--- a/mail/Makefile.am
+++ b/mail/Makefile.am
@@ -63,13 +63,21 @@ test_mail_LDADD = \
$(BONOBO_HTML_GNOME_LIBS)
+GOAD_FILES = evolution-mail.gnorba
+OAF_FILES = evolution-mail.oafinfo
+
+if USING_OAF
+oafdir = $(datadir)/oaf
+oaf_DATA = $(OAF_FILES)
+else
gnorbadir = $(sysconfdir)/CORBA/servers
-gnorba_DATA = evolution-mail.gnorba
+gnorba_DATA = $(GOAD_FILES)
+endif
$(EVOLUTION_MAIL_CORBA_GENERATED): Mail.idl
- orbit-idl -I`$(GNOME_CONFIG) --datadir`/idl -I$(srcdir) $(srcdir)/Mail.idl
+ $(ORBIT_IDL) -I$(datadir)/idl -I`$(GNOME_CONFIG) --datadir`/idl -I$(srcdir) $(srcdir)/Mail.idl
-EXTRA_DIST = Mail.idl evolution-mail.gnorba
+EXTRA_DIST = Mail.idl $(GOAD_FILES) $(OAF_FILES)
dist-hook:
-mkdir $(distdir)/pixmaps
diff --git a/mail/evolution-mail.oafinfo b/mail/evolution-mail.oafinfo
new file mode 100644
index 0000000000..6c284ece5c
--- /dev/null
+++ b/mail/evolution-mail.oafinfo
@@ -0,0 +1,28 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:control-factory:evolution-mail:25902062-543b-4f44-8702-d90145fcdbf2"
+ type="exe"
+ location="evolution-mail">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:GNOME/GenericFactory:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Evolution mail folder factory component."/>
+</oaf_server>
+
+<oaf_server iid="OAFIID:control:evolution-mail:833d5a71-a201-4a0e-b7e6-5475c5c4cb45"
+ type="factory"
+ location="OAFIID:control-factory:evolution-mail:25902062-543b-4f44-8702-d90145fcdbf2">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:BonoboControl/evolution-mail:1.0"/>
+ <item value="IDL:GNOME/Control:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="Evolution mail folder display component."/>
+</oaf_server>
+
+</oaf_info>
diff --git a/mail/folder-browser-factory.c b/mail/folder-browser-factory.c
index 0f438a7118..a485df29d9 100644
--- a/mail/folder-browser-factory.c
+++ b/mail/folder-browser-factory.c
@@ -23,6 +23,11 @@
#include <camel/camel-stream-fs.h>
#include "mail-ops.h"
+#ifdef USING_OAF
+#define CONTROL_FACTORY_ID "OAFIID:control-factory:evolution-mail:25902062-543b-4f44-8702-d90145fcdbf2"
+#else
+#define CONTROL_FACTORY_ID "control-factory:evolution-mail"
+#endif
static void
folder_browser_set_shell (EvolutionServiceRepository *sr,
@@ -252,14 +257,12 @@ folder_browser_factory_init (void)
{
static BonoboGenericFactory *bonobo_folder_browser_factory = NULL;
-
if (bonobo_folder_browser_factory != NULL)
return;
- bonobo_folder_browser_factory =
- bonobo_generic_factory_new (
- "control-factory:evolution-mail",
- folder_browser_factory, NULL);
+ bonobo_folder_browser_factory = bonobo_generic_factory_new (CONTROL_FACTORY_ID,
+ folder_browser_factory,
+ NULL);
if (bonobo_folder_browser_factory == NULL){
e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
diff --git a/mail/main.c b/mail/main.c
index 953f424a79..2102a153ff 100644
--- a/mail/main.c
+++ b/mail/main.c
@@ -8,7 +8,6 @@
*/
#include <config.h>
#include <gnome.h>
-#include <libgnorba/gnorba.h>
#include <bonobo/bonobo-main.h>
#include <glade/glade.h>
#include "e-util/e-gui-utils.h"
@@ -16,28 +15,48 @@
#include "main.h"
#include "session.h"
-CORBA_ORB orb;
+#ifdef USING_OAF
+
+#include <liboaf/liboaf.h>
static void
-init_bonobo (int argc, char **argv)
+init_corba (int argc, char *argv [])
+{
+ gnome_init_with_popt_table ("evolution-mail-component", VERSION, argc, argv,
+ oaf_popt_options, 0, NULL);
+ oaf_init (argc, argv);
+}
+
+#else /* USING_OAF */
+
+#include <libgnorba/gnorba.h>
+
+static void
+init_corba (int *argc, char *argv [])
{
CORBA_Environment ev;
CORBA_exception_init (&ev);
- gnome_CORBA_init_with_popt_table (
+ gnome_CORBA_init_with_popt_table (
"evolution-mail-component", "1.0",
&argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev);
- orb = gnome_CORBA_ORB ();
+ CORBA_exception_free (&ev);
+}
+
+#endif /* USING_OAF */
- if (bonobo_init (orb, NULL, NULL) == FALSE){
+static void
+init_bonobo (int argc, char **argv)
+{
+ init_corba (argc, argv);
+
+ if (bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE){
e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
_("Mail Component: I could not initialize Bonobo"));
exit (1);
}
-
- CORBA_exception_free (&ev);
}
int
diff --git a/mail/test-mail.c b/mail/test-mail.c
index 94102da1d3..4d6707c711 100644
--- a/mail/test-mail.c
+++ b/mail/test-mail.c
@@ -6,10 +6,41 @@
*
* (C) 2000 Helix Code, Inc.
*/
+
+#include <config.h>
+
#include <gnome.h>
#include <bonobo.h>
+
+#ifdef USING_OAF
+
+#include <liboaf/liboaf.h>
+
+static void
+init_corba (int *argc, char *argv[])
+{
+ gnome_init ("sample-control-container", "1.0", *argc, argv);
+ oaf_init (*argc, argv);
+}
+
+#else /* USING_OAF */
+
#include <libgnorba/gnorba.h>
+static void
+init_corba (int *argc, char *argv [])
+{
+ CORBA_Environment ev;
+
+ CORBA_exception_init (&ev);
+
+ gnome_CORBA_init ("sample-control-container", "1.0", argc, argv, 0, &ev);
+
+ CORBA_exception_free (&ev);
+}
+
+#endif /* USING_OAF */
+
static guint
create_container (void)
{
@@ -46,21 +77,10 @@ create_container (void)
int
main (int argc, char *argv [])
{
- CORBA_Environment ev;
- CORBA_ORB orb;
-
- CORBA_exception_init (&ev);
-
- gnome_CORBA_init ("sample-control-container", "1.0", &argc, argv, 0, &ev);
-
- CORBA_exception_free (&ev);
+ init_corba (&argc, argv);
- orb = gnome_CORBA_ORB ();
-
- if (bonobo_init (orb, NULL, NULL) == FALSE)
+ if (bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE)
g_error ("Could not initialize Bonobo\n");
-
-
gtk_idle_add ((GtkFunction) create_container, NULL);
diff --git a/shell/ChangeLog b/shell/ChangeLog
index 8f4a622cc5..d680b9eb22 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,3 +1,16 @@
+2000-04-27 Ettore Perazzoli <ettore@helixcode.com>
+
+ * e-shell-view.c: OAFized.
+ (get_view): If `bonobo_widget_new_control()' fails for the
+ calendar, don't try to get the property bag and stuff and thus
+ prevent a segfault.
+
+ * main.c
+ (corba_init): Removed Bonobo initialization. Implemented OAF
+ version for the case in which `USING_OAF' is #defined.
+ (init_bonob): New function.
+ (main): Call `init_bonobo()'.
+
2000-04-26 Matt Loper <matt@helixcode.com>
* e-shell-view.c (bonobo_widget_is_dead): Helper function to see
diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c
index 838bc6ccb8..b6d74276e5 100644
--- a/shell/e-shell-view.c
+++ b/shell/e-shell-view.c
@@ -21,12 +21,25 @@
#include <libgnorba/gnorba.h>
#include <gtk/gtkprivate.h>
+#ifdef USING_OAF
+
+# define MAIL_CONTROL_ID "OAFIID:control:evolution-mail:833d5a71-a201-4a0e-b7e6-5475c5c4cb45"
+# define ADDRESSBOOK_CONTROL_ID "OAFIID:control:addressbook:851f883b-2fe7-4c94-a1e3-a1f2a7a03c49"
+# define CALENDAR_CONTROL_ID "OAFIID:control:calendar:dd34ddae-25c6-486b-a8a8-3e8f0286b54c"
+
+#else
+
+# define MAIL_CONTROL_ID "control:evolution-mail"
+# define ADDRESSBOOK_CONTROL_ID "control:addressbook"
+# define CALENDAR_CONTROL_ID "control:calendar"
+
+#endif
+
#define PARENT_TYPE gnome_app_get_type ()
static GtkObjectClass *parent_class;
-struct _EShellViewPrivate
-{
+struct _EShellViewPrivate {
/* a hashtable of e-folders -> widgets */
GHashTable *folder_views;
GtkWidget *notebook;
@@ -150,11 +163,11 @@ get_view (EShellView *eshell_view, EFolder *efolder, Bonobo_UIHandler uih)
switch (e_folder_type) {
case E_FOLDER_MAIL :
- w = bonobo_widget_new_control ("control:evolution-mail", uih);
+ w = bonobo_widget_new_control (MAIL_CONTROL_ID, uih);
break;
case E_FOLDER_CONTACTS :
- w = bonobo_widget_new_control ("control:addressbook", uih);
+ w = bonobo_widget_new_control (ADDRESSBOOK_CONTROL_ID, uih);
break;
case E_FOLDER_CALENDAR : {
@@ -162,7 +175,7 @@ get_view (EShellView *eshell_view, EFolder *efolder, Bonobo_UIHandler uih)
BonoboPropertyBagClient *pbc;
BonoboControlFrame *cf;
- w = bonobo_widget_new_control ("control:calendar", uih);
+ w = bonobo_widget_new_control (CALENDAR_CONTROL_ID, uih);
if (w) {
cf = bonobo_widget_get_control_frame (BONOBO_WIDGET (w));
@@ -191,8 +204,7 @@ get_view (EShellView *eshell_view, EFolder *efolder, Bonobo_UIHandler uih)
return NULL;
}
- if (w)
- {
+ if (w) {
Evolution_ServiceRepository corba_sr;
BonoboObjectClient *server =
bonobo_widget_get_server (BONOBO_WIDGET (w));
@@ -347,8 +359,10 @@ e_shell_view_set_view (EShellView *eshell_view, EFolder *efolder)
int new_page_index;
folder_view = get_view (eshell_view, efolder, uih);
- if (!folder_view)
+ if (!folder_view) {
+ /* FIXME: Report failure. */
return;
+ }
gtk_notebook_append_page (notebook, folder_view, NULL);
new_page_index = gtk_notebook_page_num (notebook,
diff --git a/shell/main.c b/shell/main.c
index d03c925b44..9fa59a6ee0 100644
--- a/shell/main.c
+++ b/shell/main.c
@@ -5,15 +5,23 @@
* Miguel de Icaza (miguel@helixcode.com)
*
*/
+
#include <config.h>
+
#include <gnome.h>
-#include <libgnorba/gnorba.h>
#include <bonobo.h>
#include <e-util/e-gui-utils.h>
#include <e-util/e-cursors.h>
#include <e-util/e-setup.h> /* for e_setup_base_dir */
#include <glade/glade.h>
#include <glade/glade-xml.h>
+
+#ifdef USING_OAF
+#include <liboaf/liboaf.h>
+#else
+#include <libgnorba/gnorba.h>
+#endif
+
#include "e-shell.h"
#include "e-shell-view.h"
@@ -29,6 +37,21 @@ const struct poptOption shell_popt_options [] = {
{ NULL, '\0', 0, NULL, 0 }
};
+#ifdef USING_OAF
+
+static void
+corba_init (int *argc, char *argv [])
+{
+ gnomelib_register_popt_table (shell_popt_options, "Evolution shell options");
+
+ gnome_init_with_popt_table ("Evolution", VERSION, *argc, argv,
+ oaf_popt_options, 0, NULL);
+
+ oaf_init (*argc, argv);
+}
+
+#else /* USING_OAF */
+
static void
corba_init (int *argc, char *argv [])
{
@@ -39,8 +62,14 @@ corba_init (int *argc, char *argv [])
"Evolution", VERSION, argc, argv,
shell_popt_options, 0, &ctx, GNORBA_INIT_SERVER_FUNC, &ev);
CORBA_exception_free (&ev);
-
- if (bonobo_init (gnome_CORBA_ORB (), NULL, NULL) == FALSE){
+}
+
+#endif /* USING_OAF */
+
+static void
+init_bonobo (void)
+{
+ if (bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE){
e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
_("Failed to initialize the Bonobo component system"));
exit (1);
@@ -96,6 +125,8 @@ main (int argc, char *argv [])
textdomain (PACKAGE);
corba_init (&argc, argv);
+ init_bonobo ();
+
gui_init ();
evolution_boot ();
diff --git a/wombat/ChangeLog b/wombat/ChangeLog
index 704b27d1b6..150aa26e46 100644
--- a/wombat/ChangeLog
+++ b/wombat/ChangeLog
@@ -1,3 +1,14 @@
+2000-04-27 Ettore Perazzoli <ettore@helixcode.com>
+
+ * wombat.c
+ (register_pcs): New function for registering into the name
+ service. Varies according on whether we are `USING_OAF' or not.
+ (init_corba): New function for initializing the CORBA stuff.
+ Implementation depends on `USING_OAF'.
+ (init_bonobo): Use `init_corba'.
+
+ * Makefile.am: Updated for OAF.
+
2000-04-25 Federico Mena Quintero <federico@helixcode.com>
* wombat.c (cal_factory pas_book_factory): New module-wide
diff --git a/wombat/GNOME_Evolution_Wombat.oaf.in b/wombat/GNOME_Evolution_Wombat.oaf.in
new file mode 100644
index 0000000000..1109cc0df6
--- /dev/null
+++ b/wombat/GNOME_Evolution_Wombat.oaf.in
@@ -0,0 +1,30 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:evolution:addressbook-server:0fbc844d-c721-4615-98d0-d67eacf42d80"
+ type="exe"
+ location="wombat">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:Evolution/BookFactory:1.0"/>
+ <item value="IDL:Bonobo/Unknown:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="The Personal Addressbook Server"/>
+</oaf_server>
+
+<oaf_server iid="OAFIID:evolution:calendar-factory:1c915858-ece3-4a6f-9d81-ea0f108a9554"
+ type="exe"
+ location="wombat">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:Evolution/Calendar/CalFactory:1.0"/>
+ <item value="IDL:Bonobo/Unknown:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="The Personal Calendar Server; calendar factory"/>
+
+</oaf_server>
+
+</oaf_info>
diff --git a/wombat/GNOME_Evolution_Wombat.oafinfo b/wombat/GNOME_Evolution_Wombat.oafinfo
new file mode 100644
index 0000000000..1109cc0df6
--- /dev/null
+++ b/wombat/GNOME_Evolution_Wombat.oafinfo
@@ -0,0 +1,30 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:evolution:addressbook-server:0fbc844d-c721-4615-98d0-d67eacf42d80"
+ type="exe"
+ location="wombat">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:Evolution/BookFactory:1.0"/>
+ <item value="IDL:Bonobo/Unknown:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="The Personal Addressbook Server"/>
+</oaf_server>
+
+<oaf_server iid="OAFIID:evolution:calendar-factory:1c915858-ece3-4a6f-9d81-ea0f108a9554"
+ type="exe"
+ location="wombat">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:Evolution/Calendar/CalFactory:1.0"/>
+ <item value="IDL:Bonobo/Unknown:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="The Personal Calendar Server; calendar factory"/>
+
+</oaf_server>
+
+</oaf_info>
diff --git a/wombat/Makefile.am b/wombat/Makefile.am
index 0c690991f6..94118eef9c 100644
--- a/wombat/Makefile.am
+++ b/wombat/Makefile.am
@@ -31,5 +31,14 @@ wombat_LDADD = \
wombat_LDFLAGS = `gnome-config --libs gnorba`
+if USING_OAF
+oafdir = $(datadir)/oaf
+oaf_DATA = wombat.oafinfo
+else
gnorbadir = $(sysconfdir)/CORBA/servers
gnorba_DATA = wombat.gnorba
+endif
+
+EXTRA_DIST = \
+ wombat.gnorba \
+ wombat.oafinfo
diff --git a/wombat/wombat.c b/wombat/wombat.c
index 6ced8d2682..43ee72d886 100644
--- a/wombat/wombat.c
+++ b/wombat/wombat.c
@@ -9,16 +9,13 @@
#include <bonobo.h>
#include <pas/pas-book-factory.h>
#include <pas/pas-backend-file.h>
+#include <libgnomevfs/gnome-vfs-init.h>
+
#ifdef HAVE_LDAP
#include <pas/pas-backend-ldap.h>
#endif
-#include <libgnomevfs/gnome-vfs-init.h>
-#include <libgnorba/gnorba.h>
-#include "calendar/pcs/cal-factory.h"
-
-
-static CORBA_ORB orb;
+#include "calendar/pcs/cal-factory.h"
/* The and addressbook calendar factories */
@@ -89,24 +86,50 @@ last_calendar_gone_cb (CalFactory *factory, gpointer data)
queue_termination ();
}
-/* Creates the calendar factory object and registers it with GOAD */
-static void
-setup_pcs (int argc, char **argv)
-{
- CORBA_Object object;
- CORBA_Environment ev;
- int result;
+#ifdef USING_OAF
- cal_factory = cal_factory_new ();
+/* (For the OAF popt stuff, which otherwise does not get in.) */
+#include <gnome.h>
- if (!cal_factory) {
- g_message ("setup_pcs(): Could not create the calendar factory");
- return;
+#include <liboaf/liboaf.h>
+
+static gboolean
+register_pcs (CORBA_Object obj)
+{
+ OAF_RegistrationResult result;
+
+ result = oaf_active_server_register
+ ("OAFIID:evolution:calendar-factory:1c915858-ece3-4a6f-9d81-ea0f108a9554",
+ obj);
+
+ switch (result) {
+ case OAF_REG_SUCCESS:
+ return TRUE; /* Wooho! */
+ case OAF_REG_NOT_LISTED:
+ g_message ("Cannot register the PCS because not listed");
+ return FALSE;
+ case OAF_REG_ALREADY_ACTIVE:
+ g_message ("Cannot register the PCS because already active");
+ return FALSE;
+ case OAF_REG_ERROR:
+ default:
+ g_message ("Cannot register the PCS because we suck");
+ return FALSE;
}
+}
- object = bonobo_object_corba_objref (BONOBO_OBJECT (cal_factory));
+#else /* USING_OAF */
+
+#include <libgnorba/gnorba.h>
+
+static gboolean
+register_pcs (CORBA_Object object)
+{
+ CORBA_Environment ev;
+ int result;
CORBA_exception_init (&ev);
+
result = goad_server_register (CORBA_OBJECT_NIL,
object,
"evolution:calendar-factory",
@@ -117,23 +140,47 @@ setup_pcs (int argc, char **argv)
if (ev._major != CORBA_NO_EXCEPTION || result == -1) {
g_message ("setup_pcs(): could not register the calendar factory");
- bonobo_object_unref (BONOBO_OBJECT (cal_factory));
- cal_factory = NULL;
CORBA_exception_free (&ev);
- return;
- } else if (result == -2) {
+ return FALSE;
+ }
+
+ if (result == -2) {
g_message ("setup_pcs(): a calendar factory is already registered");
+ CORBA_exception_free (&ev);
+ return FALSE;
+ }
+
+ CORBA_exception_free (&ev);
+ return TRUE;
+}
+
+#endif /* USING_OAF */
+
+/* Creates the calendar factory object and registers it with GOAD */
+static void
+setup_pcs (int argc, char **argv)
+{
+ CORBA_Object object;
+
+ cal_factory = cal_factory_new ();
+
+ if (!cal_factory) {
+ g_message ("setup_pcs(): Could not create the calendar factory");
+ return;
+ }
+
+ object = bonobo_object_corba_objref (BONOBO_OBJECT (cal_factory));
+
+ if (! register_pcs (object)) {
bonobo_object_unref (BONOBO_OBJECT (cal_factory));
cal_factory = NULL;
- CORBA_exception_free (&ev);
return;
}
- gtk_signal_connect (GTK_OBJECT (cal_factory), "last_calendar_gone",
+ gtk_signal_connect (GTK_OBJECT (cal_factory),
+ "last_calendar_gone",
GTK_SIGNAL_FUNC (last_calendar_gone_cb),
NULL);
-
- CORBA_exception_free (&ev);
}
@@ -154,8 +201,20 @@ setup_vfs (int argc, char **argv)
+#ifdef USING_OAF
+
+static void
+init_corba (int *argc, char **argv)
+{
+ gnome_init_with_popt_table ("Personal Addressbook Server", "0.0",
+ *argc, argv, oaf_popt_options, 0, NULL);
+ oaf_init (*argc, argv);
+}
+
+#else
+
static void
-init_bonobo (int argc, char **argv)
+init_corba (int *argc, char **argv)
{
CORBA_Environment ev;
@@ -163,7 +222,7 @@ init_bonobo (int argc, char **argv)
gnome_CORBA_init_with_popt_table (
"Personal Addressbook Server", "0.0",
- &argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev);
+ argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
g_message ("init_bonobo(): could not initialize GOAD");
@@ -172,10 +231,16 @@ init_bonobo (int argc, char **argv)
}
CORBA_exception_free (&ev);
+}
- orb = gnome_CORBA_ORB ();
+#endif
+
+static void
+init_bonobo (int *argc, char **argv)
+{
+ init_corba (argc, argv);
- if (!bonobo_init (orb, NULL, NULL)) {
+ if (!bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL)) {
g_message ("init_bonobo(): could not initialize Bonobo");
exit (EXIT_FAILURE);
}
@@ -184,7 +249,7 @@ init_bonobo (int argc, char **argv)
int
main (int argc, char **argv)
{
- init_bonobo (argc, argv);
+ init_bonobo (&argc, argv);
setup_vfs (argc, argv);
setup_pas (argc, argv);
diff --git a/wombat/wombat.oafinfo b/wombat/wombat.oafinfo
new file mode 100644
index 0000000000..1109cc0df6
--- /dev/null
+++ b/wombat/wombat.oafinfo
@@ -0,0 +1,30 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:evolution:addressbook-server:0fbc844d-c721-4615-98d0-d67eacf42d80"
+ type="exe"
+ location="wombat">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:Evolution/BookFactory:1.0"/>
+ <item value="IDL:Bonobo/Unknown:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="The Personal Addressbook Server"/>
+</oaf_server>
+
+<oaf_server iid="OAFIID:evolution:calendar-factory:1c915858-ece3-4a6f-9d81-ea0f108a9554"
+ type="exe"
+ location="wombat">
+
+ <oaf_attribute name="repo_ids" type="stringv">
+ <item value="IDL:Evolution/Calendar/CalFactory:1.0"/>
+ <item value="IDL:Bonobo/Unknown:1.0"/>
+ </oaf_attribute>
+
+ <oaf_attribute name="description" type="string"
+ value="The Personal Calendar Server; calendar factory"/>
+
+</oaf_server>
+
+</oaf_info>