Il est très simple: il suffit de créer votre interface avec Glade (et l'enregistrer comme GtkBuilder), puis l'utiliser en rubis avec:
require 'rubygems'
require 'gtk2'
# require 'libglade2' #you don't need this anymore
builder = Gtk::Builder.new
builder.add_from_file(file)
builder.connect_signals {|handler| method(handler) }
la première ligne crée l'objet Builder, qui est responsable de la création de la Glib::Objects
de votre définition de xml et les stocke également pour une utilisation ultérieure (vous pouvez appeler get_object(objname)
sur le constructeur, il retournera le widget défini avec objname
).
La deuxième ligne charge réellement votre définition d'interface, où file
est le chemin d'accès à votre fichier gtkbuilder.
La troisième ligne est un peu plus obscure. connect_signals
appelle le bloc fourni une fois pour chaque signal que vous avez défini dans votre interface. handler
est juste une chaîne (le nom du signal). Vous êtes censé renvoyer un proc (ou quelque chose d'invocable avec call
) du bloc: ce bloc sera invoqué chaque fois que le signal défini par handler
est déclenché. Dans cet exemple, le bloc renvoie simplement une méthode portant le même nom que le signal (et, par souci de simplicité, il est supposé qu'il existe une méthode pour chacun des signaux définis dans l'interface).
Redcar est mis en œuvre sur le dessus de JRuby/SWT, donc pas du tout GTK lié. – Jacob
C'est parce qu'ils ont changé. Au moment d'écrire mon commentaire, c'était pertinent. – Vadi