[Glade-devel] [glade3, patch] load library module before calling *_get_type ()



Hi!

Tommi wrote:

Hi,

Please find attached a patch that moves loading of the 
library module before the call to foo_get_type() that's 
supposedly in that library. 
With the patch I was able to get custom widgets to appear in 
glade palette.

Thank you for the patch, but unfortunately it's not correct (even if you're
right when you say that without it custom widgets don't work).

The "library" variable refers to the name of the library that contains the
special functions that may be needed by glade-3 to handle specially some of
the widgets contained in the real library.

Let me explain it with an example.

Let's say that you want to add support for a library that contains a widget
named foo.  We will call this library libfoo.so.

If you're lucky, you should be able to add support for this library just
adding an entry to glade-palette.xml and gtk-base.xml or gtk-additional.xml
(or eventually another special xml file, let's say gtk-foo-catalog.xml).

If you need some light customization of the handling of this widget by
glade-3, you can do it with an special xml file that will be indicated in
gtk-foo-catalog.xml. One example will be to ignore some property in
"edition" mode, like "visibility" (however you don't need to handle
specially "visibility" as it's already done in gtkwidget.xml, and these
things inherite).  Another example will be to change the default value of
some properties, when you can't change it in the widget itself (for example,
because you want to retain backward compatibility).

And, in the worst of cases, you will need to add special code to handle your
widget (usually neccesary, but not limited to, containers, for instance, as
you have to add programatically some placeholders here and there).  That
special code should go in a special library, with a name derived from the
name specified in the "library" attribute of your GladeCatalog (it should be
named "libglade" + library attribute, and it should go in the MODULES
directory of glade-3). It our case it may be libgladefoo.so.

That's the library that it's loaded by g_module_open in the code that you
move with your patch, and it's unrelated to the library that contains the
real Foo widget.

As you see, there's a missing piece, and it's the code that loads the
library that contains the Foo widget, as you need it to call the
foo_get_type function. That is, AFAIR, the only missing thing to make the
plugable widgets really work.

If you can cook a patch to load that library, it will be great.

I was thinking about having a special attribute in GladeCatalog to indicate
the name of the "main" library (libfoo.so), and not reusing the "library"
attribute for both libraries.

Cheers,






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]