Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: VALM40

VALM40.m

Go to the documentation of this file.
  1. VALM40 ;ALB/MJK - Screen Malipulation Utilities (cont.) ;11:25 PM 11 Dec 1992 [ 07/24/98 9:29 AM ]
  1. ;;1;List Manager;**1002**;Aug 13, 1993
  1. ;IHS/ANMC/LJF 5/6/97 IHS PATCH #1002
  1. ; -- changed "find next" prompt to "stop here"
  1. ;
  1. FIND ; -- find text in list
  1. N START,BEG,VALMOUT,VALMHIT
  1. S DIR(0)="F^2:50",DIR("A")="Search for" S:$D(VALMFIND) DIR("B")=VALMFIND
  1. S DIR("?")="Enter from two to fifty characters."
  1. D ^DIR K DIR I "^"[Y G FINDQ
  1. S VALMFIND=Y,(BEG,START)=VALMBG,FINISH=VALMCNT
  1. F D SEARCH(START,FINISH) D D:VALMHIT SELECT^VALM10(VALMHIT,0) Q:$D(VALMOUT)
  1. .I 'VALMHIT,BEG=1 D PAUSE^VALM1 S VALMOUT="" Q
  1. .I VALMHIT,BEG=1,VALMHIT=VALMCNT D PAUSE^VALM1 S VALMOUT="" Q
  1. .I 'VALMHIT!(VALMHIT=VALMCNT),BEG'=1,$$BEG S FINISH=BEG-1,(BEG,START)=1 Q
  1. .I 'VALMHIT!(VALMHIT=VALMCNT),BEG'=1 S VALMOUT="" Q
  1. .;W ! S DIR(0)="Y",DIR("B")="Yes",DIR("A")="Find Next '"_VALMFIND_"'" D ^DIR K DIR ;IHS PATCH #1002
  1. .;I Y S START=VALMHIT+1 Q ;IHS PATCH #1002
  1. .W ! S DIR(0)="Y",DIR("B")="Yes",DIR("A")="Stop Here" D ^DIR K DIR ;IHS PATCH #1002
  1. .I 'Y S START=VALMHIT+1 Q ;IHS PATCH #1002
  1. .S VALMOUT=""
  1. FINDQ D FINISH^VALM4 Q
  1. ;
  1. BEG() ; -- ask if ok to start from top
  1. W !!,"<<< End of list >>>"
  1. S DIR(0)="Y",DIR("A")="Do you want to start at the beginning of the list",DIR("B")="Yes"
  1. D ^DIR K DIR
  1. Q Y
  1. ;
  1. ; input: START := line to start search on
  1. ; FINISH := line to end search on
  1. ;
  1. N Y,X,L,CNT
  1. S VALMHIT="",CNT=0
  1. S VALMBCK="" D:VALMCC RESET^VALM4 W !,"...searching for '"_VALMFIND_"'"
  1. F I=START:1:FINISH S CNT=CNT+1 W:'(CNT#100) "." I $$UPPER^VALM1(@VALMAR@(I,0))[$$UPPER^VALM1(VALMFIND) S VALMHIT=I Q
  1. I 'VALMHIT W *7,!!,"Text not found." G SEARCHQ
  1. I VALMCC D
  1. .I VALMHIT<VALMBG!(VALMHIT>VALMLST) S VALMBG=VALMHIT D LST^VALM4,PAINT^VALM4
  1. .D UPD(VALMHIT,VALMFIND)
  1. D PGUPD^VALM4
  1. I 'VALMCC S VALMBG=VALMHIT D REFRESH^VALM
  1. SEARCHQ Q
  1. ;
  1. UPD(LINE,TEXT) ; -- set/unset video attribute on text
  1. ; input: LINE := number of line
  1. ; TEXT := chars to set attribute on
  1. ;
  1. N LEN,POS,FIRST
  1. D SELECT^VALM10(.LINE,1)
  1. I 'VALMCC G UPDQ
  1. S Y=@VALMAR@(LINE,0),LEN=$L(TEXT),POS=0,FIRST=""
  1. F S POS=$F($$UPPER^VALM1(Y),$$UPPER^VALM1(TEXT),POS) Q:'POS D
  1. .S:'FIRST FIRST=POS-LEN
  1. .D CNTRL^VALM10(.LINE,POS-LEN,.LEN,.IORVON,IORVOFF_IOINHI)
  1. I FIRST D
  1. .I FIRST'>VALM("FIXED") Q
  1. .I FIRST<VALMLFT D LEFT("^^^="_(VALMLFT-FIRST)) Q
  1. .I FIRST'>((VALMWD-VALM("FIXED"))+VALMLFT) Q
  1. .D RIGHT("^^^="_(FIRST-VALMLFT))
  1. D WRITE^VALM10(.LINE)
  1. UPDQ Q
  1. ;
  1. UP ; -- display last screen (UP)
  1. D START^VALM4
  1. N Y S Y=VALMBG-1 I Y<1 W *7 G UPQ
  1. S VALMBG=Y D LST^VALM4
  1. I VALMCC S DY=VALM("TM")-1 D SCROLL^VALM4,IOIL^VALM4(0,.DY),WRITE^VALM4(VALMBG,0,1,.DY),PLUS^VALM4,RESET^VALM4
  1. D PGUPD^VALM4
  1. UPQ D FINISH^VALM4 Q
  1. ;
  1. DOWN ; -- display next line (DN)
  1. D START^VALM4
  1. N Y S Y=VALMLST+1 I Y>VALMCNT W *7 G DOWNQ
  1. S VALMBG=VALMBG+1,VALMLST=Y
  1. I VALMCC S DY=VALM("BM")-1 D SCROLL^VALM4,IOXY^VALM4(0,.DY),WRITE^VALM4(VALMLST,1,1,.DY),PLUS^VALM4,RESET^VALM4
  1. D PGUPD^VALM4
  1. DOWNQ D FINISH^VALM4 Q
  1. ;
  1. D START^VALM4
  1. N MOVE,RM
  1. S MOVE=$P($P(VALMNOD,U,4),"=",3),RM=VALM("RM")-VALMWD+VALM("FIXED")
  1. I VALMLFT=RM W *7 G RIGHTQ
  1. I MOVE?1">".E D
  1. .S VALMLFT=RM
  1. E D
  1. .S MOVE=$S(MOVE:+MOVE,1:VALMWD-VALM("FIXED"))
  1. .I (VALMLFT+MOVE)>RM S VALMLFT=RM Q
  1. .S VALMLFT=VALMLFT+MOVE
  1. I VALMCC S:VALMWD'<$L($G(VALMHDR(VALM("TM")-3))) VALMBCK="P" D REFRESH^VALM
  1. RIGHTQ D FINISH^VALM4 Q
  1. ;
  1. LEFT(VALMNOD) ; -- move veiw to left
  1. D START^VALM4
  1. N MOVE,LM
  1. S MOVE=$P($P(VALMNOD,U,4),"=",3),LM=VALM("FIXED")+1
  1. I VALMLFT=LM W *7 G LEFTQ
  1. I MOVE?1"<".E D
  1. .S VALMLFT=LM
  1. E D
  1. .S MOVE=$S(MOVE:+MOVE,1:VALMWD-VALM("FIXED"))
  1. .S:(VALMLFT-MOVE)<LM MOVE=VALMLFT-VALM("FIXED")-1
  1. .S VALMLFT=VALMLFT-MOVE
  1. I VALMCC S:VALMWD'<$L($G(VALMHDR(VALM("TM")-3))) VALMBCK="P" D REFRESH^VALM
  1. LEFTQ D FINISH^VALM4 Q
  1. ;
  1. GOTO ; -- go to page #
  1. N Y,DIR,PAGE,LINE
  1. S PAGE=$$PAGE^VALM4(VALMCNT,VALM("LINES"))
  1. I PAGE=1 S VALMSG="This list only contains 1 page." G GOTOQ
  1. S Y=+$P($P(XQORNOD(0),U,4),"=",3)
  1. I Y D I $G(VALMSG)]"" G GOTOQ
  1. .I Y>PAGE S VALMSG="Too large. Page #"_Y_" does not exist." Q
  1. .I Y<1 S VALMSG="Negative page numbers do not exist." Q
  1. .S PAGE=Y
  1. I 'Y D
  1. .S DIR(0)="NA^1:"_PAGE,DIR("A")="Go to Page (1-"_PAGE_"): "
  1. .W ! D ^DIR K DIR S PAGE=+Y
  1. I PAGE D
  1. .S LINE=((PAGE-1)*VALM("LINES"))+1
  1. .I LINE=VALMBG S VALMSG="Your selection is the current screen." Q
  1. .I LINE'=VALMBG S VALMBG=LINE D:VALMCC LST^VALM4,PAINT^VALM4 D PGUPD^VALM4
  1. GOTOQ I $G(VALMSG)]"" S VALMSG=$C(7)_VALMSG
  1. D FINISH^VALM4
  1. Q