/* REXX script for rexxbgui.library: image buttons */ if ~show('l','rexxbgui.library') then do if ~addlib('rexxbgui.library',0,-30) then do exit(20) end else nop end else nop call bguiopen() /* causes error 12 if it did not work */ /* supply a second argument for a '0' return code instead of an ARexx error */ signal on syntax /* important: bguiclose() MUST be called */ signal on halt signal on break_c esc='1B'x lf='0A'x cr='0D'x grspace.narrow=-1 grspace.normal=-2 grspace.wide=-3 FixMinWidth=bguilayout(LGO_FixMinWidth,1) FixMinHeight=bguilayout(LGO_FixMinHeight,1) FixMinSize=bguilayout(LGO_FixMinWidth,1,LGO_FixMinHeight,1) if bguirexxversion(4)=0 then do call bguireq(, 'This script requires at'lf||, 'least RexxBGUI version 4.','*_Abort','Sorry!') rc=0 signal syntax end dgroupmembers=bguivarspace(50) do i=1 to 11 dgroupmembers=dgroupmembers||bguiibutton('but.'||i,'B',i)||FixMinSize end dgroupmembers=dgroupmembers||bguivarspace(50) call makeirisimage() /* using ARexx feature: , is translated to nothing */ /* the || are essential - any added space will cause trouble */ /* redefining the same ID makes previous buttons unaccessible */ /* do not redefine winclose etc. */ g=bguivgroup(, bguiinfo(, 'info',,'cbRexxBGUI-b new 4.0 feature: image buttons', )||bguilayout(LGO_FixMinHeight,1)||, bguihgroup(dgroupmembers,,'F','All built-in vector images')||, bguihgroup(, bguistring('str','_String','example for popup',80)||, bguiibutton('popup','B','P')||FixMinWidth, ,grspace.narrow)||, bguihgroup(, bguistring('file','_File','ENV:Sys/palette.prefs',80)||, bguiibutton('getfile','B','F')||FixMinWidth, ,grspace.narrow)||, bguihgroup(, bguistring('drawer','_Drawer','RAM:ENV',80)||, bguiibutton('getpath','B','D')||FixMinWidth, ,grspace.narrow)||, bguiibutton('iris','M',irisimage,'_Image in'||'0a'x'script','Left')FixMinWidth||, bguihgroup(, bguivarspace(50)||, bguibutton('quit','_Quit')||, bguivarspace(50), )||bguilayout(LGO_FixMinHeight,1), ,grspace.normal,grspace.normal) drop it. popwin='' a=bguiwindow('Image buttons',g,'5','-',,arg(1),'mouse') call bguiset(obj.popup,,BT_Key,'?') call bguiset(obj.getfile,,BT_Key,'!') if bguiwinopen(a)=0 then bguierror(12); else nop id=0 do while bguiwinwaitevent(a,'ID')~=id.winclose select when id=id.winactive then nop when id=id.wininactive then nop when id=id.quit then leave when id=id.winclose then nop when id=id.popup then do call bguiwinbusy(a) call dopopup() call bguiwinready(a) end when id=id.getfile then do s=bguifilereq(bguiget(obj.file,STRINGA_TEXTVAL),,a) if s~='' then call bguiset(obj.file,a,STRINGA_TEXTVAL,s); else nop end when id=id.getpath then do s=bguifilereq(bguiget(obj.drawer,STRINGA_TEXTVAL),,a,'drawersonly') if s~='' then call bguiset(obj.drawer,a,STRINGA_TEXTVAL,s); else nop end when id=id.iris then do call bguireq(esc'c'||, 'This image was converted with'||'0a'x||, 'MakeImage and included in the'||'0a'x||, 'script. No external file is'||'0a'x||, 'required.','*_OK',,a) end otherwise nop end end rc=0 syntax: if rc~=0 then say '+++ ['rc']' errortext(rc) 'at line' sigl; else nop call bguiclose() exit 0 break_c: halt: rc=0 say '+++ Break at line' sigl signal syntax dopopup: if popwin='' then do call bguilist('entries','example for popup','qwerty','some line',, 'another text','RexxBGUI V'bguirexxversion(),'BGUI V'bguiversion()) popwin=bguiwindow('Select',, bguivgroup(, bguilistview('p_listv','_List','entries')||, bguihgroup(, bguibutton('p_ok','bOK_'||'0d'x)||, bguivarspace(50)||, bguibutton('p_cancel','_Cancel'), )FixMinHeight, ,,grspace.normal), ,30,50,a,,'mouse') call bguiset(obj.p_listv,,LISTV_Select,0) drop entries. end; else nop if bguiwinopen(popwin)=0 then return call bguilistvcontrol(obj.p_listv,popwin,0,0) do while bguiwinwaitevent(popwin,'ID')~=id.winclose & (id~=id.p_cancel) select when id=id.p_ok then do line=bguiget(obj.p_listv,LISTV_LastClicked) call bguiset(obj.str,a,STRINGA_TextVal,line) leave end otherwise nop end end call bguiwinclose(popwin) return makeirisimage: irisimage.normal.data=, '00000000000400000000000C00000000002C00000000006C00000000006C000000'x||, '00006C00000000006C00000000006C0000E01C006C00002010006C00001020006C'x||, '00000FC0006C00000000006C00000000006C00000000006C00000000006C0001C0'x||, '80006C00008000006C00008000006C0000978E006C00008C92006C00008898006C'x||, '00008886006C00008892006C0001DDDC006C00000000006C00000000006C000000'x||, '00006C0FFFFFFFFFEC00000000000C7FFFFFFFFFFCFFFFFFFFFFF8C00000000000'x||, 'DFFFFFFFFFC0D80000000000D80000000000D80000000000D80000000000D80000'x||, '000000D80000000000D80000000000D80000000000D80000000000D80000000000'x||, 'D80000000000D80000000000D80000000000D80000000000D80000000000D80000'x||, '000000D80000000000D80000000000D80000000000D80000000000D80000000000'x||, 'D80000000000D80000000000D80000000000D80000000000D00000000000C00000'x||, '000000800000000000'x irisimage.normal=bguiimage(0,0,46,31,2,irisimage.normal.data,3,0) drop irisimage.normal.data irisimage.selected.data=, '00000000000400000000000C00000000002C00000000006C0000003FFFEC000000'x||, '20006C0000FFA003EC0000002003EC0001FFA007EC00000020026C0001FFA01EEC'x||, '00000020006C0000FFA01FEC00000020006C0000003FFFEC00000000006C007FFF'x||, 'C0006C0072F9C0006C0048025FF06C0046EC40006C0041B05FF86C00404040006C'x||, '0041B05FF86C00420840006C004C065FF06C007001C0006C007FFFC0006C000000'x||, '00006C0FFFFFFFFFEC00000000000C7FFFFFFFFFFCFFFFFFFFFFF8C00000000000'x||, 'DFFFFFFFFFC0D80000000000D80000000000D800001FFF80D800001FFF80D80000'x||, '1FFD80D800001FFA80D800001FFD80D800001FFF80D800001FFF80D800001FFF80'x||, 'D800001FFF80D80000000000D80000000000D80000000000D80FFE000000D837FD'x||, '800000D839F3800000D83E4F800000D83FBF800000D83E4F800000D83DF7800000'x||, 'D833F9800000D80FFE000000D80000000000D80000000000D00000000000C00000'x||, '000000800000000000'x irisimage.selected=bguiimage(0,0,46,31,2,irisimage.selected.data,3,0) drop irisimage.selected.data irisimage=irisimage.normal||irisimage.selected return