Depuis GTK+ 3, GTK+ inclue GtkBuilder qui à la même utilité que la libglade, c'est à dire manipuler des fichiers XML décrivant une interface graphique.
Interface basique :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="window">
<property name="can_focus">False</property>
<signal name="destroy" handler="on_window_destroy" swapped="no"/>
<child>
<object class="GtkButton" id="button1">
<property name="label" translatable="yes">button</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
</child>
</object>
</interface> |
Exemple de code c :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #include <gtk/gtk.h>
void
on_window_destroy (GtkWidget *object, gpointer user_data)
{
gtk_main_quit ();
}
int
main (int argc, char *argv[])
{
GtkBuilder *builder;
GtkWidget *window;
gtk_init (&argc, &argv);
builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "window.ui", NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
gtk_builder_connect_signals (builder, NULL);
g_object_unref (G_OBJECT (builder));
gtk_widget_show (window);
gtk_main ();
return 0;
} |
que l'on compile avec
gcc -Wall -g -o tutorial main.c `pkg-config --cflags --libs gtk+-3.0` -export-dynamic
Exemple de code Vala:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| using Gtk;
[CCode (instance_pos = -1)]
public void on_window_destroy (Widget window)
{
Gtk.main_quit();
}
int main (string[] args)
{
Builder builder;
Window window;
Gtk.init (ref args);
builder = new Builder ();
builder.add_from_file ("window.ui");
window = builder.get_object ("window") as Window;
builder.connect_signals (null);
window.show_all ();
Gtk.main ();
return 0;
} |
que l'on compile par
valac --pkg gtk+-3.0 --pkg gmodule-2.0 main.vala
Partager