5
juin
2013
[Vala] Utilisation des templates Gtk
juin
2013
Un article de Rachel
Pas de commentaires
à partir de gtk 3.9.3, il est possible d’utiliser les modèles créés avec Glade sans les importer via GtkBuilder.
Exemple de code Vala :
using Gtk;
public static void main(string[] args){
Gtk.init(ref args);
var w = new Window();
w.destroy.connect(Gtk.main_quit);
w.add(new box1());
w.show_all();
Gtk.main();
}
[GtkTemplate (ui = "/org/foo/my/window.ui")]
public class box1 : Box
{
[GtkChild]
Button button1;
[GtkChild]
Entry entry1;
public box1(){
}
[GtkCallback]
[CCode(instance_pos = -1)]
void button1_clicked(Button b){
b.label = "test";
}
}
public static void main(string[] args){
Gtk.init(ref args);
var w = new Window();
w.destroy.connect(Gtk.main_quit);
w.add(new box1());
w.show_all();
Gtk.main();
}
[GtkTemplate (ui = "/org/foo/my/window.ui")]
public class box1 : Box
{
[GtkChild]
Button button1;
[GtkChild]
Entry entry1;
public box1(){
}
[GtkCallback]
[CCode(instance_pos = -1)]
void button1_clicked(Button b){
b.label = "test";
}
}
Il faudra lier la resource au programme. Il faut aussi créer un fichier de ressources sur ce modèle xml:
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/foo/my">
<file compressed="true" preprocess="xml-stripblanks">window.ui</file>
</gresource>
</gresources>
<gresources>
<gresource prefix="/org/foo/my">
<file compressed="true" preprocess="xml-stripblanks">window.ui</file>
</gresource>
</gresources>
N.B. : Il est tout fait possible d’inclure plusieurs fichiers ui dans vos resources, en ajoutant d’autres <file> entre les balises <gresource>
Ceci fait, voici la chaîne de compilation :
glib-compile-resources --generate-source resources.xml
valac main.vala resources.c --pkg gtk+-3.0 --pkg gmodule-2.0 --gresources resources.xml
valac main.vala resources.c --pkg gtk+-3.0 --pkg gmodule-2.0 --gresources resources.xml
Le fichier ui précédemment utilisé n’est plus nécessaire.
Prérequis :
- Gtk+ > 3.9.3
- GLib > 2.37