読者です 読者をやめる 読者になる 読者になる

TreeView で データを表示させてみたと思う

Ruby Gtk2

Gtk::TreeView は、Gtk::TreeModel オブジェクトを表示するためのウィジェットだよ。
このウィジェットはツリー上のデータが表示できるってわけじゃなくて、Windows Forms でいう ListBox みたいなこともできるんだ。
習作として、ENV の id と value を表示してみる感じのを作ってみた。

ListStore オブジェクトを作成

表示するためのデータを作成するよ。
ENV はハッシュになっているので、カラムは key と value の 2 つでいいよね。

# 列の型を引数にリストストアオブジェクトを作成します。
list_store = Gtk::ListStore.new( String, String )

ENV.each do |key, value|
  # list_store に行を追加します。
  it = list_store.append
  # it の 2 つのカラムに ENV の key と value をそれぞれ設定します。
  it.set_value( 0, key )
  it.set_value( 1, value )
end

CellRenderer オブジェクトを作成

行と列の交わったところ? 升目をセルとか云うんだけど、このセルをレンダリング?するための Gtk::CellRenderer オブジェクトを作成するよ。
今回はテキストしかレンダリングしないので、Gtk::CellRendererText を使うよ。

renderer = Gtk::CellRendererText.new

カラムを作成

Gtk::TreeView の上の方のヘッダーがカラムだよ*1
ここら辺はよく分からないや。
今回は 2 つ作るけど、Gtk::ListStore とかの列数分だけ作る感じなのかな。

key_column = Gtk::TreeViewColumn.new( "key", renderer, :text => 1, :foreground => 0 )
value_column = Gtk::TreeViewColumn.new( "value", renderer, :text => 1, :foreground => 0 )

TreeView オブジェクトを作成

最後に TreeView オブジェクトを作成するよ。
前云ったと思うけど、ListBox 相当のも TreeView で作るよ!

tree_view = Gtk::TreeView.new( list_store )
# カラムを追加します。
tree_view.append_column( key_column )
tree_view.append_column( value_column )

最後に

Gtk::TreeViewColumn.new の時の :text => 1 とかわからないw

*1:ものすごく簡単に云うと