Es ist wirklich einfach: Erstellen Sie einfach Ihre GUI mit Glade (und speichern Sie es als GtkBuilder) und verwenden Sie es dann in Ruby 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 erzeugt das Builder-Objekt, das für die Erstellung der Glib::Objects
aus Ihrer Xml-Definition und speichert sie auch zur späteren Verwendung (Sie können die get_object(objname)
auf builder, wird das Widget zurückgegeben, das mit objname
).
Die zweite Zeile lädt Ihre Schnittstellendefinition, wobei file
ist der Pfad zu Ihrer gtkbuilder-Datei.
Die dritte Zeile ist etwas undeutlicher. connect_signals
ruft den bereitgestellten Block einmal für jedes Signal auf, das Sie in Ihrer Schnittstelle definiert haben. handler
ist nur eine Zeichenkette (der Name des Signals). Sie sollen einen proc zurückgeben (oder irgendetwas, das mit call
) des Blocks: Dieser Block wird jedes Mal aufgerufen, wenn das Signal, das durch handler
gefeuert wird. In diesem Beispiel gibt der Block lediglich eine Methode mit demselben Namen wie das Signal zurück (und der Einfachheit halber wird angenommen, dass es für jedes der in der Schnittstelle definierten Signale eine Methode gibt).