--# 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