Migrating from libglade to GtkBuilder
Since version 2.12, GTK+ provides #GtkBuilder to construct
user interfaces from XML descriptions, similar to the functionality
provided by #GladeXML in the libglade library.
A good way to start a migration from libglade to GtkBuilder is using
glade3 to convert your .glade file.
If your code uses the @root parameter of glade_xml_new(),
you can use gtk_builder_add_objects_from_file() to construct only certain
objects from a GtkBuilder file.
Alternatively, GTK+ also offers the
gtk-builder-convert script you can use
to do the conversion; in which case you should be careful to inspect the output
and make sure you didn't lose any data.
Step-by-step instructions for porting code from libglade to GtkBuilderlibgladeGtkBuilder]]>not neededGladeXML*GtkBuilder*glade_xml_new (FILE, "first_widget", NULL)
GError* error = NULL;
GtkBuilder* builder = gtk_builder_new ();
if (!gtk_builder_add_from_file (builder, FILE, &error))
{
g_warning ("Couldn't load builder file: %s", error->message);
g_error_free (error);
}
glade_xml_get_widget (gxml, “widget_name”)GTK_WIDGET (gtk_builder_get_object (builder, “widget_name”))glade_get_widget_name (widget)gtk_widget_get_name (widget)glade_xml_get_widget_prefix (gxml, “prefix”)can be emulated by gtk_builder_get_objects (builder) together with manual filtering. It returns a GSList* instead of a GList* though.
While GtkBuilder strives to be a complete replacement for
libglade, there are a number of areas where it is currently
still behind libglade:
GtkBuilder supports context information in translatable
properties in a slightly different way than libglade.
Intltool does not yet support this; see
bug
454894 for the current status of intltool support for
GtkBuilder files. Thankfully, context in translations is a
rarely used feature, and if you are not using it, intltools
glade format support works just fine for GtkBuilder files.
While libglade can often tolerate multiple widgets having the
same id in a glade file, GtkBuilder will not accept duplicate
object ids. Both gtk-builder-convert
and the GtkBuilder parser emit warnings when they see
duplicate ids.