home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / prog_oth / turbodex.lha / examplesources / QuickLaunch.dex < prev    next >
Encoding:
Text File  |  1992-10-11  |  3.0 KB  |  141 lines

  1. /* QuickLaunch v0.0 by $#%!
  2.    Needs textfile named "s:quicklaunch.config" to know what to run.
  3.    format: odd lines = names, even = path of utils. be sure
  4.    to add exactly one last <return>                              */
  5.  
  6. DEF window:LONG, gl:LONG, port:LONG, outf:LONG, type:LONG
  7. DEF gad:LONG, lbuf=250:ARRAY, nrgad:LONG, rast:LONG, ok:LONG
  8. DEF gbuf=2000:ARRAY, con:LONG
  9.  
  10. PROC init()
  11.   window:=OpenW(205,16,230,nrgad*14+48,$240,$100E,'QuickLaunch',NIL,1,gl)
  12.   IF window=FALSE
  13.     EXIT 20
  14.   ELSE
  15.     port:=MLONG(window+86)
  16.     rast:=MLONG(window+50)
  17.     outf:=TRUE
  18.     con:=NIL
  19.     VOID SetAPen(rast,2)
  20.     VOID message('Ready for takeoff ...     ')
  21.   ENDIF
  22. ENDPROC
  23.  
  24. PROC main()
  25.   VOID makegadgets()
  26.   ok:=readfile()
  27.   IF ok?FALSE
  28.     VOID init()
  29.     REPEAT
  30.       VOID wait4message()
  31.       IF type=2
  32.         VOID dogadgets(gad)
  33.       ENDIF
  34.     UNTIL type=1
  35.     VOID CloseW(window)
  36.     IF con?NIL
  37.       VOID Close(con)
  38.     ENDIF
  39.   ELSE
  40.     WRITE 'Couldn\at read config file correctly!\n'
  41.   ENDIF
  42. ENDPROC
  43.  
  44. PROC wait4message()
  45.   LOCAL class:LONG, mes:LONG, object:LONG
  46.   start:
  47.   mes:=GetMsg(port)
  48.   IF mes?FALSE
  49.     class:=MLONG(mes+20)
  50.     object:=MLONG(mes+28)
  51.     VOID ReplyMsg(mes)
  52.     IF class=$200
  53.       type:=1
  54.     ELSEIF class=$40
  55.       type:=2
  56.       gad:=MLONG(object+40)
  57.     ELSE
  58.       type:=0
  59.     ENDIF
  60.   ELSE
  61.     VOID Wait(-1)
  62.     GOTO start
  63.   ENDIF  
  64. ENDPROC
  65.  
  66. PROC makegadgets()
  67.   gl:=Gadget(gbuf,NIL,1,3,10,14,100,'Output')
  68.   VOID Gadget(gbuf+120,gl,2,0,120,14,100,'About')
  69. ENDPROC
  70.  
  71. PROC readfile()
  72.   LOCAL handle:LONG, buf=10000:ARRAY, len:LONG, a:LONG, adr:LONG
  73.   LOCAL flen:LONG, namestr=50:STRING, m:LONG
  74.   VOID StrCopy(namestr,'S:QuickLaunch.Config',TRUE)
  75.   flen:=FileLenght(namestr)
  76.   IF flen<10000
  77.     handle:=Open(namestr,1005)
  78.     IF handle?FALSE
  79.       len:=Read(handle,buf,flen)
  80.       VOID Close(handle)
  81.       IF len<1
  82.         handle:=FALSE
  83.       ELSE
  84.         adr:=buf
  85.         nrgad:=0
  86.         FOR a,0,len
  87.           m:=MCHAR(buf+a)
  88.           IF m=10
  89.             MCHAR buf+a,0
  90.             IF adr=0
  91.               adr:=buf+a+1
  92.             ELSE
  93.               INC 1,nrgad
  94.               VOID Gadget(nrgad*120+120+gbuf,gl,buf+a+1,0,10,nrgad*14+30,210,adr)
  95.               adr:=0
  96.               IF nrgad=12 
  97.                 GOTO ready
  98.               ENDIF
  99.             ENDIF
  100.           ENDIF
  101.         ENDFOR
  102.       ENDIF
  103.     ENDIF
  104.   ELSE
  105.     handle:=FALSE
  106.   ENDIF
  107.   ready:
  108. ENDPROC handle
  109.  
  110. PROC dogadgets(gadget)
  111.   LOCAL gadget:LONG
  112.   IF gadget<10
  113.     IF gadget=1
  114.       outf:=Not(outf)
  115.     ELSE
  116.       VOID message('Written in DEX by $#%!    ')
  117.     ENDIF
  118.   ELSE
  119.     IF outf=TRUE
  120.       IF stdout=NIL
  121.         IF con=NIL
  122.           con:=Open('CON:0/11/640/100/QuickLaunchOutput',1006)
  123.           IF con?NIL
  124.             stdout:=con
  125.           ENDIF
  126.         ENDIF
  127.       ENDIF
  128.     ENDIF
  129.     VOID message('Launching ...             ')
  130.     VOID Execute(gadget,0,stdout)
  131.     VOID message('Done.                     ')
  132.   ENDIF
  133. ENDPROC
  134.  
  135. PROC message(string)
  136.   LOCAL string:LONG, len:LONG
  137.   len:=StrLen(string)
  138.   VOID Move(rast,10,37)
  139.   VOID Text(rast,string,len)
  140. ENDPROC
  141.