Es ist wirklich einfach: Ihre GUI mit Glade erstellen (und es als GtkBuilder speichern) und dann in Ruby verwenden mit:
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) }
die erste Zeile erstellt das Builder-Objekt, das die von der Erstellung verantwortlich ist Glib::Objects
aus Ihrer XML-Definition und speichert sie auch für die spätere Verwendung (Sie können get_object(objname)
auf Builder aufrufen, es wird das mit objname
definierte Widget zurückgegeben).
Die zweite Zeile lädt tatsächlich Ihre Schnittstellendefinition, wobei file
der Pfad zu Ihrer gtkbuilder-Datei ist.
Die dritte Zeile ist etwas unklarer. connect_signals
ruft für jedes Signal, das Sie in Ihrer Schnittstelle definiert haben, den einmal angegebenen Baustein auf. handler
ist nur eine Zeichenfolge (der Name des Signals). Sie sollen einen Proc (oder irgendetwas, das mit call
aufrufbar ist) aus dem Block zurückgeben: Dieser Block wird jedes Mal aufgerufen, wenn das durch handler
definierte Signal ausgelöst wird. In diesem Beispiel gibt der Block nur eine Methode mit dem gleichen Namen wie das Signal zurück (und es wird vereinfachend angenommen, dass es für jedes der in der Schnittstelle definierten Signale eine Methode gibt).
Redcar ist oben auf JRuby/SWT umgesetzt, so überhaupt nicht GTK verwendet. – Jacob
Das liegt daran, dass sie gewechselt haben. Zum Zeitpunkt des Schreibens meines Kommentars war es relevant. – Vadi