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

  1. /* REXX script for rexxbgui.library: icon 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. call bguilist('pref','Palette','ScreenMode','Printer','PrinterGfx','PrinterPS')
  30. max=pref.count-1
  31.  
  32. fsbuttons=bguivarspace(50)
  33. do i=0 to max
  34.     fsbuttons=fsbuttons||bguiibutton('fs.'||i,'I','SYS:Prefs/'pref.i,pref.i,'B')||FixMinSize
  35. end
  36. fsbuttons=fsbuttons||bguivarspace(50)
  37.  
  38. fbuttons=bguivarspace(50)
  39. do i=0 to max
  40.     fbuttons=fbuttons||bguiibutton('f.'||i,'I*','SYS:Prefs/'pref.i,pref.i,'B')||FixMinSize
  41. end
  42. fbuttons=fbuttons||bguivarspace(50)
  43.  
  44. nfbuttons=bguivarspace(50)
  45. do i=0 to max
  46.     nfbuttons=nfbuttons||bguiibutton('nf.'||i,'I-','SYS:Prefs/'pref.i,pref.i,'B')||FixMinSize
  47. end
  48. nfbuttons=nfbuttons||bguivarspace(50)
  49.  
  50. /* using ARexx feature: ,<newline> is translated to nothing */
  51. /* the || are essential - any added space will cause trouble */
  52. /* redefining the same ID makes previous buttons unaccessible */
  53. /* do not redefine winclose etc. */
  54.  
  55. g=bguivgroup(,
  56.     bguiinfo(,
  57.         'info',,'cbRexxBGUI-b new 4.0 feature: image buttons',
  58.     )||bguilayout(LGO_FixMinHeight,1)||,
  59.     bguihgroup(fsbuttons,,'F','With frame & spacing')||,
  60.     bguihgroup(fbuttons,,'F','With frame, no spacing')||,
  61.     bguihgroup(nfbuttons,,'F','No frame, no spacing')||,
  62.     bguihgroup(,
  63.         bguivarspace(50)||,
  64.         bguibutton('quit','_Quit')||,
  65.         bguivarspace(50),
  66.     )||bguilayout(LGO_FixMinHeight,1),
  67. ,grspace.normal,grspace.normal)
  68.  
  69. drop it.
  70.  
  71. popwin=''
  72.  
  73. nm=,
  74. bguimenu(1,'Project')||,
  75.  bguimenu(2,'Quit','Q',,,id.quit)||,
  76. bguimenu(1,'Prefs')
  77.  
  78. do i=0 to max
  79.     nm=nm||bguimenu(2,pref.i,i+1,,,id.fs.i)
  80. end
  81.  
  82. a=bguiwindow('Icon buttons',g,'-','-',,arg(1),'mouse',nm)
  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.quit then leave
  89.         otherwise do
  90.             do i=0 to max
  91.                 if id=id.fs.i | id=id.f.i | id=id.nf.i then do
  92.                     address command 'run >nil: SYS:Prefs/'pref.i
  93.                 end; else nop
  94.             end
  95.         end
  96.     end
  97. end
  98. rc=0
  99.  
  100. syntax:
  101. if rc~=0 then say '+++ ['rc']' errortext(rc) 'at line' sigl; else nop
  102. call bguiclose()
  103. exit 0
  104.  
  105. break_c:
  106. halt:
  107. rc=0
  108. say '+++ Break at line' sigl
  109. signal syntax
  110.