[796] | 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 |
|
---|