########################################################### # manager.tcl - # Copyright Guy Albertelli II 1998 ########################################################### set gTclVer 1.0 ########################################################### # createControlWindow ########################################################### # Creates the menu window ########################################################### # Arguments: none # Returns: nothing # Globals: gWindowMenu - set to the name of Menu for the windows # menu ########################################################### proc createControlWindow {} { global gWindowMenu gCapaConfig after 500 { dateUpdate } after 1000 { cleanWindowList } set gCapaConfig(Printer_selected) "0" set gCapaConfig(lprOneSided_command) "lpr " set gCapaConfig(lprTwoSided_command) "" set gCapaConfig(printer_option) "" wm withdraw . set menuFrame [menu .main -tearoff 0 -type tearoff -font 8x13bold \ -disabledforeground grey85 ] wm title $menuFrame "Manager" $menuFrame post 0 0 wm geometry $menuFrame "+0+20" $menuFrame add command -label "Manager" -foreground grey85 -background \ black -state disabled $menuFrame add command -label "Info..." -command { createInfoWindow } $menuFrame add cascade -label "Actions" -menu $menuFrame.actions $menuFrame add cascade -label "Windows" -menu $menuFrame.windows $menuFrame add cascade -label "Print" -menu $menuFrame.print $menuFrame add command -label "Remap..." -command { createRemapWindow } $menuFrame add command -label "Quit" -command { quit } set action [menu $menuFrame.actions -tearoff 1 -font 8x13bold] set windows [menu $menuFrame.windows -tearoff 1 -font 8x13bold] set print [menu $menuFrame.print -tearoff 1 -font 8x13bold] set score [menu $menuFrame.scoring -tearoff 1 -font 8x13bold] set gWindowMenu $windows $action add command -label "Manage Classl" -command \ { specifyClass "Pick classl file" "Classl" "classl" createClasslEditor } # $action add command -label "Edit capa.config" -command \ { specifyClass "Pick a capa.config file" "CAPA configuration" \ "capa.config" editCapaConfig } $action add cascade -label "Scoring" -menu $menuFrame.scoring $action add command -label "Generate Stats" -command \ { specifyClass "Select the capa.config in the class directory" \ "CAPA configuration" "capa.config" runCapaTools } $action add command -label "Send Class Email" -command \ { specifyClass "Select the capa.config in the class directory" \ "CAPA configuration" "capa.config" runGroupEmail } $action add command -label "Randomize Seating File" \ -command { RSstart [incr gUniqueNumber] } $score add command -label "Run Scorer" -command \ { specifyClass "Pick set.qz file" "QZ file" "*.qz" runScorer } $score add command -label "ReScore a scorer.output" -command \ { specifyClass "Pick scorer.output file" "scorer.output file" \ "scorer.output.*" reScore } $print add command -label "Print Assignment" -command \ { specifyClass "Select the capa.config in the class directory" \ "CAPA configuration" "capa.config" printAssignment } bind $menuFrame { quit 0 } } ########################################################### # createInfoWindow ########################################################### # creates the Information window ########################################################### # Arguments: None # Returns: Nothing # Globals: gDate - the variable containg the current date # gWindowMenu - used to register the new window in the # windows menu # gVer - Stores the current version of Grader (set in # C init code ########################################################### proc createInfoWindow {} { global gDate gWindowMenu gVer gTclVer gCmd gCompileDate if { [winfo exists .about] } { capaRaise .about return } set about [toplevel .about] $gWindowMenu add command -label "About" -command "capaRaise $about" wm title $about "About" label $about.l1 -font 12x24 -text "Manager $gVer" -pady 20 label $about.l4 -font 8x13 -text "Manager.tcl Version $gTclVer" -pady 20 label $about.l6 -font 8x13 -text "$gCompileDate" message $about.l2 -font 8x13 -text "Code by: Y. Tsai, G. Albertelli II Copyright Michigan State University Board of Trustees, 1992-1999, No Unauthorized Commercial Use" \ -pady 20 -aspect 300 label $about.l3 -font 8x13 -textvariable gDate label $about.l5 -font 8x13 -textvariable gCmd button $about.close -text "Close" -command "destroy $about removeWindowEntry About" pack $about.l1 $about.l4 $about.l6 $about.l2 $about.l3 $about.l5 \ $about.close -side top Centre_Dialog $about default } ########################################################### # quit ########################################################### # called when the quit option is selected on the menu, unmaps # all keys. ########################################################### # Arguments: None # Returns: Nothing # Globals: None ########################################################### proc quit { { ask 1} } { if { $ask && [makeSure "Are you sure you wish to quit?"] == "Cancel" } { return } unmapAllKeys exit } ########################################################### # specifyClass ########################################################### # runs tk_getOpenFile and creates the class window if a directory is chosen ########################################################### # Arguments: None # Returns: Nothing # Globals: gClassDir - remembers the directory the class is in ########################################################### proc specifyClass { title typename type followupCommand } { # set var [tk_getOpenFile] set var [tk_getOpenFile -title $title -filetypes \ [list [list $typename $type ] { {All Files} {"*"} } ] ] if { $var == "" } { return } $followupCommand $var } ########################################################### # dateUpdate ########################################################### # updates the gDate var, and register to run again in .8 seconds ########################################################### # Arguments: None # Returns: Nothing # Globals: gDate - gets set to the current time and date ########################################################### proc dateUpdate { } { global gDate set gDate [clock format [clock seconds]] after 800 dateUpdate } ########################################################### ########################################################### ########################################################### ########################################################### proc askToSave { msg cmd } { global gChanged gPrompt set dialog [toplevel .askToSavePrompt -borderwidth 10] wm title $dialog "Do you wish to Save" wm geo $dialog "+200+200" message $dialog.msg -text $msg -aspect 800 set gPrompt(result) "" set buttonFrame [frame $dialog.buttons -bd 10] pack $dialog.msg $buttonFrame -side top -fill x bind $dialog { set gPrompt(result) Cancel set gPrompt(yes) 0 } button $buttonFrame.yes -text Yes -underline 0 -command { set gPrompt(yes) 1 } button $buttonFrame.no -text No -underline 0 -command { set gPrompt(yes) 0 } button $buttonFrame.cancel -text Cancel -underline 0 -command { set gPrompt(yes) 0 set gPrompt(result) Cancel } pack $buttonFrame.yes $buttonFrame.no $buttonFrame.cancel -side left bind $dialog break Centre_Dialog $dialog default update focus $dialog capaRaise $dialog capaGrab $dialog vwait gPrompt(yes) capaGrab release $dialog bind $dialog "" destroy $dialog if {$gPrompt(yes)} { eval $cmd } else { return $gPrompt(result) } } ########################################################### # printAssignment ########################################################### ########################################################### ########################################################### proc printAssignment { classconfig } { global gCT gFile gUniqueNumber gCapaConfig set num [incr gUniqueNumber] set gFile($num) [file dirname $classconfig] getOneStudent "" $gFile($num) s_id s_name if { $s_id == "" } { return } set s_id [string toupper $s_id] if { "" == [set setlist [getSetRange "" $gFile($num)]] } { return } set cmdnum [incr gUniqueNumber] if { "Yes" != [makeSure "Are you sure you want to print set(s) [linsert $setlist 1 to] for student: $s_name"] } { return } displayStatus "Running qzparse" message $num parseCapaConfig $num $gFile($num) set command "$gCapaConfig($num.qzparse_command) -c $gFile($num) \ -set [lindex $setlist 0]:[lindex $setlist 1] -stu $s_id" eval "exec $command" set tex_file [file join $gFile($num) TeX $s_id.tex] set command "$gCapaConfig($num.latex_command) $tex_file" removeStatus $num if { "Yes" != [makeSure "Planning on running LaTeX, Continue?"] } { return } displayStatus "Running LaTeX" message $num set directory [pwd] cd [file join $gFile($num) TeX] eval "exec $command" cd $directory set dvi_file [file join $gFile($num) TeX $s_id.dvi] set ps_file [file join $gFile($num) TeX $s_id.ps] set command "$gCapaConfig($num.dvips_command) $dvi_file -o $ps_file >& /dev/null" removeStatus $num if { "Yes" != [makeSure "Planning on running dvips, Continue?"] } { return } displayStatus "Running dvips" message $num eval "exec $command" removeStatus $num if { "Cancel" == [set lprcmd [getLprCommand $ps_file $num]] } { return } if { [catch { eval "exec $lprcmd" } errors ] } { displayError "An error occurred while printing: $errors" } foreach name [array names gCapaConfig "$num.*"] { unset gCapaConfig($name) } } source common.tcl source utils.tcl source classl.tcl source scorer.tcl source scorer.anon.tcl source scorer.errors.tcl source capastats.tcl source seating.tcl source groupemail.tcl set gUniqueNumber 0 set gMaxSet 99 set gMaxTries 99 option add *font 8x13bold option add selectbackground #b4b4ff createControlWindow 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.