Libbonobo Reference Manual | ||||
---|---|---|---|---|
Top | Description | Object Hierarchy |
BonoboPersistStreamBonoboPersistStream — Interface for anything that can save / load itself from a Bonobo stream. |
Synopsis
BonoboPersistStream; BonoboPersistStreamClass; void (*BonoboPersistStreamIOFn) (BonoboPersistStream *ps
,const Bonobo_Stream stream
,Bonobo_Persist_ContentType type
,void *closure
,CORBA_Environment *ev
); Bonobo_Persist_ContentTypeList * (*BonoboPersistStreamTypesFn) (BonoboPersistStream *ps
,void *closure
,CORBA_Environment *ev
); BonoboPersistStream * bonobo_persist_stream_new (BonoboPersistStreamIOFn load_fn
,BonoboPersistStreamIOFn save_fn
,BonoboPersistStreamTypesFn types_fn
,const gchar *iid
,void *closure
); BonoboPersistStream * bonobo_persist_stream_construct (BonoboPersistStream *ps
,BonoboPersistStreamIOFn load_fn
,BonoboPersistStreamIOFn save_fn
,BonoboPersistStreamTypesFn types_fn
,const gchar *iid
,void *closure
);
Description
The PersistStream interface is the interface to use for all new components that are able to load and save themselves to a stream. It should be associated with any BonoboEmbeddable for use by the container in creating a compound document.
This interface works by connecting callbacks to the methods, in a somewhat deprecated fashion, it is probably better nowadays to simply sub-class the BonoboXObject and override the epv methods. Either way, after all the caveats here is an example use:
Example 28. Implementing the PersistStream callbacks
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
static void load_from_stream (BonoboPersistStream *ps, const Bonobo_Stream stream, Bonobo_Persist_ContentType type, void *closure, CORBA_Environment *ev) { EogImageData *image_data = closure; g_warning ("Load content from stream of type '%s'", type); } static gint save_to_stream (BonoboPersistStream *ps, const Bonobo_Stream stream, Bonobo_Persist_ContentType type, void *closure, CORBA_Environment *ev) { EogImageData *image_data = closure; g_warning ("Save content to stream with type '%s'", type); } static Bonobo_Persist_ContentTypeList * get_supported_types (BonoboPersistStream *ps, void *closure, CORBA_Environment *ev) { return bonobo_persist_generate_content_types ( 2, "text/plain", "text/html"); } |
Having implemented the callbacks we then have to register them
and aggregate the interface to our object:
Example 29. Aggregating a new PersistStream
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
EogImageData * eog_image_data_construct (EogImageData *image_data) { BonoboObject *retval; BonoboPersistStream *ps; ps = bonobo_persist_stream_new ( load_from_stream, save_to_stream, get_supported_types, NULL, image_data); if (ps == NULL) { bonobo_object_unref (BONOBO_OBJECT (image_data)); return NULL; } bonobo_object_add_interface (BONOBO_OBJECT (image_data), BONOBO_OBJECT (ps)); return image_data; } |
Details
BonoboPersistStream
typedef struct _BonoboPersistStream BonoboPersistStream;
Warning
BonoboPersistStream
is deprecated and should not be used in newly-written code.
BonoboPersistStreamClass
typedef struct { BonoboPersistClass parent_class; POA_Bonobo_PersistStream__epv epv; /* methods */ void (*load) (BonoboPersistStream *ps, Bonobo_Stream stream, Bonobo_Persist_ContentType type, CORBA_Environment *ev); void (*save) (BonoboPersistStream *ps, Bonobo_Stream stream, Bonobo_Persist_ContentType type, CORBA_Environment *ev); Bonobo_Persist_ContentTypeList * (*get_content_types) (BonoboPersistStream *ps, CORBA_Environment *ev); } BonoboPersistStreamClass;
Warning
BonoboPersistStreamClass
is deprecated and should not be used in newly-written code.
BonoboPersistStreamIOFn ()
void (*BonoboPersistStreamIOFn) (BonoboPersistStream *ps
,const Bonobo_Stream stream
,Bonobo_Persist_ContentType type
,void *closure
,CORBA_Environment *ev
);
Warning
BonoboPersistStreamIOFn
is deprecated and should not be used in newly-written code.
|
|
|
|
|
|
|
|
|
BonoboPersistStreamTypesFn ()
Bonobo_Persist_ContentTypeList * (*BonoboPersistStreamTypesFn) (BonoboPersistStream *ps
,void *closure
,CORBA_Environment *ev
);
Warning
BonoboPersistStreamTypesFn
is deprecated and should not be used in newly-written code.
|
|
|
|
|
|
Returns : |
bonobo_persist_stream_new ()
BonoboPersistStream * bonobo_persist_stream_new (BonoboPersistStreamIOFn load_fn
,BonoboPersistStreamIOFn save_fn
,BonoboPersistStreamTypesFn types_fn
,const gchar *iid
,void *closure
);
Warning
bonobo_persist_stream_new
is deprecated and should not be used in newly-written code.
Creates a new BonoboPersistStream object. The various operations
for the object are performed by the provided callback functions,
which are passed closure
when they are invoked. If any callback is
NULL
, the corresponding operation is performed by the class load
and save routines.
|
Loading routine |
|
Saving routine |
|
get_content_types routine |
|
OAF IID of the object this interface is aggregated to |
|
Data passed to IO routines. |
Returns : |
the newly-created BonoboPersistStream object. |
bonobo_persist_stream_construct ()
BonoboPersistStream * bonobo_persist_stream_construct (BonoboPersistStream *ps
,BonoboPersistStreamIOFn load_fn
,BonoboPersistStreamIOFn save_fn
,BonoboPersistStreamTypesFn types_fn
,const gchar *iid
,void *closure
);
Warning
bonobo_persist_stream_construct
is deprecated and should not be used in newly-written code.
Initializes the BonoboPersistStream object. The load and save
operations for the object are performed by the provided load_fn
and save_fn
callback functions, which are passed closure
when
they are invoked. If either load_fn
or save_fn
is NULL
, the
corresponding operation is performed by the class load and save
routines.
|
A BonoboPersistStream object |
|
Loading routine |
|
Saving routine |
|
returns the supported types |
|
OAF IID of the object this interface is aggregated to |
|
Data passed to IO routines. |
Returns : |
The initialized BonoboPersistStream object. |