Это действительно просто: просто создайте свой графический интерфейс с Glade (и сохраните его как GtkBuilder), а затем используйте его в ruby с:
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) }
первая строка создает объект Builder, который отвечает за создание Glib::Objects
из вашего определения xml, а также сохраняет их для последующего использования (вы можете вызвать get_object(objname)
на компоновщике, он вернет виджет, определенный с помощью objname
).
Вторая строка фактически загружает определение вашего интерфейса, где file
- это путь к вашему файлу gtkbuilder.
Третья строка несколько более неясна. connect_signals
вызывает блок, предоставленный один раз для каждого сигнала, который вы определили в вашем интерфейсе. handler
это просто строка (название сигнала). Предполагается, что вы должны вернуть proc (или что-либо, что можно вызвать с call
) из блока: этот блок будет вызываться каждый раз, когда срабатывает сигнал, определенный handler
. В этом примере блок просто возвращает метод с тем же именем, что и сигнал (и для простоты предполагается, что для каждого из сигналов, определенных в интерфейсе, существует метод).