home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / RxCD / Examples / PlayToc.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2001-09-23  |  5.4 KB  |  173 lines

  1. /**/
  2.  
  3. signal on halt
  4. signal on break_c
  5.  
  6. call Init
  7. call CreateApp
  8. call ReadTOC
  9. call HandleApp
  10.  
  11. /* never reached */
  12. /***********************************************************************/
  13. Init: procedure expose global.
  14.     l="rmh.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
  15.     if AddLibrary("rxmui.library","rxcd.library")~=0 then exit
  16.     call RxMUIOpt("debugmode showerr")
  17.     global.device="cd0"
  18.     return
  19. /***********************************************************************/
  20. HandleApp: procedure expose global.
  21.     ctrl_c=2**12
  22.     do forever
  23.         call NewHandle("app","h",ctrl_c)
  24.         if and(h.signals,ctrl_c)>0 then exit
  25.         if h.EventFlag then
  26.             select
  27.                 when h.event="QUIT" then exit
  28.                 otherwise interpret h.event
  29.             end
  30.     end
  31.     /* never reached */
  32. /***********************************************************************/
  33. CreateApp: procedure expose global.
  34.  
  35.     app.Title="RxCDTOCExample"
  36.     app.Version="$VER: RxCDTOCExample 1.0 (18.9.2001)"
  37.     app.Copyright="Copyright 2001 by Alfonso Ranieri"
  38.     app.Author="Alfonso Ranieri"
  39.     app.Description="RxCD TOC Example"
  40.     app.Base="RXMUIEXAMPLE"
  41.     app.SubWindow="win"
  42.      win.ID="MAIN"
  43.      win.Title="RxCD TOC"
  44.      win.Contents="mgroup"
  45.  
  46.       mgroup.0="cdg"
  47.        cdg.Class="Group"
  48.        cdg.Horiz=1
  49.         cdg.0=Label("_Device")
  50.         cdg.1=String("Device",'d',global.device)
  51.  
  52.       mgroup.1="listview"
  53.        listview.Class="NListview"
  54.        listview.List="List"
  55.         list.Title=ParseText("%cTrack|Type|Start|End|Time")
  56.         list.Format=ParseText("PREPARSE=%r BAR W=-1,PREPARSE=%c BAR W=-1,PREPARSE=%c BAR W=-1,PREPARSE=%c BAR W=-1,W=-1")
  57.  
  58.        ig.Class="Group"
  59.        ig.Columns=2
  60.        ig.Frame="Group"
  61.        ig.FrameTitle="Status"
  62.         ig.0=Label("AudioStatus")
  63.         ig.1=Text("AudioStatus")
  64.         ig.2=Label("Flags")
  65.         ig.3=Text("Flags")
  66.         ig.4=Label("Track")
  67.         ig.5=Text("Track")
  68.         ig.6=Label("Index")
  69.         ig.7=Text("Index")
  70.         ig.8=Label("Abs Address")
  71.         ig.9=Text("AbsAddr")
  72.         ig.10=Label("Rel Address")
  73.         ig.11=Text("RelAddr")
  74.  
  75.       mgroup.2=Text("Info","TOC")
  76.  
  77.       mgroup.3="bg"
  78.        bg.Class="Group"
  79.        bg.Horiz=1
  80.         bg.0=Button("TOC","_TOC")
  81.          Play.Disabled=1
  82.         bg.1=Button("Play","_Play")
  83.          PlayAll.Disabled=1
  84.         bg.2=Button("PlayAll","Play _All")
  85.         bg.3=Button("Quit","_Quit")
  86.  
  87.     if NewObj("application","app")>0 then exit
  88.  
  89.     call Notify("win","CloseRequest",1,"app","ReturnID","quit")
  90.  
  91.     call Notify("device","NewContents","EveryTime","app","SetVar","global.device","TriggerValue")
  92.     call Notify("device","NewContents","EveryTime","app","Return","call ReadTOC")
  93.     call Notify("TOC","Pressed",0,"app","Return","call ReadTOC")
  94.     call Notify("Play","Pressed",0,"app","Return","call PlayFun('ACTIVE')")
  95.     call Notify("PlayAll","Pressed",0,"app","Return","call PlayFun('ALL')")
  96.     call Notify("quit","Pressed",0,"app","ReturnID","Quit")
  97.     call Notify("list","DoubleClick","EveryTime","app","Return","call PlayFun('ACTIVE')")
  98.  
  99.     call set("win","open",1)
  100.     if ~xget("win","open") then do
  101.         say "can't open window"
  102.         exit
  103.     end
  104.  
  105.     return
  106. /***********************************************************************/
  107. halt:
  108. break_c:
  109.     exit
  110. /**************************************************************************/
  111. ReadTOC: procedure expose global.
  112.     call set("win","Sleep",1)
  113.     call DoMethod("list","Clear")
  114.     call set("Info","Contents","Reading TOC...")
  115.     res = CDTOC(global.device,"db","global.toc")
  116.     if res>0 then do
  117.         call set("Info","Contents","Can't read TOC")
  118.         call set("Play","Disabled",1)
  119.         call set("PlayAll","Disabled",1)
  120.         call set("win","Sleep",0)
  121.         return
  122.     end
  123.     call set("list","Quiet",1)
  124.     do i=0 to global.toc.num-1
  125.         if global.toc.i.Audio then type=ParseText("%bAudio")
  126.         else type="Data"
  127.         entry=i+1 || "|" || type || "|" || format(global.toc.i.StartMin,global.toc.i.StartSec) || "|" || EndFun(global.toc.i.StartAddr,global.toc.i.Frames) || "|" || format(global.toc.i.Min,global.toc.i.Sec)
  128.         call DoMethod("list","Insert",entry,"Bottom")
  129.     end
  130.     call set("list","Quiet",0)
  131.     call set("list","Active",GetActive())
  132.     call set("Info","Contents","TOC read")
  133.     call set("win","Sleep",0)
  134.     call set("Play","Disabled",0)
  135.     call set("PlayAll","Disabled",0)
  136.     return
  137. /**************************************************************************/
  138. format: procedure
  139. parse arg m,s
  140.     return right("00" || m,2)":"right("00" || s,2)
  141. /**************************************************************************/
  142. EndFun: procedure
  143. parse arg a,b
  144.     f=a+b
  145.     s=f%75
  146.     m=s%60
  147.     s=s//60
  148.     return format(m,s)
  149. /**************************************************************************/
  150. PlayFun: procedure expose global.
  151. parse arg what
  152.     select
  153.         when what="ACTIVE" then do
  154.             a=xget("list","active")+1
  155.             res=CDPlay(global.device,"db",a,a)
  156.             if res>0 then call set("Info","Contents","Can't play track" a)
  157.             else call set("Info","Contents","Playing track" a)
  158.         end
  159.         when what="ALL" then do
  160.             res=CDPlay(global.device,"db")
  161.             if res>0 then call set("Info","Contents","Can't play tracks")
  162.             else call set("Info","Contents","Playing tracks")
  163.         end
  164.     end
  165.     return
  166. /**************************************************************************/
  167. GetActive: procedure expose global.
  168.     res = CDStatus(global.device,"db","status")
  169.     if res=0 & status.AudioStatus=17 then return status.Track-1
  170.     return 0
  171. /**************************************************************************/
  172.  
  173.