きくたにです。

akaishiさんのページを参考にようやくruby/gtkに
手を染めました。まずは Treeウィジェット の例を参考に
file viwer風のもの。
「Developing Linux Applications with GTK+ and GDK」
という本も参考にしてます。

-------------------------------------------------------
require 'gtk'
require 'find'

if ARGV.size == 0
  printf("usage %s directory\n", $0) 
  exit
end
top = ARGV.shift

dir = {}

window = Gtk::Window.new(Gtk::WINDOW_TOPLEVEL)
window.border_width = 2
window.set_title 'Files using trees'

# Vertical box
box1 = Gtk::HBox::new(FALSE, 0)
window.add box1
box1.show

# create scrolleed window for the tree
scrolled_win = Gtk::ScrolledWindow::new()
scrolled_win.set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC)
box1.pack_start(scrolled_win, TRUE, TRUE, 0)
scrolled_win.set_usize 250, 250
scrolled_win.show

# create root tree widget
tree = Gtk::Tree.new
tree.show

# add the tree to the scrolled window
scrolled_win.add_with_viewport tree

# create list box
listbox = Gtk::List::new()
listbox.set_usize 250, 250
box1.pack_start(listbox, TRUE, TRUE, 0)
listbox.show

# create a subtree
dir[File.dirname(top)] = tree
Find.find(top) do |f|
  dirname = File.dirname(f)
  item = Gtk::TreeItem.new(File.basename f)
  item.signal_connect('select') do
    if File.directory? f
      if (c = listbox.children) != []
	listbox.clear_items(0, c.size)
      end
      Dir.foreach(f) do |fn|
	list_item = Gtk::ListItem::new(fn)
	listbox.add list_item
	list_item.show
      end
    end
  end
  dir[dirname].append item
  if File.directory? f
    item.show
    dir[f] = Gtk::Tree.new
    item.set_subtree dir[f]
  end
end

window.show
Gtk.main
-------------------------------------------------------

質問は、
「右のファイル名が出てくるところにもスクロールバーを付けたい」
です。いろいろ試行錯誤したけどわからなかったんで。

あと、なんだか「すっごく遅い」んですけど。
起動が遅いのは全階層読んじゃうんでしかたがないけど、
ディレクトリ名クリックしてファイル名が出てくるまでも
やけに時間かかるのはなぜ?

ruby-1.2.5 + libgtk-1.2 + ruby-gtk-pre0.17.tar.gz + 保科パッチ
です。

なお、サブジェクトは、菊谷が入門するんであって、菊谷が
入門書を書くわけではありません。あたりまえのことです。

-- 
Kikutani, Makoto  kikutani / sprintmail.com