1 | VALM ;MJK/ALB - List Manager ;05/13/2003 12:09
|
---|
2 | ;;1.0;List Manager;**1,5,6,7**;Aug 13, 1993
|
---|
3 | EN(NAME,PARMS) ; -- main entry point
|
---|
4 | ; input: NAME := free text name of list template or routine call
|
---|
5 | ; PARMS := parameter list
|
---|
6 | I $G(PARMS)["T" K VALMEVL ; kill if 'T'op level
|
---|
7 | D INIT^VALM0(.NAME,$G(PARMS)) G ENQ:$D(VALMQUIT)
|
---|
8 | ; -- build list of items
|
---|
9 | I $G(^TMP("VALM DATA",$J,VALMEVL,"INIT"))]"" X ^("INIT") G ENQ:$D(VALMQUIT)
|
---|
10 | ; -- start event loop
|
---|
11 | S VALMBCK="R" D ASK
|
---|
12 | X:$G(^TMP("VALM DATA",$J,VALMEVL,"FNL"))]"" ^("FNL")
|
---|
13 | ENQ D POP^VALM0
|
---|
14 | Q
|
---|
15 | ASK ; -- event loop
|
---|
16 | S X=VALM("PROTOCOL") D XQORM,EN^XQOR
|
---|
17 | I $D(VALMBCK),VALMBCK'="Q" G ASK
|
---|
18 | K XQORM,DTOUT,DIROUT,DUOUT
|
---|
19 | Q
|
---|
20 | COL ; -- set up column dd array
|
---|
21 | K VALMDDF
|
---|
22 | S I=0 F S I=$O(^SD(409.61,VALM("IFN"),"COL",I)) Q:'I I $D(^(I,0)) S VALMDDF($P(^(0),U))=^(0)
|
---|
23 | Q
|
---|
24 | CAPTION() ; -- set up caption line of header
|
---|
25 | N X,COL,FLD,CHR
|
---|
26 | S CHR=$S(VALMCC:" ",1:"-")
|
---|
27 | S $P(X,CHR,VALM("RM")+1)=""
|
---|
28 | S COL="" F S COL=$O(VALMDDF(COL)) Q:COL="" S FLD=VALMDDF(COL) D
|
---|
29 | . S X=$$SETSTR^VALM1($P(FLD,U,4),X,+$P(FLD,U,2),$S($L($P(FLD,U,4))<$P(FLD,U,3):$L($P(FLD,U,4)),1:+$P(FLD,U,3)))
|
---|
30 | Q X
|
---|
31 | CHGCAP(FLD,LABEL) ; -- change label on caption
|
---|
32 | ; input: FLD := name of field
|
---|
33 | ; LABEL := text for column header
|
---|
34 | S $P(VALMDDF(FLD),U,4)=LABEL,VALMCAP=$$CAPTION
|
---|
35 | Q
|
---|
36 | REFRESH ; -- refresh display
|
---|
37 | S VALMPGE=$$PAGE^VALM4(VALMBG,VALM("LINES"))
|
---|
38 | S X=0 X ^%ZOSF("RM")
|
---|
39 | D HDR:$G(VALMBCK)'["P",TBAR,LIST,LBAR
|
---|
40 | S VALMBCK=""
|
---|
41 | Q
|
---|
42 | HDR ; -- prt/display header
|
---|
43 | N X,I
|
---|
44 | I '$D(VALMHDR) X:$G(VALM("HDR"))]"" VALM("HDR")
|
---|
45 | ; -- prt hdr line
|
---|
46 | W:'$D(VALMPG1) @IOF K VALMPG1
|
---|
47 | W:VALMCC $C(13)_IOUON_$C(13)_IOINHI_$C(13) ; -- turn on undln/hi
|
---|
48 | I $E(IOST,1,2)="C-" D IOXY^VALM4(0,0) ; -- position cursor
|
---|
49 | W $E(VALM("TITLE"),1,30) ; -- prt title
|
---|
50 | W:VALMCC IOINORM,IOUON ; -- turn off hi
|
---|
51 | W $J("",30-$L(VALM("TITLE"))) ; -- fill in w/blanks
|
---|
52 | I $E(IOST,1,2)="C-" W $C(13) D IOXY^VALM4(30,0) ; -- position cursor
|
---|
53 | W $J("",((VALMWD-80)/2)),$$HTE^XLFDT($H,1),$J("",10+((VALMWD-80)/2)),"Page: ",$J(VALMPGE,4)," of ",$J($$PAGE^VALM4(VALMCNT,VALM("LINES")),4)_$S($D(VALMORE):"+",1:" ") ; -- prt rest of hdr
|
---|
54 | W:VALMCC IOUOFF I $E(IOST,1,2)="C-" D IOXY^VALM4(0,0) ; -- turn off undln
|
---|
55 | F I=1:1:VALM("TM")-3 W !,$S('$D(VALMHDR(I)):"",$L(VALMHDR(I))>(VALMWD-1):$$EXTRACT^VALM4($G(VALMHDR(I))),1:VALMHDR(I)) ; -- prt hdr
|
---|
56 | Q
|
---|
57 | TBAR ; -- print caption/top bar
|
---|
58 | N X
|
---|
59 | D CRT(0,VALM("TM")-3)
|
---|
60 | S VALMUP=(VALMBG>1),VALMCAP=$S(VALMUP:"+",VALMCC:" ",1:"-")_$E(VALMCAP,2,VALM("RM"))
|
---|
61 | S X=$E(VALMCAP,1,VALM("FIXED"))_$E(VALMCAP,VALMLFT,VALMLFT+VALMWD-1-VALM("FIXED"))
|
---|
62 | I VALM("TM")>2 D
|
---|
63 | . S:VALMCC X=IOUON_$C(13)_X_$C(13)_IOUOFF_$C(13)
|
---|
64 | . W !,X
|
---|
65 | Q
|
---|
66 | LIST ; -- list items
|
---|
67 | N I,LN,DY,DX
|
---|
68 | S DY=0
|
---|
69 | I $E(IOST,1,2)="C-" W ! S DX=0,DY=VALM("TM")-2 X IOXY
|
---|
70 | S I=VALMBG,VALMLST=I+VALM("LINES")-1 S:VALMLST>VALMCNT VALMLST=VALMCNT
|
---|
71 | F LN=1:1:VALM("LINES") D WRITE^VALM4(I,1,1,DY+LN) S I=I+1
|
---|
72 | Q
|
---|
73 | LBAR ; -- print low bar
|
---|
74 | N CHR,X
|
---|
75 | D CRT(0,VALM("BM")-1)
|
---|
76 | S CHR=$S(VALMCC:" ",1:"-")
|
---|
77 | K X S $P(X,CHR,VALMWD+1)=""
|
---|
78 | S X=$E(X,1,10)_$E($E($S($G(VALMSG)="":$$MSG(),1:VALMSG),1,50)_$E(X,11,75),1,65)_$E(X,76,VALMWD) K VALMSG
|
---|
79 | S VALMDN=(VALMLST<VALMCNT)
|
---|
80 | S X=$S(VALMDN:"+",1:CHR)_CHR_$S(VALMLFT>(VALM("FIXED")+1):"<<<",1:CHR_CHR_CHR)_$E(X,6,VALMWD-3)_$S((VALMLFT+(VALMWD-VALM("FIXED")))<VALM("RM"):">>>",1:CHR_CHR_CHR)
|
---|
81 | S:VALMCC X=$C(13)_IORVON_$C(13)_X_$C(13)_IORVOFF_$C(13)
|
---|
82 | W !,X
|
---|
83 | I $E(IOST,1,2)="C-" W !
|
---|
84 | Q
|
---|
85 | MSG() ;
|
---|
86 | Q "Enter ?? for more actions"
|
---|
87 | CRT(DX,DY) ;
|
---|
88 | I DX'<0,DY'<0,$E(IOST,1,2)="C-" W $C(13) D IOXY^VALM4(.DX,.DY)
|
---|
89 | Q
|
---|
90 | SHOW ; -- show items to user / main call back
|
---|
91 | W VALMCOFF
|
---|
92 | N DX,DY
|
---|
93 | S:'$D(VALMBG) VALMBG=1
|
---|
94 | S:'$D(VALMLFT) VALMLFT=VALM("FIXED")+1
|
---|
95 | S VALMPGE=$$PAGE^VALM4(VALMBG,VALM("LINES"))
|
---|
96 | I $G(VALMBCK)="R" D REFRESH
|
---|
97 | I $D(VALMSG) D MSG^VALM10(VALMSG) K VALMSG
|
---|
98 | I '$D(XQORM("B")),VALM("DEFS") S XQORM("B")=$S(VALMLST<VALMCNT:"Next Screen",1:"Quit")
|
---|
99 | I VALMCC D RESET^VALM4
|
---|
100 | S DX=0,DY=VALM("BM")-$S(VALM("TYPE")=2:0,1:VALMMENU) X IOXY
|
---|
101 | I VALMMENU D
|
---|
102 | . S X="?" D DISP^XQORM1
|
---|
103 | . W:VALMCC IOEDEOP
|
---|
104 | W VALMCON
|
---|
105 | D XQORM,KEYS K VALMBCK,VALMDY
|
---|
106 | Q
|
---|
107 | WP1(VALMREF) ; -- quick setup
|
---|
108 | S VALMCNT=+$P(@VALMREF@(0),U,4)
|
---|
109 | S VALM("ARRAY")=VALMREF
|
---|
110 | S:$D(VALMWPTL) VALM("TITLE")=VALMWPTL
|
---|
111 | Q
|
---|
112 | WP(VALMREF,VALMWPTL) ; -- quick entry to List Manager (c)
|
---|
113 | D EN("WP1^VALM(VALMREF)")
|
---|
114 | Q
|
---|
115 | XQORM ; -- set XQOR init vars
|
---|
116 | S XQORM(0)=VALM("MAX")_"AR\"
|
---|
117 | S XQORM("??")="D HELP^VALM2"
|
---|
118 | K DTOUT,DIROUT,DUOUT
|
---|
119 | Q
|
---|
120 | KEYS ; -- set XQOR auto-protocols
|
---|
121 | N I S I=0
|
---|
122 | F S I=$O(VALMKEY(I)) Q:'I S X=VALMKEY(I) S:$P(X,U,2)]"" XQORM("KEY",$P(X,U,2))=+X_"^1"
|
---|
123 | S XQORM("XLATE","LEFT")="<=1",XQORM("XLATE","RIGHT")=">=1"
|
---|
124 | S XQORM("XLATE","FIND")="SE",XQORM("XLATE","HELP")="??"
|
---|
125 | S XQORM("XLATE","DOWN")="DN",XQORM("XLATE","UP")="UP"
|
---|
126 | Q
|
---|