[#18233] [book] blade.nagaokaut.ac.jp/ruby/ruby-list/ — Shin-ichiro Hara <sinara@...>

原です。

21 messages 1999/11/01
[#18239] [book] csv_split2 [Re: blade.nagaokaut.ac.jp/ruby/ruby-list/] — keiju@... (石塚圭樹) 1999/11/01

けいじゅ@日本ラショナルソフトウェアです.

[#18244] Re: [book] csv_split2 [Re: blade.nagaokaut.ac.jp/ruby/ruby-list/] — Shin-ichiro Hara <sinara@...> 1999/11/01

原です。

[#18289] Re: [book] csv_split2 — Koretsugu Daigoro <tmmcross@...> 1999/11/02

これつぐです。

[#18291] Re: [book] csv_split2 — keiju@... (石塚圭樹) 1999/11/02

けいじゅ@日本ラショナルソフトウェアです.

[#18311] Re: [book] csv_split2 — Koretsugu Daigoro <tmmcross@...> 1999/11/02

これつぐです。

[#18338] オブジェクトの非同一性判定 — Ayanosuke <aya@...>

 綾乃介です。

13 messages 1999/11/03

[#18539] [book] $*, etc. — Yasuhiro Fukuma <yasuf@...>

福間@福岡 です。

44 messages 1999/11/11

[#18580] — tokoma@... (中川 誠)

中川です。

44 messages 1999/11/14
[#18619] build on alpha — Go Nakagawa <nakagawa@...> 1999/11/15

もとの質問のかたとは別の中川です。

[#18737] Re: build on alpha — tokoma@... (中川 誠) 1999/11/18

中川です。

[#19144] Re: build on alpha — tokoma@... (中川 誠) 1999/12/04

中川です。長文で失礼します。

[#19341] Re: build on alpha — tokoma@... (中川 誠) 1999/12/09

中川です。

[#19344] Re: build on alpha — matz@... (Yukihiro Matsumoto) 1999/12/09

まつもと ゆきひろです

[#19400] Re: build on alpha — tokoma@... (中川 誠) 1999/12/10

中川です。

[#19426] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/11

えぐち@エスアンドイー です。

[#19459] Re: build on alpha — tokoma@... (中川 誠) 1999/12/13

中川です。

[#19461] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/13

えぐち@エスアンドイー です。

[#19506] Re: build on alpha — tokoma@... (中川 誠) 1999/12/14

中川です。

[#19520] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/15

えぐち@エスアンドイー です。

[#19522] Re: build on alpha — matz@... (Yukihiro Matsumoto) 1999/12/15

まつもと ゆきひろです

[#19543] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/15

えぐち@エスアンドイー です。

[#19562] Re: build on alpha — tokoma@... (中川 誠) 1999/12/15

中川です。

[#19569] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/16

えぐち@エスアンドイー です。

[#19592] Re: build on alpha — tokoma@... (中川 誠) 1999/12/16

中川です。

[#18637] constant? — Kazuhiro Yoshida <moriq.kazuhiro@...>

もりきゅうです。

20 messages 1999/11/16
[#18640] Re: constant? — WATANABE Hirofumi <Hirofumi.Watanabe@...> 1999/11/16

わたなべです.

[#18650] Re: constant? — Kazuhiro Yoshida <moriq.kazuhiro@...> 1999/11/16

もりきゅうです。

[#18657] Re: constant? — matz@... (Yukihiro Matsumoto) 1999/11/16

まつもと ゆきひろです

[#18709] ADO にて datetime 型の取得 — Takashi SHIODA <tsio@...>

塩田です。

18 messages 1999/11/18
[#18779] Re: ADO にて datetime 型の取得 — Masaki Suketa<CQN02273@...> 1999/11/20

助田です.

[#18802] Re: ADO にて datetime 型の取得 — Takashi SHIODA <tsio@...> 1999/11/21

オレンジソフト塩田です。

[#18712] Re: header output in eruby — TAKEUCHi Kahori <take-k@...>

たけうちです。

16 messages 1999/11/18
[#18716] Re: header output in eruby — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/11/18

なひです.

[#18830] mod_ruby-0.1.4 — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

16 messages 1999/11/22

[#18853] initializer polymorphism? — Takeyuki Watadani <watadani@...>

渡谷といいます。

25 messages 1999/11/23

[#18911] Re: eRuby 変換後の無駄 (?) な改行 — TAKEUCHi Kahori <take-k@...>

たけうちです。

14 messages 1999/11/25

[#18914] Ruby standard GUI framework? — Hideto ISHIBASHI <s34204@...>

石橋秀仁です。

43 messages 1999/11/25
[#18975] Re: Ruby standard GUI framework? — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/11/27

[#19020] Re: Ruby standard GUI framework? — Hideto ISHIBASHI <s34204@...> 1999/11/29

石橋秀仁です。

[#19026] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/11/29

[#19081] Re: Ruby standard GUI framework? — "Hideaki Takata" <hideakit@...3.dion.ne.jp> 1999/12/01

たかたです。

[#19092] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/12/01

[#19112] Re: Ruby standard GUI framework? — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/12/02

[#19131] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/12/03

[#18948] 他言語との比較 — とみたまさひろ <tommy@...>

とみたです。

18 messages 1999/11/26

[ruby-list:18283] Re: ruby-gtk の tree オブジェクトに関する質問

From: akaishi@...
Date: 1999-11-02 03:04:20 UTC
List: ruby-list #18283
ちょっと前の話になりますが、

From: akaishi@ruby.freak.ne.jp
Subject: [ruby-list:17956] Re: ruby-gtk の tree	オブジェクトに関する質問
Date: Sat, 23 Oct 1999 19:36:40 +0900

> Gtk::Tree は children がすべて remove されると self まで destroy されて
> しまうように見えます。そういう仕様?
> 
> 対処療法としては children をすべて remove せずに最低一つ残しておいて、何
> か append してから remove する、でしょうか。

昔、ディレクトリツリーを表示するクラスを作ったことがあって、参考までに添
付します。一応ディレクトリの増減に追従するようにしてみました。expand す
るときに更新します。unix 系専用。

--
akaishi

Gtk::DirTree<Gtk::Tree, Gtk::DirTreeItem<Gtk::TreeItem
ローカルなファイルシステムのディレクトリツリーを表示するためのウィジェッ
ト。

使い方:
dirtree = Gtk::DirTree.new		# DirTree ウィジェット生成
rootitem = Gtk::DirTreeItem.new('/')	# ルートとなる DirTreeItem 生成
					# 引数はパス名
dirtree.append rootitem
rootitem.show
dirtree.show

プログラム:

require 'gtk'

module Gtk

  class DirTreeItem < TreeItem
    attr_reader :path
    attr_writer :root

    def initialize(path)
      @path = path
      if path == '/'
	super '/'
      else
	if path[-1] == ?/ #/
	  path = path[0..-2]
	end
	super File.basename path
      end

      signal_connect('expand') {
	update_subtree
      }
    end

    def update_item
      if !@subtree and @root.walker.has_subdir?(path + '/')
	tree = Gtk::DirTree.new(@root)
	set_subtree tree
      end
    end

    def update_subtree
      newdirnames = @root.walker.find_dir(@path + '/').sort
      newdirsize = newdirnames.size
      del = []

      @subtree.children.each_with_index {|olditem, ind|
	olddirname = File.basename(olditem.path)
	while newdirnames[0] and newdirnames[0] < olddirname
	  if @path == '/'
	    newpath = '/' + newdirnames[0]
	  else
	    newpath = @path + '/' + newdirnames[0]
	  end
	  item = Gtk::DirTreeItem.new(newpath)
	  @subtree.insert item, ind
	  item.show
	  newdirnames.shift
	end

	if not newdirnames[0] or olddirname < newdirnames[0]
	  del.push olditem
	else
	  olditem.update_item
	  newdirnames.shift
	end
      }

      newdirnames.each {|dirname|
	if @path == '/'
	  newpath = '/' + dirname
	else
	  newpath = @path + '/' + dirname
	end
	item = Gtk::DirTreeItem.new newpath
	@subtree.append item
	item.show
      }

      del.each {|item| @subtree.remove item}
      @subtree = nil if newdirsize == 0
    end

    def set_subtree tree
      super tree
      @subtree = tree
    end

    def show
      super
      update_item
    end

  end

  class DirTree < Tree
    attr_accessor :walker

    def initialize root=nil, walker=nil
      super()
      if root
	@root = root
      else
	@root = self
	unless walker
	  @walker = DirWalker.new
	end
      end
    end

    def append item
      super
      item.root = @root
    end

    def insert item, pos
      super
      item.root = @root
    end

  end

  class DirWalker
    attr_reader :cwd

    def initialize
      @cwd = Dir.getwd
    end

    def root
      '/'
    end

    def find_dir(path)
      path += '/' unless path[-1] == ?/ #/
      res = []
      Dir.foreach(path) {|f|
	if f != '.' and f != '..' and File.directory? path + f
	  res.push f
	end
      }
      res
    end

    def has_subdir?(path)
      if File.stat(path).nlink == 2
	false
      else
	true
      end
    end

  end

end

if $0 == __FILE__
  window = Gtk::Window.new(Gtk::WINDOW_TOPLEVEL)
  swindow = Gtk::ScrolledWindow.new
  swindow.set_policy Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC

  dirtree = Gtk::DirTree.new
  rootitem = Gtk::DirTreeItem.new('/')
  dirtree.append rootitem
  rootitem.show
  dirtree.show

  swindow.add_with_viewport dirtree
  swindow.set_usize 200, 400
  swindow.show
  window.add swindow
  window.show
  Gtk.main()
end

In This Thread