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
Wrap
Text File
|
1992-01-31
|
8KB
|
285 lines
MEMBER !DPP_NO_OPEN
!==============================================================================
! View Procedure
!==============================================================================
View_ PROCEDURE(Filename_)
Filename_ EXTERNAL
INCLUDE('VIEW_.CPY')
Screen SCREEN WINDOW(25,80),AT(1,1),PRE(Scr),HUE(7,1)
ROW(1,1) PAINT(1,80),HUE(0,7)
ROW(25,1) PAINT(1,80),HUE(0,7)
COL(18) STRING('│<0{15}>│<0{18}>│')
COL(55) STRING('<27,18,26>'),REV,ENH
COL(2) STRING('Rows:')
COL(19) STRING('Columns:')
COL(35) STRING('Marked:')
COL(58) STRING('-Move')
COL(64) STRING('Esc'),REV,ENH
COL(67) STRING('-Exit')
COL(73) STRING('F1'),REV,ENH
COL(75) STRING('-Help')
Message ROW(1,2) STRING(78)
Rows ROW(25,7) STRING(11)
Cols COL(27) STRING(7)
Marked COL(42) STRING(11)
.
GROUP,PRE(T_)
TopPtr LONG
LeftPtr LONG
FirstRow BYTE
FirstCol BYTE
PrintTop LONG
PrintBottom LONG
NLines LONG
FoundEnd SHORT
Line STRING(81)
Search STRING(eSearchSize)
DateClock BYTE
TimeClock BYTE
PathClock BYTE
MemClock BYTE
SaveDevice_ STRING(SIZE(Mem:Device))
Dest_ BYTE
Copies_ SHORT
.
eViewingNow EQUATE(1)
EJECT
!==============================================================================
! Code Section
!==============================================================================
CODE
T_:DateClock = sDateClock; sDateClock = False
T_:TimeClock = sTimeClock; sTimeClock = False
T_:PathClock = sPathClock; sPathClock = False
T_:MemClock = sMemClock; sMemClock = False
T_:SaveDevice_ = Mem:Device
OPEN(Screen)
ViewOpen__(Filename_)
IF ERROR()
PauseMsg_('Cannot open '&CLIP(Filename_)&', Error: '&ERROR(),,eBeepOn,20)
DO Quit
.
T_:TopPtr = -1; TopPtr# = 1;
T_:LeftPtr = -1; LeftPtr# = 1;
T_:FirstRow = 1
T_:FirstCol = 1
T_:PrintTop = 0
T_:PrintBottom = 0
T_:NLines = 0
T_:FoundEnd = False
Mem:Message = ''
LOOP !Loop
DO Show
ALIAS(F1_Key,eHelp_Key)
ASK ! Get a keystroke
ALIAS(F1_Key,F1_Key)
IF KEYCODE()=Esc_Key OR KEYCODE()=Reject_Key
BREAK
ELSIF KEYCODE()=eHelp_Key
ViewHelp_()
ELSE
DO ViewKeys_
. .
DO Quit
Quit ROUTINE
ViewClose__()
Mem:Device = T_:SaveDevice_
sDateClock = T_:DateClock
sTimeClock = T_:TimeClock
sPathClock = T_:PathClock
sMemClock = T_:MemClock
RETURN
Show ROUTINE
ViewShow_(T_:TopPtr,TopPtr#,T_:LeftPtr,LeftPtr#,T_:Line, |
T_:FirstRow,T_:FirstCol,T_:NLines,T_:FoundEnd)
! IF NOT KEYCODE()
Scr:Message = Mem:Message ! Display message on screen
Scr:Rows = T_:TopPtr &'-'& T_:TopPtr+eScrHeight-(T_:FirstRow-1)-1
Scr:Cols = T_:LeftPtr &'-'& T_:LeftPtr+eScrWidth-(T_:FirstCol-1)-1
IF T_:PrintTop
IF T_:PrintBottom
Scr:Marked = T_:PrintTop & '-' & T_:PrintBottom
ELSE
Scr:Marked = T_:PrintTop & '-END'
.
ELSE
IF T_:PrintBottom
Scr:Marked = 'TOP-' & T_:PrintBottom
ELSE
Scr:Marked = 'ALL'
. .
! .
Mem:Message = ''
EJECT
!==============================================================================
! ViewKeys_ Routine
!==============================================================================
ViewKeys_ ROUTINE
KeyCode# = KEYCODE() ! Save keycode
CASE KeyCode# ! Depending on key pressed
INCLUDE('VIEWKEY.CPY')
OF Up_Key ! If Up key
IF T_:TopPtr > 1 THEN TopPtr# -= 1.
OF Down_Key ! If Down key
IF T_:FoundEnd
IF T_:TopPtr + eScrHeight =< T_:NLines
L# = ViewRead__(T_:TopPtr+eScrHeight,T_:Line,T_:LeftPtr+T_:FirstCol-1, |
eScrWidth-(T_:FirstCol-1),T_:NLines,T_:FoundEnd)
TopPtr# += 1
.
ELSE
IF ViewRead__(T_:TopPtr+eScrHeight,T_:Line,T_:LeftPtr+T_:FirstCol-1, |
eScrWidth-(T_:FirstCol-1),T_:NLines,T_:FoundEnd)
TopPtr# += 1
. .
OF PgUp_Key ! If PgUp key
TopPtr# -= eScrHeight - (T_:FirstRow-1)
IF TopPtr# < 1 THEN TopPtr# = 1.
OF PgDn_Key ! If PgDn key
IF T_:FoundEnd
TopPtr# += eScrHeight - (T_:FirstRow-1)
IF TopPtr# + eScrHeight-(T_:FirstRow-1) - 1 > T_:NLines
TopPtr# = T_:NLines - eScrHeight + (T_:FirstRow-1) + 1
IF TopPtr# < 1 THEN TopPtr# = 1.
.
ELSE
IF ViewRead__(T_:TopPtr+eScrHeight+(eScrHeight-(T_:FirstRow-1))-1,T_:Line, |
T_:LeftPtr+T_:FirstCol-1,eScrWidth-(T_:FirstCol-1),T_:NLines,T_:FoundEnd)
TopPtr# += eScrHeight - (T_:FirstRow-1)
ELSE
TopPtr# = T_:NLines - eScrHeight-(T_:FirstRow-1) + 1
IF TopPtr# < 1 THEN TopPtr# = 1.
. .
OF Ctrl_PgUp ! If ^PgUp
TopPtr# = 1
OF Ctrl_PgDn ! If ^PgDn
IF NOT T_:FoundEnd
OPEN(MessageScrn_)
SetMessage_(ViewMsg_(eReading),,,16)
L# = ViewRead__(eBigNumber,T_:Line,T_:LeftPtr+T_:FirstCol-1, |
eScrWidth-(T_:FirstCol-1),T_:NLines,T_:FoundEnd)
CLOSE(MessageScrn_)
.
TopPtr# = T_:NLines - eScrHeight-(T_:FirstRow-1) + 1
IF TopPtr# < 1 THEN TopPtr# = 1.
OF Home_Key ! If Home key
LeftPtr# = 1
OF End_Key ! If End key
L# = ViewLen__(T_:TopPtr,eScrHeight-(T_:FirstRow-1), |
T_:NLines,T_:FoundEnd)
LeftPtr# = L#-(eScrWidth-eHorzMove+L#%10-1)
IF LeftPtr# < 1 THEN LeftPtr# = 1. ! If all lines are short
OF Right_Key ! If Right key
LeftPtr# += eHorzMove
OF Left_Key ! If Left key
IF LeftPtr# > 1 THEN LeftPtr# -= 10. ! If not already at left
OF VAL('S') OROF VAL('s') OROF Ctrl_S OROF Alt_S
TopPtr# = ViewSearch_(T_:Search,T_:TopPtr,T_:NLines,T_:FoundEnd)
IF TopPtr#
Mem:Message = ViewMsg_(eFound)
ELSE
Mem:Message = ViewMsg_(eNotFound)
TopPtr# = T_:TopPtr
.
OF VAL('A') OROF VAL('a') OROF Ctrl_A OROF Alt_A
IF T_:Search
TopPtr# = ViewSearchA_(T_:Search,T_:TopPtr,T_:NLines,T_:FoundEnd)
IF TopPtr#
Mem:Message = ViewMsg_(eFound)
ELSE
Mem:Message = ViewMsg_(eNotFound)
TopPtr# = T_:TopPtr
.
ELSE
Mem:Message = ViewMsg_(eNoSearch)
.
OF VAL('R') OROF VAL('r') OROF Ctrl_R OROF Alt_R
IF T_:FirstRow = 1
L# = 1
IF ViewPoint_('R', L#)
T_:FirstRow = L# + 1
ViewLock_('R',T_:FirstRow)
.
ELSE
PauseMsg_(ViewMsg_(eLocked))
.
OF VAL('C') OROF VAL('c') OROF Ctrl_C OROF Alt_C
IF T_:FirstCol = 1
L# = 1
IF ViewPoint_('C', L#)
T_:FirstCol = L# + 1
ViewLock_('C',T_:FirstCol)
.
ELSE
PauseMsg_(ViewMsg_(eLocked))
.
OF VAL('U') OROF VAL('u') OROF Ctrl_U OROF Alt_U
ViewUnlock_(T_:TopPtr,T_:FirstRow,T_:FirstCol)
OF VAL('T') OROF VAL('t') OROF Ctrl_T OROF Alt_T
OPEN(MessageScrn_)
SetMessage_(ViewMsg_(eMarkTop))
L# = 1
IF ViewPoint_('L',L#)
T_:PrintTop = T_:TopPtr + L# - 1
Mem:Message = ViewMsg_(eTopLine)
ELSE
Mem:Message = ''
.
CLOSE(MessageScrn_)
OF VAL('B') OROF VAL('b') OROF Ctrl_B OROF Alt_B
OPEN(MessageScrn_)
SetMessage_(ViewMsg_(eMarkBottom))
L# = 23
IF ViewPoint_('L',L#)
T_:PrintBottom = T_:TopPtr + L# - 1
Mem:Message = ViewMsg_(eBottomLine)
ELSE
Mem:Message = ''
.
CLOSE(MessageScrn_)
OF VAL('P') OROF VAL('p') OROF Ctrl_P OROF Alt_P
T_:Copies_ = 1
IF GetDevice_(T_:Dest_,T_:Copies_,eViewingNow)
LOOP X# = 1 TO T_:Copies_
ViewPrint_(Mem:Device,T_:PrintTop,T_:PrintBottom,T_:NLines,T_:FoundEnd)
IF T_:Dest_ = eToDisk THEN FixFile_(Mem:Device).
. . .
EJECT