| 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. |
