home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / GFX / Raytracing / Raytracer / LW5VT09.LHA / Toaster / Arexx_examples / PlugIns / ReadText.lwm < prev    next >
Encoding:
Text File  |  1996-06-10  |  10.7 KB  |  310 lines

  1. /* CMD: ½ReadText                                                       */
  2. /* By Brett Evan Hester      13032 Copenhill Rd. Dallas, Tx. 75240-5302 */
  3.     MacrosName = "ReadText"
  4. /* Macro Type:                                                          */
  5. /* INFORMATION * TEXT      * REMEMBERS                                  */
  6. /* Description:                                                         */
  7.  
  8. Info1A = "!Read Text ©                   Information 1 of 2"
  9. Info1B = ""
  10. Info1C = "@This macro allows for the reading of text files."
  11. Info1D = "@It was initally and still is meant for viewing  "
  12. Info1E = "@macros or ARexx scripts.                        "
  13. Info1F = ""
  14. Info1G = "þ If there is less than 21 lines only one option"
  15. Info1H = "  will be available and that is the INFO window."
  16. Info1I = "þ If there is more than one page, another button"
  17. Info1J = "  will appear for advancing to the NEXT PAGE.   "
  18. Info1K = "þ When the NEXT PAGE option is chosen a PREVIOUS"
  19. Info1L = "  PAGE option will appear.                      "
  20. Info1M = "@NOTE: Lines longer than will 80 characters      "
  21. Info1N = "@will be truncated to fit.                       "
  22.  
  23. Info2A = "!Read Text ©                   Information 2 of 2"
  24. Info2B = "@               Plug-Ins and Go! ©               "
  25. Info2C = "                           Hester and associates"
  26. Info2D = "                           13032 Copenhill Road "
  27. Info2E = "                           Dallas, Texas 75240  "
  28. Info2F = "@Special Thanks to:                              "
  29. Info2G = "Arnie Cachelin  Henry Ribron    Mark J. Holland "
  30. Info2H = "J. Phil Kelso   Terry Wester    Steven K. Simms "
  31. Info2I = "Kevin DeRita    Greg Glaser     William S. Hawes"
  32. Info2J = "NewTek ©        Commodore ©     INOVAtronics ©  "
  33. Info2K = ""
  34. Info2L = "@This macro represents a lot of time & hard work."
  35. Info2M = "@Encourage people to create new ones and not kill"
  36. Info2N = "@that possibility by stealing those that are out."
  37.  
  38. /* -------------------------------------------------------------------- */
  39.                                      /* Start Error Detection (See End) */
  40. SIGNAL ON ERROR
  41. SIGNAL ON SYNTAX
  42.                                                    /* Address LightWave */
  43. VT3DLib = ADDLIB("LWModelerARexx.port",0)
  44. ADDRESS "LWModelerARexx.port"
  45.  
  46. /* -------------------------------------------------------------------- */
  47.                                     /* Reading Global Macro Preferences */
  48. BEHDefaultFilePath = "Sys:"
  49. BEHSettingsSavedTo = "T:"
  50. BEHSpeechAndSound = "1"
  51.  
  52. IF (EXISTS("S:PlugInPrefs")) THEN DO
  53.     IF (~OPEN(PlugInPrefs, "S:PlugInPrefs", 'R')) THEN BREAK
  54.     IF (READLN(PlugInPrefs) ~= "PlugInPrefs") THEN BREAK
  55.     BEHDefaultFilePath = READLN(PlugInPrefs)
  56.     BEHSettingsSavedTo = READLN(PlugInPrefs)
  57.     BEHSpeechAndSound = READLN(PlugInPrefs)
  58.     CALL CLOSE(PlugInPrefs)
  59. END
  60.  
  61. /* -------------------------------------------------------------------- */
  62.                                                   /* Recalling Settings */
  63. FilePath = BEHDefaultFilePath
  64. FileName = ""
  65.  
  66. PrefsFileName = BEHSettingsSavedTo||MacrosName||".PLUG"
  67. IF (EXISTS(PrefsFileName)) THEN DO
  68.     IF (~OPEN(PrefsFile, PrefsFileName, 'R')) THEN BREAK
  69.     IF (READLN(PrefsFile) ~= MacrosName) THEN BREAK
  70.  
  71.     FilePath = READLN(PrefsFile)
  72.     FileName = READLN(PrefsFile)
  73.  
  74.     CALL CLOSE(PrefsFile)
  75. END
  76.  
  77. /* ******************************************************************** */
  78.                                                    /* Main Body Of Code */
  79. CALL FileRequester
  80. CALL SaveSettings
  81. CALL ReadFile
  82.  
  83. ReqInfo = 3
  84.  
  85. DO FOREVER
  86.     CALL OptionsAvailable
  87.     CALL BlankingLines
  88.     CALL MenuRequester
  89. END
  90.  
  91. /* ******************************************************************** */
  92.                                                       /* File Requester */
  93. FileRequester:
  94.  
  95.     FileReq = GetFileName("-- Load File --", FilePath, FileName)
  96.     IF FileReq = "(none)" THEN CALL Exiting
  97.  
  98.     CALL ExtractName
  99.     CALL VerifyFile
  100.  
  101. RETURN
  102.  
  103. /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
  104.                                                /* Extract Name and Path */
  105. ExtractName:
  106.  
  107.     FileReqLength = LENGTH(FileReq)
  108.     FileDivider = LASTPOS("/",FileReq)
  109.     IF FileDivider = 0 THEN FileDivider = LASTPOS(":",FileReq)
  110.     FileNameLength = FileReqLength - FileDivider
  111.  
  112.     FilePath = STRIP(LEFT(FileReq, FileDivider),"T","/")
  113.     FileName = RIGHT(FileReq, FileNameLength)
  114.  
  115. RETURN
  116.  
  117. /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
  118.                                                          /* Verify File */
  119. VerifyFile:
  120.  
  121.     IF EXISTS(FileReq) = 0 THEN DO
  122.         CALL Notify(1,"!Sorry!",'@File "'||FileReq||'" not found.')
  123.         CALL FileRequester
  124.     END
  125.  
  126.     IF OPEN(ReadMeFile, FileReq, 'R') = 0 THEN DO
  127.         CALL Notify(1,"!Sorry!",'@Unable to load "'||FileReq||'"')
  128.         CALL FileRequester
  129.     END
  130.  
  131. RETURN
  132.  
  133. /* -------------------------------------------------------------------- */
  134.                                                   /* Recording Settings */
  135. SaveSettings:
  136.  
  137.     IF (OPEN(PrefsFile, PrefsFileName, 'W')) THEN DO
  138.         CALL WRITELN(PrefsFile, MacrosName)
  139.  
  140.         CALL WRITELN(PrefsFile, FilePath)
  141.         CALL WRITELN(PrefsFile, FileName)
  142.  
  143.         CALL CLOSE(PrefsFile)
  144.     END
  145.  
  146. RETURN
  147.  
  148. /* -------------------------------------------------------------------- */
  149.                                                         /* Reading File */
  150. ReadFile:
  151.  
  152.     TotalLines = 0 ; Lines = 0 ; Pages = 1
  153.  
  154.     DO i=1 UNTIL EOF(ReadMeFile)
  155.         TotalLines = TotalLines + 1
  156.         Lines = Lines + 1
  157.         IF Lines = 21 THEN DO
  158.             Lines = 1
  159.             Pages = Pages + 1
  160.         END
  161.         BEH.Pages.Lines = LEFT(READLN(ReadMeFile),80)
  162.     END
  163.     CALL CLOSE(ReadMeFile)
  164.  
  165.     Page = 1
  166.  
  167. /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
  168.                              /* Setting up informational footer on menu */
  169.     NameLength = LENGTH(FileName)
  170.     NumbLength = LENGTH(Pages)
  171.     BlankLength = 80 - NameLength - (NumbLength * 2) - 8
  172.     BlankSpace = LEFT("", BlankLength)
  173.  
  174. RETURN
  175.  
  176. /* -------------------------------------------------------------------- */
  177.                        /* Figuring out what buttons should be available */
  178. OptionsAvailable:
  179.  
  180.     IF Page = Pages THEN DO
  181.         IF Page = 1 THEN Menu = 1                         /* --- Info --- */
  182.         IF Page > 1 THEN Menu = 4                         /* <<< Info --- */
  183.     END
  184.     IF Page < Pages THEN DO
  185.         IF Page = 1 THEN Menu = 2                         /* --- Info >>> */
  186.         IF Page > 1 THEN Menu = 3                         /* <<< Info >>> */
  187.     END
  188.  
  189. RETURN
  190.  
  191. /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
  192.                                   /* Blanking lines after end of file.  */
  193. BlankingLines:
  194.  
  195.     DO X=1 TO 20
  196.         CurrentLine = (Page * 20) - (20 - X)
  197.         IF CurrentLine > TotalLines THEN BEH.Page.X = ""
  198.     END
  199.  
  200. RETURN
  201.  
  202. /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
  203.                                                       /* User Interface */
  204. MenuRequester:
  205.  
  206.     CALL Req_Begin("Read Text ©                                                    by Brett Hester")
  207.  
  208.     CALL Req_AddControl("",'T',BEH.Page.1,BEH.Page.2,BEH.Page.3,BEH.Page.4,BEH.Page.5,BEH.Page.6,BEH.Page.7,BEH.Page.8,BEH.Page.9,BEH.Page.10)
  209.     CALL Req_AddControl("",'T',BEH.Page.11,BEH.Page.12,BEH.Page.13,BEH.Page.14,BEH.Page.15,BEH.Page.16,BEH.Page.17,BEH.Page.18,BEH.Page.19,BEH.Page.20)
  210.  
  211.     IF Menu = 1 THEN ReqA = Req_AddControl("",'CH',"                               þ Information                               ")
  212.     IF Menu = 2 THEN ReqA = Req_AddControl("",'CH',"                               þ Information                  Next Page · ")
  213.     IF Menu = 3 THEN ReqA = Req_AddControl("",'CH'," ¾ Previous Page              þ Information                  Next Page · ")
  214.     IF Menu = 4 THEN ReqA = Req_AddControl("",'CH'," ¾ Previous Page              þ Information                               ")
  215.  
  216.     Footer = "File:"||FileName||BlankSpace||Page||" / "||Pages
  217.     CALL Req_AddControl("",'T',Footer)
  218.  
  219.     IF Menu = 1 THEN CALL Req_SetVal(ReqA,1)             /* --- Info --- */
  220.     IF Menu = 2 THEN CALL Req_SetVal(ReqA,2)             /* --- Info >>> */
  221.     IF Menu = 3 THEN DO                                  /* <<< Info >>> */
  222.         IF ReqInfo = 1 THEN CALL Req_SetVal(ReqA,1)
  223.         IF ReqInfo = 2 THEN CALL Req_SetVal(ReqA,2)
  224.         IF ReqInfo = 3 THEN CALL Req_SetVal(ReqA,3)
  225.     END
  226.     IF Menu = 4 THEN CALL Req_SetVal(ReqA,1)             /* <<< Info --- */
  227.  
  228.     OKorCancel = Req_Post() ; IF OKorCancel = 0 THEN CALL Exiting
  229.  
  230.     ReqInfo = Req_GetVal(ReqA)
  231.  
  232.     CALL Req_End()
  233.  
  234.     IF Menu = 1 THEN DO                                  /* --- Info --- */
  235.         IF ReqInfo = 1 THEN CALL InformationWindows
  236.     END
  237.     IF Menu = 2 THEN DO                                  /* --- Info >>> */
  238.         IF ReqInfo = 1 THEN CALL InformationWindows
  239.         IF ReqInfo = 2 THEN DO
  240.             ReqInfo = 3 ; Page = Page + 1
  241.         END
  242.     END
  243.     IF Menu = 3 THEN DO                                  /* <<< Info >>> */
  244.         IF ReqInfo = 1 THEN Page = Page - 1
  245.         IF ReqInfo = 2 THEN CALL InformationWindows
  246.         IF ReqInfo = 3 THEN Page = Page + 1
  247.     END
  248.     IF Menu = 4 THEN DO                                  /* <<< Info --- */
  249.         IF ReqInfo = 1 THEN Page = Page - 1
  250.         IF ReqInfo = 2 THEN CALL InformationWindows
  251.     END
  252.  
  253. RETURN
  254.  
  255. /* -------------------------------------------------------------------- */
  256.                                                               /* Ending */
  257. Exiting:
  258.  
  259.     IF (VT3DLib) THEN CALL REMLIB("LWModelerARexx.port")
  260.     EXIT
  261.  
  262. RETURN
  263.  
  264. /* -------------------------------------------------------------------- */
  265.                                                  /* Information Windows */
  266. InformationWindows:
  267.  
  268.     OKorCancel = Notify(2, Info1A, Info1B, Info1C, Info1D, Info1E, Info1F, Info1G, Info1H, Info1I, Info1J, Info1K, Info1L, Info1M, Info1N)
  269.     IF OKorCancel = 1 THEN CALL Notify(1, Info2A, Info2B, Info2C, Info2D, Info2E, Info2F, Info2G, Info2H, Info2I, Info2J, Info2K, Info2L, Info2M, Info2N)
  270.  
  271. RETURN
  272.  
  273. /* -------------------------------------------------------------------- */
  274.                                                       /* Error Handling */
  275. SYNTAX:
  276. ERROR:
  277.  
  278.     ErrCode = RC
  279.     ErrLine = SIGL
  280.     ErrInfo = ERRORTEXT(ErrCode)
  281.  
  282.     Err1 = "!Sorry!"
  283.     Err2 = "An Error has been detected"
  284.     Err3 = "@þ Macro -            "
  285.     Err4 = "@þ Line Number -      "
  286.     Err5 = "@þ Error Code -       "
  287.     Err6 = "@þ Error Description -"
  288.     Err7 = "@¤ Please Inform -    "
  289.     Err8 = '  "Error Notice"     '
  290.     Err9 = "  13032 Copenhill Rd."
  291.     Err10 = "  Dallas, TX. 75240  "
  292.  
  293.     Call Notify(1,Err1,Err2,Err3,MacrosName,Err4,ErrLine,Err5,ErrCode,Err6,ErrInfo,Err7,Err8,Err9,Err10)
  294.  
  295. /* -------------------------------------------------------------------- */
  296.                                              /* Advanced Error Handling */
  297.     CALL SETCLIP("ErrorMacro",MacrosName)
  298.     CALL SETCLIP("ErrorLine",ErrLine)
  299.     CALL SETCLIP("ErrorCode",ErrCode)
  300.     CALL SETCLIP("ErrorDesc",ErrInfo)
  301.  
  302.     PARSE SOURCE TempA TempB ErrFile TempC TempD TempE
  303.  
  304.     CALL SETCLIP("ErrorFile",ErrFile)
  305.  
  306. /* -------------------------------------------------------------------- */
  307.  
  308.     IF (VT3DLib) THEN CALL REMLIB("LWModelerARexx.port")
  309.     EXIT
  310.