Re: Client side usage of PersistStream

Jean Bréfort <[email protected]> Wed, 18 Jun 2003 07:53:31 +0200
Newsgroups gmane.comp.gnome.components
Message-ID <[email protected]>
Martin Kretzschmar wrote:

>Hi Christian,
>
>Am Die, 2003-06-17 um 00.13 schrieb Christian Glodt:
>  
>
>>I've been looking for an example of client side
>>usage of the PersistStream interface. Specifically,
>>I want to feed a local file to a Control in the easiest
>>possible way. I've tried PersistFile, which works fine,
>>but not all Controls support PersistFile anymore as its
>>deprecated.
>>    
>>
>
>No, the PersistFile interface is not deprecated. Only the use of
>BonoboPersistFile for implementing PersistFile in a component is
>discouraged. Same for BonoboPersistStream.
>
>  
>
>>I'm currently blocked on the part where I need to
>>instantiate a Bonobo_Stream which I can pass to
>>Bonobo_PersistStream_load(). I've read somewhere that
>>GnomeVFS can create such a stream, but I didn't find
>>out how.
>>    
>>
>
>To get a (read-only) Stream, do 
>stream = bonobo_get_object (moniker, "IDL:Bonobo/Stream:1.0", &ev);
>
>where moniker is "file:<<path to your file>>" for local files, or
>"vfs:<<vfs-uri>>" for gnome-vfs, or some other fancy moniker.
>
>But you really want:
>
>control = bonobo_get_object (moniker, "IDL:Bonobo/Control:1.0", &ev);
>
>which will return a control with the file loaded. It will use whatever
>PersistFoo the control implements.
>
>  
>
>>I'd be very grateful for any explanations or pointers
>>to sources I can study to see how this can be done.
>>    
>>
>
>Nautilus can use PersistStream:
>nautilus/components/adapter/nautilus-adapter-stream-load-strategy.c
>in nautilus_adapter_stream_load_strategy_load_location
>
>And in gpdf a test uses PersistStream:
>gpdf/xpdf/tests/test-pdf-loading.cc, in load_via_bonobo_stream.
>
>  
>
Hi,

I have written some very simple tests for the Bonobo Controls in 
gchemutils (http://www.nongnu.org/gchemutils (only in cvs)), gchempaint 
(http://www.nongnu.org/gchempaint)and gcrystal 
(http://www.nongnu.org/gcrystal) which use the PersistStream interface. 
The files are test/bonobo-control-test.c and all three are very similar, 
just the control (and the file loaded) are different.

Best regards,

Jean