GtkBuilder questions



Hi,

I'm trying to use GtkBuilder in Empathy instead of Glade. My first
problem is bug #486420.

libempathy-gtk is a library with a set of widgets that any application
can embed in is UI. So I would like to have methods like
GtkWidget *empathy_foo_new ();

This function should return a new object of a class I define myself that
inherit from GtkWindow or other classes, the object need to have
refcount=1, floating=true and visible=false (like all gtk_foo_new()
methods in GTK+).

Most widgets inherit from GtkContainer and I define in my glade/ui xml
file widgets contained. If I do that naively I can construct the widget
using glade (and convert to ui) but that won't be my own defined class.
Is there a way to tell GtkBuilder that an object is of type EmpathyFoo
and GtkBuilder will magically use g_object_new (EMPATHY_TYPE_FOO,
properties) to create that object and will pack childrens in it? I was
told that's possible to create my own widgets classes for glade using
"catalogues", I didn't tested that yet, is that possible with GtkBuilder
too?

An other problem I have is using GtkBuilder if the root is not a
GtkWindow object, GtkBuilder takes ownership of the widget (using
g_object_sink_ref), that means if I create a window I can unref the
builder safely but if it's just a GtkHBox (for example) I have to first
g_object_ref(hbox); and g_object_force_floating (hbox); and then it
should be safe to unref the builder, and my hbox becomes a normal widget
I can pack where I want. Is that the normal behaviours? I think libglade
don't act like that.

And final question; I have one ui file per widget, should I create one
GtkBuilder object and add_from_file() all ui files in it? Or should I
create one GtkBuilder per widget? And if I want to create 2 instances of
one widget I have to create 2 different GtkBuilder objects or is there a
way to tell GtkBuilder to create a new instance of a given object?

Thanks for answers,
Xavier Claessens.




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