よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

November 17, 2003 [おもひで]

[Ruby-GNOME2] さっそくバグレポート

ってか、コンパイルエラーが3件。しくしく。

なるべく早いうちに0.8.1出しますんで他にもバグあったらレポートしてください。

GTK+-2.0の環境つぶしちゃったんだけど、また、どっかに用意しないとなー。

あー、はやくGTK+-2.0.xとRuby-1.6.x捨ててー。ってかライブラリありすぎ(T_T)。

[Ruby-GNOME2] ke-gtk2.rb

Gnome::Canvasを使ってみるテストとしてke.javaの移植をしたke-tk.rbを移植してみた。

#!/usr/bin/env ruby
# http://www.meigaku.ac.jp/~watayan/prog/java/nanisource.html
# の「何もしない Java applet に毛のはえたやつ」をRuby/Tkに移植したもの
# http://znz.s1.xrea.com/t/?date=20031114#p01
# をRuby/GnomeCanvas2に移植したもの
    
require 'gnomecanvas2'
                                                                                                               
Gtk.init
                                                                                                               
c = Gnome::Canvas.new(true)
c.set_size_request(200, 200)
c.set_scroll_region(0, 0, 200, 200)
                                                                                                               
maxx, maxy = c.width, c.height
num = (ARGV.shift || 100).to_i
interval = (ARGV.shift || 0.5).to_f
                                                                                                                
num.times do
  Thread.start do
    x, y = rand(maxx), rand(maxy)
    while true
      dx = ((rand * 4.0 - 2.0) * 2).to_i
      dy = ((rand * 4.0 - 2.0) * 2).to_i
      dx = 0 if x + dx < 0 || x + dx > maxx
      dy = 0 if y + dy < 0 || y + dy > maxy
      Gnome::CanvasLine.new(c.root,
                            :points => [[x,y],[x+dx, y+dy]],
                            :fill_color => 'black',
                            :width_pixels => 1)
      x += dx
      y += dy
      sleep interval
    end
  end
end
Gtk::Window.new.add(c).show_all
                                                                                                                
Gtk.main

わざとそのままThreadを使ってみたけど大丈夫のようだな。環境によっては再描画されないかも。

[Ruby-GNOME2] Ruby/GTK TreeView Tutorial

by Matthew Berg。まだ読んでないんですが複雑なGtk::TreeViewウィジェットの解説というだけあって期待大です。

元ネタのGTK+版を忠実に書き直したものではなく、Ruby版での使いやすさ・簡単さが表現されていると良いなー。

本日のツッコミ(全2件) [ツッコミを入れる]
なかだ (November 18, 2003 08:03)

ウィンドウを閉じたときに終了せずに止まってしまいました。> ke
Ctrl-C押したらSEGV。

#8 <signal handler called>
#9 0x40343f12 in g_type_check_instance_is_a () from /usr/lib/libgobject-2.0.so.0
#10 0x40e1f990 in gnome_canvas_request_redraw () from /usr/lib/libgnomecanvas-2.so.0
#11 0x40e1839c in gnome_canvas_item_construct () from /usr/lib/libgnomecanvas-2.so.0
#12 0x40e183fd in gnome_canvas_item_construct () from /usr/lib/libgnomecanvas-2.so.0
#13 0x4032b11f in g_object_class_list_properties () from /usr/lib/libgobject-2.0.so.0
#14 0x400c85a4 in rbgobj_free (holder=0x84b9808)
    at /home/nobu/src/ruby/gnome2/glib/src/rbgobject.c:137
#15 0x400352a0 in ruby_finalize_1 () at /home/nobu/src/ruby/1.8/eval.c:1343
#16 0x400353dd in ruby_cleanup (ex=1) at /home/nobu/src/ruby/1.8/eval.c:1380
#17 0x40035523 in ruby_stop (ex=6) at /home/nobu/src/ruby/1.8/eval.c:1411
#18 0x40035570 in ruby_run () at /home/nobu/src/ruby/1.8/eval.c:1423
#19 0x080486a1 in main (argc=2, argv=0xbfffedf4, envp=0xbfffee00)
    at /home/nobu/src/ruby/1.8/main.c:50

なかだ (November 18, 2003 08:07)

書き忘れ。

(gdb) up 14
#14 0x400c85a4 in rbgobj_free (holder=0x84b9808)
    at /home/nobu/src/ruby/gnome2/glib/src/rbgobject.c:137
137 g_object_unref(holder->gobj);
(gdb) p holder
$1 = (gobj_holder *) 0x84b9808
(gdb) p *holder
$2 = {self = 136005480, gobj = 0x1, cinfo = 0x8282af0, destroyed = 128}


編集