diff options
author | Mike Engber <engber@src.gnome.org> | 2001-03-06 19:00:36 +0000 |
---|---|---|
committer | Mike Engber <engber@src.gnome.org> | 2001-03-06 19:00:36 +0000 |
commit | 27a5f817aede5ccc01cc50144133a4fbb8c5c522 (patch) | |
tree | d07b77e6c0d9c9af76bdf93f8c1135fb2c41f89c | |
parent | bce77bc843cc9e7233f64938342c608befdeed04 (diff) | |
download | nautilus-27a5f817aede5ccc01cc50144133a4fbb8c5c522.tar.gz |
reviewed by: Darin Adler <darin@eazel.com>
reviewed by: Darin Adler <darin@eazel.com>
* libnautilus-extensions/nautilus-bonobo-extensions.h:
Added NAUTILUS_BONOBO_X_BOILERPLATE.
* libnautilus-extensions/nautilus-directory-metafile-monitor.c:
(nautilus_metafile_monitor_class_init),
(nautilus_metafile_monitor_init):
* libnautilus-extensions/nautilus-directory-metafile-monitor.h:
* libnautilus-extensions/nautilus-metafile-factory.c:
(nautilus_metafile_factory_class_init),
(nautilus_metafile_factory_init):
* libnautilus-extensions/nautilus-metafile-factory.h:
* libnautilus-extensions/nautilus-metafile.c:
(nautilus_metafile_class_init), (nautilus_metafile_init):
* libnautilus-extensions/nautilus-metafile.h:
Switched NautilusMetafile, MetafileMonitor, and Metafile factory
to be based on BonoboXObject - this causes our corba object to
get freed properly - bug 7335.
-rw-r--r-- | ChangeLog | 22 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-bonobo-extensions.h | 37 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-directory-metafile-monitor.c | 59 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-directory-metafile-monitor.h | 8 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-metafile-factory.c | 57 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-metafile-factory.h | 8 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-metafile.c | 77 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-metafile.h | 8 | ||||
-rw-r--r-- | libnautilus-private/nautilus-bonobo-extensions.h | 37 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory-metafile-monitor.c | 59 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory-metafile-monitor.h | 8 | ||||
-rw-r--r-- | libnautilus-private/nautilus-metafile-factory.c | 57 | ||||
-rw-r--r-- | libnautilus-private/nautilus-metafile-factory.h | 8 | ||||
-rw-r--r-- | libnautilus-private/nautilus-metafile.c | 77 | ||||
-rw-r--r-- | libnautilus-private/nautilus-metafile.h | 8 |
15 files changed, 196 insertions, 334 deletions
@@ -1,3 +1,25 @@ +2001-03-06 Michael Engber <engber@eazel.com> + + reviewed by: Darin Adler <darin@eazel.com> + + * libnautilus-extensions/nautilus-bonobo-extensions.h: + Added NAUTILUS_BONOBO_X_BOILERPLATE. + + * libnautilus-extensions/nautilus-directory-metafile-monitor.c: + (nautilus_metafile_monitor_class_init), + (nautilus_metafile_monitor_init): + * libnautilus-extensions/nautilus-directory-metafile-monitor.h: + * libnautilus-extensions/nautilus-metafile-factory.c: + (nautilus_metafile_factory_class_init), + (nautilus_metafile_factory_init): + * libnautilus-extensions/nautilus-metafile-factory.h: + * libnautilus-extensions/nautilus-metafile.c: + (nautilus_metafile_class_init), (nautilus_metafile_init): + * libnautilus-extensions/nautilus-metafile.h: + Switched NautilusMetafile, MetafileMonitor, and Metafile factory + to be based on BonoboXObject - this causes our corba object to + get freed properly - bug 7335. + 2001-03-06 Darin Adler <darin@eazel.com> reviewed by: John Sullivan <sullivan@eazel.com> diff --git a/libnautilus-extensions/nautilus-bonobo-extensions.h b/libnautilus-extensions/nautilus-bonobo-extensions.h index 72714a47d..57ed6db2f 100644 --- a/libnautilus-extensions/nautilus-bonobo-extensions.h +++ b/libnautilus-extensions/nautilus-bonobo-extensions.h @@ -28,6 +28,7 @@ #define NAUTILUS_BONOBO_EXTENSIONS_H #include <bonobo/bonobo-ui-component.h> +#include <bonobo/bonobo-xobject.h> #include <gdk-pixbuf/gdk-pixbuf.h> typedef struct NautilusBonoboActivationHandle NautilusBonoboActivationHandle; @@ -93,4 +94,40 @@ NautilusBonoboActivationHandle *nautilus_bonobo_activate_from_id gpointer callback_data); void nautilus_bonobo_activate_cancel (NautilusBonoboActivationHandle *handle); + +/* This macro is a copy of BONOBO_X_TYPE_FUNC_FULL (from bonobo-xobject.h) + * with the addition of support for the parent_class which is defined by + * NAUTILUS_DEFINE_CLASS_BOILERPLATE and used by NAUTILUS_CALL_PARENT. + * + * Note: the argument order matches BONOBO_X_TYPE_FUNC_FULL which is different + * than NAUTILUS_DEFINE_CLASS_BOILERPLATE. + */ +#define NAUTILUS_BONOBO_X_BOILERPLATE(class_name, corba_name, parent, prefix) \ +static gpointer parent_class; /* Nautilus change */ \ +GtkType \ +prefix##_get_type (void) \ +{ \ + GtkType ptype; \ + static GtkType type = 0; \ + \ + if (type == 0) { \ + static GtkTypeInfo info = { \ + #class_name, \ + sizeof (class_name), \ + sizeof (class_name##Class), \ + (GtkClassInitFunc)prefix##_class_init, \ + (GtkObjectInitFunc)prefix##_init, \ + NULL, NULL, (GtkClassInitFunc) NULL \ + }; \ + ptype = (parent); \ + type = bonobo_x_type_unique (ptype, \ + POA_##corba_name##__init, POA_##corba_name##__fini, \ + GTK_STRUCT_OFFSET (class_name##Class, epv), \ + &info); \ + parent_class = gtk_type_class (ptype); /* Nautilus change */ \ + } \ + return type; \ +} + + #endif /* NAUTILUS_BONOBO_EXTENSIONS_H */ diff --git a/libnautilus-extensions/nautilus-directory-metafile-monitor.c b/libnautilus-extensions/nautilus-directory-metafile-monitor.c index 4c4810ab9..c90a640a7 100644 --- a/libnautilus-extensions/nautilus-directory-metafile-monitor.c +++ b/libnautilus-extensions/nautilus-directory-metafile-monitor.c @@ -22,21 +22,21 @@ #include <config.h> #include "nautilus-directory-metafile-monitor.h" -#include "nautilus-metafile-server.h" #include "nautilus-directory-private.h" #include "nautilus-file-private.h" #include <libnautilus-extensions/nautilus-gtk-macros.h> #include <libnautilus-extensions/nautilus-glib-extensions.h> +#include <libnautilus-extensions/nautilus-bonobo-extensions.h> #include <libnautilus/nautilus-bonobo-workarounds.h> struct NautilusMetafileMonitorDetails { NautilusDirectory *directory; }; -static void nautilus_metafile_monitor_initialize (NautilusMetafileMonitor *monitor); -static void nautilus_metafile_monitor_initialize_class (NautilusMetafileMonitorClass *klass); +static void nautilus_metafile_monitor_init (NautilusMetafileMonitor *monitor); +static void nautilus_metafile_monitor_class_init (NautilusMetafileMonitorClass *klass); static void destroy (GtkObject *monitor); @@ -47,64 +47,21 @@ static void corba_metafile_changed (PortableServer_Servant servant, static void corba_metafile_ready (PortableServer_Servant servant, CORBA_Environment *ev); -NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetafileMonitor, nautilus_metafile_monitor, BONOBO_OBJECT_TYPE) +NAUTILUS_BONOBO_X_BOILERPLATE (NautilusMetafileMonitor, Nautilus_MetafileMonitor, BONOBO_X_OBJECT_TYPE, nautilus_metafile_monitor) static void -nautilus_metafile_monitor_initialize_class (NautilusMetafileMonitorClass *klass) +nautilus_metafile_monitor_class_init (NautilusMetafileMonitorClass *klass) { GTK_OBJECT_CLASS (klass)->destroy = destroy; -} - -static POA_Nautilus_MetafileMonitor__epv * -nautilus_metafile_monitor_get_epv (void) -{ - static POA_Nautilus_MetafileMonitor__epv epv; - - epv.metafile_changed = corba_metafile_changed; - epv.metafile_ready = corba_metafile_ready; - - return &epv; -} - -static POA_Nautilus_MetafileMonitor__vepv * -nautilus_metafile_monitor_get_vepv (void) -{ - static POA_Nautilus_MetafileMonitor__vepv vepv; - vepv.Bonobo_Unknown_epv = nautilus_bonobo_object_get_epv (); - vepv.Nautilus_MetafileMonitor_epv = nautilus_metafile_monitor_get_epv (); - - return &vepv; -} - -static POA_Nautilus_MetafileMonitor * -nautilus_metafile_monitor_create_servant (void) -{ - POA_Nautilus_MetafileMonitor *servant; - CORBA_Environment ev; - - servant = (POA_Nautilus_MetafileMonitor *) g_new0 (BonoboObjectServant, 1); - servant->vepv = nautilus_metafile_monitor_get_vepv (); - CORBA_exception_init (&ev); - POA_Nautilus_MetafileMonitor__init ((PortableServer_Servant) servant, &ev); - if (ev._major != CORBA_NO_EXCEPTION){ - g_error ("can't initialize Nautilus metafile monitor"); - } - CORBA_exception_free (&ev); - - return servant; + klass->epv.metafile_changed = corba_metafile_changed; + klass->epv.metafile_ready = corba_metafile_ready; } static void -nautilus_metafile_monitor_initialize (NautilusMetafileMonitor *monitor) +nautilus_metafile_monitor_init (NautilusMetafileMonitor *monitor) { - Nautilus_MetafileMonitor corba_monitor; - monitor->details = g_new0 (NautilusMetafileMonitorDetails, 1); - - corba_monitor = bonobo_object_activate_servant - (BONOBO_OBJECT (monitor), nautilus_metafile_monitor_create_servant ()); - bonobo_object_construct (BONOBO_OBJECT (monitor), corba_monitor); } static void diff --git a/libnautilus-extensions/nautilus-directory-metafile-monitor.h b/libnautilus-extensions/nautilus-directory-metafile-monitor.h index cb464fa63..ef8e0ee22 100644 --- a/libnautilus-extensions/nautilus-directory-metafile-monitor.h +++ b/libnautilus-extensions/nautilus-directory-metafile-monitor.h @@ -23,7 +23,10 @@ #ifndef NAUTILUS_METAFILE_MONITOR_H #define NAUTILUS_METAFILE_MONITOR_H +#include "nautilus-metafile-server.h" + #include <bonobo/bonobo-object.h> +#include <bonobo/bonobo-xobject.h> #include <libnautilus-extensions/nautilus-directory.h> #define NAUTILUS_TYPE_METAFILE_MONITOR (nautilus_metafile_monitor_get_type ()) @@ -35,12 +38,13 @@ typedef struct NautilusMetafileMonitorDetails NautilusMetafileMonitorDetails; typedef struct { - BonoboObject parent_slot; + BonoboXObject parent_slot; NautilusMetafileMonitorDetails *details; } NautilusMetafileMonitor; typedef struct { - BonoboObjectClass parent_slot; + BonoboXObjectClass parent_slot; + POA_Nautilus_MetafileMonitor__epv epv; } NautilusMetafileMonitorClass; GtkType nautilus_metafile_monitor_get_type (void); diff --git a/libnautilus-extensions/nautilus-metafile-factory.c b/libnautilus-extensions/nautilus-metafile-factory.c index 272a6bed9..8ca0628bd 100644 --- a/libnautilus-extensions/nautilus-metafile-factory.c +++ b/libnautilus-extensions/nautilus-metafile-factory.c @@ -22,17 +22,17 @@ #include <config.h> #include "nautilus-metafile-factory.h" -#include "nautilus-metafile-server.h" #include "nautilus-metafile.h" #include <libnautilus-extensions/nautilus-gtk-macros.h> +#include <libnautilus-extensions/nautilus-bonobo-extensions.h> #include <libnautilus/nautilus-bonobo-workarounds.h> struct NautilusMetafileFactoryDetails { }; -static void nautilus_metafile_factory_initialize (NautilusMetafileFactory *factory); -static void nautilus_metafile_factory_initialize_class (NautilusMetafileFactoryClass *klass); +static void nautilus_metafile_factory_init (NautilusMetafileFactory *factory); +static void nautilus_metafile_factory_class_init (NautilusMetafileFactoryClass *klass); static void destroy (GtkObject *factory); @@ -40,63 +40,20 @@ static Nautilus_Metafile corba_open (PortableServer_Servant servant, const Nautilus_URI directory, CORBA_Environment *ev); -NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetafileFactory, nautilus_metafile_factory, BONOBO_OBJECT_TYPE) +NAUTILUS_BONOBO_X_BOILERPLATE (NautilusMetafileFactory, Nautilus_MetafileFactory, BONOBO_X_OBJECT_TYPE, nautilus_metafile_factory) static void -nautilus_metafile_factory_initialize_class (NautilusMetafileFactoryClass *klass) +nautilus_metafile_factory_class_init (NautilusMetafileFactoryClass *klass) { GTK_OBJECT_CLASS (klass)->destroy = destroy; -} - -static POA_Nautilus_MetafileFactory__epv * -nautilus_metafile_factory_get_epv (void) -{ - static POA_Nautilus_MetafileFactory__epv epv; - - epv.open = corba_open; - - return &epv; -} - -static POA_Nautilus_MetafileFactory__vepv * -nautilus_metafile_factory_get_vepv (void) -{ - static POA_Nautilus_MetafileFactory__vepv vepv; - vepv.Bonobo_Unknown_epv = nautilus_bonobo_object_get_epv (); - vepv.Nautilus_MetafileFactory_epv = nautilus_metafile_factory_get_epv (); - - return &vepv; -} - -static POA_Nautilus_MetafileFactory * -nautilus_metafile_factory_create_servant (void) -{ - POA_Nautilus_MetafileFactory *servant; - CORBA_Environment ev; - - servant = (POA_Nautilus_MetafileFactory *) g_new0 (BonoboObjectServant, 1); - servant->vepv = nautilus_metafile_factory_get_vepv (); - CORBA_exception_init (&ev); - POA_Nautilus_MetafileFactory__init ((PortableServer_Servant) servant, &ev); - if (ev._major != CORBA_NO_EXCEPTION){ - g_error ("can't initialize Nautilus metafile factory"); - } - CORBA_exception_free (&ev); - - return servant; + klass->epv.open = corba_open; } static void -nautilus_metafile_factory_initialize (NautilusMetafileFactory *factory) +nautilus_metafile_factory_init (NautilusMetafileFactory *factory) { - Nautilus_MetafileFactory corba_factory; - factory->details = g_new0 (NautilusMetafileFactoryDetails, 1); - - corba_factory = bonobo_object_activate_servant - (BONOBO_OBJECT (factory), nautilus_metafile_factory_create_servant ()); - bonobo_object_construct (BONOBO_OBJECT (factory), corba_factory); } static void diff --git a/libnautilus-extensions/nautilus-metafile-factory.h b/libnautilus-extensions/nautilus-metafile-factory.h index ad1737ecf..014b7d627 100644 --- a/libnautilus-extensions/nautilus-metafile-factory.h +++ b/libnautilus-extensions/nautilus-metafile-factory.h @@ -23,7 +23,10 @@ #ifndef NAUTILUS_METAFILE_FACTORY_H #define NAUTILUS_METAFILE_FACTORY_H +#include "nautilus-metafile-server.h" + #include <bonobo/bonobo-object.h> +#include <bonobo/bonobo-xobject.h> #define NAUTILUS_TYPE_METAFILE_FACTORY (nautilus_metafile_factory_get_type ()) #define NAUTILUS_METAFILE_FACTORY(obj) (GTK_CHECK_CAST ((obj), NAUTILUS_TYPE_METAFILE_FACTORY, NautilusMetafileFactory)) @@ -34,12 +37,13 @@ typedef struct NautilusMetafileFactoryDetails NautilusMetafileFactoryDetails; typedef struct { - BonoboObject parent_slot; + BonoboXObject parent_slot; NautilusMetafileFactoryDetails *details; } NautilusMetafileFactory; typedef struct { - BonoboObjectClass parent_slot; + BonoboXObjectClass parent_slot; + POA_Nautilus_MetafileFactory__epv epv; } NautilusMetafileFactoryClass; GtkType nautilus_metafile_factory_get_type (void); diff --git a/libnautilus-extensions/nautilus-metafile.c b/libnautilus-extensions/nautilus-metafile.c index 783f912a7..2850a442c 100644 --- a/libnautilus-extensions/nautilus-metafile.c +++ b/libnautilus-extensions/nautilus-metafile.c @@ -22,11 +22,11 @@ #include <config.h> #include "nautilus-metafile.h" -#include "nautilus-metafile-server.h" -#include <libnautilus/nautilus-bonobo-workarounds.h> #include <libnautilus-extensions/nautilus-gtk-macros.h> #include <libnautilus-extensions/nautilus-directory.h> +#include <libnautilus-extensions/nautilus-bonobo-extensions.h> +#include <libnautilus/nautilus-bonobo-workarounds.h> #include "nautilus-string.h" #include "nautilus-metadata.h" @@ -40,8 +40,8 @@ #define METAFILE_XML_VERSION "1.0" -static void nautilus_metafile_initialize (NautilusMetafile *metafile); -static void nautilus_metafile_initialize_class (NautilusMetafileClass *klass); +static void nautilus_metafile_init (NautilusMetafile *metafile); +static void nautilus_metafile_class_init (NautilusMetafileClass *klass); static void destroy (GtkObject *metafile); @@ -124,72 +124,29 @@ static void remove_file_metadata (NautilusDirectory *directory, static void call_metafile_changed_for_one_file (NautilusDirectory *directory, const CORBA_char *file_name); -NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetafile, nautilus_metafile, BONOBO_OBJECT_TYPE) +NAUTILUS_BONOBO_X_BOILERPLATE (NautilusMetafile, Nautilus_Metafile, BONOBO_X_OBJECT_TYPE, nautilus_metafile) static void -nautilus_metafile_initialize_class (NautilusMetafileClass *klass) +nautilus_metafile_class_init (NautilusMetafileClass *klass) { GTK_OBJECT_CLASS (klass)->destroy = destroy; -} - -static POA_Nautilus_Metafile__epv * -nautilus_metafile_get_epv (void) -{ - static POA_Nautilus_Metafile__epv epv; - - epv.is_read = corba_is_read; - epv.get = corba_get; - epv.get_list = corba_get_list; - epv.set = corba_set; - epv.set_list = corba_set_list; - epv.copy = corba_copy; - epv.remove = corba_remove; - epv.rename = corba_rename; - epv.register_monitor = corba_register_monitor; - epv.unregister_monitor = corba_unregister_monitor; - - return &epv; -} - -static POA_Nautilus_Metafile__vepv * -nautilus_metafile_get_vepv (void) -{ - static POA_Nautilus_Metafile__vepv vepv; - - vepv.Bonobo_Unknown_epv = nautilus_bonobo_object_get_epv (); - vepv.Nautilus_Metafile_epv = nautilus_metafile_get_epv (); - return &vepv; -} - -static POA_Nautilus_Metafile * -nautilus_metafile_create_servant (void) -{ - POA_Nautilus_Metafile *servant; - CORBA_Environment ev; - - servant = (POA_Nautilus_Metafile *) g_new0 (BonoboObjectServant, 1); - servant->vepv = nautilus_metafile_get_vepv (); - CORBA_exception_init (&ev); - POA_Nautilus_Metafile__init ((PortableServer_Servant) servant, &ev); - if (ev._major != CORBA_NO_EXCEPTION){ - g_error ("can't initialize Nautilus metafile"); - } - CORBA_exception_free (&ev); - - return servant; + klass->epv.is_read = corba_is_read; + klass->epv.get = corba_get; + klass->epv.get_list = corba_get_list; + klass->epv.set = corba_set; + klass->epv.set_list = corba_set_list; + klass->epv.copy = corba_copy; + klass->epv.remove = corba_remove; + klass->epv.rename = corba_rename; + klass->epv.register_monitor = corba_register_monitor; + klass->epv.unregister_monitor = corba_unregister_monitor; } static void -nautilus_metafile_initialize (NautilusMetafile *metafile) +nautilus_metafile_init (NautilusMetafile *metafile) { - Nautilus_Metafile corba_metafile; - metafile->details = g_new0 (NautilusMetafileDetails, 1); - - corba_metafile = bonobo_object_activate_servant - (BONOBO_OBJECT (metafile), nautilus_metafile_create_servant ()); - bonobo_object_construct (BONOBO_OBJECT (metafile), corba_metafile); } static void diff --git a/libnautilus-extensions/nautilus-metafile.h b/libnautilus-extensions/nautilus-metafile.h index ca2f65bda..94e2c3a44 100644 --- a/libnautilus-extensions/nautilus-metafile.h +++ b/libnautilus-extensions/nautilus-metafile.h @@ -23,7 +23,10 @@ #ifndef NAUTILUS_METAFILE_H #define NAUTILUS_METAFILE_H +#include "nautilus-metafile-server.h" + #include <bonobo/bonobo-object.h> +#include <bonobo/bonobo-xobject.h> #include <gnome-xml/tree.h> #include "nautilus-directory.h" @@ -37,7 +40,7 @@ typedef struct NautilusMetafileDetails NautilusMetafileDetails; typedef struct { - BonoboObject parent_slot; + BonoboXObject parent_slot; NautilusMetafileDetails *details; } NautilusMetafile; @@ -52,7 +55,8 @@ struct NautilusMetafileDetails { }; typedef struct { - BonoboObjectClass parent_slot; + BonoboXObjectClass parent_slot; + POA_Nautilus_Metafile__epv epv; } NautilusMetafileClass; GtkType nautilus_metafile_get_type (void); diff --git a/libnautilus-private/nautilus-bonobo-extensions.h b/libnautilus-private/nautilus-bonobo-extensions.h index 72714a47d..57ed6db2f 100644 --- a/libnautilus-private/nautilus-bonobo-extensions.h +++ b/libnautilus-private/nautilus-bonobo-extensions.h @@ -28,6 +28,7 @@ #define NAUTILUS_BONOBO_EXTENSIONS_H #include <bonobo/bonobo-ui-component.h> +#include <bonobo/bonobo-xobject.h> #include <gdk-pixbuf/gdk-pixbuf.h> typedef struct NautilusBonoboActivationHandle NautilusBonoboActivationHandle; @@ -93,4 +94,40 @@ NautilusBonoboActivationHandle *nautilus_bonobo_activate_from_id gpointer callback_data); void nautilus_bonobo_activate_cancel (NautilusBonoboActivationHandle *handle); + +/* This macro is a copy of BONOBO_X_TYPE_FUNC_FULL (from bonobo-xobject.h) + * with the addition of support for the parent_class which is defined by + * NAUTILUS_DEFINE_CLASS_BOILERPLATE and used by NAUTILUS_CALL_PARENT. + * + * Note: the argument order matches BONOBO_X_TYPE_FUNC_FULL which is different + * than NAUTILUS_DEFINE_CLASS_BOILERPLATE. + */ +#define NAUTILUS_BONOBO_X_BOILERPLATE(class_name, corba_name, parent, prefix) \ +static gpointer parent_class; /* Nautilus change */ \ +GtkType \ +prefix##_get_type (void) \ +{ \ + GtkType ptype; \ + static GtkType type = 0; \ + \ + if (type == 0) { \ + static GtkTypeInfo info = { \ + #class_name, \ + sizeof (class_name), \ + sizeof (class_name##Class), \ + (GtkClassInitFunc)prefix##_class_init, \ + (GtkObjectInitFunc)prefix##_init, \ + NULL, NULL, (GtkClassInitFunc) NULL \ + }; \ + ptype = (parent); \ + type = bonobo_x_type_unique (ptype, \ + POA_##corba_name##__init, POA_##corba_name##__fini, \ + GTK_STRUCT_OFFSET (class_name##Class, epv), \ + &info); \ + parent_class = gtk_type_class (ptype); /* Nautilus change */ \ + } \ + return type; \ +} + + #endif /* NAUTILUS_BONOBO_EXTENSIONS_H */ diff --git a/libnautilus-private/nautilus-directory-metafile-monitor.c b/libnautilus-private/nautilus-directory-metafile-monitor.c index 4c4810ab9..c90a640a7 100644 --- a/libnautilus-private/nautilus-directory-metafile-monitor.c +++ b/libnautilus-private/nautilus-directory-metafile-monitor.c @@ -22,21 +22,21 @@ #include <config.h> #include "nautilus-directory-metafile-monitor.h" -#include "nautilus-metafile-server.h" #include "nautilus-directory-private.h" #include "nautilus-file-private.h" #include <libnautilus-extensions/nautilus-gtk-macros.h> #include <libnautilus-extensions/nautilus-glib-extensions.h> +#include <libnautilus-extensions/nautilus-bonobo-extensions.h> #include <libnautilus/nautilus-bonobo-workarounds.h> struct NautilusMetafileMonitorDetails { NautilusDirectory *directory; }; -static void nautilus_metafile_monitor_initialize (NautilusMetafileMonitor *monitor); -static void nautilus_metafile_monitor_initialize_class (NautilusMetafileMonitorClass *klass); +static void nautilus_metafile_monitor_init (NautilusMetafileMonitor *monitor); +static void nautilus_metafile_monitor_class_init (NautilusMetafileMonitorClass *klass); static void destroy (GtkObject *monitor); @@ -47,64 +47,21 @@ static void corba_metafile_changed (PortableServer_Servant servant, static void corba_metafile_ready (PortableServer_Servant servant, CORBA_Environment *ev); -NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetafileMonitor, nautilus_metafile_monitor, BONOBO_OBJECT_TYPE) +NAUTILUS_BONOBO_X_BOILERPLATE (NautilusMetafileMonitor, Nautilus_MetafileMonitor, BONOBO_X_OBJECT_TYPE, nautilus_metafile_monitor) static void -nautilus_metafile_monitor_initialize_class (NautilusMetafileMonitorClass *klass) +nautilus_metafile_monitor_class_init (NautilusMetafileMonitorClass *klass) { GTK_OBJECT_CLASS (klass)->destroy = destroy; -} - -static POA_Nautilus_MetafileMonitor__epv * -nautilus_metafile_monitor_get_epv (void) -{ - static POA_Nautilus_MetafileMonitor__epv epv; - - epv.metafile_changed = corba_metafile_changed; - epv.metafile_ready = corba_metafile_ready; - - return &epv; -} - -static POA_Nautilus_MetafileMonitor__vepv * -nautilus_metafile_monitor_get_vepv (void) -{ - static POA_Nautilus_MetafileMonitor__vepv vepv; - vepv.Bonobo_Unknown_epv = nautilus_bonobo_object_get_epv (); - vepv.Nautilus_MetafileMonitor_epv = nautilus_metafile_monitor_get_epv (); - - return &vepv; -} - -static POA_Nautilus_MetafileMonitor * -nautilus_metafile_monitor_create_servant (void) -{ - POA_Nautilus_MetafileMonitor *servant; - CORBA_Environment ev; - - servant = (POA_Nautilus_MetafileMonitor *) g_new0 (BonoboObjectServant, 1); - servant->vepv = nautilus_metafile_monitor_get_vepv (); - CORBA_exception_init (&ev); - POA_Nautilus_MetafileMonitor__init ((PortableServer_Servant) servant, &ev); - if (ev._major != CORBA_NO_EXCEPTION){ - g_error ("can't initialize Nautilus metafile monitor"); - } - CORBA_exception_free (&ev); - - return servant; + klass->epv.metafile_changed = corba_metafile_changed; + klass->epv.metafile_ready = corba_metafile_ready; } static void -nautilus_metafile_monitor_initialize (NautilusMetafileMonitor *monitor) +nautilus_metafile_monitor_init (NautilusMetafileMonitor *monitor) { - Nautilus_MetafileMonitor corba_monitor; - monitor->details = g_new0 (NautilusMetafileMonitorDetails, 1); - - corba_monitor = bonobo_object_activate_servant - (BONOBO_OBJECT (monitor), nautilus_metafile_monitor_create_servant ()); - bonobo_object_construct (BONOBO_OBJECT (monitor), corba_monitor); } static void diff --git a/libnautilus-private/nautilus-directory-metafile-monitor.h b/libnautilus-private/nautilus-directory-metafile-monitor.h index cb464fa63..ef8e0ee22 100644 --- a/libnautilus-private/nautilus-directory-metafile-monitor.h +++ b/libnautilus-private/nautilus-directory-metafile-monitor.h @@ -23,7 +23,10 @@ #ifndef NAUTILUS_METAFILE_MONITOR_H #define NAUTILUS_METAFILE_MONITOR_H +#include "nautilus-metafile-server.h" + #include <bonobo/bonobo-object.h> +#include <bonobo/bonobo-xobject.h> #include <libnautilus-extensions/nautilus-directory.h> #define NAUTILUS_TYPE_METAFILE_MONITOR (nautilus_metafile_monitor_get_type ()) @@ -35,12 +38,13 @@ typedef struct NautilusMetafileMonitorDetails NautilusMetafileMonitorDetails; typedef struct { - BonoboObject parent_slot; + BonoboXObject parent_slot; NautilusMetafileMonitorDetails *details; } NautilusMetafileMonitor; typedef struct { - BonoboObjectClass parent_slot; + BonoboXObjectClass parent_slot; + POA_Nautilus_MetafileMonitor__epv epv; } NautilusMetafileMonitorClass; GtkType nautilus_metafile_monitor_get_type (void); diff --git a/libnautilus-private/nautilus-metafile-factory.c b/libnautilus-private/nautilus-metafile-factory.c index 272a6bed9..8ca0628bd 100644 --- a/libnautilus-private/nautilus-metafile-factory.c +++ b/libnautilus-private/nautilus-metafile-factory.c @@ -22,17 +22,17 @@ #include <config.h> #include "nautilus-metafile-factory.h" -#include "nautilus-metafile-server.h" #include "nautilus-metafile.h" #include <libnautilus-extensions/nautilus-gtk-macros.h> +#include <libnautilus-extensions/nautilus-bonobo-extensions.h> #include <libnautilus/nautilus-bonobo-workarounds.h> struct NautilusMetafileFactoryDetails { }; -static void nautilus_metafile_factory_initialize (NautilusMetafileFactory *factory); -static void nautilus_metafile_factory_initialize_class (NautilusMetafileFactoryClass *klass); +static void nautilus_metafile_factory_init (NautilusMetafileFactory *factory); +static void nautilus_metafile_factory_class_init (NautilusMetafileFactoryClass *klass); static void destroy (GtkObject *factory); @@ -40,63 +40,20 @@ static Nautilus_Metafile corba_open (PortableServer_Servant servant, const Nautilus_URI directory, CORBA_Environment *ev); -NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetafileFactory, nautilus_metafile_factory, BONOBO_OBJECT_TYPE) +NAUTILUS_BONOBO_X_BOILERPLATE (NautilusMetafileFactory, Nautilus_MetafileFactory, BONOBO_X_OBJECT_TYPE, nautilus_metafile_factory) static void -nautilus_metafile_factory_initialize_class (NautilusMetafileFactoryClass *klass) +nautilus_metafile_factory_class_init (NautilusMetafileFactoryClass *klass) { GTK_OBJECT_CLASS (klass)->destroy = destroy; -} - -static POA_Nautilus_MetafileFactory__epv * -nautilus_metafile_factory_get_epv (void) -{ - static POA_Nautilus_MetafileFactory__epv epv; - - epv.open = corba_open; - - return &epv; -} - -static POA_Nautilus_MetafileFactory__vepv * -nautilus_metafile_factory_get_vepv (void) -{ - static POA_Nautilus_MetafileFactory__vepv vepv; - vepv.Bonobo_Unknown_epv = nautilus_bonobo_object_get_epv (); - vepv.Nautilus_MetafileFactory_epv = nautilus_metafile_factory_get_epv (); - - return &vepv; -} - -static POA_Nautilus_MetafileFactory * -nautilus_metafile_factory_create_servant (void) -{ - POA_Nautilus_MetafileFactory *servant; - CORBA_Environment ev; - - servant = (POA_Nautilus_MetafileFactory *) g_new0 (BonoboObjectServant, 1); - servant->vepv = nautilus_metafile_factory_get_vepv (); - CORBA_exception_init (&ev); - POA_Nautilus_MetafileFactory__init ((PortableServer_Servant) servant, &ev); - if (ev._major != CORBA_NO_EXCEPTION){ - g_error ("can't initialize Nautilus metafile factory"); - } - CORBA_exception_free (&ev); - - return servant; + klass->epv.open = corba_open; } static void -nautilus_metafile_factory_initialize (NautilusMetafileFactory *factory) +nautilus_metafile_factory_init (NautilusMetafileFactory *factory) { - Nautilus_MetafileFactory corba_factory; - factory->details = g_new0 (NautilusMetafileFactoryDetails, 1); - - corba_factory = bonobo_object_activate_servant - (BONOBO_OBJECT (factory), nautilus_metafile_factory_create_servant ()); - bonobo_object_construct (BONOBO_OBJECT (factory), corba_factory); } static void diff --git a/libnautilus-private/nautilus-metafile-factory.h b/libnautilus-private/nautilus-metafile-factory.h index ad1737ecf..014b7d627 100644 --- a/libnautilus-private/nautilus-metafile-factory.h +++ b/libnautilus-private/nautilus-metafile-factory.h @@ -23,7 +23,10 @@ #ifndef NAUTILUS_METAFILE_FACTORY_H #define NAUTILUS_METAFILE_FACTORY_H +#include "nautilus-metafile-server.h" + #include <bonobo/bonobo-object.h> +#include <bonobo/bonobo-xobject.h> #define NAUTILUS_TYPE_METAFILE_FACTORY (nautilus_metafile_factory_get_type ()) #define NAUTILUS_METAFILE_FACTORY(obj) (GTK_CHECK_CAST ((obj), NAUTILUS_TYPE_METAFILE_FACTORY, NautilusMetafileFactory)) @@ -34,12 +37,13 @@ typedef struct NautilusMetafileFactoryDetails NautilusMetafileFactoryDetails; typedef struct { - BonoboObject parent_slot; + BonoboXObject parent_slot; NautilusMetafileFactoryDetails *details; } NautilusMetafileFactory; typedef struct { - BonoboObjectClass parent_slot; + BonoboXObjectClass parent_slot; + POA_Nautilus_MetafileFactory__epv epv; } NautilusMetafileFactoryClass; GtkType nautilus_metafile_factory_get_type (void); diff --git a/libnautilus-private/nautilus-metafile.c b/libnautilus-private/nautilus-metafile.c index 783f912a7..2850a442c 100644 --- a/libnautilus-private/nautilus-metafile.c +++ b/libnautilus-private/nautilus-metafile.c @@ -22,11 +22,11 @@ #include <config.h> #include "nautilus-metafile.h" -#include "nautilus-metafile-server.h" -#include <libnautilus/nautilus-bonobo-workarounds.h> #include <libnautilus-extensions/nautilus-gtk-macros.h> #include <libnautilus-extensions/nautilus-directory.h> +#include <libnautilus-extensions/nautilus-bonobo-extensions.h> +#include <libnautilus/nautilus-bonobo-workarounds.h> #include "nautilus-string.h" #include "nautilus-metadata.h" @@ -40,8 +40,8 @@ #define METAFILE_XML_VERSION "1.0" -static void nautilus_metafile_initialize (NautilusMetafile *metafile); -static void nautilus_metafile_initialize_class (NautilusMetafileClass *klass); +static void nautilus_metafile_init (NautilusMetafile *metafile); +static void nautilus_metafile_class_init (NautilusMetafileClass *klass); static void destroy (GtkObject *metafile); @@ -124,72 +124,29 @@ static void remove_file_metadata (NautilusDirectory *directory, static void call_metafile_changed_for_one_file (NautilusDirectory *directory, const CORBA_char *file_name); -NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetafile, nautilus_metafile, BONOBO_OBJECT_TYPE) +NAUTILUS_BONOBO_X_BOILERPLATE (NautilusMetafile, Nautilus_Metafile, BONOBO_X_OBJECT_TYPE, nautilus_metafile) static void -nautilus_metafile_initialize_class (NautilusMetafileClass *klass) +nautilus_metafile_class_init (NautilusMetafileClass *klass) { GTK_OBJECT_CLASS (klass)->destroy = destroy; -} - -static POA_Nautilus_Metafile__epv * -nautilus_metafile_get_epv (void) -{ - static POA_Nautilus_Metafile__epv epv; - - epv.is_read = corba_is_read; - epv.get = corba_get; - epv.get_list = corba_get_list; - epv.set = corba_set; - epv.set_list = corba_set_list; - epv.copy = corba_copy; - epv.remove = corba_remove; - epv.rename = corba_rename; - epv.register_monitor = corba_register_monitor; - epv.unregister_monitor = corba_unregister_monitor; - - return &epv; -} - -static POA_Nautilus_Metafile__vepv * -nautilus_metafile_get_vepv (void) -{ - static POA_Nautilus_Metafile__vepv vepv; - - vepv.Bonobo_Unknown_epv = nautilus_bonobo_object_get_epv (); - vepv.Nautilus_Metafile_epv = nautilus_metafile_get_epv (); - return &vepv; -} - -static POA_Nautilus_Metafile * -nautilus_metafile_create_servant (void) -{ - POA_Nautilus_Metafile *servant; - CORBA_Environment ev; - - servant = (POA_Nautilus_Metafile *) g_new0 (BonoboObjectServant, 1); - servant->vepv = nautilus_metafile_get_vepv (); - CORBA_exception_init (&ev); - POA_Nautilus_Metafile__init ((PortableServer_Servant) servant, &ev); - if (ev._major != CORBA_NO_EXCEPTION){ - g_error ("can't initialize Nautilus metafile"); - } - CORBA_exception_free (&ev); - - return servant; + klass->epv.is_read = corba_is_read; + klass->epv.get = corba_get; + klass->epv.get_list = corba_get_list; + klass->epv.set = corba_set; + klass->epv.set_list = corba_set_list; + klass->epv.copy = corba_copy; + klass->epv.remove = corba_remove; + klass->epv.rename = corba_rename; + klass->epv.register_monitor = corba_register_monitor; + klass->epv.unregister_monitor = corba_unregister_monitor; } static void -nautilus_metafile_initialize (NautilusMetafile *metafile) +nautilus_metafile_init (NautilusMetafile *metafile) { - Nautilus_Metafile corba_metafile; - metafile->details = g_new0 (NautilusMetafileDetails, 1); - - corba_metafile = bonobo_object_activate_servant - (BONOBO_OBJECT (metafile), nautilus_metafile_create_servant ()); - bonobo_object_construct (BONOBO_OBJECT (metafile), corba_metafile); } static void diff --git a/libnautilus-private/nautilus-metafile.h b/libnautilus-private/nautilus-metafile.h index ca2f65bda..94e2c3a44 100644 --- a/libnautilus-private/nautilus-metafile.h +++ b/libnautilus-private/nautilus-metafile.h @@ -23,7 +23,10 @@ #ifndef NAUTILUS_METAFILE_H #define NAUTILUS_METAFILE_H +#include "nautilus-metafile-server.h" + #include <bonobo/bonobo-object.h> +#include <bonobo/bonobo-xobject.h> #include <gnome-xml/tree.h> #include "nautilus-directory.h" @@ -37,7 +40,7 @@ typedef struct NautilusMetafileDetails NautilusMetafileDetails; typedef struct { - BonoboObject parent_slot; + BonoboXObject parent_slot; NautilusMetafileDetails *details; } NautilusMetafile; @@ -52,7 +55,8 @@ struct NautilusMetafileDetails { }; typedef struct { - BonoboObjectClass parent_slot; + BonoboXObjectClass parent_slot; + POA_Nautilus_Metafile__epv epv; } NautilusMetafileClass; GtkType nautilus_metafile_get_type (void); |