Diff for /capa/capa51/GUITools/gradesubjective.tcl between versions 1.3 and 1.7

version 1.3, 1999/11/05 19:32:17 version 1.7, 1999/12/07 19:10:47
Line 31  proc createGradeSubjWindow {} { Line 31  proc createGradeSubjWindow {} {
   
     set info [frame $gradSubj.info]      set info [frame $gradSubj.info]
     set grade [frame $gradSubj.grade]      set grade [frame $gradSubj.grade]
       set keyword [frame $gradSubj.keyword]
     set gSubj(pictFrame) [set picts [frame $gradSubj.picts -borderwidth 4 -relief groove]]      set gSubj(pictFrame) [set picts [frame $gradSubj.picts -borderwidth 4 -relief groove]]
     pack $info $grade -side top      pack $info $grade $keyword -side top
   
     set msg [frame $info.msg]      set msg [frame $info.msg]
     set id [frame $info.id]      set id [frame $info.id]
Line 52  proc createGradeSubjWindow {} { Line 53  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 88  proc createGradeSubjWindow {} { Line 89  proc createGradeSubjWindow {} {
   
     set scoreandcom [toplevel $gradSubj.scoreandcom]      set scoreandcom [toplevel $gradSubj.scoreandcom]
     wm title $scoreandcom "Control Panel"        wm title $scoreandcom "Control Panel"  
     wm protocol $gradSubj WM_DELETE_WINDOW "subjDone"      wm protocol $scoreandcom WM_DELETE_WINDOW "subjDone"
   
     set score [frame $scoreandcom.score]      set score [frame $scoreandcom.score]
     set command [frame $scoreandcom.command]      set command [frame $scoreandcom.command]
Line 116  proc createGradeSubjWindow {} { Line 117  proc createGradeSubjWindow {} {
     pack $bot.scroll       pack $bot.scroll 
     pack configure $bot.scroll -expand 0 -fill x      pack configure $bot.scroll -expand 0 -fill x
   
       set left [frame $keyword.left]
       set left2 [frame $keyword.left2]
       set right [frame $keyword.right]
       pack $left $left2 $right -side left
   
       set gSubj(keyword) [text $right.keyword -width 60 -height 5 \
       -yscrollcommand "$right.scroll set" ]
       scrollbar $right.scroll -command "$right.response yview"
       pack $gSubj(keyword) $right.scroll -side left
       pack configure $right.scroll -fill y
   
       button $left.add -command "subjAddKeyword" -text "Add"
       button $left2.addsp -command "subjAddKeywordSpelling" -text "Add Sp"
       button $left.delete -command "subjDeleteKeyword" -text "Delete"
       button $left2.see -command "subjSeeKeyword" -text "See Sp"
       pack $left.add $left2.addsp $left.delete $left2.see -side top
   
     wm geometry $gradSubj "-10+0"      wm geometry $gradSubj "-10+0"
   
     set score0 [frame $score.score0]      set score0 [frame $score.score0]
Line 143  proc createGradeSubjWindow {} { Line 161  proc createGradeSubjWindow {} {
     frame  $command2.space2 -height 30      frame  $command2.space2 -height 30
     frame  $command2.space22 -height 5      frame  $command2.space22 -height 5
     button $command1.next -text "Next" -command subjNext -width $buttonwidth      button $command1.next -text "Next" -command subjNext -width $buttonwidth
     button $command2.prev -text "Prev" -command subjPrev -width $buttonwidth      button $command1.prev -text "Prev" -command subjPrev -width $buttonwidth
     button $command1.findid -text "Find ID" -command subjFindId -width $buttonwidth      button $command1.goto -text "GoTo" -command subjGoto -width $buttonwidth
     button $command2.addid -text "Add ID" -command subjAddId -width $buttonwidth  
     button $command1.findname -text "Find Name" -command subjFindName -width $buttonwidth  
     button $command2.goto -text "GoTo" -command subjGoto -width $buttonwidth  
     button $command1.exit -text "Exit" -command subjDone -width $buttonwidth      button $command1.exit -text "Exit" -command subjDone -width $buttonwidth
       button $command2.findid -text "Find ID" -command subjFindId -width $buttonwidth
       button $command2.addid -text "Add ID" -command subjAddId -width $buttonwidth
       button $command2.findname -text "Find Name" -command subjFindName -width $buttonwidth
     checkbutton $command2.wrap -text wrap -command subjWrap -variable gSubj(wrap)      checkbutton $command2.wrap -text wrap -command subjWrap -variable gSubj(wrap)
     checkbutton $command2.pict -text pict -command subjPict -variable gSubj(pict)      checkbutton $command2.pict -text pict -command subjPict -variable gSubj(pict)
     checkbutton $command1.done -text graded -variable gSubj(donestat) -state disabled      checkbutton $command1.done -text graded -variable gSubj(donestat) -state disabled
     pack $command1.setnext $command2.set $command1.space1 $command2.space2 \      pack $command1.setnext $command2.set $command1.space1 $command2.space2 \
  $command1.next $command2.prev $command1.findid \   $command1.next $command1.prev $command2.findid \
  $command2.addid $command1.findname $command1.exit $command2.goto \   $command2.addid $command2.findname $command1.goto $command1.exit \
         $command2.wrap $command2.pict $command1.done $command2.space22          $command2.wrap $command2.pict $command1.done $command2.space22
   
     button $morebut.print -text "Print Response" -command subjPrint \      button $morebut.print -text "Print Response" -command subjPrint \
Line 207  proc subjCheckForNew {} { Line 225  proc subjCheckForNew {} {
     global gSubj      global gSubj
 }  }
   
   proc checkGSubj {} {
       global gSubj
       if {[catch {set gSubj(stunums)}]} {
    cd [file join $gSubj(dir) records set$gSubj(set) problem$gSubj(quest)]
    set gSubj(stunums) [lsort -dictionary [glob *]]
    if { [set num [lsearch $gSubj(stunums) gradingstatus]] != -1} {
       set gSubj(stunums) [lreplace $gSubj(stunums) $num $num]
    }
    cd $gSubj(dir)
       }
       if {[catch {set gSubj(current)}]} {set gSubj(current) -1}
       if {[catch {set gSubj(totalsec)}]} {set gSubj(totalsec) 0}
       if {[catch {set gSubj(seconds)}]} {set gSubj(seconds) [clock seconds]}
       if {[catch {set gSubj(togo)}]} {set gSubj(togo) [llength $gSubj(stunums)]}
       if {[catch {set gSubj(allstunum)}] || 
    [catch {set gSubj(allname)}] || 
    [catch {set gSubj(allemail)}] } {
    subjInitAllLists
       }
   }
   
 proc subjRestore {} {  proc subjRestore {} {
     global gSubj      global gSubj
     source gradingstatus      source gradingstatus
     subjCheckForNew      subjCheckForNew
     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      if { [catch {incr gSubj(current) -1}]} { set gSubj(current) -1 }
       if { $gSubj(redoalllists) } { subjInitAllLists; set gSubj(redoalllists) 0 }
       checkGSubj
       subjIndexResponse
     subjNext      subjNext
 }  }
   
Line 222  proc subjSave {} { Line 264  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
 }  }
   
 proc subjDone {} {  proc subjDone {} {
     global gSubj      global gSubj
     subjSave      if { [catch {subjSave}] } {
    displayMessage "Unable to save."
       }
     unset gSubj      unset gSubj
     destroy .gradesubjective      destroy .gradesubjective
 }  }
   
   proc subjInitAllLists {} {
       global gSubj
       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]
       }
   }
   
 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 502  proc subjPrev {} { Line 558  proc subjPrev {} {
   
 proc subjMessage { mesg {tag normal} } {  proc subjMessage { mesg {tag normal} } {
     global gSubj      global gSubj
     displayMessage $message      displayMessage $mesg
 #    $gSubj(msg) insert end "[clock format [clock seconds] -format {%I:%M:%S}] - $mesg\n" $tag  #    $gSubj(msg) insert end "[clock format [clock seconds] -format {%I:%M:%S}] - $mesg\n" $tag
 #    $gSubj(msg) see end  #    $gSubj(msg) see end
 }  }
Line 678  proc subjGetOneStudent { window path idV Line 734  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 message ""
   
       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 780  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 794  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 821  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 839  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 865  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 906  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
   }
   
   ###########################################################
   # subjAddKeyword
   ###########################################################
   ###########################################################
   ###########################################################
   proc subjAddKeyword {} {
       global gSubj gUniqueNumber
       
 }  }

Removed from v.1.3  
changed lines
  Added in v.1.7


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>