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

DDGFBSEL.m

Go to the documentation of this file.
  1. DDGFBSEL ;SFISC/MKO-SELECT BLOCK ;07:50 AM 23 Aug 1993
  1. ;;22.0;VA FileMan;;Mar 30, 1999
  1. ;Per VHA Directive 10-93-142, this routine should not be modified.
  1. ;Sets:
  1. ; DDGFORIG(B) = original $Y^original $X for all blocks that were
  1. ; selected, since they were potentially moved
  1. SELECT ;
  1. N B,C,C1,C2,C3
  1. N B1,X1,X2
  1. ;
  1. ;Which element is the cursor on?
  1. ;Set B=Block
  1. S X1="" K B
  1. F S X1=$O(@DDGFREF@("BKRC",DDGFWIDB,DY,X1)) Q:X1=""!(DX<X1) D
  1. . S X2=""
  1. . F S X2=$O(@DDGFREF@("BKRC",DDGFWIDB,DY,X1,X2)) Q:X2="" D Q:$G(B)
  1. .. Q:DX>X2
  1. .. S B=$O(@DDGFREF@("BKRC",DDGFWIDB,DY,X1,X2,""))
  1. .. I @DDGFREF@("BKRC",DDGFWIDB,DY,X1,X2,B)="H",$O(^(B)) S B=$O(^(B))
  1. Q:'$G(B)
  1. ;
  1. ;Get caption and coordinates
  1. S B1=$G(@DDGFREF@("F",DDGFPG,B)) Q:B1=""
  1. S C1=$P(B1,U),C2=$P(B1,U,2),C3=$P(B1,U,3),C=$P(B1,U,4)
  1. ;
  1. S:@DDGFREF@("BKRC",DDGFWIDB,C1,C2,C3,B)="H" DDGFHDR=1
  1. D COVER
  1. ;
  1. K B1,X1,X2
  1. G ^DDGF4
  1. ;
  1. COVER ;
  1. N H,O,L
  1. ;Clear and/or kill portions of DDGFREF
  1. K @DDGFREF@("BKRC",DDGFWIDB,C1,C2,C3,B)
  1. ;
  1. ;Remember original block coordinates
  1. S:$D(DDGFORIG(B))[0 DDGFORIG(B)=C1_U_C2
  1. ;
  1. ;Look for covered (hidden) fields
  1. ;Set H(B) - array of hidden fields
  1. S X1=""
  1. F S X1=$O(@DDGFREF@("BKRC",DDGFWIDB,C1,X1)) Q:X1="" D
  1. . S X2=""
  1. . F S X2=$O(@DDGFREF@("BKRC",DDGFWIDB,C1,X1,X2)) Q:X2="" D
  1. .. S H=$O(@DDGFREF@("BKRC",DDGFWIDB,C1,X1,X2,""))
  1. .. I H]"",$D(H(H))[0,$$OVERLAP(C2,C3,X1,X2) S H(H)=""
  1. ;
  1. ;Clear in buffer area occupied by element(s) selected
  1. ;If block on the page border, redraw the lines
  1. S L=$J("",$L(C)-$S(C3>$P(DDGFLIM,U,4):C3-$P(DDGFLIM,U,4),1:0))
  1. D WRITE^DDGLIBW(DDGFWIDB,L,C1-$P(DDGFLIM,U),C2-$P(DDGFLIM,U,2),"",1)
  1. ;
  1. I $P(@DDGFREF@("F",DDGFPG),U,3) D
  1. . I C1=$P(DDGFLIM,U)!(C1=$P(DDGFLIM,U,3)) D
  1. .. S L=$TR(L," ",$P(DDGLGRA,DDGLDEL,3))
  1. .. S:C2=$P(DDGFLIM,U,2) $E(L)=$P(DDGLGRA,DDGLDEL,$S(C1=$P(DDGFLIM,U):5,1:7))
  1. .. S:C3'<$P(DDGFLIM,U,4) $E(L,$L(L))=$P(DDGLGRA,DDGLDE,$S(C1=$P(DDGFLIM,U):6,1:8))
  1. .. D WRITE^DDGLIBW(DDGFWIDB,L,C1-$P(DDGFLIM,U),C2-$P(DDGFLIM,U,2),"G",1)
  1. . E I C2=$P(DDGFLIM,U,2) D
  1. .. D WRITE^DDGLIBW(DDGFWIDB,$P(DDGLGRA,DDGLDEL,4),C1-$P(DDGFLIM,U),C2-$P(DDGFLIM,U,2),"G",1)
  1. . E I C3'<$P(DDGFLIM,U,4) D
  1. .. D WRITE^DDGLIBW(DDGFWIDB,$P(DDGLGRA,DDGLDEL,4),C1-$P(DDGFLIM,U),$P(DDGFLIM,U,4)-$P(DDGFLIM,U,2),"G",1)
  1. ;
  1. ;Write to buffer the overlapped blocks(s)
  1. I $D(H)>1 S H="" F S H=$O(H(H)) Q:H="" D
  1. . S B1=$G(@DDGFREF@("F",DDGFPG,H)) Q:B1=""
  1. . D WRITE^DDGLIBW(DDGFWIDB,$P(B1,U,4),$P(B1,U)-$P(DDGFLIM,U),$P(B1,U,2)-$P(DDGFLIM,U,2),"",1)
  1. Q
  1. ;
  1. OVERLAP(A1,A2,B1,B2) ;Does line with X-coords A1,A2 overlap B1,B2
  1. N T
  1. I A1<B1 S T=A1,A1=B1,B1=T,T=A2,A2=B2,B2=T
  1. Q A1'<B1&(A1'>B2)!(A2'<B1&(A2'>B2))