home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / comm / bbbbs-7.2.lha / BBBBS / BBBBS72.lha / BBS_LIBS / BBS / bbsQUICK64.lha / bbsQUICK.rexx < prev    next >
OS/2 REXX Batch file  |  1993-10-06  |  46KB  |  1,781 lines

  1. /* $VER: bbsQUICK.rexx 6.4 © 1993 Richard Lee Stockton (6.10.93)
  2.      - FREELY DISTRIBUTABLE AS LONG AS THIS NOTICE REMAINS -
  3.  
  4. requires: libs:rexxsyslib.library             c:LhA
  5.           libs:rexxsupport.library            c:join
  6.           libs:rexxarplib.library             c:copy
  7.           libs:rexxmathlib.library            c:delete
  8.           libs:screenshare.library            c:version
  9.           libs:arp.library
  10.  
  11.  - Preferences -
  12. prefs.0 = color data
  13. prefs.1 = work dir
  14. prefs.2 = download dir
  15. prefs.3 = upload dir
  16. prefs.4 = editor
  17. */
  18.  
  19. IF SHOW('P','QUICKHOST') THEN
  20.   DO
  21.     ADDRESS QUICKPORT FRONT
  22.     EXIT 0
  23.   END
  24.  
  25. IF ~SHOW('L','rexxsupport.library') THEN
  26.   CALL ADDLIB('rexxsupport.library',0,-30,0)
  27.  
  28. IF ~SHOW('L','rexxarplib.library') THEN
  29.   CALL ADDLIB('rexxarplib.library',0,-30,0)
  30.  
  31. CALL setup_variables()
  32. CALL setup_screen()
  33. CALL setup_host()
  34.  
  35. w.=''
  36. w.cols=ScreenCols(QUICKSCREEN)
  37. w.rows=ScreenRows(QUICKSCREEN)-1
  38. /* w.cols=640; w.rows=200 */
  39. lines_per_page=(w.rows-43)%8
  40. chars=(w.cols-48)%8
  41. w.idcmp='CLOSEWINDOW+MENUPICK+GADGETUP'
  42. w.flags='WINDOWCLOSE+ACTIVATE'
  43.  
  44. IF EXISTS(prefspath) THEN SIGNAL START
  45.  
  46. START_PREFS:
  47. p.=''
  48. p.title=CENTER('Please Enter Your Preferences',44)
  49. CALL OpenWindow(QUICKHOST,120,30,400,130,w.idcmp,w.flags,p.title)
  50.  
  51. CALL AddMenu(QUICKHOST,'Preferences    ')
  52. CALL AddItem(QUICKHOST,' Help','HELP','H')
  53. CALL AddItem(QUICKHOST,' Colors ...','COLORS','C')
  54. CALL AddItem(QUICKHOST,' Load ...','LOAD','L')
  55. CALL AddItem(QUICKHOST,' Save ...','SAVE',';')
  56. CALL AddItem(QUICKHOST,' Use','USE','U')
  57. CALL AddItem(QUICKHOST,' Cancel','CLOSEWINDOW','Q')
  58. CALL AddItem(QUICKHOST,' About','ABOUT')
  59.  
  60. pp.1='Work Dir:'
  61. pp.2='Download Dir:'
  62. pp.3='Upload Dir:'
  63. pp.4='Editor:'
  64. DO i=0 TO 9
  65.   p.i=prefs.i
  66. END
  67. DO i=1 TO 4
  68.   CALL SETAPEN(QUICKHOST,1)
  69.   CALL MOVE(QUICKHOST,18,29+17*i)
  70.   CALL TEXT(QUICKHOST,RIGHT(pp.i,16))
  71.   CALL AddGadget(QUICKHOST,158,23+17*i,i,p.i,'PREFS' i '%g',220,RIDGEBORDER)
  72. END
  73.  
  74. CALL AddGadget(QUICKHOST, 40,112,4,' Save ','SAVE')
  75. CALL AddGadget(QUICKHOST,180,112,5,' Use ','USE')
  76. CALL AddGadget(QUICKHOST,300,112,6,' Cancel ','CLOSEWINDOW')
  77. CALL AddGadget(QUICKHOST, 40,16,7,' Load ','LOAD')
  78. CALL AddGadget(QUICKHOST,176,16,8,' HELP ','HELP')
  79. CALL AddGadget(QUICKHOST,300,16,9,' Colors ','COLORS')
  80.  
  81. CALL tofront(QUICKHOST)
  82. CALL box(QUICKHOST,1,1,11,30,378,77)
  83. CALL SetAPen(QUICKHOST,3)
  84. CALL Flood(QUICKHOST,1,5,15)
  85. lastgad=1
  86.  
  87.  
  88. LOOP_PREFS:
  89. CALL SCREENTOFRONT(QUICKSCREEN)
  90. CALL SetAPen(QUICKHOST,1)
  91. DO FOREVER
  92.   CALL ActivateGadget(QUICKHOST,lastgad)
  93.   t=waitpkt(QUICKPORT)
  94.   DO ff=1
  95.     p=GETPKT(QUICKPORT)
  96.     IF c2d(p)=0 THEN LEAVE ff
  97.     command=GETARG(p)
  98.     PARSE VAR command arg1' 'arg2' 'arg3
  99.     t=REPLY(p,0)
  100.     SELECT
  101.       WHEN arg1='LOAD' THEN CALL config('LOAD')
  102.       WHEN arg1='SAVE' | arg1='USE' | arg1='CLOSEWINDOW' THEN
  103.         DO
  104.           DO i=1 TO 9 WHILE arg1~='CLOSEWINDOW'
  105.             prefs.i=p.i
  106.           END
  107.           CALL MAKEDIR(prefs.1)
  108.           CALL PRAGMA('D',prefs.1)
  109.           arcdir=makepath(prefs.3,'OUT')
  110.           CALL MAKEDIR(arcdir)
  111.           IF arg1='SAVE' THEN CALL config('SAVE')
  112.           CALL CloseWindow(QUICKHOST,'CONTINUE')
  113.           SIGNAL START
  114.         END
  115.       WHEN arg1='HELP' THEN CALL Request(,12,prefshelp,,,,QUICKSCREEN)
  116.       WHEN arg1='ABOUT' THEN CALL Request(200,45,abouttext,,,,QUICKSCREEN)
  117.       WHEN arg1='PREFS' THEN
  118.         DO
  119.           n=arg2
  120.           p.n=arg3
  121.           n=n+1
  122.           IF n>4 THEN n=1
  123.           lastgad=n
  124.         END
  125.       WHEN arg1='COLORS' THEN
  126.         /* INTERPRET */ ADDRESS AREXX Palette.rexx QUICKSCREEN 4 QUICKPORT 
  127.       WHEN arg1='NEW_COLORS' THEN p.0=new_colors()
  128.       WHEN arg1='MOUSEBUTTONS' THEN NOP
  129.       WHEN arg1='SELECTUP'     THEN NOP
  130.       WHEN arg1='CONTINUE'     THEN NOP
  131.       OTHERWISE CALL Request(,100,command,,,,QUICKSCREEN)
  132.     END
  133.   END
  134. END
  135.  
  136.  
  137. START:
  138. projects=SHOWDIR(prefs.1)
  139. IF WORDS(projects)=1 THEN
  140.   DO
  141.     arcdir=makepath(prefs.3,'OUT/'projects)
  142.     CALL MAKEDIR(arcdir)
  143.     workdir=makepath(prefs.1,projects)
  144.     CALL MAKEDIR(workdir)
  145.     CALL PRAGMA('D',workdir)
  146.   END
  147. ELSE IF projects~='' THEN CALL newarea()
  148. IF EXISTS('.ID') THEN CALL read_ID()
  149. ELSE CALL openarc()
  150.  
  151. RESTART:
  152. IF mode=0 THEN w.title='Notices and Information'
  153. IF mode=1 THEN w.title='Private EMail Messages'
  154. IF mode=2 THEN w.title='New Conferences Messages'
  155. IF mode=3 THEN w.title='Public Message Conferences'
  156. IF mode=4 THEN w.title='New File Descriptions'
  157. IF mode=5 THEN w.title='Public File Libraries'
  158. w.title=RIGHT(bbsname w.title,75)
  159. CALL OpenWindow(QUICKHOST,,9,w.cols,w.rows-8,w.idcmp,w.flags,w.title)
  160. CALL SetFont(QUICKHOST,'topaz.font',8)
  161.  
  162. CALL AddMenu(QUICKHOST,'Project       ')
  163. CALL AddItem(QUICKHOST,' New','NEW')
  164. CALL AddItem(QUICKHOST,' Open ...','OPEN','O')
  165. CALL AddItem(QUICKHOST,' Archive','ARC','A')
  166. CALL AddItem(QUICKHOST,' Info','INFO','I')
  167. CALL AddItem(QUICKHOST,' About','ABOUT')
  168. CALL AddItem(QUICKHOST,' Quit','CLOSEWINDOW','Q')
  169.  
  170. CALL AddMenu(QUICKHOST,'Movement            ')
  171. CALL AddItem(QUICKHOST,' Line Forward','LINE UP','.')
  172. CALL AddItem(QUICKHOST,' Line Back','LINE BACK',',')
  173. CALL AddItem(QUICKHOST,' Page Forward','PAGE UP','F')
  174. CALL AddItem(QUICKHOST,' Page Back','PAGE BACK','B')
  175. CALL AddItem(QUICKHOST,' Zip to Beg/End','PAGE ZIP','Z')
  176.  
  177. CALL AddMenu(QUICKHOST,'Commands      ')
  178. CALL AddItem(QUICKHOST,' Mode ...','CONTINUE')
  179. CALL AddSubItem(QUICKHOST,'   Notices','MODE 0','1',62)
  180. CALL AddSubItem(QUICKHOST,'   EMail','MODE 1','2',61)
  181. CALL AddSubItem(QUICKHOST,'   Messages','MODE 2','3',59)
  182. CALL AddSubItem(QUICKHOST,'   Conferences','MODE 3','4',55)
  183. CALL AddSubItem(QUICKHOST,'   FileList','MODE 4','5',47)
  184. CALL AddSubItem(QUICKHOST,'   Libraries','MODE 5','6',31)
  185. CALL AddItem(QUICKHOST,' Print','PRINT','[')
  186. CALL AddItem(QUICKHOST,' Search','SEARCH','S')
  187. IF mode=1 & level>sysoplevel THEN CALL AddItem(QUICKHOST,' User','USER','')
  188. IF mode<2 THEN
  189.   DO
  190.     CALL AddItem(QUICKHOST,' Delete','KILL','K')
  191.     CALL AddItem(QUICKHOST,' Save As','SAVEAS','S')
  192.   END
  193. IF mode<3 THEN
  194.   DO
  195.     CALL AddItem(QUICKHOST,' Previous','NEXT BACK','P')
  196.     CALL AddItem(QUICKHOST,' Next','NEXT FORWARD','N')
  197.   END
  198. IF mode=1 | mode=2 | mode=3 THEN
  199.     CALL AddItem(QUICKHOST,' Write','WRITE','W')
  200. IF mode=4 THEN
  201.   DO
  202.     CALL AddItem(QUICKHOST,' Download','DOWNLOAD','D')
  203.     IF level>=sysoplevel THEN
  204.       DO
  205.         CALL AddItem(QUICKHOST,' Kill','DELETE')
  206.         CALL AddItem(QUICKHOST,' Change','CHANGE')
  207.       END
  208.     IF WORDS(SHOWDIR(makepath(workdir,'EmailFiles')'/'name))>0 THEN
  209.       CALL AddItem(QUICKHOST,' EmailFiles','EFILES','E')
  210.   END
  211. IF mode=5 THEN CALL AddItem(QUICKHOST,' Upload','UPLOAD','U')
  212. CALL SetItem(QUICKHOST,2,0,mode,'ON')
  213.  
  214. CALL AddMenu(QUICKHOST,'Preferences     ')
  215. CALL AddItem(QUICKHOST,' Set ...','CONFIG SET','/')
  216. CALL AddItem(QUICKHOST,' Load ...','CONFIG LOAD','L')
  217. CALL AddItem(QUICKHOST,' Save ...','CONFIG SAVE',';')
  218. CALL AddItem(QUICKHOST,' Colors ...','COLORS','C')
  219.  
  220. IF mode<3 THEN
  221.   DO
  222.     CALL AddGadget(QUICKHOST,110,14,2,' Previous ','NEXT BACK')
  223.     CALL AddGadget(QUICKHOST,210,14,3,' Next ','NEXT FORWARD')
  224.   END
  225. IF mode=1 | mode=2 | mode=3 THEN
  226.   CALL AddGadget(QUICKHOST,20,14,1,' Write ','WRITE')
  227. IF mode=4 THEN
  228.   DO
  229.     CALL AddGadget(QUICKHOST,14,14,1,' Download ','DOWNLOAD')
  230.     IF level>=sysoplevel THEN
  231.       CALL AddGadget(QUICKHOST,108,14,2,' Kill ','DELETE')
  232.     IF WORDS(SHOWDIR(makepath(workdir,'EmailFiles')'/'name))>0 THEN
  233.       CALL AddGadget(QUICKHOST,170,14,3,' EmailFiles ','EFILES')
  234.   END
  235. IF mode=5 THEN CALL AddGadget(QUICKHOST,20,14,1,' Upload ','UPLOAD')
  236. CALL AddGadget(QUICKHOST,w.cols-130,14,4,' Page Forward ','PAGE UP')
  237. CALL AddGadget(QUICKHOST,w.cols-235,14,5,' Page Back ','PAGE BACK')
  238. CALL AddGadget(QUICKHOST,280,14,6,CENTER(modetext.mode,13),'NEW_MODE')
  239. CALL SetGadget(QUICKHOST,6,'ON')
  240. CALL tofront(QUICKHOST)
  241. CALL boxes()
  242. CALL SetAPen(QUICKHOST,3)
  243. CALL Flood(QUICKHOST,1,5,15)
  244. CALL read_QUICK()
  245. IF mode=0 | mode=2 THEN CALL do_marked()
  246.  
  247.  
  248.                              /* Wait Loop */
  249. LOOP:
  250. CALL SCREENTOFRONT(QUICKSCREEN)
  251. CALL SetAPen(QUICKHOST,1)
  252. DO FOREVER
  253.   t=waitpkt(QUICKPORT)
  254.   DO ff=1
  255.     p=GETPKT(QUICKPORT)
  256.     IF c2d(p)=0 THEN LEAVE ff
  257.     command=GETARG(p)
  258.     PARSE VAR command arg1' 'arg2' 'arg3' 'arg4
  259.     t=REPLY(p,0)
  260.     SELECT
  261.       WHEN arg1='F