version 1.3, 1999/11/05 19:32:17
|
version 1.4, 1999/11/18 17:55:24
|
Line 52 proc createGradeSubjWindow {} {
|
Line 52 proc createGradeSubjWindow {} {
|
|
|
set gSubj(responseList) [listbox $msglist.list -width 40 -height 5 \ |
set gSubj(responseList) [listbox $msglist.list -width 40 -height 5 \ |
-yscrollcommand "$msglist.scroll set"] |
-yscrollcommand "$msglist.scroll set"] |
scrollbar $msglist.scroll -command "$msglist.text yview" |
scrollbar $msglist.scroll -command "$msglist.list yview" |
pack $gSubj(responseList) $msglist.scroll -side left |
pack $gSubj(responseList) $msglist.scroll -side left |
pack configure $msglist.scroll -fill y |
pack configure $msglist.scroll -fill y |
|
|
Line 214 proc subjRestore {} {
|
Line 214 proc subjRestore {} {
|
set gSubj(seconds) [expr {[clock seconds] - $gSubj(sec)}] |
set gSubj(seconds) [expr {[clock seconds] - $gSubj(sec)}] |
cd $gSubj(dir) |
cd $gSubj(dir) |
incr gSubj(current) -1 |
incr gSubj(current) -1 |
|
if { $gSubj(redoalllists) } { subjInitAllLists; set gSubj(redoalllists) 0 } |
|
subjIndexResponse |
subjNext |
subjNext |
} |
} |
|
|
Line 222 proc subjSave {} {
|
Line 224 proc subjSave {} {
|
set file [file join $gSubj(dir) records set$gSubj(set) \ |
set file [file join $gSubj(dir) records set$gSubj(set) \ |
problem$gSubj(quest) gradingstatus] |
problem$gSubj(quest) gradingstatus] |
set fileId [open $file w] |
set fileId [open $file w] |
puts $fileId "array set gSubj \"[array get gSubj]\"" |
puts $fileId "array set gSubj \{[array get gSubj]\}" |
close $fileId |
close $fileId |
} |
} |
|
|
Line 233 proc subjDone {} {
|
Line 235 proc subjDone {} {
|
destroy .gradesubjective |
destroy .gradesubjective |
} |
} |
|
|
|
proc subjInitAllLists {} { |
|
global gSubj |
|
puts "doing all lists" |
|
set i 0 |
|
catch {unset gSubj(allstunum)} |
|
catch {unset gSubj(allname)} |
|
catch {unset gSubj(allemail)} |
|
set fileId [open classl r] |
|
while { 1 } { |
|
incr i |
|
set aline [gets $fileId] |
|
if { [eof $fileId]} {break} |
|
lappend gSubj(allstunum) [string toupper [string range $aline 14 22]] |
|
#lappend gSubj(allname) [string toupper [string range $aline 24 59]] |
|
lappend gSubj(allname) [string range $aline 24 59] |
|
lappend gSubj(allemail) [string range $aline 60 99] |
|
} |
|
puts "did $i lines" |
|
} |
|
|
proc subjInit {} { |
proc subjInit {} { |
global gSubj |
global gSubj |
|
|
set dir [file join $gSubj(dir) records set$gSubj(set) problem$gSubj(quest)] |
set dir [file join $gSubj(dir) records set$gSubj(set) problem$gSubj(quest)] |
cd $dir |
cd $dir |
|
set gSubj(redoalllists) 0 |
if { [file exists gradingstatus] } { subjRestore } else { |
if { [file exists gradingstatus] } { subjRestore } else { |
set gSubj(stunums) [lsort -dictionary [glob *]] |
set gSubj(stunums) [lsort -dictionary [glob *]] |
cd $gSubj(dir) |
cd $gSubj(dir) |
set gSubj(current) -1 |
set gSubj(current) -1 |
set gSubj(totalsec) 0 |
set gSubj(totalsec) 0 |
set gSubj(seconds) [clock seconds] |
set gSubj(seconds) [clock seconds] |
set fileId [open classl r] |
subjInitAllLists |
while { 1 } { |
|
set aline [gets $fileId] |
|
if { [eof $fileId]} {break} |
|
lappend gSubj(allstunum) [string toupper [string range $aline 14 22]] |
|
# lappend gSubj(allname) [string toupper [string range $aline 24 59]] |
|
lappend gSubj(allname) [string range $aline 24 59] |
|
} |
|
set gSubj(togo) [llength $gSubj(stunums)] |
set gSubj(togo) [llength $gSubj(stunums)] |
subjNext |
subjNext |
} |
} |
Line 678 proc subjGetOneStudent { window path idV
|
Line 694 proc subjGetOneStudent { window path idV
|
########################################################### |
########################################################### |
proc subjSendResponse {} { |
proc subjSendResponse {} { |
global gSubj |
global gSubj |
|
|
|
if { "" == [set which [$gSubj(responseList) curselection]]} { |
|
displayMessage "Please select a message to send." |
|
return |
|
} |
|
incr which |
|
|
|
set stuList [$gSubj(idlist) get 0 end] |
|
foreach stu $stuList { |
|
set stu [lindex $stu 0] |
|
set index [lsearch $gSubj(allstunum) $stu] |
|
set name [lindex $gSubj(allname) $index] |
|
set email [lindex $gSubj(allemail) $index] |
|
puts "$name:[split $name ,]:[lindex [split $name ,] 1]:[lindex [lindex [split $name ,] 1] 0]:$index:$stu" |
|
puts [lsearch $gSubj(allemail) albertel@pilot.msu.edu] |
|
set first_name [lindex [lindex [split $name ,] 1] 0] |
|
set last_name [lindex [split $name , ] 0] |
|
set score $gSubj(score) |
|
regsub -all -- \\\$last_name $gSubj(response.$which) $last_name message |
|
regsub -all -- \\\$first_name $message $first_name message |
|
regsub -all -- \\\$score $message $score message |
|
# set message [subst -nobackslashes -nocommands $gSubj(response.$which)] |
|
if { [regexp -- (^Subject:\[^\n\]*)(\n)(.*) $message matchvar subjline newline messagebody] } { |
|
set message "$subjline Class [file tail $gSubj(dir)], Set $gSubj(set), Question $gSubj(quest) \n$messagebody" |
|
} else { |
|
set message "Subject: Class [file tail $gSubj(dir)], Set $gSubj(set), Question $gSubj(quest) \n$message" |
|
} |
|
displayMessage "$message sent to $email" |
|
exec echo $message | mail $email |
|
} |
} |
} |
|
|
########################################################### |
########################################################### |
Line 692 proc subjIndexResponse {} {
|
Line 738 proc subjIndexResponse {} {
|
|
|
set i 0 |
set i 0 |
foreach element [lsort -dictionary [array names gSubj "response.*"]] { |
foreach element [lsort -dictionary [array names gSubj "response.*"]] { |
regsub -all -- "\n\r\t" [string range $gSubj($element) 0 30] " " head |
regsub -all -- "\[\n\r\t\]+" [string range $gSubj($element) 0 37] " " head |
$gSubj(responseList) insert end "[incr i]. $head" |
$gSubj(responseList) insert end "[incr i].$head" |
} |
} |
} |
} |
|
|
Line 706 proc subjSaveResponse {} {
|
Line 752 proc subjSaveResponse {} {
|
global gSubj |
global gSubj |
|
|
set num [incr gSubj(numresponse)] |
set num [incr gSubj(numresponse)] |
set gSubj(response.$num) [$gSubj(responseEdit) get 0.0 end] |
set gSubj(response.$num) [$gSubj(responseNew) get 0.0 end-1c] |
destroy [winfo toplevel $gSubj(responseEdit)] |
destroy [winfo toplevel $gSubj(responseNew)] |
subjIndexResponse |
subjIndexResponse |
|
$gSubj(responseList) selection set end |
|
$gSubj(responseList) see end |
} |
} |
|
|
########################################################### |
########################################################### |
Line 731 proc subjNewResponse {} {
|
Line 779 proc subjNewResponse {} {
|
set buttonFrame [frame $response.button] |
set buttonFrame [frame $response.button] |
pack $textFrame $buttonFrame |
pack $textFrame $buttonFrame |
|
|
set gSubj(responseEdit) [text $textFrame.text -yscrollcommand \ |
set gSubj(responseNew) [text $textFrame.text -yscrollcommand \ |
"$textFrame.scroll set" -wrap char -height 15] |
"$textFrame.scroll set" -wrap char -height 15] |
scrollbar $textFrame.scroll -command "$textFrame.text yview" |
scrollbar $textFrame.scroll -command "$textFrame.text yview" |
pack $textFrame.text $textFrame.scroll -side left -expand 1 |
pack $textFrame.text $textFrame.scroll -side left -expand 1 |
Line 749 proc subjNewResponse {} {
|
Line 797 proc subjNewResponse {} {
|
########################################################### |
########################################################### |
proc subjDeleteResponse {} { |
proc subjDeleteResponse {} { |
global gSubj |
global gSubj |
|
if { [winfo exists .editresponse] } { |
|
displayMessage "Please finish with editing the response, before deleting responses." |
|
return |
|
} |
|
if { "" == [set which [$gSubj(responseList) curselection]]} { return } |
|
incr which |
|
if { [catch {unset gSubj(response.$which)}] } { |
|
puts [array names gSubj response.*] |
|
return |
|
} |
|
for {set i [expr $which + 1]} { [info exists gSubj(response.$i)] } {incr i} { |
|
set j [expr $i - 1] |
|
set gSubj(response.$j) $gSubj(response.$i) |
|
unset gSubj(response.$i) |
|
} |
|
set gSubj(numresponse) [expr $i - 2] |
|
subjIndexResponse |
|
$gSubj(responseList) see [incr which -2] |
} |
} |
|
|
########################################################### |
########################################################### |
Line 757 proc subjDeleteResponse {} {
|
Line 823 proc subjDeleteResponse {} {
|
########################################################### |
########################################################### |
########################################################### |
########################################################### |
proc subjEditResponse {} { |
proc subjEditResponse {} { |
global gSubj |
global gSubj gWindowMenu |
|
|
|
if { [winfo exists .editresponse] } { capaRaise .editresponse ; return } |
|
if { "" == [set which [$gSubj(responseList) curselection]]} { return } |
|
incr which |
|
|
|
set response [toplevel .editresponse ] |
|
$gWindowMenu add command -label "EditingResponse" -command "capaRaise $response" |
|
wm title $response "Editing a Response" |
|
|
|
set textFrame [frame $response.text] |
|
set buttonFrame [frame $response.button] |
|
pack $textFrame $buttonFrame |
|
|
|
set gSubj(responseEdit) [text $textFrame.text -yscrollcommand \ |
|
"$textFrame.scroll set" -wrap char -height 15] |
|
scrollbar $textFrame.scroll -command "$textFrame.text yview" |
|
pack $textFrame.text $textFrame.scroll -side left -expand 1 |
|
pack configure $textFrame.scroll -fill y |
|
$gSubj(responseEdit) insert 0.0 $gSubj(response.$which) |
|
|
|
set gSubj(editresponsedone) 0 |
|
button $buttonFrame.save -text Save -command "set gSubj(editresponsedone) 1" |
|
button $buttonFrame.forget -text Cancel -command "set gSubj(editresponsedone) 0" |
|
pack $buttonFrame.save $buttonFrame.forget -side left |
|
vwait gSubj(editresponsedone) |
|
if { $gSubj(editresponsedone) } { |
|
set gSubj(response.$which) [$gSubj(responseEdit) get 0.0 end-1c] |
|
subjIndexResponse |
|
$gSubj(responseList) selection set $which |
|
$gSubj(responseList) see $which |
|
} |
|
destroy $response |
} |
} |
|
|
########################################################### |
########################################################### |
Line 766 proc subjEditResponse {} {
|
Line 864 proc subjEditResponse {} {
|
########################################################### |
########################################################### |
########################################################### |
########################################################### |
proc subjViewResponse {} { |
proc subjViewResponse {} { |
global gSubj |
global gSubj gUniqueNumber gWindowMenu |
|
|
|
if { "" == [set which [$gSubj(responseList) curselection]]} { return } |
|
incr which |
|
set num [incr gUniqueNumber] |
|
|
|
set response [toplevel .viewresponse$num ] |
|
$gWindowMenu add command -label "ViewingResponse $which" \ |
|
-command "capaRaise $response" |
|
wm title $response "Viewing Response $which" |
|
|
|
set textFrame [frame $response.text] |
|
set buttonFrame [frame $response.button] |
|
pack $textFrame $buttonFrame |
|
|
|
text $textFrame.text -yscrollcommand "$textFrame.scroll set" -wrap char -height 15 |
|
scrollbar $textFrame.scroll -command "$textFrame.text yview" |
|
pack $textFrame.text $textFrame.scroll -side left -expand 1 |
|
pack configure $textFrame.scroll -fill y |
|
$textFrame.text insert 0.0 $gSubj(response.$which) |
|
$textFrame.text configure -state disabled |
|
|
|
button $buttonFrame.forget -text Dismiss -command "destroy $response" |
|
pack $buttonFrame.forget -side left |
} |
} |