home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #2 / Amiga Plus CD - 2004 - No. 02.iso / AmigaPlus / Tools / Development / RxMUI / Examples / IconBar.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2004-01-31  |  3.6 KB  |  133 lines

  1. /**/
  2.  
  3. signal on halt
  4. signal on break_c
  5.  
  6. call Init
  7. call CreateApp
  8. call HandleApp
  9. /* never reached */
  10. /***********************************************************************/
  11. Init: procedure expose global.
  12.     l="rmh.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
  13.     if AddLibrary("rexxsupport.library","rxmui.library")~=0 then exit
  14.     call RxMUIOpt("debugmode showerr")
  15.     return
  16. /***********************************************************************/
  17. CreateApp: procedure expose global.
  18.  
  19.     app.Title="IconBar"
  20.     app.Version="$VER: IconBar 1.0 (15.1.2002)"
  21.     app.Copyright="@ 2002 by alfie"
  22.     app.Author="alfie"
  23.     app.Description="IconBar"
  24.     app.Base="ICONBAR"
  25.     app.SubWindow="win"
  26.      win.ID="MAIN"
  27.      win.AppWindow=1
  28.      win.Title="IconBar"
  29.      win.UseRightBorderScroller=1
  30.      win.UseBottomBorderScroller=1
  31.      win.Contents="mgroup"
  32.  
  33.       mgroup.0="sg"
  34.        sg.class="ScrollGroup"
  35.        sg.Frame="virtual"
  36.        sg.UseWinBorder=1
  37.        sg.VirtGroupContents="vg"
  38.         vg.class="VirtGroup"
  39.          vg.0="vertg"
  40.           vertg.class="group"
  41.            vertg.0=vspace()
  42.            vertg.1="horizg"
  43.             horizg.class="group"
  44.             horizg.horiz=1
  45.              horizg.0="ig"
  46.               ig.class="group"
  47.               ig.horiz=1
  48.               ig.spacing=1
  49.               ig.0=hspace()
  50.            vertg.2=vspace()
  51.  
  52.       mgroup.1="bg"
  53.        bg.class="group"
  54.        bg.horiz=1
  55.         bg.0=button("cb","_Clear bar")
  56.  
  57.     call NewObj("Application","app")
  58.  
  59.     call Notify("win","CloseRequest",1,"app","ReturnID","quit")
  60.     call Notify("cb","pressed",0,"app","Return","call clearBar")
  61.  
  62.     call AppMessage("vg")
  63.  
  64.     global.icons=0
  65.     global.space=ig.0
  66.  
  67.     call set("win","open",1)
  68.  
  69.     return
  70. /**************************************************************************/
  71. iconObject: procedure
  72. parse arg n,f
  73.     ic.name=f
  74.     ic.inputmode="relverify"
  75.     ic.frame="imagebutton"
  76.     return XNewObj("Icon",n,"ic")
  77. /**************************************************************************/
  78. HandleApp: procedure expose global.
  79.     ctrl_c=2**12
  80.     do forever
  81.         call NewHandle("app","h",ctrl_c)
  82.         if and(h.signals,ctrl_c)>0 then exit
  83.         select
  84.             when h.event="QUIT" then exit
  85.             when h.event="APPEVENT" then call appFun(h.to,h.name)
  86.             otherwise interpret h.event
  87.         end
  88.     end
  89.     /* never reached */
  90. /***********************************************************************/
  91. halt:
  92. break_c:
  93.     exit
  94. /**************************************************************************/
  95. addIcon: procedure expose global.
  96. parse arg f
  97.     id=global.icons
  98.     n="ic" || id
  99.     if right(f,1)=":" then f=addpart(f,"disk")
  100.     else do
  101.         t=word(statef(f),1)
  102.         if t="DIR" then f=pathpart(f)
  103.     end
  104.     call RxMUIOpt("")
  105.     o=iconObject(n,f)
  106.     call RxMUIOpt("debugmode showerr")
  107.     if o~="" then do
  108.         call DoMethod("ig","InitChange")
  109.         call Add("ig",o)
  110.         call Remove(global.space)
  111.         call Add("ig",global.space)
  112.         call DoMethod("ig","ExitChange")
  113.         global.id=o
  114.         global.icons=id+1
  115.     end
  116.     return o
  117. /**************************************************************************/
  118. clearBar: procedure expose global.
  119.     call DoMethod("horizg","InitChange")
  120.     do i=0 to global.icons-1
  121.         call Dispose(global.i)
  122.     end
  123.     call DoMethod("horizg","ExitChange")
  124.     global.icons=0
  125.     return
  126. /**************************************************************************/
  127. AppFun: procedure expose global.
  128.     parse arg to,name
  129.     say "Dropped" name "to" to
  130.     if to="VG" then call addIcon(name)
  131.     return
  132. /**************************************************************************/
  133.