--- capa/capa51/GUITools/common.tcl 2000/02/22 18:10:27 1.8 +++ capa/capa51/GUITools/common.tcl 2000/03/22 21:08:02 1.9 @@ -1536,13 +1536,13 @@ proc getSet { pid set followupCommand {s if { $start } { set gGetSet($num.toprocess) $pid set gGetSet($num.command) $followupCommand - foreach name [array names gGetSet {*.[alhu]*}] { unset gGetSet($name) } if { [array names gGetSet exit] == "" } { set gGetSet(exit) 0 } } if { [catch {set gCapaConfig(getSet.answers_command)}] } {parseCapaConfig getSet} set command "$gCapaConfig(getSet.answers_command) $pid {} 1 $set" foreach var [array names gCapaConfig $num.*] { unset gCapaConfig($var) } set fileId [open "|$command" "r"] +# puts "new command $num $fileId" fileevent $fileId readable "getSetLine $num $fileId" update idletasks } @@ -1554,6 +1554,7 @@ proc getSet { pid set followupCommand {s ########################################################### proc getSetQuestion { num fileId } { global gGetSet +# puts -nonewline "$num $fileId " if { $gGetSet(exit) } { fileevent $fileId readable "" catch {close $fileId} @@ -1563,11 +1564,20 @@ proc getSetQuestion { num fileId } { set aline [gets $fileId] if { $aline != "" } { switch [lindex [split $aline :] 0] { - EQES { fileevent $fileId readable "getSetLine $num $fileId" } - default { lappend gGetSet($num.$questNum.quest) $aline } + EQES { +# puts -nonewline " EQES " + fileevent $fileId readable "getSetLine $num $fileId" + } + default { +# puts -nonewline " QES TEXT " + lappend gGetSet($num.$questNum.quest) $aline + } } + } else { +# puts -nonewline " QES BLANK " } if { [eof $fileId] } { getSetEnd $fileId } +# puts "" } ########################################################### @@ -1578,6 +1588,7 @@ proc getSetQuestion { num fileId } { proc getSetLine { num fileId } { global gGetSet +# puts -nonewline "$num $fileId " if { $gGetSet(exit) } { fileevent $fileId readable "" catch {close $fileId} @@ -1587,6 +1598,8 @@ proc getSetLine { num fileId } { if { $aline != "" } { switch [lindex [split $aline :] 0] { ANS { + set list [array name gGetSet "$num.*"] +# puts -nonewline " ANS $aline :$list: " set questNum $gGetSet($num.questNum) set ans [string range $aline 4 end] set length [llength $ans] @@ -1598,22 +1611,34 @@ proc getSetLine { num fileId } { lappend gGetSet($num.$questNum.low) [lindex $ans 1] lappend gGetSet($num.$questNum.high) [lindex $ans 2] } + set list [array name gGetSet "$num.*"] +# puts -nonewline " $ans :$list: " } - DONE { set gGetSet($num.maxprob) $gGetSet($num.questNum) } + DONE { +# puts -nonewline " DONE " + set gGetSet($num.maxprob) $gGetSet($num.questNum) } ERROR { +# puts -nonewline " ERROR " fileevent $fileId readable "" displayError "Answers returned invalid message: $aline" fileevent $fileId readable "getSetLine $num $fileId" } BQES { +# puts -nonewline " BQES " incr gGetSet($num.questNum) fileevent $fileId readable "getSetQuestion $num $fileId" } - SET { set gGetSet($num.questNum) 0 } - default {} + SET { +# puts -nonewline " SET " + set gGetSet($num.questNum) 0 + } + default { # puts "What's this: $aline" } } + } else { +# puts -nonewline "BLANK" } if { [eof $fileId] } { getSetEnd $num $fileId } +# puts "" } ########################################################### @@ -1622,16 +1647,20 @@ proc getSetLine { num fileId } { ########################################################### ########################################################### proc getSetEnd { num fileId } { - global gGetSet c + global gGetSet if { [eof $fileId] } { catch {close $fileId} set command $gGetSet($num.command) +# puts [array name gGetSet "$num.*"] +# parray gGetSet foreach var [array names gGetSet "$num.*"] { set var2 [join [lrange [split $var .] 1 end] .] set array($var2) $gGetSet($var) +# puts "unset $var" unset gGetSet($var) } - eval "$command array" +# parray gGetSet + eval $command [list [array get array]] } } @@ -2023,10 +2052,10 @@ proc getTotal { stunum set } { switch -- [lindex $scores $i] { e - E { } 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - y - Y - n - N - - { - incr total_total [lindex $weights $i] + catch { incr total_total [lindex $weights $i] } } default { - incr total_total [lindex $weights $i] + catch { incr total_total [lindex $weights $i] } puts "Unknown character [lindex $scores $i]" } }