added eugtk examples
This commit is contained in:
89
eugtk/examples/test97.ex
Normal file
89
eugtk/examples/test97.ex
Normal file
@@ -0,0 +1,89 @@
|
||||
|
||||
--# Passing data using multiple maps
|
||||
|
||||
include GtkEngine.e
|
||||
|
||||
include std/map.e
|
||||
|
||||
constant docs = `<u><b>Passing data using Maps</b></u>
|
||||
|
||||
Another way to attach data to controls.
|
||||
|
||||
This creates a separate map for each person, and
|
||||
passes just that map to the called routine.
|
||||
|
||||
Each field must be named, and can be accessed later by
|
||||
name rather than position.
|
||||
|
||||
Maps can be saved to disk, and loaded as necessary.
|
||||
`
|
||||
constant jerrymap = load_map(locate_file("resources/Jerry.map"))
|
||||
constant justinmap = load_map(locate_file("resources/Justin.map"))
|
||||
|
||||
constant win = create(GtkWindow,"border=10,size=300x100,position=1")
|
||||
connect(win,"destroy","Quit")
|
||||
|
||||
constant panel = create(GtkBox,"orientation=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,"emblem-ok-symbolic#_Jerry","ShowInfo",jerrymap), -- link by map id;
|
||||
btn3 = create(GtkButton,"emblem-ok-symbolic#_Justin","ShowInfo",justinmap),
|
||||
btn4 = create(GtkButton,"gtk-save","Save"),
|
||||
box = create(GtkButtonBox)
|
||||
set(btn4,"sensitive",FALSE)
|
||||
add(box,{btn1,btn2,btn3,btn4})
|
||||
pack(panel,-box)
|
||||
|
||||
show_all(win)
|
||||
main()
|
||||
|
||||
--------------------------------------------------------------
|
||||
global function ShowInfo(atom ctl, object amap) -- map id passed
|
||||
---------------------------------------------------------------
|
||||
amap = pairs(amap)
|
||||
for i = 1 to length(amap) do
|
||||
amap[i] = text:format("[]=[]",amap[i])
|
||||
end for
|
||||
|
||||
Info(,"Student",
|
||||
text:format("Name: [{name}]",amap), -- retrieve items by key;
|
||||
text:format(" age: [{age}]\n bal: $[{bal}]",amap),,
|
||||
locate_file(text:format("[{pix}]",amap)))
|
||||
return 1
|
||||
end function
|
||||
|
||||
-------------------------
|
||||
global function Save()
|
||||
-------------------------
|
||||
-- here's how to save a couple of maps
|
||||
-- either way works, use whichever is easier;
|
||||
|
||||
map a = map:new_from_kvpairs({
|
||||
{"name","Jerry Smith"},
|
||||
{"age",`16`}, -- note, numbers must be quoted somehow;
|
||||
{"bal",`49.95`},
|
||||
{"city","Buffalo NY"},
|
||||
{"phone","000-555-1212"},
|
||||
{"pix","thumbnails/Jerry.jpg"}})
|
||||
|
||||
map b = map:new_from_string("""
|
||||
name="Justin Jones",
|
||||
age='14',
|
||||
bal='12.99',
|
||||
city="Reno, NV",
|
||||
phone=123-456-6789,
|
||||
pix=thumbnails/Justin.jpg""")
|
||||
|
||||
-- SM_RAW map is encoded, so not readable except to a programmer,
|
||||
-- and the file is Binary mime type, so no apps to read it are usually available;
|
||||
save_map(a,canonical_path("~/demos/resources/Jerry.map"),SM_TEXT)
|
||||
save_map(b,canonical_path("~/demos/resources/Justin.map"),SM_TEXT)
|
||||
|
||||
return 1
|
||||
end function
|
||||
Reference in New Issue
Block a user