home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d6xx / d645 / dmd.lha / DMD / REXX / SpellChecker.dme < prev    next >
Text File  |  1992-04-26  |  4KB  |  155 lines

  1. /* SpellChecker.dme © 1992 Fergus Duniho */
  2. /* DME interface for SpellCheck */
  3.  
  4. D = GetClip('Dictionary')
  5. If D='' Then D = GetFile(,,'DF1:','Dictionary','Select Dictionary')
  6. Call SetClip 'Dictionary', D
  7.  
  8. 'title `Spell Checking ...'
  9. C = "C:SpellCheck >T:B1" D "T:TEXT"
  10. Address Command C
  11.  
  12. Call Open 'List', 'T:B1', 'R'
  13. W.=''; L.=0; X=0
  14. Do Until EOF('List')
  15.     X = X + 1
  16.     W.X = Readln('List')
  17.     L = Readln('List')
  18.     L.X = Value('L')
  19. End
  20. X = X - 1
  21. Call Close 'List'
  22. If X = 0 Then Do
  23.     Call textreq("No words are misspelled.")
  24.     Exit
  25. End
  26.  
  27. /* Requester */
  28.  
  29. 'ignorecase on'
  30. top
  31. insline
  32. TRUE = (A = A); FALSE = ~(A = A); YES.TRUE = 'Yes'; YES.FALSE = 'No '
  33. A. = FALSE; X=X-1; Y=1; Z=0; O=0; G=''; NW=''; NL=d2c(10)
  34. Call Open 'Dict', D
  35.  
  36. Address AREXX '"Call CreateHost CPORT, NOTPORT"'
  37. Do Until ShowList(P,CPORT)
  38.     Call Delay(10)
  39. End
  40.  
  41. IDCMP = 'WINDOWDRAG+GADGETUP+CLOSEWINDOW'
  42. FLAGS = 'ACTIVATE+WINDOWDRAG+WINDOWCLOSE'
  43.  
  44. Call OpenWindow CPORT, 50, 25, 500, 90, IDCMP, FLAGS, 'SpellCheck Evaluation V1.00  © 1992 Fergus Duniho'
  45. Call SetReqColor CPORT, OKAYPEN, 1
  46. Call Move CPORT, 10, 20
  47. Call Text CPORT, "Word    :" W.Y
  48. Call Move CPORT, 400, 20
  49. Call Text CPORT, "Add : No"
  50. Call Move CPORT, 10, 30
  51. Call Text CPORT, "Guess   :"
  52. Call Move CPORT, 10, 44
  53. Call Text CPORT, "Replace :"
  54. Call AddGadget CPORT, 90, 36, 'newword', NW, 'NW = "(%g)"', 310
  55. Call AddGadget CPORT, 10, 54, 'skip', ' Skip ', 'Call Skip(1)'
  56. Call AddGadget CPORT, 75, 54, 'back', ' Back ', 'Call Skip(-1)'
  57. Call AddGadget CPORT, 140, 54, 'keep',' Keep ', 'Call FindW'
  58. Call AddGadget CPORT, 205, 54, 'add', ' Add ', 'If ~A.Y Then Z=Z+1; A.Y=TRUE; Call Skip(1)'
  59. Call AddGadget CPORT, 260, 54, 'unadd', ' Unadd ', 'If A.Y Then Z=Z-1; A.Y=FALSE; Call Skip(1)'
  60. Call AddGadget CPORT, 332, 54, 'addall', ' Add All ', 'A. = TRUE; Z=1; Call Done'
  61. Call AddGadget CPORT, 420, 54, 'done', ' Done ', 'Call Done'
  62. Call AddGadget CPORT, 10, 72, 'guess', ' Guess ', 'Call Seek "Dict", L.Y, "B"; Call Guess'
  63. Call AddGadget CPORT, 85, 72, 'forward', ' Forward ', 'Call Guess'
  64. Call AddGadget CPORT, 175, 72, 'backward', ' Backward ', 'Call Backward'
  65. Call AddGadget CPORT, 275, 72, 'replace', ' Replace ', 'Call Replace'
  66. Call AddGadget CPORT, 365, 72, 'repall', ' Replace All ', 'Call RepAll'
  67. Call ModifyHost CPORT, CLOSEWINDOW, 'Z=0; Call Done'
  68. Call FindW
  69.  
  70. Call OpenPort MAINPORT
  71. Do Until ShowList(P, MAINPORT)
  72.     Call Delay(10)
  73. End
  74.  
  75. Call SetNotify(CPORT, GADGETUP, MAINPORT)
  76. Call SetNotify(CPORT, CLOSEWINDOW, MAINPORT)
  77.  
  78. Do Forever
  79.     Call WaitPkt(MAINPORT)
  80.     PACKET = GetPkt(MAINPORT)
  81.     If PACKET ~== Null() Then Interpret GetArg(packet, 0)
  82. End
  83.  
  84. Skip:
  85.     Arg I
  86.     Call Move CPORT, 90, 20
  87.     Call Text CPORT, Copies(' ',Length(W.Y))
  88.     Y=Y+I
  89.     If Y=0 Then Y=X-1
  90.     If Y=X Then Y=1
  91.     top
  92.     Call FindW
  93.     Call AddGadget CPORT, 90, 36, 'newword', NW, 'NW = "(%g)"', 310
  94.     Call ActivateGadget CPORT, 'newword'
  95.     Call Move CPORT, 90, 20
  96.     Call Text CPORT, W.Y
  97.     Call Move CPORT, 448, 20
  98.     Q = A.Y
  99.     Call Text CPORT, YES.Q
  100. Return
  101.  
  102. FindW:
  103.     unblock
  104.     find W.Y
  105.     block
  106.     block
  107. Return
  108.  
  109. Replace:
  110.     wleft
  111.     findr W.Y NW
  112.     Call FindW
  113. Return
  114.  
  115. Repall:
  116.     wleft
  117.     C = "repeat -1 (findr" W.Y NW || ")"
  118.     C
  119.     Call Skip 1
  120. Return
  121.  
  122. Backward:
  123.     Call Seek 'Dict', -(Length(G)+2), 'C'
  124.     Do Until Readch('Dict')=NL
  125.         Call Seek 'Dict', -2, 'C'
  126.     End
  127.     Call Guess
  128. Return
  129.  
  130. Guess:
  131.     Call Move CPORT, 90, 30
  132.     Call Text CPORT, Copies(' ', Length(G))
  133.     G = Readln('Dict')
  134.     Call Move CPORT, 90, 30
  135.     Call Text CPORT, G
  136. Return
  137.  
  138. Done:
  139.     top
  140.     unblock
  141.     deline
  142.     Call Close 'Dict'
  143.     If Z>0 Then Do
  144.         'title `Adding New Words ...'
  145.         N = D'.new'
  146.         If Exists(N) Then Call Open 'New', N, 'A'
  147.                      Else Call Open 'New', N, 'W'
  148.         Do Y = 1 to X-1
  149.             If A.Y Then Call Writeln 'New', W.Y
  150.         End
  151.         Call Close 'New'
  152.     End
  153.     Call Quit CPORT
  154. Exit
  155.