All pastes #498743 Raw Edit

tree.rb

public ruby v1 · immutable
·published 2007-05-20 17:16 UTC
rendered paste body
require 'Qt4'class MyTree < Qt::Widgetdef initialize(*args)  super(*args)  @lay = Qt::VBoxLayout.new self  @tree_widget = Qt::TreeWidget.new self  @tree_widget.setColumnCount 5  @tree_widget.setHeaderLabels ['Sub Group' , 'Title' , 'Artist' , 'Album' , 'Genre']  @lay.addWidget @tree_widget  add_childend def add_child( child = nil , parent = @tree_widget)  child||={"artist2"=>    {"album3"=>      {"genre1"=>        [["song5", "artist2", "album3", "genre1"],        ["song4", "artist2", "album3", "genre1"]]}},  "artist3"=>{"album4"=>{"genre2"=>[["song2", "artist3", "album4", "genre2"]]}},  "artist1"=>    {"album1"=>{"genre1"=>[["song1", "artist1", "album1", "genre1"]]},    "album2"=>{"genre2"=>[["song3", "artist1", "album2", "genre2"]]}}}  child.each{|group, sub_child|    item = Qt::TreeWidgetItem.new parent  , Qt::TreeWidgetItem::Type    item.setText(0, group)    case sub_child    when Hash # sub_group      add_child sub_child , item     when Array # leaf list      sub_child.each{|el|        leaf_item = Qt::TreeWidgetItem.new item , Qt::TreeWidgetItem::Type        el.each_with_index{|v,i| leaf_item.setText(i + 1, v.to_s)}      }    end   }endendapp = Qt::Application.new ARGVtree = MyTree.newtree.showapp.exec