diff options
Diffstat (limited to 'addressbook/gui/component/select-names/e-simple-card-bonobo.c')
-rw-r--r-- | addressbook/gui/component/select-names/e-simple-card-bonobo.c | 117 |
1 files changed, 85 insertions, 32 deletions
diff --git a/addressbook/gui/component/select-names/e-simple-card-bonobo.c b/addressbook/gui/component/select-names/e-simple-card-bonobo.c index 07203618b3..35154b44a6 100644 --- a/addressbook/gui/component/select-names/e-simple-card-bonobo.c +++ b/addressbook/gui/component/select-names/e-simple-card-bonobo.c @@ -33,7 +33,7 @@ #include "Evolution-Addressbook-SelectNames.h" -#define PARENT_TYPE BONOBO_TYPE_OBJECT +#define PARENT_TYPE bonobo_object_get_type () static BonoboObjectClass *parent_class = NULL; struct _ESimpleCardBonoboPrivate { @@ -41,17 +41,45 @@ struct _ESimpleCardBonoboPrivate { }; +/* CORBA interface implementation. */ + +static POA_GNOME_Evolution_Addressbook_SimpleCard__vepv SimpleCard_vepv; + +static POA_GNOME_Evolution_Addressbook_SimpleCard * +create_servant (void) +{ + POA_GNOME_Evolution_Addressbook_SimpleCard *servant; + CORBA_Environment ev; + + servant = (POA_GNOME_Evolution_Addressbook_SimpleCard *) g_new0 (BonoboObjectServant, 1); + servant->vepv = &SimpleCard_vepv; + + CORBA_exception_init (&ev); + + POA_GNOME_Evolution_Addressbook_SimpleCard__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 GNOME_Evolution_Addressbook_SimpleCard_Arbitrary * impl_SimpleCard_get_arbitrary (PortableServer_Servant servant, const CORBA_char *key, CORBA_Environment *ev) { + BonoboObject *bonobo_object; ESimpleCardBonobo *simple_card; ESimpleCardBonoboPrivate *priv; GNOME_Evolution_Addressbook_SimpleCard_Arbitrary *ret_val = GNOME_Evolution_Addressbook_SimpleCard_Arbitrary__alloc (); - simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object (servant)); + bonobo_object = bonobo_object_from_servant (servant); + simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object); priv = simple_card->priv; if (priv->card_simple) { @@ -75,10 +103,12 @@ impl_SimpleCard_set_arbitrary (PortableServer_Servant servant, const CORBA_char *value, CORBA_Environment *ev) { + BonoboObject *bonobo_object; ESimpleCardBonobo *simple_card; ESimpleCardBonoboPrivate *priv; - simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object (servant)); + bonobo_object = bonobo_object_from_servant (servant); + simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object); priv = simple_card->priv; if (priv->card_simple) { @@ -91,10 +121,12 @@ impl_SimpleCard_get (PortableServer_Servant servant, GNOME_Evolution_Addressbook_SimpleCard_Field field, CORBA_Environment *ev) { + BonoboObject *bonobo_object; ESimpleCardBonobo *simple_card; ESimpleCardBonoboPrivate *priv; - simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object (servant)); + bonobo_object = bonobo_object_from_servant (servant); + simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object); priv = simple_card->priv; if (priv->card_simple) { @@ -114,11 +146,12 @@ impl_SimpleCard_set (PortableServer_Servant servant, const CORBA_char *value, CORBA_Environment *ev) { - + BonoboObject *bonobo_object; ESimpleCardBonobo *simple_card; ESimpleCardBonoboPrivate *priv; - simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object (servant)); + bonobo_object = bonobo_object_from_servant (servant); + simple_card = E_SIMPLE_CARD_BONOBO (bonobo_object); priv = simple_card->priv; if (priv->card_simple) { @@ -132,7 +165,7 @@ impl_SimpleCard_set (PortableServer_Servant servant, /* GtkObject methods. */ static void -impl_dispose (GObject *object) +impl_destroy (GtkObject *object) { ESimpleCardBonobo *simple_card; ESimpleCardBonoboPrivate *priv; @@ -140,40 +173,54 @@ impl_dispose (GObject *object) simple_card = E_SIMPLE_CARD_BONOBO (object); priv = simple_card->priv; - if (priv) { - if (priv->card_simple) { - g_object_unref (priv->card_simple); - } - - g_free (priv); - simple_card->priv = NULL; + if (priv->card_simple) { + gtk_object_unref (GTK_OBJECT (priv->card_simple)); } - if (G_OBJECT_CLASS(parent_class)->dispose) - G_OBJECT_CLASS(parent_class)->dispose(object); + g_free (priv); + + simple_card->priv = NULL; } static void -e_simple_card_bonobo_class_init (ESimpleCardBonoboClass *klass) +corba_class_init () { - GObjectClass *object_class; + POA_GNOME_Evolution_Addressbook_SimpleCard__vepv *vepv; POA_GNOME_Evolution_Addressbook_SimpleCard__epv *epv; + PortableServer_ServantBase__epv *base_epv; - object_class = G_OBJECT_CLASS (klass); - parent_class = g_type_class_ref (BONOBO_TYPE_OBJECT); - - object_class->dispose = impl_dispose; + base_epv = g_new0 (PortableServer_ServantBase__epv, 1); + base_epv->_private = NULL; + base_epv->finalize = NULL; + base_epv->default_POA = NULL; - epv = &klass->epv; + epv = g_new0 (POA_GNOME_Evolution_Addressbook_SimpleCard__epv, 1); epv->getArbitrary = impl_SimpleCard_get_arbitrary; epv->setArbitrary = impl_SimpleCard_set_arbitrary; epv->get = impl_SimpleCard_get; epv->set = impl_SimpleCard_set; + + vepv = &SimpleCard_vepv; + vepv->Bonobo_Unknown_epv = bonobo_object_get_epv (); + vepv->GNOME_Evolution_Addressbook_SimpleCard_epv = epv; +} + +static void +class_init (ESimpleCardBonoboClass *klass) +{ + GtkObjectClass *object_class; + + object_class = GTK_OBJECT_CLASS (klass); + parent_class = gtk_type_class (bonobo_object_get_type ()); + + object_class->destroy = impl_destroy; + + corba_class_init (); } static void -e_simple_card_bonobo_init (ESimpleCardBonobo *simple_card) +init (ESimpleCardBonobo *simple_card) { ESimpleCardBonoboPrivate *priv; @@ -187,30 +234,36 @@ e_simple_card_bonobo_init (ESimpleCardBonobo *simple_card) void e_simple_card_bonobo_construct (ESimpleCardBonobo *simple_card, + GNOME_Evolution_Addressbook_SimpleCard corba_object, ECardSimple *card_simple) { g_return_if_fail (simple_card != NULL); g_return_if_fail (E_IS_SIMPLE_CARD_BONOBO (simple_card)); + bonobo_object_construct (BONOBO_OBJECT (simple_card), corba_object); + simple_card->priv->card_simple = card_simple; - g_object_ref (card_simple); + gtk_object_ref (GTK_OBJECT (card_simple)); } ESimpleCardBonobo * e_simple_card_bonobo_new (ECardSimple *card_simple) { + POA_GNOME_Evolution_Addressbook_SimpleCard *servant; + GNOME_Evolution_Addressbook_SimpleCard corba_object; ESimpleCardBonobo *simple_card; - simple_card = g_object_new (E_TYPE_SIMPLE_CARD_BONOBO, NULL); + servant = create_servant (); + if (servant == NULL) + return NULL; + + simple_card = gtk_type_new (e_simple_card_bonobo_get_type ()); - e_simple_card_bonobo_construct (simple_card, card_simple); + corba_object = bonobo_object_activate_servant (BONOBO_OBJECT (simple_card), servant); + e_simple_card_bonobo_construct (simple_card, corba_object, card_simple); return simple_card; } -BONOBO_TYPE_FUNC_FULL ( - ESimpleCardBonobo, - GNOME_Evolution_Addressbook_SimpleCard, - PARENT_TYPE, - e_simple_card_bonobo); +E_MAKE_TYPE (e_simple_card_bonobo, "ESimpleCardBonobo", ESimpleCardBonobo, class_init, init, PARENT_TYPE) |