home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / comm / net / NetMenu.lha / Source / NetMenu.e < prev   
Encoding:
Text File  |  1980-08-22  |  15.4 KB  |  576 lines

  1. /*
  2. **
  3. **  NetMenu v1.0 ®1996 Peter Gordon
  4. **
  5. **  Just an example of how to make a little internet menu... 
  6. **
  7. **  Defaults set up for the following internet s/w:
  8. **
  9. **  TCP/IP Stack: Miami
  10. **  Browser:      IBrowse
  11. **  IRC Client:   AmIRC
  12. **  FTP Client:   Gui-FTP
  13. **
  14. ** Requires:
  15. ** (to run)       · Arexx to be running (Comes with WB)
  16. **                · WB2.0+              (Errr... Comes with yer Amiga :)
  17. ** (to compile)   · EasyGUI 3.3+        (Aminet: dev/e/easygui*.lha)
  18. **                · EAudio              (Aminet: dev/e/eaudio.lha)
  19. **                · Amiga E             (Aminet: dev/e/amigae*.lha)
  20. **
  21. */
  22.  
  23. OPT OSVERSION=37
  24.  
  25. MODULE 'tools/easygui', 'eaudio', 'libraries/gadtools'
  26.  
  27. OBJECT prefs
  28.   matchstr[4]:ARRAY OF CHAR,               -> Filetype validation
  29.   playback_online,  -> Playback rates for samples
  30.   playback_offline,
  31.   playback_irc,
  32.   playback_ftp,
  33.   playback_www,
  34.   playback_email,
  35.   load_tcp_stack[256]:ARRAY OF CHAR,       -> String to execute when opening TCP/IP
  36.   tcp_stack_arexx[256]:ARRAY OF CHAR,      -> Arexx prog to execute on open
  37.   shut_tcp_stack_arexx[256]:ARRAY OF CHAR, -> Arexx prog to execute on close
  38.   load_browser[256]:ARRAY OF CHAR,         -> Etc. etc.
  39.   browser_arexx[256]:ARRAY OF CHAR,
  40.   shut_browser_arexx[256]:ARRAY OF CHAR,
  41.   load_irc[256]:ARRAY OF CHAR,
  42.   irc_arexx[256]:ARRAY OF CHAR,
  43.   shut_irc_arexx[256]:ARRAY OF CHAR,
  44.   load_ftp[256]:ARRAY OF CHAR,
  45.   ftp_arexx[256]:ARRAY OF CHAR,
  46.   shut_ftp_arexx[256]:ARRAY OF CHAR,
  47.   load_email[256]:ARRAY OF CHAR,
  48.   email_arexx[256]:ARRAY OF CHAR,
  49.   shut_email_arexx[256]:ARRAY OF CHAR,
  50.   online_arexx[256]:ARRAY OF CHAR,
  51.   offline_arexx[256]:ARRAY OF CHAR
  52. ENDOBJECT
  53.  
  54. DEF onlrx[256]:STRING,   -> E-String for online rexx script name
  55.     oflrx[256]:STRING,   -> E-String for offline rexx script name
  56.     loadtcp[256]:STRING, -> E-String for load TCP string
  57.     tcprx[256]:STRING,   -> E-String for TCP rexx script name
  58.     qtcprx[256]:STRING,  -> E-String for quit TCP rexx script name
  59.     loadwww[256]:STRING,
  60.     wwwrx[256]:STRING,
  61.     qwwwrx[256]:STRING,
  62.     loadirc[256]:STRING,
  63.     ircrx[256]:STRING,
  64.     qircrx[256]:STRING,
  65.     loadftp[256]:STRING,
  66.     ftprx[256]:STRING,
  67.     qftprx[256]:STRING,
  68.     loademail[256]:STRING,
  69.     emailrx[256]:STRING,
  70.     qemailrx[256]:STRING
  71.  
  72. DEF s_online, s_online_len,   -> Online sample and length
  73.     s_offline, s_offline_len,
  74.     s_irc, s_irc_len,
  75.     s_ftp, s_ftp_len,
  76.     s_www, s_www_len,
  77.     s_email, s_email_len,
  78.     our_prefs:prefs,          -> The prefs
  79.     lock
  80.     
  81. PROC main() HANDLE
  82.   DEF gh
  83.  
  84.   -> Load the prefs
  85.   getPrefs()
  86.  
  87.   -> Check if we're run from WB, and if so, lock PROGDIR: and current dir
  88.   -> it...
  89.   IF(wbmessage)
  90.     IF(lock:=Lock('PROGDIR:',-2)) ->ACCESS_READ
  91.       CurrentDir(lock)
  92.     ENDIF
  93.   ENDIF
  94.   
  95.   -> Load the samples
  96.   s_online, s_online_len:=loadRaw('sounds/online.raw')
  97.   s_offline, s_offline_len:=loadRaw('sounds/offline.raw')
  98.   s_ftp, s_ftp_len:=loadRaw('sounds/ftp.raw')
  99.   s_irc, s_irc_len:=loadRaw('sounds/irc.raw')
  100.   s_www, s_www_len:=loadRaw('sounds/www.raw')
  101.   s_email, s_email_len:=loadRaw('sounds/email.raw')
  102.   
  103.   -> Open a please wait window
  104.   gh:=guiinit('!Wait!',
  105.     [BEVEL,
  106.       [TEXT,'Setting up some stuff...',NIL,FALSE,40]
  107.     ])
  108.   
  109.   -> Open TCP/IP stack
  110.   run(our_prefs.load_tcp_stack)
  111.   Delay(50)
  112.   
  113.   -> Run startup arexx script
  114.   rexxecute(our_prefs.tcp_stack_arexx)
  115.   
  116.   -> Get rid of the wait window
  117.   cleangui(gh)
  118.   
  119.   -> Open the main window
  120.   easygui('NetMenu v1.0',
  121.     [BEVEL,
  122.       [EQROWS,
  123.         [COLS,
  124.           [BUTTON,{online},'Online'],
  125.           [SPACEH],
  126.           [BUTTON,{offline},'Offline'],
  127.           [SPACEH],
  128.           [BUTTON,{www},'WWW'],
  129.           [SPACEH],
  130.           [BUTTON,{irc},'IRC'],
  131.           [SPACEH],
  132.           [BUTTON,{ftp},'FTP'],
  133.           [SPACEH],
  134.           [BUTTON,{email},'E Mail']
  135.         ],
  136.         [BAR],
  137.         [BUTTON,0,'Quit']
  138.       ]
  139.     ],0,0,0,
  140.     [NM_TITLE,0,'Project',0,0,0,0,
  141.      NM_ITEM,0,'Prefs','P',0,0,{prefs},
  142.      NM_BARLABEL,0,0,0,0,0,0,
  143.      NM_ITEM,0,'Quit','Q',0,0,0,
  144.      0,0,0,0,0,0,0]:newmenu)
  145.     
  146.   -> If browser is running, close it
  147.   rexxecute(our_prefs.shut_browser_arexx)
  148.   
  149.   -> If FTP is running, close it
  150.   rexxecute(our_prefs.shut_ftp_arexx)
  151.   
  152.   -> If IRC is running, close it
  153.   rexxecute(our_prefs.shut_ftp_arexx)
  154.   
  155.   -> Quit TCP/IP stack
  156.   rexxecute(our_prefs.shut_tcp_stack_arexx)
  157.   stopChannels(CHAN_LEFT1+CHAN_RIGHT1)
  158.   
  159.   -> Unlock PROGDIR:
  160.   IF(lock)
  161.     UnLock(lock)
  162.   ENDIF
  163. EXCEPT
  164.   stopChannels(CHAN_LEFT1+CHAN_RIGHT1)
  165.   WriteF('Fatal Error!\n')
  166. ENDPROC
  167.  
  168. PROC online()
  169.   -> Go online
  170.   rexxecute(our_prefs.online_arexx)
  171.   IF(s_online)
  172.     playData(s_online,s_online_len,our_prefs.playback_online,CHAN_LEFT1+CHAN_RIGHT1,64)
  173.     WaitTOF()
  174.     exitLoop(CHAN_LEFT1+CHAN_RIGHT1)
  175.   ENDIF
  176. ENDPROC  
  177.  
  178. PROC offline()
  179.   -> Go offline
  180.   rexxecute(our_prefs.offline_arexx)
  181.   IF(s_offline)
  182.     playData(s_offline,s_offline_len,our_prefs.playback_offline,CHAN_LEFT1+CHAN_RIGHT1,64)
  183.     WaitTOF()
  184.     exitLoop(CHAN_LEFT1+CHAN_RIGHT1)
  185.   ENDIF
  186. ENDPROC  
  187.  
  188. PROC www()
  189.   -> Run IBrowse
  190.   run(our_prefs.load_browser)
  191.   IF(StrLen(our_prefs.browser_arexx)>0)
  192.     Delay(100) -> Wait 2 secs
  193.     rexxecute(our_prefs.browser_arexx)
  194.   ENDIF
  195.   IF(s_www)
  196.     playData(s_www,s_www_len,our_prefs.playback_www,CHAN_LEFT1+CHAN_RIGHT1,64)
  197.     WaitTOF()
  198.     exitLoop(CHAN_LEFT1+CHAN_RIGHT1)
  199.   ENDIF
  200. ENDPROC
  201.  
  202. PROC irc()
  203.   -> Run AmIRC
  204.   run(our_prefs.load_irc)
  205.   IF(StrLen(our_prefs.irc_arexx)>0)
  206.     Delay(100) -> Wait 2 secs
  207.     rexxecute(our_prefs.irc_arexx)
  208.   ENDIF
  209.   IF(s_irc)
  210.     playData(s_irc,s_irc_len,our_prefs.playback_irc,CHAN_LEFT1+CHAN_RIGHT1,64)
  211.     WaitTOF()
  212.     exitLoop(CHAN_LEFT1+CHAN_RIGHT1)
  213.   ENDIF
  214. ENDPROC
  215.  
  216. PROC ftp()
  217.   -> Run GUI-FTP
  218.   run(our_prefs.load_ftp)
  219.   IF(StrLen(our_prefs.ftp_arexx)>0)
  220.     Delay(100) -> Wait 2 secs
  221.     rexxecute(our_prefs.ftp_arexx)
  222.   ENDIF
  223.   IF(s_ftp)
  224.     playData(s_ftp,s_ftp_len,our_prefs.playback_ftp,CHAN_LEFT1+CHAN_RIGHT1,64)
  225.     WaitTOF()
  226.     exitLoop(CHAN_LEFT1+CHAN_RIGHT1)
  227.   ENDIF
  228. ENDPROC
  229.  
  230. PROC email()
  231.   -> Run E-Mail
  232.   run(our_prefs.load_email)
  233.   IF(StrLen(our_prefs.email_arexx)>0)
  234.     Delay(100) -> Wait 2 secs
  235.     rexxecute(our_prefs.email_arexx)
  236.   ENDIF
  237.   IF(s_email)
  238.     playData(s_email,s_email_len,our_prefs.playback_email,CHAN_LEFT1+CHAN_RIGHT1,64)
  239.     WaitTOF()
  240.     exitLoop(CHAN_LEFT1+CHAN_RIGHT1)
  241.   ENDIF
  242. ENDPROC
  243.  
  244. -> Run an arexx script
  245. PROC rexxecute(str)
  246.   DEF mstr[256]:STRING,h
  247.   IF(lock)
  248.     CurrentDir(lock)
  249.   ENDIF
  250.   IF(h:=Open('NIL:',NEWFILE))
  251.     -> Normally I wouldn't specify "sys:rexxc/" but i cant get it to
  252.     -> work from the workbench icon without it (?)
  253.     StringF(mstr,'sys:rexxc/rx >NIL: \s',str)
  254.     Execute(mstr,0,h)
  255.     Close(h)
  256.   ENDIF
  257. ENDPROC  
  258.  
  259. -> Run a program
  260. PROC run(name)
  261.   StringF(onlrx,'Run >NIL: \s',name)
  262.   Execute(onlrx,0,0)
  263. ENDPROC
  264.  
  265. PROC getPrefs()
  266.   DEF h, gp
  267.   gp:=0
  268.   
  269.   -> Check the file length
  270.   IF(FileLength('s:NetMenu.prefs')=SIZEOF prefs)
  271.     IF(h:=Open('s:NetMenu.prefs',OLDFILE))
  272.       Read(h,our_prefs,SIZEOF prefs)
  273.       Close(h)
  274.       IF(StrCmp(our_prefs.matchstr,'NMP',4)) THEN gp:=1
  275.     ENDIF
  276.   ENDIF
  277.   
  278.   -> If we couldn't load the prefs properly, make a new prefs file
  279.   -> With all the defaults
  280.   IF(gp=0)
  281.     doCopy(our_prefs.matchstr,'NMP')
  282.     our_prefs.playback_online:=13964
  283.     our_prefs.playback_offline:=13964
  284.     our_prefs.playback_www:=8404
  285.     our_prefs.playback_irc:=8404
  286.     our_prefs.playback_ftp:=16384
  287.     our_prefs.playback_email:=8404
  288.     doCopy(our_prefs.load_tcp_stack,'Miami')
  289.     doCopy(our_prefs.tcp_stack_arexx,'rexx/hide_miami.rexx')
  290.     doCopy(our_prefs.shut_tcp_stack_arexx,'rexx/quit_miami.rexx')
  291.     doCopy(our_prefs.load_browser,'IBrowse')
  292.     doCopy(our_prefs.browser_arexx,'')
  293.     doCopy(our_prefs.shut_browser_arexx,'rexx/quit_browser.rexx')
  294.     doCopy(our_prefs.load_irc,'AmIRC')
  295.     doCopy(our_prefs.irc_arexx,'')
  296.     doCopy(our_prefs.shut_irc_arexx,'rexx/Close_irc.rexx')
  297.     doCopy(our_prefs.load_ftp,'GUI-FTP')
  298.     doCopy(our_prefs.ftp_arexx,'')
  299.     doCopy(our_prefs.shut_ftp_arexx,'rexx/Close_ftp.rexx')
  300.     doCopy(our_prefs.online_arexx,'rexx/Online.rexx')
  301.     doCopy(our_prefs.offline_arexx,'rexx/Offline.rexx')
  302.     savePrefs()
  303.   ENDIF
  304. ENDPROC
  305.     
  306. PROC savePrefs()
  307.   DEF h
  308.   IF(h:=Open('s:NetMenu.prefs',NEWFILE))
  309.     Write(h,our_prefs,SIZEOF prefs)
  310.     Close(h)
  311.   ENDIF
  312. ENDPROC
  313.  
  314. PROC doCopy(da,s)
  315.   DEF cnt
  316.   FOR cnt:=0 TO StrLen(s)
  317.     PutChar(da+cnt,Char(s+cnt))
  318.   ENDFOR
  319. ENDPROC
  320.  
  321. PROC prefs()
  322.   -> Copy all strings to E-Strings for EasyGUI
  323.   StrCopy(onlrx,our_prefs.online_arexx)
  324.   StrCopy(oflrx,our_prefs.offline_arexx)
  325.   StrCopy(loadtcp,our_prefs.load_tcp_stack)
  326.   StrCopy(tcprx,our_prefs.tcp_stack_arexx)
  327.   StrCopy(qtcprx,our_prefs.shut_tcp_stack_arexx)
  328.   StrCopy(loadwww,our_prefs.load_browser)
  329.   StrCopy(wwwrx,our_prefs.browser_arexx)
  330.   StrCopy(qwwwrx,our_prefs.shut_browser_arexx)
  331.   StrCopy(loadirc,our_prefs.load_irc)
  332.   StrCopy(ircrx,our_prefs.irc_arexx)
  333.   StrCopy(qircrx,our_prefs.shut_irc_arexx)
  334.   StrCopy(loadftp,our_prefs.load_ftp)
  335.   StrCopy(ftprx,our_prefs.ftp_arexx)
  336.   StrCopy(qftprx,our_prefs.shut_ftp_arexx)
  337.   StrCopy(loademail,our_prefs.load_email)
  338.   StrCopy(emailrx,our_prefs.email_arexx)
  339.   StrCopy(qemailrx,our_prefs.shut_email_arexx)
  340.   
  341.   -> Opent the prefs window
  342.   easygui('NetMenu Prefs',
  343.     [BEVEL,
  344.       [EQROWS,
  345.         [BUTTON,{prf_tcp},'TCP prefs'],
  346.         [BUTTON,{prf_www},'WWW prefs'],
  347.         [BUTTON,{prf_irc},'IRC prefs'],
  348.         [BUTTON,{prf_ftp},'FTP prefs'],
  349.         [BUTTON,{prf_email},'Email Prefs'],
  350.         [BUTTON,{prf_dia},'Dial prefs'],
  351.         [BUTTON,{prf_sound},'Sound prefs'],
  352.         [BAR],
  353.         [COLS,
  354.           [BUTTON,0,'Close'],
  355.           [SPACEH],
  356.           [BUTTON,{savePrefs},'Save Prefs']
  357.         ]
  358.       ]
  359.     ])
  360. ENDPROC
  361.  
  362. PROC prf_tcp()
  363.   easygui('NetMenu Prefs -TCP',
  364.     [BEVEL,
  365.       [EQROWS,
  366.         [STR,{dummy},'_Load TCP:',loadtcp,255,20,0,0,Char('l')],
  367.         [STR,{dummy},'_TCP Arexx:',tcprx,255,20,0,0,Char('t')],
  368.         [STR,{dummy},'_Shut TCP:',qtcprx,255,20,0,0,Char('s')],
  369.         [BAR],
  370.         [BUTTON,0,'Close']
  371.       ]
  372.     ])
  373.     
  374.   -> Put the changed strings back into the prefs structure
  375.   doCopy(our_prefs.load_tcp_stack,loadtcp)
  376.   doCopy(our_prefs.tcp_stack_arexx,tcprx)
  377.   doCopy(our_prefs.shut_tcp_stack_arexx,qtcprx)
  378. ENDPROC
  379.  
  380. PROC prf_email()
  381.   easygui('NetMenu Prefs -EMail',
  382.     [BEVEL,
  383.       [EQROWS,
  384.         [STR,{dummy},'_Load EMail:',loadtcp,255,20,0,0,Char('l')],
  385.         [STR,{dummy},'_EMail Arexx:',tcprx,255,20,0,0,Char('e')],
  386.         [STR,{dummy},'_Shut EMail:',qtcprx,255,20,0,0,Char('s')],
  387.         [BAR],
  388.         [BUTTON,0,'Close']
  389.       ]
  390.     ])
  391.     
  392.   -> Put the changed strings back into the prefs structure
  393.   doCopy(our_prefs.load_email,loademail)
  394.   doCopy(our_prefs.email_arexx,emailrx)
  395.   doCopy(our_prefs.shut_email_arexx,qemailrx)
  396. ENDPROC
  397.  
  398. PROC prf_www()
  399.   easygui('NetMenu Prefs -WWW',
  400.     [BEVEL,
  401.       [EQROWS,
  402.         [STR,{dummy},'_Load WWW:',loadwww,255,20,0,0,Char('l')],
  403.         [STR,{dummy},'_WWW Arexx:',wwwrx,255,20,0,0,Char('w')],
  404.         [STR,{dummy},'_Shut WWW:',qwwwrx,255,20,0,0,Char('s')],
  405.         [BAR],
  406.         [BUTTON,0,'Close']
  407.       ]
  408.     ])
  409.   doCopy(our_prefs.load_browser,loadwww)
  410.   doCopy(our_prefs.browser_arexx,wwwrx)
  411.   doCopy(our_prefs.shut_browser_arexx,qwwwrx)
  412. ENDPROC
  413.  
  414. PROC prf_irc()
  415.   easygui('NetMenu Prefs -IRC',
  416.     [BEVEL,
  417.       [EQROWS,
  418.         [STR,{dummy},'_Load IRC:',loadirc,255,20,0,0,Char('l')],
  419.         [STR,{dummy},'_IRC Arexx:',ircrx,255,20,0,0,Char('i')],
  420.         [STR,{dummy},'_Shut IRC:',qircrx,255,20,0,0,Char('s')],
  421.         [BAR],
  422.         [BUTTON,0,'Close']
  423.       ]
  424.     ])
  425.   doCopy(our_prefs.load_irc,loadirc)
  426.   doCopy(our_prefs.irc_arexx,ircrx)
  427.   doCopy(our_prefs.shut_irc_arexx,qircrx)
  428. ENDPROC
  429.  
  430. PROC prf_ftp()
  431.   easygui('NetMenu Prefs -FTP',
  432.     [BEVEL,
  433.       [EQROWS,
  434.         [STR,{dummy},'_Load FTP:',loadftp,255,20,0,0,Char('l')],
  435.         [STR,{dummy},'_FTP Arexx:',ftprx,255,20,0,0,Char('f')],
  436.         [STR,{dummy},'_Shut FTP:',qftprx,255,20,0,0,Char('s')],
  437.         [BAR],
  438.         [BUTTON,0,'Close']
  439.       ]
  440.     ])
  441.   doCopy(our_prefs.load_ftp,loadftp)
  442.   doCopy(our_prefs.ftp_arexx,ftprx)
  443.   doCopy(our_prefs.shut_ftp_arexx,qftprx)
  444. ENDPROC
  445.  
  446. PROC prf_dia()
  447.   easygui('NetMenu Prefs -Dial',
  448.     [BEVEL,
  449.       [EQROWS,
  450.         [STR,{dummy},'_Online Arexx:',onlrx,255,20,0,0,Char('o')],
  451.         [STR,{dummy},'O_ffline Arexx:',oflrx,255,20,0,0,Char('f')],
  452.         [BAR],
  453.         [BUTTON,0,'Close']
  454.       ]
  455.     ])
  456.   doCopy(our_prefs.online_arexx,onlrx)
  457.   doCopy(our_prefs.offline_arexx,oflrx)
  458. ENDPROC
  459.  
  460. PROC prf_sound()
  461.   easygui('NetMenu Prefs -Sound',
  462.     [BEVEL,
  463.       [EQROWS,
  464.         [COLS,
  465.           [SLIDE,{sound1},'Online.RAW playrate:        ',0,8404,32767,our_prefs.playback_online,30,'%6ld',0,0,(s_online=0)],
  466.           [BUTTON,{stest1},'Test',0,0,0,(s_online=0)]
  467.         ],
  468.         [COLS,
  469.           [SLIDE,{sound2},'Offline.RAW playrate:       ',0,8404,32767,our_prefs.playback_offline,30,'%6ld',0,0,(s_offline=0)],
  470.           [BUTTON,{stest2},'Test',0,0,0,(s_offline=0)]
  471.         ],
  472.         [COLS,
  473.           [SLIDE,{sound3},'WWW.RAW playrate:           ',0,8404,32767,our_prefs.playback_www,30,'%6ld',0,0,(s_www=0)],
  474.           [BUTTON,{stest3},'Test',0,0,0,(s_www=0)]
  475.         ],
  476.         [COLS,
  477.           [SLIDE,{sound4},'IRC.RAW playrate:           ',0,8404,32767,our_prefs.playback_irc,30,'%6ld',0,0,(s_irc=0)],
  478.           [BUTTON,{stest4},'Test',0,0,0,(s_irc=0)]
  479.         ],
  480.         [COLS,
  481.           [SLIDE,{sound5},'FTP.RAW playrate:           ',0,8404,32767,our_prefs.playback_ftp,30,'%6ld',0,0,(s_ftp=0)],
  482.           [BUTTON,{stest5},'Test',0,0,0,(s_ftp=0)]
  483.         ],
  484.         [COLS,
  485.           [SLIDE,{sound6},'EMAIL.RAW playrate:         ',0,8404,32767,our_prefs.playback_email,30,'%6ld',0,0,(s_email=0)],
  486.           [BUTTON,{stest6},'Test',0,0,0,(s_email=0)]
  487.         ],
  488.         [BAR],
  489.         [BUTTON,0,'Close']
  490.       ]
  491.     ])
  492. ENDPROC
  493.  
  494. PROC sound1(null,val)
  495.   our_prefs.playback_online:=val
  496. ENDPROC
  497. PROC stest1()
  498.   IF(s_online)
  499.     stopChannels(CHAN_LEFT1+CHAN_RIGHT1)
  500.     WaitTOF()
  501.     playData(s_online,s_online_len,our_prefs.playback_online,CHAN_LEFT1+CHAN_RIGHT1,64)
  502.     WaitTOF()
  503.     exitLoop(CHAN_LEFT1+CHAN_RIGHT1)
  504.   ENDIF
  505. ENDPROC  
  506.  
  507. PROC sound2(null,val)
  508.   our_prefs.playback_offline:=val
  509. ENDPROC
  510. PROC stest2()
  511.   IF(s_offline)
  512.     stopChannels(CHAN_LEFT1+CHAN_RIGHT1)
  513.     WaitTOF()
  514.     playData(s_offline,s_offline_len,our_prefs.playback_offline,CHAN_LEFT1+CHAN_RIGHT1,64)
  515.     WaitTOF()
  516.     exitLoop(CHAN_LEFT1+CHAN_RIGHT1)
  517.   ENDIF
  518. ENDPROC  
  519.  
  520. PROC sound3(null,val)
  521.   our_prefs.playback_www:=val
  522. ENDPROC
  523. PROC stest3()
  524.   IF(s_online)
  525.     stopChannels(CHAN_LEFT1+CHAN_RIGHT1)
  526.     WaitTOF()
  527.     playData(s_www,s_www_len,our_prefs.playback_www,CHAN_LEFT1+CHAN_RIGHT1,64)
  528.     WaitTOF()
  529.     exitLoop(CHAN_LEFT1+CHAN_RIGHT1)
  530.   ENDIF
  531. ENDPROC  
  532.  
  533. PROC sound4(null,val)
  534.   our_prefs.playback_irc:=val
  535. ENDPROC
  536. PROC stest4()
  537.   IF(s_irc)
  538.     stopChannels(CHAN_LEFT1+CHAN_RIGHT1)
  539.     WaitTOF()
  540.     playData(s_irc,s_irc_len,our_prefs.playback_irc,CHAN_LEFT1+CHAN_RIGHT1,64)
  541.     WaitTOF()
  542.     exitLoop(CHAN_LEFT1+CHAN_RIGHT1)
  543.   ENDIF
  544. ENDPROC  
  545.  
  546. PROC sound5(null,val)
  547.   our_prefs.playback_ftp:=val
  548. ENDPROC
  549. PROC stest5()
  550.   IF(s_ftp)
  551.     stopChannels(CHAN_LEFT1+CHAN_RIGHT1)
  552.     WaitTOF()
  553.     playData(s_ftp,s_ftp_len,our_prefs.playback_ftp,CHAN_LEFT1+CHAN_RIGHT1,64)
  554.     WaitTOF()
  555.     exitLoop(CHAN_LEFT1+CHAN_RIGHT1)
  556.   ENDIF
  557. ENDPROC  
  558.  
  559. PROC sound6(null,val)
  560.   our_prefs.playback_email:=val
  561. ENDPROC
  562. PROC stest6()
  563.   IF(s_email)
  564.     stopChannels(CHAN_LEFT1+CHAN_RIGHT1)
  565.     WaitTOF()
  566.     playData(s_email,s_email_len,our_prefs.playback_email,CHAN_LEFT1+CHAN_RIGHT1,64)
  567.     WaitTOF()
  568.     exitLoop(CHAN_LEFT1+CHAN_RIGHT1)
  569.   ENDIF
  570. ENDPROC  
  571.  
  572. -> Used when you dont want an action for a button, but you also dont
  573. -> want that button to close the gui
  574. PROC dummy()
  575. ENDPROC
  576.