home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / c / chkprn2.zip / VIEW_.CLA < prev   
Text File  |  1992-01-31  |  8KB  |  285 lines

  1.          MEMBER                 !DPP_NO_OPEN
  2. !==============================================================================
  3. !                 View Procedure
  4. !==============================================================================
  5.  
  6. View_         PROCEDURE(Filename_)
  7. Filename_      EXTERNAL
  8.  
  9.          INCLUDE('VIEW_.CPY')
  10.  
  11. Screen         SCREEN      WINDOW(25,80),AT(1,1),PRE(Scr),HUE(7,1)
  12.            ROW(1,1)      PAINT(1,80),HUE(0,7)
  13.            ROW(25,1)  PAINT(1,80),HUE(0,7)
  14.          COL(18)  STRING('│<0{15}>│<0{18}>│')
  15.          COL(55)  STRING('<27,18,26>'),REV,ENH
  16.          COL(2)      STRING('Rows:')
  17.          COL(19)  STRING('Columns:')
  18.          COL(35)  STRING('Marked:')
  19.          COL(58)  STRING('-Move')
  20.          COL(64)  STRING('Esc'),REV,ENH
  21.          COL(67)  STRING('-Exit')
  22.          COL(73)  STRING('F1'),REV,ENH
  23.          COL(75)  STRING('-Help')
  24. Message           ROW(1,2)      STRING(78)
  25. Rows           ROW(25,7)  STRING(11)
  26. Cols         COL(27)  STRING(7)
  27. Marked         COL(42)  STRING(11)
  28.          .
  29.  
  30.          GROUP,PRE(T_)
  31. TopPtr           LONG
  32. LeftPtr           LONG
  33. FirstRow       BYTE
  34. FirstCol       BYTE
  35. PrintTop       LONG
  36. PrintBottom    LONG
  37. NLines           LONG
  38. FoundEnd       SHORT
  39. Line           STRING(81)
  40. Search           STRING(eSearchSize)
  41. DateClock      BYTE
  42. TimeClock      BYTE
  43. PathClock      BYTE
  44. MemClock       BYTE
  45. SaveDevice_    STRING(SIZE(Mem:Device))
  46. Dest_           BYTE
  47. Copies_           SHORT
  48.          .
  49.  
  50. eViewingNow  EQUATE(1)
  51.  
  52.          EJECT
  53. !==============================================================================
  54. !                  Code Section
  55. !==============================================================================
  56.  
  57.   CODE
  58.  
  59.   T_:DateClock     = sDateClock;    sDateClock = False
  60.   T_:TimeClock     = sTimeClock;    sTimeClock = False
  61.   T_:PathClock     = sPathClock;    sPathClock = False
  62.   T_:MemClock     = sMemClock;    sMemClock  = False
  63.   T_:SaveDevice_ = Mem:Device
  64.   OPEN(Screen)
  65.   ViewOpen__(Filename_)
  66.   IF ERROR()
  67.     PauseMsg_('Cannot open '&CLIP(Filename_)&', Error: '&ERROR(),,eBeepOn,20)
  68.     DO Quit
  69.   .
  70.  
  71.   T_:TopPtr     = -1;    TopPtr#     = 1;
  72.   T_:LeftPtr     = -1;    LeftPtr# = 1;
  73.   T_:FirstRow     = 1
  74.   T_:FirstCol     = 1
  75.   T_:PrintTop     = 0
  76.   T_:PrintBottom = 0
  77.   T_:NLines     = 0
  78.   T_:FoundEnd     = False
  79.   Mem:Message     = ''
  80.  
  81.   LOOP                         !Loop
  82.     DO Show
  83.  
  84.     ALIAS(F1_Key,eHelp_Key)
  85.     ASK                         !  Get a keystroke
  86.     ALIAS(F1_Key,F1_Key)
  87.  
  88.     IF KEYCODE()=Esc_Key OR KEYCODE()=Reject_Key
  89.       BREAK
  90.     ELSIF KEYCODE()=eHelp_Key
  91.       ViewHelp_()
  92.     ELSE
  93.       DO ViewKeys_
  94.   . .
  95.   DO Quit
  96.  
  97. Quit ROUTINE
  98.   ViewClose__()
  99.   Mem:Device = T_:SaveDevice_
  100.   sDateClock = T_:DateClock
  101.   sTimeClock = T_:TimeClock
  102.   sPathClock = T_:PathClock
  103.   sMemClock  = T_:MemClock
  104.   RETURN
  105.  
  106. Show ROUTINE
  107.   ViewShow_(T_:TopPtr,TopPtr#,T_:LeftPtr,LeftPtr#,T_:Line, |
  108.       T_:FirstRow,T_:FirstCol,T_:NLines,T_:FoundEnd)
  109. ! IF NOT KEYCODE()
  110.     Scr:Message = Mem:Message             !  Display message on screen
  111.     Scr:Rows    = T_:TopPtr &'-'& T_:TopPtr+eScrHeight-(T_:FirstRow-1)-1
  112.     Scr:Cols    = T_:LeftPtr &'-'& T_:LeftPtr+eScrWidth-(T_:FirstCol-1)-1
  113.     IF T_:PrintTop
  114.       IF T_:PrintBottom
  115.     Scr:Marked = T_:PrintTop & '-' & T_:PrintBottom
  116.       ELSE
  117.     Scr:Marked = T_:PrintTop & '-END'
  118.       .
  119.     ELSE
  120.       IF T_:PrintBottom
  121.     Scr:Marked = 'TOP-' & T_:PrintBottom
  122.       ELSE
  123.     Scr:Marked = 'ALL'
  124.     . .
  125. ! .
  126.   Mem:Message = ''
  127.  
  128.   EJECT
  129. !==============================================================================
  130. !                 ViewKeys_ Routine
  131. !==============================================================================
  132.  
  133. ViewKeys_ ROUTINE
  134.  
  135.   KeyCode# = KEYCODE()                 !  Save keycode
  136.   CASE KeyCode#                     !  Depending on key pressed
  137.  
  138.   INCLUDE('VIEWKEY.CPY')
  139.  
  140.   OF Up_Key                     !  If Up key
  141.     IF T_:TopPtr > 1 THEN TopPtr# -= 1.
  142.  
  143.   OF Down_Key                     !  If Down key
  144.     IF T_:FoundEnd
  145.       IF T_:TopPtr + eScrHeight =< T_:NLines
  146.     L# = ViewRead__(T_:TopPtr+eScrHeight,T_:Line,T_:LeftPtr+T_:FirstCol-1, |
  147.          eScrWidth-(T_:FirstCol-1),T_:NLines,T_:FoundEnd)
  148.     TopPtr# += 1
  149.       .
  150.     ELSE
  151.       IF ViewRead__(T_:TopPtr+eScrHeight,T_:Line,T_:LeftPtr+T_:FirstCol-1, |
  152.          eScrWidth-(T_:FirstCol-1),T_:NLines,T_:FoundEnd)
  153.     TopPtr# += 1
  154.     . .
  155.  
  156.   OF PgUp_Key                     !  If PgUp key
  157.     TopPtr# -= eScrHeight - (T_:FirstRow-1)
  158.     IF TopPtr# < 1 THEN TopPtr# = 1.
  159.  
  160.   OF PgDn_Key                     !  If PgDn key
  161.     IF T_:FoundEnd
  162.       TopPtr# += eScrHeight - (T_:FirstRow-1)
  163.       IF TopPtr# + eScrHeight-(T_:FirstRow-1) - 1 > T_:NLines
  164.     TopPtr# = T_:NLines - eScrHeight + (T_:FirstRow-1) + 1
  165.     IF TopPtr# < 1 THEN TopPtr# = 1.
  166.       .
  167.     ELSE
  168.       IF ViewRead__(T_:TopPtr+eScrHeight+(eScrHeight-(T_:FirstRow-1))-1,T_:Line, |
  169.       T_:LeftPtr+T_:FirstCol-1,eScrWidth-(T_:FirstCol-1),T_:NLines,T_:FoundEnd)
  170.     TopPtr# += eScrHeight - (T_:FirstRow-1)
  171.       ELSE
  172.     TopPtr# = T_:NLines - eScrHeight-(T_:FirstRow-1) + 1
  173.     IF TopPtr# < 1 THEN TopPtr# = 1.
  174.     . .
  175.  
  176.   OF Ctrl_PgUp                     !  If ^PgUp
  177.     TopPtr# = 1
  178.  
  179.   OF Ctrl_PgDn                     !  If ^PgDn
  180.     IF NOT T_:FoundEnd
  181.       OPEN(MessageScrn_)
  182.       SetMessage_(ViewMsg_(eReading),,,16)
  183.       L# = ViewRead__(eBigNumber,T_:Line,T_:LeftPtr+T_:FirstCol-1, |
  184.            eScrWidth-(T_:FirstCol-1),T_:NLines,T_:FoundEnd)
  185.       CLOSE(MessageScrn_)
  186.     .
  187.     TopPtr# = T_:NLines - eScrHeight-(T_:FirstRow-1) + 1
  188.     IF TopPtr# < 1 THEN TopPtr# = 1.
  189.  
  190.   OF Home_Key                     !  If Home key
  191.     LeftPtr# = 1
  192.  
  193.   OF End_Key                     !  If End key
  194.     L# = ViewLen__(T_:TopPtr,eScrHeight-(T_:FirstRow-1),  |
  195.     T_:NLines,T_:FoundEnd)
  196.     LeftPtr# = L#-(eScrWidth-eHorzMove+L#%10-1)
  197.     IF LeftPtr# < 1 THEN LeftPtr# = 1.         !    If all lines are short
  198.  
  199.   OF Right_Key                     !  If Right key
  200.     LeftPtr# += eHorzMove
  201.  
  202.   OF Left_Key                     !  If Left key
  203.     IF LeftPtr# > 1 THEN LeftPtr# -= 10.     !    If not already at left
  204.  
  205.   OF VAL('S') OROF VAL('s') OROF Ctrl_S OROF Alt_S
  206.     TopPtr# = ViewSearch_(T_:Search,T_:TopPtr,T_:NLines,T_:FoundEnd)
  207.     IF TopPtr#
  208.       Mem:Message = ViewMsg_(eFound)
  209.     ELSE
  210.       Mem:Message = ViewMsg_(eNotFound)
  211.       TopPtr# = T_:TopPtr
  212.     .
  213.  
  214.   OF VAL('A') OROF VAL('a') OROF Ctrl_A OROF Alt_A
  215.     IF T_:Search
  216.       TopPtr# = ViewSearchA_(T_:Search,T_:TopPtr,T_:NLines,T_:FoundEnd)
  217.       IF TopPtr#
  218.     Mem:Message = ViewMsg_(eFound)
  219.       ELSE
  220.     Mem:Message = ViewMsg_(eNotFound)
  221.     TopPtr# = T_:TopPtr
  222.       .
  223.     ELSE
  224.       Mem:Message = ViewMsg_(eNoSearch)
  225.     .
  226.  
  227.   OF VAL('R') OROF VAL('r') OROF Ctrl_R OROF Alt_R
  228.     IF T_:FirstRow = 1
  229.       L# = 1
  230.       IF ViewPoint_('R', L#)
  231.     T_:FirstRow = L# + 1
  232.     ViewLock_('R',T_:FirstRow)
  233.       .
  234.     ELSE
  235.       PauseMsg_(ViewMsg_(eLocked))
  236.     .
  237.  
  238.   OF VAL('C') OROF VAL('c') OROF Ctrl_C OROF Alt_C
  239.     IF T_:FirstCol = 1
  240.       L# = 1
  241.       IF ViewPoint_('C', L#)
  242.     T_:FirstCol = L# + 1
  243.     ViewLock_('C',T_:FirstCol)
  244.       .
  245.     ELSE
  246.       PauseMsg_(ViewMsg_(eLocked))
  247.     .
  248.  
  249.   OF VAL('U') OROF VAL('u') OROF Ctrl_U OROF Alt_U
  250.     ViewUnlock_(T_:TopPtr,T_:FirstRow,T_:FirstCol)
  251.  
  252.   OF VAL('T') OROF VAL('t') OROF Ctrl_T OROF Alt_T
  253.     OPEN(MessageScrn_)
  254.     SetMessage_(ViewMsg_(eMarkTop))
  255.     L# = 1
  256.     IF ViewPoint_('L',L#)
  257.       T_:PrintTop = T_:TopPtr + L# - 1
  258.       Mem:Message = ViewMsg_(eTopLine)
  259.     ELSE
  260.       Mem:Message = ''
  261.     .
  262.     CLOSE(MessageScrn_)
  263.  
  264.   OF VAL('B') OROF VAL('b') OROF Ctrl_B OROF Alt_B
  265.     OPEN(MessageScrn_)
  266.     SetMessage_(ViewMsg_(eMarkBottom))
  267.     L# = 23
  268.     IF ViewPoint_('L',L#)
  269.       T_:PrintBottom = T_:TopPtr + L# - 1
  270.       Mem:Message  = ViewMsg_(eBottomLine)
  271.     ELSE
  272.       Mem:Message = ''
  273.     .
  274.     CLOSE(MessageScrn_)
  275.  
  276.   OF VAL('P') OROF VAL('p') OROF Ctrl_P OROF Alt_P
  277.     T_:Copies_ = 1
  278.     IF GetDevice_(T_:Dest_,T_:Copies_,eViewingNow)
  279.       LOOP X# = 1 TO T_:Copies_
  280.     ViewPrint_(Mem:Device,T_:PrintTop,T_:PrintBottom,T_:NLines,T_:FoundEnd)
  281.     IF T_:Dest_ = eToDisk THEN FixFile_(Mem:Device).
  282.   . . .
  283.  
  284.   EJECT
  285.