--# Passing key/value pairs, accessed by key;
include GtkEngine.e
constant docs = `Passing Key/Value pairs
Another way to attach data to controls,
and retrieve data by field name,
rather than by position.
Therefore, field order can be random.
`
constant sam = {"name=Sam Smith","bal=6.45","city=Buffalo","phone=000-555-1212"}
constant joe = {"bal=44.22", "name=Joe Jones","phone=123-456-7890","city=Reno"}
constant win = create(GtkWindow,{
{"border width",10},
{"default size",300,100},
{"position",GTK_WIN_POS_CENTER},
{"signal","destroy","Quit"}})
constant panel = create(GtkBox,VERTICAL)
add(win,panel)
constant lbl = create(GtkLabel)
set(lbl,"markup",docs)
add(panel,lbl)
constant
btn1 = create(GtkButton,"gtk-quit","Quit"),
btn2 = create(GtkButton,"gtk-ok#_Sam","Foo",sam),
btn3 = create(GtkButton,"gtk-ok#_Joe","Foo",joe),
box = create(GtkButtonBox)
add(box,{btn1,btn2,btn3})
pack(panel,-box)
show_all(win)
main()
------------------------------------------
global function Foo(atom ctl, object data)
------------------------------------------
data = unpack(data) -- convert back to named k/v sequence
Info(win,"Data",
format("[{name}]",data),
format("[{phone}] $[{bal}]",data))
return 1
end function