TreeView で データを表示させてみたと思う
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:ものすごく簡単に云うと