------------------------------------------------------------------------ --# GtkTreeStore ------------------------------------------------------------------------ -- Hard to understand, difficult to make it easy to use. -- However, this does work for nested sequences -- up to a point, as long as the data is all strings. ------------------------------------------------------------------------ include GtkEngine.e object store = create(GtkTreeStore,{gSTR,gSTR}) sequence os = { {"Windows","An Operating? System", {"Bill Gates"}}, {"Linux","An Operating! System", {"Linus Torvalds"}}, {"Mac","A Religion", {"Steve Jobs", "The Woz", {"Billy (the kid)", {"Bowser","Fido"}, "Susan (the other kid)", {"Grumpy Cat"} } } } } set(store,"data",os) constant col1 = create(GtkColumn,"title=OS,type=text,markup=1,sort_column_id=1"), col2 = create(GtkColumn,"title=Notes,type=text,markup=2,sort_column_id=2") constant tv = create(GtkTreeView,{ {"model",store}, {"append columns",{col1,col2}}, {"enable tree lines",TRUE}, {"rules hint",TRUE}, -- {"hover expand",TRUE}, -- {"expand all"}, $}) -- Note: you can set a search column, and then ctl-f will pop up a search box, -- or you can just start typing, and best match will be highlighted, -- but the view must be expanded for this to work. set(tv,"search column",1) constant selection = get(tv,"selection") constant win = create(GtkWindow, "title=`Tree View`,size=250x400,border_width=10,position=1,$destroy=Quit") constant panel = create(GtkBox,VERTICAL) add(win,panel) pack(panel,tv,TRUE,TRUE,5) constant btn2 = create(GtkToggleButton,"gtk-ok#Expand",_("Expand")) constant btn1 = create(GtkButton,"gtk-quit","Quit") constant box = create(GtkButtonBox) add(box,{btn1,btn2}) pack(panel,-box) show_all(win) main() ------------------------ function Expand() ------------------------ if get(btn2,"active") then set(tv,"expand all") else set(tv,"collapse all") end if return 1 end function