1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
######################################################################
### This function export the setup into an export file
######################################################################
proc export {filename} {
global __OUTPUT __progList __hash __language
startBusy "$__language(export,3)..."
set __OUTPUT [open $filename w]
set count [llength $__progList]
timeWindow $count $__language(export,3) "$__language(export,2)\n$filename"
foreach function $__progList {
puts $__OUTPUT $__hash
puts $__OUTPUT "\#\#\# $function"
puts $__OUTPUT $__hash
puts $__OUTPUT "PAGE $function"
export_func $function top 2 __$function ""
incrTimeWindow
}
close $__OUTPUT
destroyTimeWindow
endBusy
}
######################################################################
### This function export variables to a given function, from a given
### top. 'level' indicated the indentation level in the file
######################################################################
proc export_func {function top level prefix defaultVal} {
global __children __widgetArgs __OUTPUT
set index 0
foreach child $__children(${function}__$top) {
set type $__widgetArgs(${function}__${child}__type)
if {$type == "line" || $type == "header"} continue
set subCount [noOfVariableChildren $function $child]
if {$subCount != 1} {
set default [lrange $defaultVal $index [expr $index+ $subCount -1]]
} else {
set default [lindex $defaultVal $index]
}
incr index $subCount
if {$default == ""} {
set default $__widgetArgs(${function}__${child}__default)
}
if {!$__widgetArgs(${function}__${child}__export)} continue
switch $type {
checkbox -
entry -
int -
float -
textbox -
menu -
combobox -
label -
command {
upvar \#0 ${prefix}_$child variable
if {$variable != $default} {
puts $__OUTPUT \
"[space $level][upCase $type] $child \"[escape* $variable]\""
}
}
radio {
set entries $__widgetArgs(${function}__${child}__entries)
upvar \#0 ${prefix}_$child variable
if {[lindex $entries $variable] != $default} {
set txt [lindex $entries $variable]
puts $__OUTPUT \
"[space $level][upCase $type] $child \"[escape* $txt]\""
}
}
listbox {
upvar \#0 ${prefix}_$child variable
set list ""
foreach elm $variable {
set txt \
[lindex $__widgetArgs(${function}__${child}__entries) $elm]
lappend list [escape* $txt]
}
puts $__OUTPUT \
"[space $level][upCase $type] $child \"$list\""
}
extentry {
export_extentry $function $level $prefix $child ""
}
frame -
window {
export_func $function $child $level $prefix $default
}
fillout {
export_fillout $function $level $prefix $child
}
}
}
}
######################################################################
### This function exports an ExtenTry
######################################################################
proc export_extentry {function level prefix name default} {
global __widgetArgs __scrollBar __OUTPUT
set count [lindex $__scrollBar(${prefix}_$name) 1]
if {$count != 0} {
puts $__OUTPUT "[space $level]EXTENTRY $name"
for {set i 0} {$i < $count} {incr i} {
puts $__OUTPUT "[space $level]\{"
export_func $function $name [expr $level+2] ${prefix}_$name$i \
[lindex $default $i]
puts $__OUTPUT "[space $level]\}"
}
}
}
######################################################################
### This function export a FillOut
######################################################################
proc export_fillout {function level prefix name} {
global __fillList __OUTPUT
puts $__OUTPUT "[space $level]FILLOUT $name \{"
set last -1
incr level 2
upvar \#0 ${prefix}_$name variable
foreach filloutelm $__fillList(${prefix}_$name) {
set start [lindex $filloutelm 0]
set end [lindex $filloutelm 1]
set elmName [lindex $filloutelm 2]
set counter [lindex $filloutelm 3]
if {$last < $start-1} {
set text [string range $variable [expr $last+1] [expr $start-1]]
puts $__OUTPUT \
"[space $level]TEXT \"[escape* $text]\""
}
set last $end
if {$counter == -1} {
puts $__OUTPUT "[space $level]FILLOUTELM $elmName {}"
} else {
puts $__OUTPUT "[space $level]FILLOUTELM $elmName \{"
export_func $function $elmName [expr $level+2] \
${prefix}_${name}_$counter ""
puts $__OUTPUT "[space $level]\}"
}
}
if {$last < [string length $variable]} {
puts $__OUTPUT \
"[space $level]TEXT \"[escape* [string range $variable [expr $last+1] end]]\""
}
puts $__OUTPUT "[space [expr $level-2]]\}"
}
############################################################
# This function escapes every control chars for the
# export file
############################################################
proc escape* {string} {
global tcl_version
if {$tcl_version < 8.1} {
regsub -all {[\"{}]} $string \\\\\\0 result
} else {
regsub -all {[\\"\{\}]} $string \\\\\\0 result
}
return $result
}
|