Listing 1.  YeOldeSongPlayer Deck



*************
* Deck "YeOldeSongPlayer"
* Time 15:34:55
* Date 02/20/94
*************

*************
* Card(s) in deck.
*  Card "SongPlayer"
*************
* 1 Card(s), 1 were printed.
*************

*************
* Natural order of Cards
*  Card "SongPlayer"
*************

*************
* Global Routine(s) in deck.
*  Routine "PlayNextSong"
*************
* 1 Global routines(s), 1 were printed.
*************

*************
* Card "SongPlayer"
  BeforeAttachment ; used to be OnStartup
    Let File=""
    Let SongsFile=""
    Let PlayFlag=FALSE
    SetCurrentDirectory "SYS:"
    MakeIcon "SongPlayer",PROJECT ,"CanDo:Brushes/SongPlayer1","CanDo:Brushes/SongPlayer2"
    SetDefaultTool "SongPlayer","SYS:YeOldeSongPlayer"
    MakeDocument "Songs"
    MakeDocument "FileList"
    InsertStartingMessage
    MoveCursorTo STARTOF DOCUMENT 
    While TheLine<>""
      LoadIcon TheLine,"Temp"
      WorkWithDocument "Songs"
      InsertToolTypeList "Temp"
      WorkWithDocument "FileList"
      MoveCursor DOWN 
    EndLoop
    WorkWithDocument "Songs"
  EndScript
  Window "UserWindow"
    Definition
      Origin 104,34
      Size 440,200
      Title "Ye Olde Song Player"
      NumberOfColors 4,69632
      WindowColors 0,1,0 ; Detail, Block, Background
      WindowObjects CLOSEBUTTON DEPTHBUTTONS DRAGBAR 
      WindowFlags ACTIVATE TOFRONT WORKBENCH 
    EndScript
    OnCloseButton
      Quit
    EndScript
  EndObject
  List "SongList"
    Definition
      Origin 19,18
      Size 400,140
      Font "Elite",11 ; FontName, PointSize
      PrintStyle BOLD ,2,3 ; Style, Pen1, Pen2
      TextColors 1,0,JAM2  ; PenA, PenB, DrawMode
      Border DOUBLEBEVEL ,2,1 ; BorderStyle, MainPen, ExtraPen
      Document "Songs" ; where the text comes from
    EndScript
    OnRelease
      Do "PlayNextSong"
    EndScript
  EndObject
  TextButton "Select"
    Definition
      Origin 20,171
      Font "sapphire",14 ; FontName, PointSize
      PrintStyle BOLD OUTLINE ,2,3 ; Style, Pen1, Pen2
      TextColors 1,0,NORMAL  ; PenA, PenB, DrawMode
      Text " Select "
      Border EMBOSSED ,2,1 ; BorderStyle, MainPen, ExtraPen
      Highlight OUTLINE 
      ButtonFlags NONE 
    EndScript
    OnRelease
      SetFileRequestMode MULTISELECTMODE ,REJECTICONS 
      SetFileRequestPattern "#?"
      Let Files=AskForFileName(File,"Select Multiple Files",200,150)
      If Files<>""
        Song PAUSE 
        Let PlayFlag=FALSE
        Clear DOCUMENT 
        Type Files
        Let File=GetWord(Files,1,Char(10))
      EndIf
    EndScript
  EndObject
  TextButton "Load"
    Definition
      Origin 110,171
      Font "sapphire",14 ; FontName, PointSize
      PrintStyle BOLD OUTLINE ,2,3 ; Style, Pen1, Pen2
      TextColors 1,0,NORMAL  ; PenA, PenB, DrawMode
      Text " Load "
      Border EMBOSSED ,2,1 ; BorderStyle, MainPen, ExtraPen
      Highlight OUTLINE 
      ButtonFlags NONE 
    EndScript
    OnRelease
      SetFileRequestMode REGULARMODE ,NONE 
      SetFileRequestPattern "#?.info"
      Let NewSongsFile=AskForFileName(SongsFile||".info","Load Songs File",200,150)
      If NewSongsFile<>""
        Let NumChars=NumberOfChars(NewSongsFile)-4
        If FindChars(LowerCase(NewSongsFile),".info",1)=NumChars
          Song PAUSE 
          Let PlayFlag=FALSE
          Let SongsFile=GetChars(NewSongsFile,1,NumChars-1)
          LoadIcon SongsFile,"Temp"
          Clear DOCUMENT 
          InsertToolTypeList "Temp"
        EndIf
      EndIf
    EndScript
  EndObject
  TextButton "Save"
    Definition
      Origin 192,171
      Font "sapphire",14 ; FontName, PointSize
      PrintStyle BOLD OUTLINE ,2,3 ; Style, Pen1, Pen2
      TextColors 1,0,NORMAL  ; PenA, PenB, DrawMode
      Text " Save "
      Border EMBOSSED ,2,1 ; BorderStyle, MainPen, ExtraPen
      Highlight OUTLINE 
      ButtonFlags NONE 
    EndScript
    OnRelease
      SetFileRequestMode SAVEFILEMODE ,NONE 
      SetFileRequestPattern "#?.info"
      Let NewSongsFile=AskForFileName(SongsFile||".info","Save Songs File",200,150)
      If NewSongsFile<>""
        Let NumChars=NumberOfChars(SongsFile)-4
        If FindChars(LowerCase(SongsFile),".info",1)=NumChars
          Let SongsFile=GetChars(SongsFile,1,NumChars-1)
        EndIf
        SetToolTypeList "SongPlayer","Songs"
        SaveIcon "SongPlayer",SongsFile
      EndIf
    EndScript
  EndObject
  TextButton "Play"
    Definition
      Origin 271,171
      Font "sapphire",14 ; FontName, PointSize
      PrintStyle BOLD OUTLINE ,2,3 ; Style, Pen1, Pen2
      TextColors 1,0,NORMAL  ; PenA, PenB, DrawMode
      Text " Play "
      Border EMBOSSED ,2,1 ; BorderStyle, MainPen, ExtraPen
      Highlight OUTLINE 
      ButtonFlags NONE 
    EndScript
    OnRelease
      MoveCursorTo STARTOF DOCUMENT 
      Do "PlayNextSong"
    EndScript
  EndObject
  TextButton "Next"
    Definition
      Origin 346,171
      Font "sapphire",14 ; FontName, PointSize
      PrintStyle BOLD OUTLINE ,2,3 ; Style, Pen1, Pen2
      TextColors 1,0,NORMAL  ; PenA, PenB, DrawMode
      Text " Next "
      Border EMBOSSED ,2,1 ; BorderStyle, MainPen, ExtraPen
      Highlight OUTLINE 
      ButtonFlags NONE 
    EndScript
    OnRelease
      MoveCursor DOWN 
      Do "PlayNextSong"
    EndScript
  EndObject
  IntervalTimer "WaitForSongEnd"
    Definition
      Duration 0,1,0 ; Minutes, Seconds, Jiffies
    EndScript
    Occurred
      If CurrentSongName="" and PlayFlag=TRUE
        MoveCursor DOWN 
        Do "PlayNextSong"
      EndIf
    EndScript
  EndObject
* End of Card "SongPlayer"
*************

*************
* Global routine "PlayNextSong"
  If ObjectAttached("WaitForSongEnd")
    DetachObject "WaitForSongEnd"
  EndIf
  Song PAUSE 
  While FileType(TheLine)<>"Music" and TheLine<>""
    MoveCursor DOWN 
  EndLoop
  If TheLine<>""
    PlaySong TheLine
    Let PlayFlag=TRUE
    Delay 0,5,0
    ReattachObject "WaitForSongEnd"
  Else
    Let PlayFlag=FALSE
  EndIf
* End of routine "PlayNextSong"
*************