home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a075 / 1.img / TOOLKIT1.EXE / SST87.PRG < prev    next >
Encoding:
Text File  |  1989-08-16  |  12.5 KB  |  391 lines

  1. **********************
  2.  
  3. FUNCTION Keystroke
  4.  
  5.    PARAMETERS _mode, _line, _col
  6.  
  7.    PRIVATE _key, _cliphelp, _merge, _read, _byts, _bff
  8.    PRIVATE _back, _search, _l2go, _c2go
  9.    PRIVATE _posit, _color, _tut, _ncolor
  10.    PRIVATE _pmt, _header
  11.  
  12.    PUBLIC _fhandle, _times
  13.  
  14.    _key = LASTKEY()
  15.  
  16.    IF TYPE("_cliphelp") = "U"    && For the Word-processor
  17.       _cliphelp = ""
  18.    ENDIF
  19.    IF TYPE("_merge") = "U"
  20.       _merge = .F.
  21.    ENDIF
  22.  
  23.    _addstr = ""
  24.  
  25.    IF _key = 96
  26.       _addstr = CHR(13) + CHR(10)
  27.       Readit()
  28.       RETURN(1)
  29.    ENDIF
  30.  
  31.    DO CASE
  32.    CASE _mode = 0
  33.       IF _col = 0   && Clear the line and column message areas
  34.          @ 22,07 SAY "           "
  35.          @ 22,25 SAY "           "
  36.          @ 22,50 SAY "           "
  37.       ENDIF
  38.       @ 22, 7 SAY TRANSFORM(_line, "@B")
  39.       @ 22,25 SAY TRANSFORM(_col, "@B")
  40.       IF TYPE("document") <> "U"
  41.          @ 22,50 SAY LTRIM(TRIM(STR(LEN(document))))
  42.       ENDIF
  43.       IF _key = 23 .OR. _key = 273  && the saving keys
  44.          @ 22,00 CLEAR
  45.          @ 22,00 SAY "Saving File...."
  46.          INKEY(1)
  47.          RID(22,00, "Saving file....")
  48.          SET_WORD()
  49.          RETURN(23)
  50.       ELSE
  51.          RETURN(0)
  52.       ENDIF
  53.    CASE _mode = 3
  54.       IF _key = 23 .OR. _key = 273 .OR. _key = 27
  55.          RETURN(0)
  56.       ELSE
  57.          SET_WORD()
  58.          RETURN(32)
  59.       ENDIF
  60.    OTHERWISE
  61.       DO CASE
  62.       CASE _key = 7
  63.          RETURN(7)
  64.       CASE _key = 23 .OR. _key = 273 .OR. _key = -9     && the saving keys
  65.          @ 22,00 CLEAR
  66.          @ 22,00 SAY "Saving File...."
  67.          INKEY(1)
  68.          RID(22,00, "Saving file....")
  69.          SET_WORD()
  70.          KEYBOARD "S"+CHR(5)+CHR(5)
  71.          RETURN(23)
  72.       CASE _key = 22                               && the insert key
  73.          INSERT_TOG(22,65)
  74.       CASE _key = 300
  75.          IF MEMORY(0) > 40
  76.             _ccolor = IF(TYPE("word_color") = "U", SETCOLOR(), word_color)
  77.             SETCOLOR("")
  78.             Pushscreen()
  79.             @ 0,0 CLEAR
  80.             @ 1,0 SAY "Enter 'EXIT' to Return to Program Control...."
  81.             RUN Command
  82.             Popscreen()
  83.             SETCOLOR(_ccolor)
  84.          ENDIF
  85.  
  86.       CASE _key = 20
  87.          RETURN(20)
  88.  
  89.       CASE _key = 2
  90.          RETURN(2)
  91.  
  92.       CASE _key = 27 .OR. _key = 301           && the escape key
  93.          DO CASE
  94.          CASE _mode = 2
  95.             dbrief_stat = 1
  96.             @ 22,00 CLEAR
  97.             @ 22,00 SAY "Buffer has not been saved! Exit? [ynw] "
  98.             DO WHILE DBRIEF(@dbrief_stat)
  99.             ENDDO
  100.             RID(22,00, "Buffer has not been saved! Exit? [ynw]    ")
  101.             SET_WORD()
  102.             DO CASE
  103.             CASE dbrief_stat = 1  && Exit Anyway
  104.                RETURN(27)
  105.             CASE dbrief_stat = 2  && No Exit
  106.                RETURN(32)
  107.             OTHERWISE
  108.                KEYBOARD CHR(27)
  109.                RETURN(23)
  110.             ENDCASE
  111.          CASE _mode = 1
  112.             @ 22,00 CLEAR
  113.             @ 22,00 SAY "Are you sure you want to exit? [yn] "
  114.             IF Prompt()
  115.                Rid(22,00, "Are you sure you want to exit? [yn]    ")
  116.                SET_WORD()
  117.                RETURN(27)
  118.             ELSE
  119.                Rid(22,00, "Are you sure you want to exit? [yn]    ")
  120.                SET_WORD()
  121.                RETURN(32)
  122.             ENDIF
  123.          ENDCASE
  124.       CASE _key = 291 .OR. _key = 28          && Alt-H Keystroke
  125.          _cccolor = SETCOLOR()
  126.          _ncolor = REVERSE(_cccolor)
  127.          SETCOLOR(_ncolor)
  128.          Wpush(2,5,17,75,3,.T.)
  129.          WSAYGET( 1, 3, "  ESC => Exits                ║       ALT E => Search/Replace")
  130.          WSAYGET( 2, 3, "   F1 => This Screen          ║       ALT Y => Delete Line")       
  131.          WSAYGET( 3, 3, "   F2 => Show Macros          ║       ALT Z => DOS Gateway")     
  132.          WSAYGET( 4, 3, "   F5 => Show Fields          ║       ALT P => Procedure Header")
  133.          WSAYGET( 5, 3, "  F10 => Saves File           ║       ALT U => Function Header")
  134.          WSAYGET( 6, 3, "ALT H => This Screen          ║        Home => Beginning of Line")
  135.          WSAYGET( 7, 3, "ALT M => Set Macro Keys       ║         End => End of Line")      
  136.          WSAYGET( 8, 3, "ALT R => Read in Another File ║   Ctrl PgUp => Top of File")
  137.          WSAYGET( 9, 3, "ALT S => Search for String    ║   Ctrl PgDn => End of File")
  138.          WSAYGET(10, 3, "ALT W => Saves File           ║ Ctrl RArrow => Right One Word")
  139.          WSAYGET(11, 3, "ALT X => Exits                ║ Ctrl LArrow => Left One Word")
  140.          WSAYGET(12, 3, "ALT F => File Header          ║      Ctrl B => Reform Paragraph")
  141.          @ 16,RIGHT_JUST("Press Any Key to Return to Edit", 75) SAY "Press Any Key to Return to Edit"
  142.          INKEY(0)
  143.          Wpop()
  144.          SETCOLOR(_cccolor)
  145.          RETURN(32)
  146.       CASE _key = 25 .OR. _key = 277
  147.          RETURN(25)
  148.       CASE _key = 281
  149.          KEYBOARD CHR(31) + "  *******************" + CHR(13) + CHR(10) + CHR(13) + CHR(10) + " PROCEDURE"
  150.  
  151.       CASE _key = 278
  152.          KEYBOARD CHR(31) + " *******************" + CHR(13) + CHR(10) + CHR(13) + CHR(10) + " FUNCTION"
  153.  
  154.       CASE _key = 289
  155.          _header = CHR(31) + "********************" + CHR(13) + CHR(10) + "* Name     " + CHR(13) + CHR(10) + "** Author   " + CHR(13) + CHR(10)
  156.          _header = _header + "** Notice   " + "Copyright (c) " + STR(YEAR(DATE())) + CHR(13) + CHR(10) + "** Date     " + DTOC(DATE()) + CHR(13) + CHR(10)
  157.          _header = _header + "** Compile  " + "Clipper " + CHR(13) + CHR(10) + "** Link     " + "Tlink       ,,,extend + clipper,," + CHR(59) + CHR(13) + CHR(10)
  158.          _header = _header + "** Note     "  + CHR(13) + CHR(10) + "**          "  + CHR(13) + CHR(10) + "**          "  + CHR(13) + CHR(10)
  159.          _header = _header + "********************" + CHR(13) + CHR(10)
  160.          SET TYPEAHEAD TO LEN(_header)
  161.          KEYBOARD _header
  162.  
  163.       CASE _key = 276 .AND. !EMPTY(_cliphelp)
  164.          _color = SETCOLOR()
  165.          _ncolor = REVERSE(_color)
  166.          WINDOWPUSH(2,5,20,75,"","","","","","",.T.)
  167.          _pmt = LTRIM(TRIM(STR(SHOWPROMPT(word_pmts))))
  168.          SETCOLOR(_ncolor)
  169.          IF VAL(_pmt) <> 0
  170.             IF FILE(_cliphelp + _pmt + ".DIC")
  171.                DECLARE _tut[DEC_ARRAY(_cliphelp + _pmt + ".DIC")]
  172.                IF RESTARRAY(_cliphelp + _pmt + ".DIC", _tut)
  173.                   APOP(2,5,18,70,_tut,.F.," " + LTRIM(TRIM(word_pmts[VAL(_pmt)])) + " " )
  174.                ENDIF
  175.             ENDIF
  176.          ENDIF
  177.          WINDOWPOP()
  178.          SETCOLOR(_color)
  179.          RETURN(32)
  180.       CASE _key = 2                     && Reformat the screen
  181.          RETURN(100)
  182.  
  183.       CASE _key = 287               && Search for text
  184.          _search = SPACE(125)
  185.          PUSHSCREEN(22,00,24,60)
  186.          @ 22,00 CLEAR
  187.          @ 23,02 SAY "Search for = " GET _search PICT "@X@S20"
  188.          READ
  189.          @ 23,00 CLEAR
  190.          @ 23,01 SAY "Searching..."
  191.          IF TYPE("document") <> "U"
  192.             _posit = AT(LTRIM(TRIM(_search)), document )
  193.             IF _posit = 0
  194.                @ 23,01 SAY "Text String NOT found!!!"
  195.                INKEY(1)
  196.             ELSE
  197.                _theinsert = READINSERT()
  198.                IF READINSERT()
  199.                   READINSERT(.F.)
  200.                ENDIF
  201.                SET TYPEAHEAD TO 16000
  202.                @ 23,01 SAY "Text String Found!"
  203.                _l2go = OCCURENCE(CHR(10), SUBSTR(document, 1, _posit))
  204.                _c2go = lEN(OCCUR_AT( CHR(10), SUBSTR(document, 1, _posit), _l2go))-2
  205.                _c2go = LEN( OCCUR_AT( CHR(10), SUBSTR(document, 1, _posit), _l2go))-2
  206.                IF _c2go > right_mar   && this is an adjustment
  207.                   _c2go = 0
  208.                ENDIF
  209.                KEYBOARD CHR(1) + REPLICATE(CHR(24), _l2go)  + REPLICATE(CHR(4), _c2go)
  210.                @ 22,00 CLEAR
  211.                READINSERT(_theinsert)
  212.             ENDIF
  213.          ENDIF
  214.          POPSCREEN(22,00,24,60)
  215.          SET_WORD()
  216.          RETURN(1)
  217.  
  218.       CASE _key = 274
  219.          _search = SPACE(125)
  220.          _repl = SPACE(125)
  221.          PUSHSCREEN(22,00,24,60)
  222.          @ 22,00 CLEAR
  223.          @ 23,02 SAY "Search for = " GET _search PICT "@X@S20"
  224.          READ
  225.          @ 23,00 CLEAR
  226.          @ 23,02 SAY "Replace With = " GET _repl PICT "@X@S20"
  227.          READ
  228.          @ 23,01 SAY "Searching..."
  229.          IF TYPE("document") <> "U"
  230.             _posit = AT(LTRIM(TRIM(_search)), document )
  231.             IF _posit = 0
  232.                @ 23,01 SAY "Text String NOT found!!!"
  233.                INKEY(1)
  234.             ELSE
  235.                _tfront = ""
  236.                _theinsert = READINSERT()
  237.                IF READINSERT()
  238.                   _tfront = CHR(22)
  239.                ENDIF
  240.                SET TYPEAHEAD TO 16000
  241.                @ 23,01 SAY "Text String Found!"
  242.                _l2go = OCCURENCE(CHR(10), SUBSTR(document, 1, _posit))
  243.                _c2go = lEN(OCCUR_AT( CHR(10), SUBSTR(document, 1, _posit), _l2go))-2
  244.                _c2go = LEN( OCCUR_AT( CHR(10), SUBSTR(document, 1, _posit), _l2go))-2
  245.                IF _c2go > right_mar   && this is an adjustment
  246.                   _c2go = 0
  247.                ENDIF
  248.                KEYBOARD _tfront + CHR(1) + REPLICATE(CHR(24), _l2go)  + REPLICATE(CHR(4), _c2go) + ;
  249.                         REPLICATE (CHR(7), LEN(LTRIM(TRIM(_search)))) + LTRIM(TRIM(_repl))
  250.                @ 22,00 CLEAR
  251.                READINSERT(_theinsert)
  252.             ENDIF
  253.          ENDIF
  254.          POPSCREEN(22,00,24,60)
  255.          SET_WORD()
  256.          RETURN(1)
  257.  
  258.       CASE _key = 275     && Read in a file!!
  259.          _search = SPACE(25)
  260.          _fhandle = 0
  261.          _times = 0
  262.          PUSHSCREEN(23,00,24,60)
  263.          @ 22,00 CLEAR
  264.          @ 23,01 SAY "Enter Name of File = " GET _search PICT "XXXXXXXXXXXXXXXXXXXXXXXXX" VALID TRY2OPEN(_search, @_fhandle)
  265.          READ
  266.          @ 22,00 CLEAR
  267.          @ 23,01 SAY "Loading File Into Buffer..."
  268.          IF TYPE("document") = "U" .OR. EMPTY(_search) .OR. LASTKEY() = 27
  269.             POPSCREEN(23,00,24,60)
  270.             SET_WORD()
  271.             RETURN(32)
  272.          ENDIF
  273.          IF FILESIZE(_search) > 10000
  274.             @ 23,00 CLEAR
  275.             @ 23,01 SAY "File TOO large to bring into system.  Any Key to Continue"
  276.             INKEY(0)
  277.             POPSCREEN(23,00,24,60)
  278.             SET_WORD()
  279.             RETURN(0)
  280.          ENDIF
  281.          SET TYPEAHEAD TO 1024
  282.          REWIND(_fhandle)   && reset the pointer position!
  283.          INSERT_TOG(22,65,.T.)
  284.          POPSCREEN(23,00,24,60)
  285.          SET_WORD()
  286.          Readit()
  287.          RETURN(1)
  288.  
  289.       OTHERWISE
  290.          @ 24,50 SAY "Key Undefined"
  291.          ?? _key
  292.          INKEY(.5)
  293.          @ 24,50 SAY "                         "
  294.       ENDCASE
  295.       RETURN(32)
  296.    ENDCASE
  297.    
  298. ********************
  299.  
  300. FUNCTION Dbrief
  301.  
  302.    PARAMETERS _tstat
  303.  
  304.    PRIVATE _dbkey
  305.  
  306.    _dbkey = INKEY(0)
  307.    IF CHR(_dbkey)$"YyNnWw"
  308.       DO CASE
  309.       CASE CHR(_dbkey)$"Yy"
  310.          _tstat = 1
  311.       CASE CHR(_dbkey)$"Nn"
  312.          _tstat = 2
  313.       OTHERWISE
  314.          _tstat = 3
  315.       ENDCASE
  316.       RETURN(.F.)
  317.    ENDIF
  318.    RETURN(.T.)
  319.  
  320. ********************
  321.  
  322. PROCEDURE Set_word
  323.  
  324.    @ 22,07 SAY "           "
  325.    @ 22,25 SAY "           "
  326.    @ 22,50 SAY "           "
  327.    @ 22,01 SAY "Line:"
  328.    @ 22,20 SAY "Col:"
  329.    INSERT_TOG(22,65)
  330.    @ 22, 7 SAY LTRIM(TRIM(STR(_line)))
  331.    @ 22,25 SAY LTRIM(TRIM(STR(_col)))
  332.    IF TYPE("document") <> "U"
  333.       @ 22,40 SAY "File SIze:"
  334.       @ 22,50 SAY LTRIM(TRIM(STR(LEN(document))))
  335.    ENDIF
  336.  
  337. ********************
  338.  
  339. PROCEDURE Readit
  340.  
  341.    _byts = 1
  342.    _bff = SPACE(1)
  343.    _back = ""
  344.    _byts = FREAD(_fhandle, @_bff, 1)
  345.    _bff = STRTRAN(STRTRAN(LTRIM(TRIM(_bff)), CHR(252), CHR(13)), CHR(251), CHR(13))
  346.    _back = _back + STRTRAN(STRTRAN(_bff, CHR(219), ""), CHR(13), CHR(13)+CHR(10)) + CHR(96)
  347.  
  348.    * may have to skip the next character
  349.  
  350.    _bff = SPACE(1)
  351.    _times = _times + 1
  352.  
  353.    IF _times > 1
  354.       _back = CHR(8) + CHR(13) + CHR(10) + _back
  355.    ENDIF
  356.  
  357.    IF FEOF(_fhandle)
  358.       FCLOSE(_fhandle)
  359.    ENDIF
  360.  
  361.    KEYBOARD _back
  362.  
  363. ********************
  364.  
  365. FUNCTION Showprompt
  366.  
  367.    PARAMETER show_array
  368.  
  369.    PRIVATE _kount, _srow, _scol, _pchoice
  370.  
  371.    PUSHSCREEN(3,10,15,70)
  372.    @ 4,12 SAY "Pick the Topic... / ESC to Exit"
  373.    _kount = 1
  374.    _srow = 6
  375.    _scol = 15
  376.    _pchoice = 1
  377.    FOR _kount = 1 TO LEN(show_array)
  378.       @ _srow, _scol PROMPT " " + show_array[_kount] + " "
  379.       _srow = _srow + 1
  380.       IF _srow >= 15
  381.          _scol = _scol + 14
  382.          _srow = 6
  383.       ENDIF
  384.    NEXT
  385.    MENU TO _pchoice
  386.    POPSCREEN(3,10,15,70)
  387.    RETURN(_pchoice)
  388.  
  389. * End of File
  390.  
  391.