Re: silly bug of libbonobo; bug 104931



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]