From: Kouhei S. <ko...@co...> - 2007-01-19 15:11:09
|
須藤です. こんなのでいいですか? バッファからXMLを読み込む場合はどうやってもcustom_methodsが 収集できないんですよね.(GLadeXML#initializeでXMLを保存して おけばできますが.) Index: lib/libglade2.rb =================================================================== RCS file: /cvsroot/ruby-gnome2/ruby-gnome2/libglade/lib/libglade2.rb,v retrieving revision 1.18 diff -u -p -r1.18 libglade2.rb --- lib/libglade2.rb 31 Dec 2006 03:39:27 -0000 1.18 +++ lib/libglade2.rb 19 Jan 2007 15:07:53 -0000 @@ -79,7 +79,7 @@ class GladeXML @widget_names = [] @custom_methods = [] end - if @widget_names.size == 0 + if @widget_names.size == 0 and filename regexp_name = Regexp.new("<widget class=\".*\" id=\"(.*)\"") regexp_custom = Regexp.new("<property name=\"creation_function\">(.*)</property>") IO.readlines(filename).each { |line| @@ -94,8 +94,8 @@ class GladeXML end def guard_sources_from_gc - widget_names.each do |name| - guard_source_from_gc(self[name]) + get_widget_prefix("").each do |widget| + guard_source_from_gc(widget) end end In <1168982911.5407.4.camel@datengrab> "[ruby-gnome2-devel-en] [BUG] GladeXML::BUFFER" on Tue, 16 Jan 2007 22:28:31 +0100, Detlef Reichl <det...@gm...> wrote: > Hi, > > if you want to create widgets from a GladeXML::BUFFER it gives you the > following error message: > > det@datengrab:~/Desktop$ ruby rubydatei.rb > /usr/local/lib/site_ruby/1.8/libglade2.rb:85:in `readlines': can't > convert nil into String (TypeError) > from /usr/local/lib/site_ruby/1.8/libglade2.rb:85:in > `build_names' > from /usr/local/lib/site_ruby/1.8/libglade2.rb:55:in > `widget_names' > from /usr/local/lib/site_ruby/1.8/libglade2.rb:97:in > `guard_sources_from_gc' > from rubydatei.rb:18:in `initialize' > from rubydatei.rb:18:in `new' > from rubydatei.rb:18 > > > > Here is the example program: > > > > #!/usr/bin/ruby > > require 'libglade2' > require 'gtk2' > > > class Win < Gtk::Window > idata = '<glade-interface> > <widget class="GtkImage" id="image"> > <property name="visible">True</property> > <property name="xalign">0.5</property> > <property name="yalign">0.5</property> > <property name="xpad">0</property> > <property name="ypad">0</property> > </widget> > </glade-interface>' > > glade = GladeXML.new idata, 'image', nil, GladeXML::BUFFER > image = glade['image'] > self.add image > self.default_size 200, 200 > end > > > win = Win.new > win.show_all > Gtk.main > > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > ruby-gnome2-devel-en mailing list > rub...@li... > https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-en |