Bonobo API Reference Manual | |||
---|---|---|---|
<<< Previous Page | Home | Up | Next Page >>> |
struct BonoboPersistFile; int (*BonoboPersistFileIOFn) ( |
|
The PersistFile interface is a useful interface for Bonoboizing
legacy applications, however, for new / correct applications it
is far preferable to implement the
This interface works by connecting callbacks to the methods, in a pretty 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 1. Persist file implementation
static gint load_from_file (BonoboPersistFile *pf, const CORBA_char *filename, CORBA_Environment *ev, void *closure) { EogImageData *image_data = closure; g_warning ("Load from 's'", filename); return 0; /* Return 0 on success */ } static gint save_to_file (BonoboPersistFile *pf, const CORBA_char *filename, CORBA_Environment *ev, void *closure) { EogImageData *image_data = closure; g_warning ("Save to 's'", filename); return 0; /* Return 0 on success */ } |
Example 2. Aggregating a new PersistFile
EogImageData * eog_image_data_construct (EogImageData *image_data) { BonoboObject *retval; BonoboPersistFile *file; file = bonobo_persist_file_new ( load_from_file, save_to_file, image_data); if (file == NULL) { bonobo_object_unref (BONOBO_OBJECT (image_data)); return NULL; } bonobo_object_add_interface (BONOBO_OBJECT (image_data), BONOBO_OBJECT (file)); return image_data; } |
Example 3. Chaining to a
static gint load_from_file (BonoboPersistFile *pf, const CORBA_char *filename, CORBA_Environment *ev, void *closure) { Bonobo_PersistStream ps = closure; BonoboStream *stream; stream = bonobo_stream_open ( BONOBO_IO_DRIVER_FS, filename, Bonobo_STORAGE_READ, 0); if (!stream) return 0; .. extract content type from file ... Bonobo_PersistStream_load (ps, type, ev); return 0; /* Return 0 on success */ } static gint save_to_file (BonoboPersistFile *pf, const CORBA_char *filename, CORBA_Environment *ev, void *closure) { Bonobo_PersistStream ps = closure; BonoboStream *stream; stream = bonobo_stream_open ( BONOBO_IO_DRIVER_FS, filename, Bonobo_STORAGE_WRITE | Bonobo_STORAGE_CREATE, S_IRUSR | S_IWUSR | S_IRGRP); if (!stream) return 0; .. work out content type we want to save ... Bonobo_PersistStream_save (ps, type, ev); return 0; /* Return 0 on success */ } |
int (*BonoboPersistFileIOFn) ( |
pf : | |
filename : | |
ev : | |
closure : | |
Returns : |
|
typedef struct { BonoboPersistClass parent_class; POA_Bonobo_PersistFile__epv epv; /* methods */ int (*load) (BonoboPersistFile *ps, const CORBA_char *filename, CORBA_Environment *ev); int (*save) (BonoboPersistFile *ps, const CORBA_char *filename, CORBA_Environment *ev); char *(*get_current_file) (BonoboPersistFile *ps, CORBA_Environment *ev); } BonoboPersistFileClass; |
void bonobo_persist_file_set_dirty ( |
ps : | |
dirty : |
|
|
Creates a BonoboPersistFile object. The load_fn and save_fn parameters might be NULL. If this is the case, the load and save operations are performed by the class load and save methods
load_fn : | Loading routine |
save_fn : | Saving routine |
closure : | Data passed to IO routines. |
Returns : |
|
|
Initializes the BonoboPersistFile object. The load_fn and save_fn parameters might be NULL. If this is the case, the load and save operations are performed by the class load and save methods
ps : | |
load_fn : | Loading routine |
save_fn : | Saving routine |
closure : | Data passed to IO routines. |
Returns : |