diff options
Diffstat (limited to 'lib/gs/doc/src/examples/ex10.erl')
-rw-r--r-- | lib/gs/doc/src/examples/ex10.erl | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/lib/gs/doc/src/examples/ex10.erl b/lib/gs/doc/src/examples/ex10.erl new file mode 100644 index 0000000000..d414aca940 --- /dev/null +++ b/lib/gs/doc/src/examples/ex10.erl @@ -0,0 +1,59 @@ +-module(ex10). +-copyright('Copyright (c) 1991-97 Ericsson Telecom AB'). +-vsn('$Revision: /main/release/2 $ '). + +-export([start/0, init/3]). + +start() -> + start("Pick a fruit:", + [apple, banana, lemon, orange, strawberry, + mango, kiwi, pear, cherry,pineapple,peach,apricot]). + +start(Text,Items) -> + spawn(ex10,init,[self(),Text,Items]), + receive + {browser,Result} -> Result + end. + +init(Pid,Text,Items) -> + S=gs:start(), + Win=gs:window(S,[{width,250},{height,270}, + {title,"Browser"}]), + Lbl=gs:label(Win,[{label,{text,Text}},{width,250}]), + Entry=gs:entry(Win,[{y,35},{width,240},{x,5}, + {keypress,true}, + {setfocus,true}]), + Lb=gs:listbox(Win,[{x,5},{y,65},{width,160}, + {height,195},{vscroll,right}, + {click,true},{doubleclick,true}]), + Ok=gs:button(Win,[{label,{text,"OK"}}, + {width,40},{x,185},{y,175}]), + Cancel=gs:button(Win,[{label,{text,"Cancel"}}, + {x,175},{y,225},{width,65}]), + gs:config(Lb,[{items,Items}]), + gs:config(Win,{map,true}), + browser_loop(Pid,Ok,Cancel,Entry,Lb). + +browser_loop(Pid,Ok,Cancel,Entry,Lb) -> + receive + {gs,Ok,click,_,_} -> + Txt=gs:read(Entry,text), + Pid ! {browser,{ok,Txt}}; + {gs,Cancel,click,_,_} -> + Pid ! {browser,cancel}; + {gs,Entry,keypress,_,['Return'|_]} -> + Txt=gs:read(Entry,text), + Pid ! {browser,{ok,Txt}}; + {gs,Entry,keypress,_,_} -> + browser_loop(Pid,Ok,Cancel,Entry,Lb); + {gs,Lb,click,_,[Idx, Txt|_]} -> + gs:config(Entry,{text,Txt}), + browser_loop(Pid,Ok,Cancel,Entry,Lb); + {gs,Lb,doubleclick,_,[Idx, Txt|_]} -> + Pid ! {browser,{ok,Txt}}; + {gs,_,destroy,_,_} -> + Pid ! {browser,cancel}; + X -> + io:format("Got X=~w~n",[X]), + browser_loop(Pid,Ok,Cancel,Entry,Lb) + end. |