Annotation of freem_fileman/DDGFEL.m, revision 1.1.1.1
1.1 snw 1: DDGFEL ;SFISC/MKO-SELECT OR EDIT ELEMENT ;02:53 PM 12 Oct 1994
2: ;;21.0;VA FileMan;;Dec 28, 1994
3: ;Per VHA Directive 10-93-142, this routine should not be modified.
4: ;
5: SELECT ;Select an element
6: N B,F,T,C,C1,C2,C3,D,D1,D2,D3,L,P1,P2
7: D GETELEM(DY,DX) Q:$G(F)=""
8: ;
9: I F="P" G ^DDGFAPC
10: ;
11: ;Clear and/or kill portions of DDGFREF
12: S:T="D" $P(@DDGFREF@("F",DDGFPG,B,F),U,5,8)=""
13: K:T="C" @DDGFREF@("RC",DDGFWID,C1,C2,C3,B,F,"C"),@DDGFREF@("F",DDGFPG,B,F)
14: K:$D(D) @DDGFREF@("RC",DDGFWID,D1,D2,D3,B,F,"D")
15: ;
16: D COVER
17: G ^DDGF2
18: ;
19: EDIT ;Edit a caption or data length
20: N B,F,T,C,C1,C2,C3,D,D1,D2,D3,L,P1,P2,X,Y
21: D GETELEM(DY,DX) Q:"P"[$G(F)
22: ;
23: S DDGFCHG=1
24: I T="C" D
25: . K D,D1,D2,D3,L
26: . S $P(@DDGFREF@("F",DDGFPG,B,F),U,1,4)="^^^"
27: . K @DDGFREF@("RC",DDGFWID,C1,C2,C3,B,F,"C")
28: . D COVER
29: . D
30: .. N DX,DY
31: .. S DY=IOSL-6,DX=IOM-9 X IOXY W "EDIT "
32: . ;
33: . N DDGFCOD,DDGFX
34: . D EN^DIR0(C1,C2,$L(C),1,C,"","","","KWT",.DDGFX,.DDGFCOD)
35: . S X=DDGFX
36: . I $P(DDGFCOD,U)="TO" W $C(7) S X=C
37: . S:X["^" X=C
38: . S C3=C2+$L(X)-1
39: . ;
40: . S @DDGFREF@("RC",DDGFWID,C1,C2,C3,B,F,"C")=""
41: . D WRITE^DDGLIBW(DDGFWID,X,C1-P1,C2-P2)
42: . I $L(X)<$L(C) D REPAINT^DDGLIBW(DDGFWID,(C1-P1)_U_(C3+1-P2)_U_1_U_($L(C)-$L(X)))
43: . S $P(@DDGFREF@("F",DDGFPG,B,F),U,1,4)=C1_U_C2_U_C3_U_X,$P(^(F),U,9)=1
44: ;
45: I T="D" D
46: . K C,C1,C2,C3
47: . S $P(@DDGFREF@("F",DDGFPG,B,F),U,5,8)=""
48: . K @DDGFREF@("RC",DDGFWID,D1,D2,D3,B,F)
49: . D COVER,^DDGFADL
50: . ;
51: . S $P(@DDGFREF@("F",DDGFPG,B,F),U,5,8)=D1_U_D2_U_D3_U_L,$P(^(F),U,9)=1
52: . S @DDGFREF@("RC",DDGFWID,D1,D2,D3,B,F,"D")=""
53: . D WRITE^DDGLIBW(DDGFWID,D,D1-P1,D2-P2)
54: ;
55: D RC(DY,DX)
56: Q
57: ;
58: GETELEM(DY,DX) ;Which element is the cursor on
59: ;Returns P,B,F,T,C,C1,C2,C3,D,D1,D2,D3,L,P1,P2
60: ;If on pop-up page border, return only B="P",F="P",T="PTOP" or "PBRC"
61: ;Set P=page,B=Block,F=DDO,T=type ("D" or "C")
62: ;If cursor is not on anything, $G(F)=""
63: ;
64: Q:'$D(@DDGFREF@("RC",DDGFWID,DY))
65: N X1,X2,F1
66: S X1="" K F
67: F S X1=$O(@DDGFREF@("RC",DDGFWID,DY,X1)) Q:X1=""!(DX<X1) D
68: . S X2=""
69: . F S X2=$O(@DDGFREF@("RC",DDGFWID,DY,X1,X2)) Q:X2="" D Q:$G(F)
70: .. Q:DX>X2
71: .. S B=$O(@DDGFREF@("RC",DDGFWID,DY,X1,X2,""))
72: .. S F=$O(@DDGFREF@("RC",DDGFWID,DY,X1,X2,B,""))
73: .. S T=$O(@DDGFREF@("RC",DDGFWID,DY,X1,X2,B,F,""))
74: Q:"P"[$G(F)
75: ;
76: S P1=$P(DDGFLIM,U),P2=$P(DDGFLIM,U,2)
77: S F1=$G(@DDGFREF@("F",DDGFPG,B,F))
78: ;
79: ;Get caption, data, and coordinates
80: S C1=$P(F1,U),C2=$P(F1,U,2),C3=$P(F1,U,3),C=$P(F1,U,4)
81: I $P(F1,U,8)]"" D
82: . S D1=$P(F1,U,5),D2=$P(F1,U,6),D3=$P(F1,U,7)
83: . S L=$P(F1,U,8),D=$TR($J("",L)," ","_")
84: Q
85: ;
86: COVER ;Look for covered (hidden) fields
87: ;Input:
88: ; T,C,C1,C2,P1,P2
89: ;H(DDO) - array of hidden fields
90: ;Erase the element we've selected from buffer
91: ;Redraw the element(s) that were covered
92: N H,O,X1,X2,Y
93: F Y="C1","D1" D
94: . I Y="C1",T'="C" Q
95: . I Y="D1",'$D(D) Q
96: . S X1=""
97: . F S X1=$O(@DDGFREF@("RC",DDGFWID,@Y,X1)) Q:X1="" D
98: .. S X2=""
99: .. F S X2=$O(@DDGFREF@("RC",DDGFWID,@Y,X1,X2)) Q:X2="" D
100: ... N B
101: ... S B=$O(@DDGFREF@("RC",DDGFWID,@Y,X1,X2,""))
102: ... S O=$O(@DDGFREF@("RC",DDGFWID,@Y,X1,X2,B,""))
103: ... I O]"",$D(H(O))[0 D
104: .... I T="C",$$OVERLAP(C2,C3,X1,X2) S H(O)=DDGFPG_U_B
105: .... E I $D(D),$$OVERLAP(D2,D3,X1,X2) S H(O)=DDGFPG_U_B
106: ;
107: ;Clear in buffer area occupied by element(s) selected
108: D:T="C" CLEAR(C,C1,C2,C3)
109: D:$D(D) CLEAR(D,D1,D2,D3)
110: ;
111: ;Write to buffer the overlapped field(s)
112: I $D(H) S H="" F S H=$O(H(H)) Q:H="" D
113: . S O=$G(@DDGFREF@("F",$P(H(H),U),$P(H(H),U,2),H)) Q:O=""
114: . D WRITE^DDGLIBW(DDGFWID,$P(O,U,4),$P(O,U)-P1,$P(O,U,2)-P2,"",1)
115: . I $P(O,U,8)>0 D WRITE^DDGLIBW(DDGFWID,$TR($J("",$P(O,U,8))," ","_"),$P(O,U,5)-P1,$P(O,U,6)-P2,"",1)
116: Q
117: ;
118: OVERLAP(A1,A2,B1,B2) ;Does line with X-coords A1,A2 overlap B1,B2
119: N T
120: I A1<B1 S T=A1,A1=B1,B1=T,T=A2,A2=B2,B2=T
121: Q A1'<B1&(A1'>B2)!(A2'<B1&(A2'>B2))
122: ;
123: RC(DDGFY,DDGFX) ;Update status line, reset DX and DY, move cursor
124: N S
125: I DDGFR D
126: . S DY=IOSL-6,DX=IOM-9,S="R"_(DDGFY+1)_",C"_(DDGFX+1)
127: . X IOXY W S_$J("",7-$L(S))
128: S DY=DDGFY,DX=DDGFX X IOXY
129: Q
130: ;
131: CLEAR(C,C1,C2,C3) ;Clear in buffer area occupied by element(s) selected
132: ;If on the page border, redraw the lines
133: N L
134: S L=$J("",$L(C)-$S(C3>$P(DDGFLIM,U,4):C3-$P(DDGFLIM,U,4),1:0))
135: D WRITE^DDGLIBW(DDGFWID,L,C1-$P(DDGFLIM,U),C2-$P(DDGFLIM,U,2),"",1)
136: ;
137: I $P(@DDGFREF@("F",DDGFPG),U,3) D
138: . I C1=$P(DDGFLIM,U)!(C1=$P(DDGFLIM,U,3)) D
139: .. S L=$TR(L," ",$P(DDGLGRA,DDGLDEL,3))
140: .. S:C2=$P(DDGFLIM,U,2) $E(L)=$P(DDGLGRA,DDGLDEL,$S(C1=$P(DDGFLIM,U):5,1:7))
141: .. S:C3'<$P(DDGFLIM,U,4) $E(L,$L(L))=$P(DDGLGRA,DDGLDEL,$S(C1=$P(DDGFLIM,U):6,1:8))
142: .. D WRITE^DDGLIBW(DDGFWID,L,C1-$P(DDGFLIM,U),C2-$P(DDGFLIM,U,2),"G",1)
143: . E I C2=$P(DDGFLIM,U,2) D
144: .. D WRITE^DDGLIBW(DDGFWID,$P(DDGLGRA,DDGLDEL,4),C1-$P(DDGFLIM,U),C2-$P(DDGFLIM,U,2),"G",1)
145: . E I C3'<$P(DDGFLIM,U,4) D
146: .. D WRITE^DDGLIBW(DDGFWID,$P(DDGLGRA,DDGLDEL,4),C1-$P(DDGFLIM,U),$P(DDGFLIM,U,4)-$P(DDGFLIM,U,2),"G",1)
147: Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>