diff --git a/site_ansto/instrument/gumxml.tcl b/site_ansto/instrument/gumxml.tcl index 47e04260..8b430abd 100644 --- a/site_ansto/instrument/gumxml.tcl +++ b/site_ansto/instrument/gumxml.tcl @@ -46,11 +46,11 @@ proc encode {str} { } proc make_nodes {path result indent} { -set nodename [file tail $path]; -set type [getdataType $path] -set prefix [string repeat " " $indent] -set newIndent [expr $indent + 2] -set control "true" + set nodename [file tail $path]; + set type [getdataType $path] + set prefix [string repeat " " $indent] + set newIndent [expr $indent + 2] + set control "true" foreach {key rvalue} [string map {= " "} [hlistprop $path tcl]] { set value [encode $rvalue] if {[string compare -nocase $key "control"] == 0} { @@ -79,10 +79,10 @@ proc property_elements {path indent} { if {[string compare -nocase $key "control"] == 0} {continue} lappend proplist "$prefix\n" if {[string compare -nocase $key "help"] == 0} { - lappend proplist "$prefix$prefix$value\n" + lappend proplist "$prefix $value\n" } else { foreach v [split $value ,] { - lappend proplist "$prefix$prefix$v\n" + lappend proplist "$prefix $v\n" } } lappend proplist "$prefix\n" @@ -105,7 +105,51 @@ proc getgumtreexml {path} { append result "\n" } +proc make_value_nodes {path result indent} { + set nodename [file tail $path]; + set type [getdataType $path] + set prefix [string repeat " " $indent] + set newIndent [expr $indent + 2] + + set control "true" + if {[hpropexists $path "control"]} { + set value [encode [hgetpropval $path "control"]] + if {[string compare -nocase $value "false"] == 0} { + set control "false" + } + } + + if {"$control" == "true"} { + append result "$prefix\n" + if {[string compare -nocase $type "none"] != 0} { + set value [encode [hval $path]] + append result "$prefix $value\n" + } + foreach x [hlist $path] { + set result [make_value_nodes [string map {// /} "$path/$x"] $result $newIndent] + } + append result "$prefix\n" + } + return $result +} + +proc getgumtreexmlvalues {path} { + append result "\n" + append result "\n" + + if {[string compare $path "/" ] == 0} { + foreach n [hlist $path] { + set result [make_value_nodes $n $result 2] + } + } else { + set result [make_value_nodes $path $result 2] + } + + append result "\n" +} + if {[info exists guminit] == 0} { set guminit 1 Publish getgumtreexml Spy + Publish getgumtreexmlvalues Spy }