Re: silly bug of libbonobo; bug 104931
- From: "Gustavo J. A. M. " Carneiro <gjc inescporto pt>
- To: Kang Jeong-Hee <Keizi mail co kr>
- Cc: "gnome-components-list gnome org" <gnome-components-list gnome org>
- Subject: Re: silly bug of libbonobo; bug 104931
- Date: 18 Feb 2003 18:21:39 +0000
On Tue, 2003-02-18 at 17:41, Kang Jeong-Hee wrote:
> On 2003.02.19 02:07 Gustavo J. A. M. Carneiro wrote:
> > With the moniker string 'file:some.avi', you are asking for a Bonobo
> > Control which can open the file 'some.avi'. In the Bonobo framework,
> > only components with the Bonobo::PersistStream interface can open files.
> > Well, there are other interfaces it could use, but the file: moniker was
> > designed this way.
> >
> > Nautilus uses its own, private interface, namely Nautilus::View. I bet
> > lumiére implements that interface.
> >
> > To be able to obtain the lumiére control, you have to create a custom
> > query, with bonobo-activation.
> >
> > <example>
> > Bonobo_Unknown obj;
> > Bonobo_Control control;
> >
> > obj = bonobo_activation_activate("bonobo:supported_mime_types.has
> > ('video/x-msvideo') AND repo_ids.has ('Bonobo/Control') ",
> > NULL, 0, NULL, NULL);
> > if (ob != CORBA_OBJECT_NIL)
> > control = Bonobo_Unknown_queryInterface(obj, "Bonobo/Control", NULL);
> > </example>
>
> yeah, that routine might get the target control well.
>
> but most of Bonobo/Control implementations does not have
> Bonobo/Stream interface in *.server;
>
> $ bonobo-activation-run-query "repo_ids.has('IDL:Bonobo/Control:1.0')" | wc -l
> 39
> and
> $ bonobo-activation-run-query "repo_ids.has('IDL:Bonobo/Control:1.0') AND repo_ids.has('IDL:Bonobo/PersistStream:1.0')"
> number of results: 2
> OAFIID:GNOME_GGV_Control
> OAFIID:GNOME_EOG_Control
>
> is really bad situation.
> is that all the fault of implementations,
> that does not provide stream interface *correctly*?
> then, how does the lumiere can open files and play well
> without the stream interface which is *essential part*?
I already told you. :)
Lumiere is a nautilus view. Nautilus views play by different rules. This
is the query
(nautilus/libnautilus-private/nautilus-mime-actions.c:1552):
/* Check if the component has the interfaces we need.
* We can work with either a Nautilus View, or
* with a Bonobo Control or Embeddable that supports
* one of the three persistence interfaces:
* PersistStream, ProgressiveDataSink, or
* PersistFile.
*/
str = g_strdup_printf ("(((repo_ids.has_all (['IDL:Bonobo/Control:1.0',"
"'IDL:Nautilus/View:1.0'])"
"OR (repo_ids.has_one (['IDL:Bonobo/Control:1.0',"
"'IDL:Bonobo/Embeddable:1.0'])"
"AND repo_ids.has_one (['IDL:Bonobo/PersistStream:1.0',"
"'IDL:Bonobo/ProgressiveDataSink:1.0',"
"'IDL:Bonobo/PersistFile:1.0']))) "
"AND %s", result);
So, it seems nautilus supports all the Persistency interfaces, while
bonobo moniker extender only supports Bonobo/PersistStream. It is a bit
inconsistent, I agree.
Looking at lumiere server file:
<oaf_attribute name="repo_ids" type="stringv">
<item value="IDL:Bonobo/Unknown:1.0"/>
<item value="IDL:Bonobo/Control:1.0"/>
<item value="IDL:Bonobo/PersistFile:1.0"/>
</oaf_attribute>
That explains everything, I hope.
Anyway, you don't have to use bonobo monikers; you can make your own
queries, you know..
> _______________________________________________
> gnome-components-list mailing list
> gnome-components-list gnome org
> http://mail.gnome.org/mailman/listinfo/gnome-components-list
--
Gustavo João Alves Marques Carneiro
<gjc inescporto pt> <gustavo users sourceforge net>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]