Glade + Python/Ruby
以前書いたPyGTKでGladeを使うコードは以下のようにするともっと便利になる.
xml = gtk.glade.XML('GladeFileName.glade') xml.signal_autoconnect(dict(inspect.getmembers(self, inspect.ismethod))) [setattr(self, gtk.glade.get_widget_name(x), x) for x in xml.get_widget_prefix('')]
list comprehensionの中で破壊的なメソッドを使って戻り値を捨てるのはちょっと気持ち悪いけど,これでGladeなしのときと同じようにwidgetにインスタンス変数でアクセスできる.
Rubyだともっと自然な感じ.
GladeXML.new("GladeFileName.glade") {|handler| method(handler) }.get_widget_prefix('').each {|widget| instance_variable_set('@' + widget.name, widget) }