1 /* REXX script for rexxbgui.library: MultiSelect example */
3 if ~show
('l','rexxbgui.library') then do
4 if ~addlib
('rexxbgui.library',0,-30) then do
11 call bguiopen
() /* causes error 12 if it did not work */
12 /* supply a second argument for a '0' return code instead of an ARexx
15 signal on syntax /* important: bguiclose() MUST be called */
29 lst.i=esc'c'd2c(i+65)||d2c(i+97)
33 lst
.i
='\ecThis listview object has multi-'; i
=i
+1
34 lst
.i
='\ecselection turned on. You can'; i
=i
+1
35 lst
.i
='\ecmulti-select the items by holding'; i
=i
+1
36 lst
.i
='\ecdown the SHIFT-key while clicking'; i
=i
+1
37 lst
.i
='\econ the different items or by clicking'; i
=i
+1
38 lst
.i
='\econ an entry and dragging the mouse'; i
=i
+1
39 lst
.i
='\ecup or down.'; i
=i
+1
41 lst
.i
='\ecIf you check the No SHIFT checkbox'; i
=i
+1
42 lst
.i
='\ecyou can multi-select the items without'; i
=i
+1
43 lst
.i
='\ecusing the SHIFT key'; i
=i
+1
46 /* using ARexx feature: ,<newline> is translated to nothing */
47 /* the || are essential - any added space will cause trouble */
48 /* redefining the same ID makes previous buttons unaccessible */
49 /* do not redefine winclose etc. */
53 'info',,'\ec\ebARexx\e-b conversion'lf
'of \ebMultiSelect\e-b example',
54 )||bguilayout
(LGO_FixMinHeight
,1)||,
56 bguilistview
('listv',,'LST','S')||,
58 bguibutton
('all','_All')||,
59 bguibutton
('none','N_one'),
60 ,0)||bguilayout
(LGO_Align
,1,LGO_FixMinHeight
,1),
61 ,0)||bguilayout
(LGO_NoAlign
,1)||,
63 bguicheckbox
('ms','_Multiple selection',1)||bguilayout
(LGO_FixMinWidth
,1)||,
65 bguicheckbox
('nsm','_No SHIFT',0)||bguilayout
(LGO_FixMinWidth
,1),
66 )||bguilayout
(LGO_FixMinHeight
,1)||,
68 bguibutton
('show','_Show')||,
70 bguibutton
('quit','_Quit'),
71 )||bguilayout
(LGO_FixMinHeight
,1),
72 ,grspace
.normal
,grspace
.normal
)
74 call bguiaddmap
(obj
.ms
,obj
.listv
,GA_Selected
,LISTV_MultiSelect
)
75 call bguiaddmap
(obj
.nsm
,obj
.listv
,GA_Selected
,LISTV_MultiSelectNoShift
)
77 call bguiset
(obj
.listv
,,LISTV_MultiSelect
,1)
79 a
=bguiwindow
('Multi-Selection Demo',g
,20,30,,arg(1))
81 if bguiwinopen
(a
)=0 then bguierror
(12)
83 do while bguiwinwaitevent
(a
,'ID')~
=id
.winclose
85 when id
=id
.winactive
then nop
86 when id
=id
.wininactive
then nop
87 when id
=id
.show
then do
89 text=bguiget(obj.listv,LISTV_LastClicked)lf||,
90 bguiget(obj.listv,LISTV_LastClickedNum)
91 call bguireq('Results are:'lf||text,'*_OK',,a)
93 if bguilistvgetentries
(obj
.listv
,'RES','S')>0 then do
98 say 'No selections made!'
101 when id
=id
.ms
then do
102 if bguiget
(obj
.ms
,GA_Selected
)=0 then do
103 call bguiset
(obj
.nsm
,a
,GA_Disabled
,1)
104 call bguiset
(obj
.all
,a
,GA_Disabled
,1)
106 call bguiset
(obj
.nsm
,a
,GA_Disabled
,0)
107 call bguiset
(obj
.all
,a
,GA_Disabled
,0)
110 when id
=id
.all
then call bguiset
(obj
.listv
,a
,LISTV_SelectMulti
,-8)
111 when id
=id
.none
then call bguiset
(obj
.listv
,a
,LISTV_Deselect
,-1)
112 when id
=id
.quit
then leave
113 when id
=id
.winclose
then nop
120 if rc~
=0 then say '+++ ['rc']' errortext(rc) 'at line' sigl
127 say '+++ Break at line' sigl