[613] | 1 | DDW1 ;SFISC/PD KELTZ-LOAD, SAVE ;1:31 PM 16 Aug 2000
|
---|
| 2 | ;;22.0;VA FileMan;**18**;Mar 30, 1999
|
---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | LOAD ;Put up "box" and load document
|
---|
| 6 | N DDWI,DDWX
|
---|
| 7 | D BOX
|
---|
| 8 | ;
|
---|
| 9 | I $D(DWLC)[0 D
|
---|
| 10 | . S DWLC=$S($D(@DDWDIC@(0))#2:+$P(@DDWDIC@(0),U,4),1:$O(@DDWDIC@(""),-1))
|
---|
| 11 | . S:$D(@DDWDIC@(1))#2 $E(DDWBF,4)=1
|
---|
| 12 | S DDWCNT=$S(DWLC:DWLC,1:1)
|
---|
| 13 | ;
|
---|
| 14 | D:DDWCNT>1 MSG^DDW("Loading text ...")
|
---|
| 15 | F DDWI=DDWCNT:-1:DDWMR+1 D
|
---|
| 16 | . S DDWSTB=DDWSTB+1
|
---|
| 17 | . S DDWX=$S('$E(DDWBF,4):$G(@DDWDIC@(DDWI,0)),1:$G(@DDWDIC@(DDWI)))
|
---|
| 18 | . D:DDWX?.E1C.E CTRL
|
---|
| 19 | . S ^TMP("DDW1",$J,DDWSTB)=DDWX
|
---|
| 20 | ;
|
---|
| 21 | F DDWI=1:1:DDWMR D
|
---|
| 22 | . S DDWX=$S(DDWI>DDWCNT:"",'$E(DDWBF,4):$G(@DDWDIC@(DDWI,0)),1:$G(@DDWDIC@(DDWI)))
|
---|
| 23 | . D:DDWX?.E1C.E CTRL
|
---|
| 24 | . S DDWL(DDWI)=DDWX
|
---|
| 25 | . I DDWC'>IOM,DDWRW'>DDWMR,DDWI'>DDWCNT,DDWX'?." " D
|
---|
| 26 | .. D CUP(DDWI,1) W $E(DDWX,1,IOM)
|
---|
| 27 | ;
|
---|
| 28 | I DDWCNT=1,DDWL(1)?1." " S DDWL(1)=""
|
---|
| 29 | D:DDWCNT>1 MSG^DDW()
|
---|
| 30 | ;
|
---|
| 31 | D:$G(DDWED) MSG^DDW($C(7)_$P(DDGLVID,DDGLDEL,6)_"WARNING: Control characters in the text have been replaced with spaces."_$P(DDGLVID,DDGLDEL,10))
|
---|
| 32 | ;
|
---|
| 33 | I DDWRW="B" D
|
---|
| 34 | . D BOT^DDW3
|
---|
| 35 | E D LINE^DDWG(DDWRW,DDWC)
|
---|
| 36 | Q
|
---|
| 37 | ;
|
---|
| 38 | CTRL ;Strip control characters from DDWX
|
---|
| 39 | N I
|
---|
| 40 | S DDWED=1
|
---|
| 41 | F I=1:1:$L(DDWX) S:$E(DDWX,I)?1C $E(DDWX,I)=" "
|
---|
| 42 | Q
|
---|
| 43 | ;
|
---|
| 44 | BOX ;Draw box
|
---|
| 45 | N DDWX
|
---|
| 46 | ;
|
---|
| 47 | I $D(DIWETXT) D
|
---|
| 48 | . D CUP(-1,1)
|
---|
| 49 | . W $P(DDGLVID,DDGLDEL)_$E(DIWETXT,1,IOM)_$P(DDGLVID,DDGLDEL,10)
|
---|
| 50 | ;
|
---|
| 51 | I $D(DIWESUB) S DDWX=DIWESUB
|
---|
| 52 | E I $D(DH)#2,$D(DIE) S DDWX=DH
|
---|
| 53 | S DDWX=$E($G(DDWX),1,30)
|
---|
| 54 | ;
|
---|
| 55 | D CUP(0,1) W $TR($J("",IOM)," ","=")
|
---|
| 56 | I DDWRAP S DX=2 X IOXY W "[ WRAP ]"
|
---|
| 57 | S DX=12 X IOXY W $S(DDWREP:"[ REPLACE ]",1:"[ INSERT ]=")
|
---|
| 58 | S DX=40-($L(DDWX)\2) X IOXY W "< "_$E(DDWX,1,30)_" >"
|
---|
| 59 | S DX=61 X IOXY W "[ <PF1>H=Help ]"
|
---|
| 60 | ;
|
---|
| 61 | D CUP(DDWMR+1,1) W $E(DDWRUL,1,IOM)
|
---|
| 62 | I DDWLMAR-DDWOFS'<1,DDWLMAR-DDWOFS'>IOM D
|
---|
| 63 | . S DX=DDWLMAR-DDWOFS-1 X IOXY W "<"
|
---|
| 64 | I DDWRMAR-DDWOFS'<1,DDWRMAR-DDWOFS'>IOM D
|
---|
| 65 | . S DX=DDWRMAR-DDWOFS-1 X IOXY W ">"
|
---|
| 66 | Q
|
---|
| 67 | ;
|
---|
| 68 | AUTOTM ;Prompt for autosave time
|
---|
| 69 | N DDWHLP,DDWANS,DDWCOD
|
---|
| 70 | S DDWHLP(1)=" Enter the interval in MINUTES you wish to have the Screen Editor"
|
---|
| 71 | S DDWHLP(2)=" automatically save the text. Enter a number between 0 and 120."
|
---|
| 72 | S DDWHLP(3)=" A value of 0 means text is NOT automatically saved."
|
---|
| 73 | D ASK^DDWG(5,"Interval in MINUTES to automatically save text: ",15,+$G(DDWAUTO),"D AUTOVAL^DDW1",.DDWHLP,.DDWANS,.DDWCOD)
|
---|
| 74 | ;
|
---|
| 75 | Q:DDWCOD="TO"!(DDWANS=U)
|
---|
| 76 | I $G(DDWANS) D
|
---|
| 77 | . S DDWAUTO=DDWANS
|
---|
| 78 | . S DDWAUTO("H")=$H
|
---|
| 79 | . S DDWAUTO("S")=DDWAUTO*60
|
---|
| 80 | E K DDWAUTO
|
---|
| 81 | Q
|
---|
| 82 | ;
|
---|
| 83 | AUTOVAL ;Validate autosave time
|
---|
| 84 | K DDWERR
|
---|
| 85 | I DDWX?."^"!($P($G(DDWCOD),U)="TO") S DDWX=U Q
|
---|
| 86 | I $L(DDWX)>15 D
|
---|
| 87 | . S DDWERR=" Response must not be more than 15 characters in length."
|
---|
| 88 | I DDWX'=+$P(DDWX,"E") D
|
---|
| 89 | . S DDWERR=" Response must be numeric."
|
---|
| 90 | I DDWX>120!(DDWX<0) D
|
---|
| 91 | . S DDWERR=" Response must be between 0 and 120."
|
---|
| 92 | Q
|
---|
| 93 | ;
|
---|
| 94 | AUTOSV ;Autosave
|
---|
| 95 | I $D(DDWED) K DDWED D SV
|
---|
| 96 | S DDWAUTO("H")=$H
|
---|
| 97 | Q
|
---|
| 98 | ;
|
---|
| 99 | SV ;Called from DDWT1 and AUTOSV
|
---|
| 100 | D SAVE
|
---|
| 101 | S:DDWCNT<1 DDWCNT=1
|
---|
| 102 | I DDWRW+DDWA>DDWCNT D
|
---|
| 103 | . D POS(DDWCNT-DDWA,"E","RN")
|
---|
| 104 | E D POS(DDWRW,DDWC)
|
---|
| 105 | Q
|
---|
| 106 | ;
|
---|
| 107 | SAVE ;Save document
|
---|
| 108 | N DDWI,DDWLMEM,DDWLSTB,DDWX
|
---|
| 109 | D MSG^DDW("Saving text ...") H .5
|
---|
| 110 | S DDWCNT=0
|
---|
| 111 | K @DDWDIC
|
---|
| 112 | ;
|
---|
| 113 | F DDWI=1:1:DDWA D
|
---|
| 114 | . S DDWCNT=DDWCNT+1,DDWX=$$NTS(^TMP("DDW",$J,DDWI))
|
---|
| 115 | . I '$E(DDWBF,4) S @DDWDIC@(DDWCNT,0)=DDWX
|
---|
| 116 | . E S @DDWDIC@(DDWCNT)=DDWX
|
---|
| 117 | ;
|
---|
| 118 | S DDWLMEM=999
|
---|
| 119 | F DDWI=1:1:DDWSTB+1 Q:DDWI>DDWSTB Q:^TMP("DDW1",$J,DDWI)'?." "
|
---|
| 120 | I DDWI'>DDWSTB S DDWLSTB=DDWI
|
---|
| 121 | E D
|
---|
| 122 | . F DDWI=DDWMR:-1:0 Q:'DDWI Q:DDWL(DDWI)'?." "
|
---|
| 123 | . S DDWLMEM=DDWI
|
---|
| 124 | ;
|
---|
| 125 | F DDWI=1:1:$$MIN(DDWLMEM,DDWMR) D
|
---|
| 126 | . S DDWCNT=DDWCNT+1,DDWX=$$NTS(DDWL(DDWI))
|
---|
| 127 | . I '$E(DDWBF,4) S @DDWDIC@(DDWCNT,0)=DDWX
|
---|
| 128 | . E S @DDWDIC@(DDWCNT)=DDWX
|
---|
| 129 | ;
|
---|
| 130 | I $D(DDWLSTB) F DDWI=DDWSTB:-1:DDWLSTB D
|
---|
| 131 | . S DDWCNT=DDWCNT+1,DDWX=$$NTS(^TMP("DDW1",$J,DDWI))
|
---|
| 132 | . I '$E(DDWBF,4) S @DDWDIC@(DDWCNT,0)=DDWX
|
---|
| 133 | . E S @DDWDIC@(DDWCNT)=DDWX
|
---|
| 134 | ;
|
---|
| 135 | S DWLC=DDWCNT,DWHD=U
|
---|
| 136 | I DDWCNT,'$E(DDWBF,4) S @DDWDIC@(0)=U_U_DWLC_U_DWLC_U_DT_U
|
---|
| 137 | D MSG^DDW()
|
---|
| 138 | Q
|
---|
| 139 | ;
|
---|
| 140 | QUIT ;If any edits were made, issue confirmation prompt.
|
---|
| 141 | S DDWFIN=""
|
---|
| 142 | Q:$G(DDWFLAGS)["Q"!'$D(DDWED)
|
---|
| 143 | ;
|
---|
| 144 | N DDWHLP,DDWANS,DDWCOD
|
---|
| 145 | S DDWHLP(1)=" Enter 'Yes' to save changes and quit."
|
---|
| 146 | S DDWHLP(2)=" Enter 'No' to discard changes and quit."
|
---|
| 147 | S DDWHLP(3)=" Enter '^' to return to the editor without saving or quitting."
|
---|
| 148 | ;
|
---|
| 149 | D ASK^DDWG(5,"Do you want to save changes? ",3,"","D QUITVAL^DDW1",.DDWHLP,.DDWANS,.DDWCOD)
|
---|
| 150 | ;
|
---|
| 151 | I DDWCOD="TO"!(DDWANS=U) K DDWFIN
|
---|
| 152 | E I DDWANS="Y" D SAVE K DUOUT ;GFT
|
---|
| 153 | Q
|
---|
| 154 | ;
|
---|
| 155 | QUITVAL ;Validate responses to the confirmation prompt
|
---|
| 156 | K DDWERR
|
---|
| 157 | I DDWX[U!($P(DDWCOD,U)="TO") S DDWX=U Q
|
---|
| 158 | I DDWX="" S DDWERR=" Response is required. Enter ? for help." Q
|
---|
| 159 | ;
|
---|
| 160 | S:DDWX?.E1L.E DDWX=$TR(DDWX,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
---|
| 161 | ;
|
---|
| 162 | I $P("YES",DDWX)]"",$P("NO",DDWX)]"" D Q
|
---|
| 163 | . S DDWERR=" Not a valid response. Enter ? for help."
|
---|
| 164 | ;
|
---|
| 165 | S DDWX=$E(DDWX)
|
---|
| 166 | Q
|
---|
| 167 | ;
|
---|
| 168 | POS(R,C,F) ;Pos cursor based on char pos C
|
---|
| 169 | N DDWX
|
---|
| 170 | S:$G(C)="E" C=$L($G(DDWL(R)))+1
|
---|
| 171 | S:$G(F)["N" DDWN=$G(DDWL(R))
|
---|
| 172 | S:$G(F)["R" DDWRW=R,DDWC=C
|
---|
| 173 | ;
|
---|
| 174 | S DDWX=C-DDWOFS
|
---|
| 175 | I DDWX>IOM!(DDWX<1) D SHIFT^DDW3(C,.DDWOFS)
|
---|
| 176 | S DY=IOTM+R-2,DX=C-DDWOFS-1 X IOXY
|
---|
| 177 | Q
|
---|
| 178 | ;
|
---|
| 179 | CUP(Y,X) ;Cursor positioning
|
---|
| 180 | S DY=IOTM+Y-2,DX=X-1 X IOXY
|
---|
| 181 | Q
|
---|
| 182 | ;
|
---|
| 183 | MIN(X,Y) ;Return the minimum of X and Y
|
---|
| 184 | Q $S(X<Y:X,1:Y)
|
---|
| 185 | ;
|
---|
| 186 | NTS(X) ;Change "" to " "
|
---|
| 187 | Q $S(X="":" ",1:X)
|
---|
| 188 | ;
|
---|
| 189 | TR(X,F) ;Strip trailing blanks
|
---|
| 190 | ;If F["B" return " " if X=""
|
---|
| 191 | I $G(X)]"" D
|
---|
| 192 | . N I
|
---|
| 193 | . F I=$L(X):-1:0 Q:$E(X,I)'=" "
|
---|
| 194 | . S X=$E(X,1,I)
|
---|
| 195 | I X="",$G(F)["B" S X=" "
|
---|
| 196 | Q X
|
---|