52 lines
1.3 KiB
Elixir
52 lines
1.3 KiB
Elixir
|
|
||
|
--# Passing key/value pairs, accessed by key;
|
||
|
|
||
|
include GtkEngine.e
|
||
|
|
||
|
constant docs = `<u><b>Passing Key/Value pairs</b></u>
|
||
|
|
||
|
Another way to attach data to controls,
|
||
|
and retrieve data by<i><b> field name</b></i>,
|
||
|
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}] <b>$[{bal}]</b>",data))
|
||
|
return 1
|
||
|
end function
|
||
|
|
||
|
|