57 lines
1.6 KiB
Elixir
57 lines
1.6 KiB
Elixir
|
|
--# Simple ListView test
|
|
|
|
include GtkEngine.e
|
|
|
|
constant win = create(GtkWindow,"border=10,size=300x200,$destroy=Quit")
|
|
|
|
constant panel = create(GtkBox,"orientation=VERTICAL")
|
|
add(win,panel)
|
|
|
|
constant scroller = create(GtkScrolledWindow)
|
|
pack(panel,scroller,1,1)
|
|
|
|
constant fruits = {
|
|
{"Apples", "doz", 5.00},
|
|
{"Cherries", "lb", 3.69},
|
|
{"Limes", "ea", .99},
|
|
{"Oranges", "ea", 0.79},
|
|
{"Bananas", "lb", .89},
|
|
$}
|
|
-- note: even though the 3rd column is numeric, we can for convenience store it
|
|
-- in a string 'slot' declared below. if stored as a float, we would have to
|
|
-- write a formatting routine to handle it properly. change the 3rd param
|
|
-- below to gFLT or gDBL to see what I mean:
|
|
constant store = create(GtkListStore,{gSTR,gSTR,gSTR})
|
|
set(store,"data",fruits)
|
|
|
|
constant tv = create(GtkTreeView,{
|
|
{"model",store},
|
|
{"reorderable",TRUE},
|
|
{"headers clickable",TRUE},
|
|
{"set grid lines",GTK_TREE_VIEW_GRID_LINES_BOTH},
|
|
{"rules hint",TRUE},
|
|
{"connect","row-activated",_("ShowChoice")}})
|
|
add(scroller,tv)
|
|
|
|
constant
|
|
col1 = create(GtkColumn,"title=Name,type=text,text=1,sort_column_id=1"),
|
|
col2 = create(GtkColumn,"title=Quantity,type=text,text=2"),
|
|
col3 = create(GtkColumn,"title=Price,type=text,text=3,sort_column_id=3")
|
|
|
|
set(tv,"append columns",{col1,col2,col3})
|
|
|
|
constant selection = get(tv,"selection") -- this 'tracks' the current selection for use later;
|
|
|
|
show_all(win)
|
|
main()
|
|
|
|
---------------------
|
|
function ShowChoice()
|
|
---------------------
|
|
object choice = get(selection,"selected row data")
|
|
Info(,,choice[1],format("Price: $[3] per [2]",choice))
|
|
return 1
|
|
end function
|
|
|