1 | TMGTREE ;TMG/kst/Text tree user interface ;03/25/06
|
---|
2 | ;;1.0;TMG-LIB;**1**;09/01/05
|
---|
3 |
|
---|
4 | ;"=======================================================================
|
---|
5 | ;" API -- Public Functions.
|
---|
6 | ;"=======================================================================
|
---|
7 | ;"BrowseBy(CompArray,ByTag)
|
---|
8 | ;"ShowBy(CompArray,ByTag,aOpen,bOpen,cOpen,dSelected)
|
---|
9 |
|
---|
10 | ;"=======================================================================
|
---|
11 | ;" Private Functions.
|
---|
12 | ;"=======================================================================
|
---|
13 |
|
---|
14 |
|
---|
15 |
|
---|
16 | BrowseBy(CompArray,ByTag)
|
---|
17 | ;"Purpose: Allow a user to interact with dynamic text tree
|
---|
18 | ;" that will open and close nodes.
|
---|
19 | ;"Input: CompArray -- array to browse. Should be in this format
|
---|
20 | ;" CompArray("opening tag",a,b,c,d)
|
---|
21 | ;" ByTag -- the name to use in for "opening tag")
|
---|
22 | ;"Results: returns Batch/job number, or 0 if none selected
|
---|
23 |
|
---|
24 | new aOpen set aOpen=0
|
---|
25 | new bOpen set bOpen=0
|
---|
26 | new cOpen set cOpen=0
|
---|
27 | new dSelected set dSelected=0
|
---|
28 |
|
---|
29 | new done set done=0
|
---|
30 |
|
---|
31 | new input
|
---|
32 | new result set result=0
|
---|
33 |
|
---|
34 | for do quit:(done=1)
|
---|
35 | . set result=$$ShowBy(.CompArray,ByTag,aOpen,bOpen,cOpen,dSelected)
|
---|
36 | . if result>0 set done=1 quit
|
---|
37 | . read !,"Enter Number to Browse ([Enter] to backup, ^ to Quit): ",input:$get(DTIME,3600),!
|
---|
38 | . if input="" set input=0
|
---|
39 | . if +input>0 do
|
---|
40 | . . if aOpen=0 do
|
---|
41 | . . . set aOpen=input,bOpen=0,cOpen=0
|
---|
42 | . . else if bOpen=0 do
|
---|
43 | . . . set bOpen=input,cOpen=0
|
---|
44 | . . else if cOpen=0 set cOpen=input
|
---|
45 | . . else set dSelected=input
|
---|
46 | . else if input=0 do
|
---|
47 | . . if cOpen'=0 set cOpen=0,dSelected=0 quit
|
---|
48 | . . if bOpen'=0 set bOpen=0 quit
|
---|
49 | . . if aOpen'=0 set aOpen=0 quit
|
---|
50 | . . if aOpen=0 set input="^"
|
---|
51 | . if input="^" set done=1
|
---|
52 |
|
---|
53 | quit result
|
---|
54 |
|
---|
55 |
|
---|
56 | ShowBy(CompArray,ByTag,aOpen,bOpen,cOpen,dSelected)
|
---|
57 | ;"Purpose: Draw current state of text tree
|
---|
58 | ;"Input: CompArray -- array to browse. Should be in this format
|
---|
59 | ;" CompArray("opening tag",a,b,c,d)
|
---|
60 | ;" ByTag -- the name to use in for "opening tag")
|
---|
61 | ;"Result: if aOpen,bOpen, and cOpen,dSelected are valid values, then
|
---|
62 | ;" will return value from CompArray, i.e.
|
---|
63 | ;" CompArray("opening tag",a,b,c,d)="x" <--- will return "x"
|
---|
64 | ;" otherwise returns 0
|
---|
65 |
|
---|
66 | new a,b,c,d
|
---|
67 | new acount set acount=0
|
---|
68 | new bcount set bcount=0
|
---|
69 | new ccount set ccount=0
|
---|
70 | new dcount set dcount=0
|
---|
71 | new result set result=0
|
---|
72 |
|
---|
73 | write #,!
|
---|
74 |
|
---|
75 | set a=$order(CompArray(ByTag,""))
|
---|
76 | if a'="" for do quit:(a="")
|
---|
77 | . set acount=acount+1
|
---|
78 | . new nexta set nexta=$order(CompArray(ByTag,a))
|
---|
79 | . new Aindent
|
---|
80 | . if (aOpen=0) do
|
---|
81 | . . if acount<10 write "0"
|
---|
82 | . . write acount,". "
|
---|
83 | . else write "... "
|
---|
84 | . write a,!
|
---|
85 | . set b=$order(CompArray(ByTag,a,""))
|
---|
86 | . if (aOpen=acount)&(b'="") for do quit:(b="")
|
---|
87 | . . set bcount=bcount+1
|
---|
88 | . . new nextb set nextb=$order(CompArray(ByTag,a,b))
|
---|
89 | . . new Bindent
|
---|
90 | . . write " +--"
|
---|
91 | . . if (bOpen=0) do
|
---|
92 | . . . if bcount<10 write "0"
|
---|
93 | . . . write bcount,". "
|
---|
94 | . . else write "... "
|
---|
95 | . . write b,!
|
---|
96 | . . if nextb'="" set Aindent=" | "
|
---|
97 | . . else set Aindent=" "
|
---|
98 | . . set c=$order(CompArray(ByTag,a,b,""))
|
---|
99 | . . if (bOpen=bcount)&(c'="") for do quit:(c="")
|
---|
100 | . . . set ccount=ccount+1
|
---|
101 | . . . new nextc set nextc=$order(CompArray(ByTag,a,b,c))
|
---|
102 | . . . if nextc'="" set Bindent=" | "
|
---|
103 | . . . else set Bindent=" "
|
---|
104 | . . . write Aindent," +--"
|
---|
105 | . . . if (cOpen=0) do
|
---|
106 | . . . . if ccount<10 write "0"
|
---|
107 | . . . . write ccount,". "
|
---|
108 | . . . else write "... "
|
---|
109 | . . . write c,!
|
---|
110 | . . . set d=$order(CompArray(ByTag,a,b,c,""))
|
---|
111 | . . . if (cOpen=ccount)&(d'="") for do quit:(d="")
|
---|
112 | . . . . set dcount=dcount+1
|
---|
113 | . . . . write Aindent,Bindent," +-- "
|
---|
114 | . . . . if dcount<10 write "0"
|
---|
115 | . . . . write dcount,". "
|
---|
116 | . . . . write d,!
|
---|
117 | . . . . if dcount=dSelected set result=$get(CompArray(ByTag,a,b,c,d))
|
---|
118 | . . . . set d=$order(CompArray(ByTag,a,b,c,d))
|
---|
119 | . . . set c=nextc
|
---|
120 | . . set b=nextb
|
---|
121 | . set a=nexta
|
---|
122 |
|
---|
123 | SBDone
|
---|
124 | quit result
|
---|
125 |
|
---|
126 |
|
---|