Le lun 09/02/2004 à 14:30, Stephane K. a écrit :
> Michael Meeks wrote:
>
> >Hi Andrew,
> >
> >On Thu, 2004-02-05 at 20:59 +1100, Andrew Burton wrote:
> >
> >
> >>For some reason, I cannot get pstream to work with the
> >>Bonobo_Unknown_queryInterface call. If I use Bonobo_PersistFile instead,
> >>
> >>
> >
> > So the EOG control isn't implementing PersistStream - which is a shame;
> >of course, it's harder - but then it's often more flexible / efficient /
> >powerful so ... ;->
> >
> > Of course - it'd be really nice if someone hacked up a generic
> >PersistFile -> PersistStream adaptor that worked via a /tmp file such
> >that this was hidden from users.
> >
> > HTH,
> >
> > Michael.
> >
> >
> >
> Hey people,
>
> anybody knows why the docs of bonobo 2.2 file persiststream and persist
> file as deprecated? What else should we use then?
>
The bonobo_persist_stream_new function is deprecated, not the
BonoboPersistStream interface. The same is true for BonoboPersistFile.
For a BonoboPersistStream, you should derive a class from BonoboPersist.
I use the following code:
#define PERSIST_STREAM_TYPE (persist_stream_get_type ())
#define PERSIST_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o),
PERSIST_STREAM_TYPE, PersistStream))
#define PERSIST_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k),
PERSIST_STREAM_TYPE, PersistStreamClass))
#define PERSIST_STREAM_IS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
PERSIST_STREAM_TYPE))
#define PERSIST_STREAM_IS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k),
PERSIST_STREAM_TYPE))
#define PERSIST_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o),
PERSIST_STREAM_TYPE, PersistStreamClass))
typedef struct {
BonoboPersist parent;
/* put your data here if any */
} PersistStream;
typedef struct {
BonoboPersistClass parent_class;
POA_Bonobo_PersistStream__epv epv;
} PersistStreamClass;
GType persist_stream_get_type (void);
static void on_load(gpointer p, Bonobo_Stream stream, const
Bonobo_Persist_ContentType type, CORBA_Environment *ev)
{
/* code for loading*/
}
static void on_save(gpointer p, Bonobo_Stream stream, const
Bonobo_Persist_ContentType type, CORBA_Environment *ev)
{
/* code for saving */
}
static PersistStream* persist_stream_new()
{
PersistStream* ps = (PersistStream*) g_object_new (PERSIST_STREAM_TYPE,
NULL);
return ps;
}
static void persist_stream_init(PersistStream *ps)
{
}
static void persist_stream_class_init(PersistStreamClass *klass)
{
POA_Bonobo_PersistStream__epv* epv = &(klass->epv);
epv->load = (void(*)(void*, CORBA_Object_type*, const CORBA_char*,
CORBA_Environment*)) on_load;
epv->save = (void(*)(void*, CORBA_Object_type*, const CORBA_char*,
CORBA_Environment*)) on_save;
}
BONOBO_TYPE_FUNC_FULL (
PersistStream, /* Glib class name */
Bonobo_PersistStream, /* CORBA interface name */
BONOBO_TYPE_PERSIST, /* parent type */
persist_stream); /* local prefix ie. 'echo'_class_init */
Then, you add the interface to your object:
PersistStreamps = persist_stream_new();
bonobo_object_add_interface(object, ps);
These lines come from GChemPaint-0.4.0 (file src/gchempaint-bonobo.cc)
Attachment:
signature.asc
Description: Ceci est une partie de message =?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?=