home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / Programming / BGUI / Examples / ARexx / imagebutton.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2000-05-09  |  6.0 KB  |  197 lines

  1. /* REXX script for rexxbgui.library: image buttons */
  2.  
  3. if ~show('l','rexxbgui.library') then do
  4.     if ~addlib('rexxbgui.library',0,-30) then do
  5.         exit(20)
  6.     end
  7.     else nop
  8. end
  9. else nop
  10.  
  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
  13.    error */
  14.  
  15. signal on syntax /* important: bguiclose() MUST be called */
  16. signal on halt
  17. signal on break_c
  18.  
  19. esc='1B'x
  20. lf='0A'x
  21. cr='0D'x
  22. grspace.narrow=-1
  23. grspace.normal=-2
  24. grspace.wide=-3
  25. FixMinWidth=bguilayout(LGO_FixMinWidth,1)
  26. FixMinHeight=bguilayout(LGO_FixMinHeight,1)
  27. FixMinSize=bguilayout(LGO_FixMinWidth,1,LGO_FixMinHeight,1)
  28.  
  29. if bguirexxversion(4)=0 then do
  30.     call bguireq(,
  31.         'This script requires at'lf||,
  32.         'least RexxBGUI version 4.','*_Abort','Sorry!')
  33.     rc=0
  34.     signal syntax
  35. end
  36.  
  37. dgroupmembers=bguivarspace(50)
  38. do i=1 to 11
  39.     dgroupmembers=dgroupmembers||bguiibutton('but.'||i,'B',i)||FixMinSize
  40. end
  41. dgroupmembers=dgroupmembers||bguivarspace(50)
  42.  
  43. call makeirisimage()
  44.  
  45. /* using ARexx feature: ,<newline> is translated to nothing */
  46. /* the || are essential - any added space will cause trouble */
  47. /* redefining the same ID makes previous buttons unaccessible */
  48. /* do not redefine winclose etc. */
  49.  
  50. g=bguivgroup(,
  51.     bguiinfo(,
  52.         'info',,'cbRexxBGUI-b new 4.0 feature: image buttons',
  53.     )||bguilayout(LGO_FixMinHeight,1)||,
  54.     bguihgroup(dgroupmembers,,'F','All built-in vector images')||,
  55.     bguihgroup(,
  56.         bguistring('str','_String','example for popup',80)||,
  57.         bguiibutton('popup','B','P')||FixMinWidth,
  58.     ,grspace.narrow)||,
  59.     bguihgroup(,
  60.         bguistring('file','_File','ENV:Sys/palette.prefs',80)||,
  61.         bguiibutton('getfile','B','F')||FixMinWidth,
  62.     ,grspace.narrow)||,
  63.     bguihgroup(,
  64.         bguistring('drawer','_Drawer','RAM:ENV',80)||,
  65.         bguiibutton('getpath','B','D')||FixMinWidth,
  66.     ,grspace.narrow)||,
  67.     bguiibutton('iris','M',irisimage,'_Image in'||'0a'x'script','Left')FixMinWidth||,
  68.     bguihgroup(,
  69.         bguivarspace(50)||,
  70.         bguibutton('quit','_Quit')||,
  71.         bguivarspace(50),
  72.     )||bguilayout(LGO_FixMinHeight,1),
  73. ,grspace.normal,grspace.normal)
  74.  
  75. drop it.
  76.  
  77. popwin=''
  78.  
  79. a=bguiwindow('Image buttons',g,'5','-',,arg(1),'mouse')
  80.  
  81. call bguiset(obj.popup,,BT_Key,'?')
  82. call bguiset(obj.getfile,,BT_Key,'!')
  83.  
  84. if bguiwinopen(a)=0 then bguierror(12); else nop
  85. id=0
  86. do while bguiwinwaitevent(a,'ID')~=id.winclose
  87.     select
  88.         when id=id.winactive then nop
  89.         when id=id.wininactive then nop
  90.         when id=id.quit then leave
  91.         when id=id.winclose then nop
  92.         when id=id.popup then do
  93.             call bguiwinbusy(a)
  94.             call dopopup()
  95.             call bguiwinready(a)
  96.         end
  97.         when id=id.getfile then do
  98.             s=bguifilereq(bguiget(obj.file,STRINGA_TEXTVAL),,a)
  99.             if s~='' then call bguiset(obj.file,a,STRINGA_TEXTVAL,s); else nop
  100.         end
  101.         when id=id.getpath then do
  102.             s=bguifilereq(bguiget(obj.drawer,STRINGA_TEXTVAL),,a,'drawersonly')
  103.             if s~='' then call bguiset(obj.drawer,a,STRINGA_TEXTVAL,s); else nop
  104.         end
  105.         when id=id.iris then do
  106.             call bguireq(esc'c'||,
  107.                 'This image was converted with'||'0a'x||,
  108.                 'MakeImage and included in the'||'0a'x||,
  109.                 'script. No external file is'||'0a'x||,
  110.                 'required.','*_OK',,a)
  111.         end
  112.         otherwise nop
  113.     end
  114. end
  115. rc=0
  116.  
  117. syntax:
  118. if rc~=0 then say '+++ ['rc']' errortext(rc) 'at line' sigl; else nop
  119. call bguiclose()
  120. exit 0
  121.  
  122. break_c:
  123. halt:
  124. rc=0
  125. say '+++ Break at line' sigl
  126. signal syntax
  127.  
  128. dopopup:
  129. if popwin='' then do
  130.     call bguilist('entries','example for popup','qwerty','some line',,
  131.         'another text','RexxBGUI V'bguirexxversion(),'BGUI V'bguiversion())
  132.     popwin=bguiwindow('Select',,
  133.         bguivgroup(,
  134.             bguilistview('p_listv','_List','entries')||,
  135.             bguihgroup(,
  136.                 bguibutton('p_ok','bOK_'||'0d'x)||,
  137.                 bguivarspace(50)||,
  138.                 bguibutton('p_cancel','_Cancel'),
  139.             )FixMinHeight,
  140.         ,,grspace.normal),
  141.     ,30,50,a,,'mouse')
  142.     call bguiset(obj.p_listv,,LISTV_Select,0)
  143.     drop entries.
  144. end; else nop
  145.  
  146. if bguiwinopen(popwin)=0 then return
  147.  
  148. call bguilistvcontrol(obj.p_listv,popwin,0,0)
  149.  
  150. do while bguiwinwaitevent(popwin,'ID')~=id.winclose & (id~=id.p_cancel)
  151.     select
  152.         when id=id.p_ok then do
  153.             line=bguiget(obj.p_listv,LISTV_LastClicked)
  154.             call bguiset(obj.str,a,STRINGA_TextVal,line)
  155.             leave
  156.         end
  157.         otherwise nop
  158.     end
  159. end
  160.  
  161. call bguiwinclose(popwin)
  162. return
  163.  
  164. makeirisimage:
  165. irisimage.normal.data=,
  166.     '00000000000400000000000C00000000002C00000000006C00000000006C000000'x||,
  167.     '00006C00000000006C00000000006C0000E01C006C00002010006C00001020006C'x||,
  168.     '00000FC0006C00000000006C00000000006C00000000006C00000000006C0001C0'x||,
  169.     '80006C00008000006C00008000006C0000978E006C00008C92006C00008898006C'x||,
  170.     '00008886006C00008892006C0001DDDC006C00000000006C00000000006C000000'x||,
  171.     '00006C0FFFFFFFFFEC00000000000C7FFFFFFFFFFCFFFFFFFFFFF8C00000000000'x||,
  172.     'DFFFFFFFFFC0D80000000000D80000000000D80000000000D80000000000D80000'x||,
  173.     '000000D80000000000D80000000000D80000000000D80000000000D80000000000'x||,
  174.     'D80000000000D80000000000D80000000000D80000000000D80000000000D80000'x||,
  175.     '000000D80000000000D80000000000D80000000000D80000000000D80000000000'x||,
  176.     'D80000000000D80000000000D80000000000D80000000000D00000000000C00000'x||,
  177.     '000000800000000000'x
  178. irisimage.normal=bguiimage(0,0,46,31,2,irisimage.normal.data,3,0)
  179. drop irisimage.normal.data
  180. irisimage.selected.data=,
  181.     '00000000000400000000000C00000000002C00000000006C0000003FFFEC000000'x||,
  182.     '20006C0000FFA003EC0000002003EC0001FFA007EC00000020026C0001FFA01EEC'x||,
  183.     '00000020006C0000FFA01FEC00000020006C0000003FFFEC00000000006C007FFF'x||,
  184.     'C0006C0072F9C0006C0048025FF06C0046EC40006C0041B05FF86C00404040006C'x||,
  185.     '0041B05FF86C00420840006C004C065FF06C007001C0006C007FFFC0006C000000'x||,
  186.     '00006C0FFFFFFFFFEC00000000000C7FFFFFFFFFFCFFFFFFFFFFF8C00000000000'x||,
  187.     'DFFFFFFFFFC0D80000000000D80000000000D800001FFF80D800001FFF80D80000'x||,
  188.     '1FFD80D800001FFA80D800001FFD80D800001FFF80D800001FFF80D800001FFF80'x||,
  189.     'D800001FFF80D80000000000D80000000000D80000000000D80FFE000000D837FD'x||,
  190.     '800000D839F3800000D83E4F800000D83FBF800000D83E4F800000D83DF7800000'x||,
  191.     'D833F9800000D80FFE000000D80000000000D80000000000D00000000000C00000'x||,
  192.     '000000800000000000'x
  193. irisimage.selected=bguiimage(0,0,46,31,2,irisimage.selected.data,3,0)
  194. drop irisimage.selected.data
  195. irisimage=irisimage.normal||irisimage.selected
  196. return
  197.