Annotation of capa/capa51/GUITools/manager.tcl, revision 1.1
1.1 ! albertel 1: ###########################################################
! 2: # manager.tcl -
! 3: # Copyright Guy Albertelli II 1998
! 4: ###########################################################
! 5: set gTclVer 1.0
! 6:
! 7: ###########################################################
! 8: # createControlWindow
! 9: ###########################################################
! 10: # Creates the menu window
! 11: ###########################################################
! 12: # Arguments: none
! 13: # Returns: nothing
! 14: # Globals: gWindowMenu - set to the name of Menu for the windows
! 15: # menu
! 16: ###########################################################
! 17: proc createControlWindow {} {
! 18: global gWindowMenu gCapaConfig
! 19:
! 20: after 500 { dateUpdate }
! 21: after 1000 { cleanWindowList }
! 22:
! 23: set gCapaConfig(Printer_selected) "0"
! 24: set gCapaConfig(lprOneSided_command) "lpr "
! 25: set gCapaConfig(lprTwoSided_command) ""
! 26: set gCapaConfig(printer_option) ""
! 27:
! 28: wm withdraw .
! 29:
! 30: set menuFrame [menu .main -tearoff 0 -type tearoff -font 8x13bold \
! 31: -disabledforeground grey85 ]
! 32:
! 33: wm title $menuFrame "Manager"
! 34:
! 35: $menuFrame post 0 0
! 36:
! 37: wm geometry $menuFrame "+0+20"
! 38: $menuFrame add command -label "Manager" -foreground grey85 -background \
! 39: black -state disabled
! 40: $menuFrame add command -label "Info..." -command { createInfoWindow }
! 41: $menuFrame add cascade -label "Actions" -menu $menuFrame.actions
! 42: $menuFrame add cascade -label "Windows" -menu $menuFrame.windows
! 43: $menuFrame add cascade -label "Print" -menu $menuFrame.print
! 44: $menuFrame add command -label "Remap..." -command { createRemapWindow }
! 45: $menuFrame add command -label "Quit" -command { quit }
! 46:
! 47: set action [menu $menuFrame.actions -tearoff 1 -font 8x13bold]
! 48: set windows [menu $menuFrame.windows -tearoff 1 -font 8x13bold]
! 49: set print [menu $menuFrame.print -tearoff 1 -font 8x13bold]
! 50: set score [menu $menuFrame.scoring -tearoff 1 -font 8x13bold]
! 51: set gWindowMenu $windows
! 52:
! 53: $action add command -label "Manage Classl" -command \
! 54: { specifyClass "Pick classl file" "Classl" "classl" createClasslEditor }
! 55: # $action add command -label "Edit capa.config" -command \
! 56: { specifyClass "Pick a capa.config file" "CAPA configuration" \
! 57: "capa.config" editCapaConfig }
! 58: $action add cascade -label "Scoring" -menu $menuFrame.scoring
! 59: $action add command -label "Generate Stats" -command \
! 60: { specifyClass "Select the capa.config in the class directory" \
! 61: "CAPA configuration" "capa.config" runCapaTools }
! 62: $action add command -label "Randomize Seating File" \
! 63: -command { RSstart [incr gUniqueNumber] }
! 64:
! 65: $score add command -label "Run Scorer" -command \
! 66: { specifyClass "Pick set.qz file" "QZ file" "*.qz" runScorer }
! 67: $score add command -label "ReScore a scorer.output" -command \
! 68: { specifyClass "Pick scorer.output file" "scorer.output file" \
! 69: "scorer.output.*" reScore }
! 70:
! 71: $print add command -label "Print Assignment" -command \
! 72: { specifyClass "Select the capa.config in the class directory" \
! 73: "CAPA configuration" "capa.config" printAssignment }
! 74:
! 75: bind $menuFrame <Destroy> { quit 0 }
! 76: }
! 77:
! 78: ###########################################################
! 79: # createInfoWindow
! 80: ###########################################################
! 81: # creates the Information window
! 82: ###########################################################
! 83: # Arguments: None
! 84: # Returns: Nothing
! 85: # Globals: gDate - the variable containg the current date
! 86: # gWindowMenu - used to register the new window in the
! 87: # windows menu
! 88: # gVer - Stores the current version of Grader (set in
! 89: # C init code
! 90: ###########################################################
! 91: proc createInfoWindow {} {
! 92: global gDate gWindowMenu gVer gTclVer gCmd gCompileDate
! 93:
! 94: if { [winfo exists .about] } {
! 95: capaRaise .about
! 96: return
! 97: }
! 98:
! 99: set about [toplevel .about]
! 100:
! 101: $gWindowMenu add command -label "About" -command "capaRaise $about"
! 102:
! 103: wm title $about "About"
! 104:
! 105: label $about.l1 -font 12x24 -text "Manager $gVer" -pady 20
! 106: label $about.l4 -font 8x13 -text "Manager.tcl Version $gTclVer" -pady 20
! 107: label $about.l6 -font 8x13 -text "$gCompileDate"
! 108: 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" \
! 109: -pady 20 -aspect 300
! 110: label $about.l3 -font 8x13 -textvariable gDate
! 111: label $about.l5 -font 8x13 -textvariable gCmd
! 112:
! 113: button $about.close -text "Close" -command "destroy $about
! 114: removeWindowEntry About"
! 115:
! 116: pack $about.l1 $about.l4 $about.l6 $about.l2 $about.l3 $about.l5 \
! 117: $about.close -side top
! 118:
! 119: Centre_Dialog $about default
! 120: }
! 121:
! 122: ###########################################################
! 123: # quit
! 124: ###########################################################
! 125: # called when the quit option is selected on the menu, unmaps
! 126: # all keys.
! 127: ###########################################################
! 128: # Arguments: None
! 129: # Returns: Nothing
! 130: # Globals: None
! 131: ###########################################################
! 132: proc quit { { ask 1} } {
! 133: if { $ask && [makeSure "Are you sure you wish to quit?"] == "Cancel" } {
! 134: return
! 135: }
! 136:
! 137: unmapAllKeys
! 138: exit
! 139: }
! 140:
! 141: ###########################################################
! 142: # specifyClass
! 143: ###########################################################
! 144: # runs tk_getOpenFile and creates the class window if a directory is chosen
! 145: ###########################################################
! 146: # Arguments: None
! 147: # Returns: Nothing
! 148: # Globals: gClassDir - remembers the directory the class is in
! 149: ###########################################################
! 150: proc specifyClass { title typename type followupCommand } {
! 151: # set var [tk_getOpenFile]
! 152: set var [tk_getOpenFile -title $title -filetypes \
! 153: [list [list $typename $type ] { {All Files} {"*"} } ] ]
! 154:
! 155: if { $var == "" } { return }
! 156:
! 157: $followupCommand $var
! 158: }
! 159:
! 160: ###########################################################
! 161: # dateUpdate
! 162: ###########################################################
! 163: # updates the gDate var, and register to run again in .8 seconds
! 164: ###########################################################
! 165: # Arguments: None
! 166: # Returns: Nothing
! 167: # Globals: gDate - gets set to the current time and date
! 168: ###########################################################
! 169: proc dateUpdate { } {
! 170: global gDate
! 171: set gDate [clock format [clock seconds]]
! 172: after 800 dateUpdate
! 173: }
! 174:
! 175: ###########################################################
! 176: ###########################################################
! 177: ###########################################################
! 178: ###########################################################
! 179: proc askToSave { msg cmd } {
! 180: global gChanged gPrompt
! 181:
! 182: set dialog [toplevel .askToSavePrompt -borderwidth 10]
! 183: wm title $dialog "Do you wish to Save"
! 184: wm geo $dialog "+200+200"
! 185: message $dialog.msg -text $msg -aspect 800
! 186:
! 187: set gPrompt(result) ""
! 188: set buttonFrame [frame $dialog.buttons -bd 10]
! 189: pack $dialog.msg $buttonFrame -side top -fill x
! 190:
! 191: bind $dialog <Destroy> {
! 192: set gPrompt(result) Cancel
! 193: set gPrompt(yes) 0
! 194: }
! 195:
! 196: button $buttonFrame.yes -text Yes -underline 0 -command {
! 197: set gPrompt(yes) 1
! 198: }
! 199: button $buttonFrame.no -text No -underline 0 -command {
! 200: set gPrompt(yes) 0
! 201: }
! 202: button $buttonFrame.cancel -text Cancel -underline 0 -command {
! 203: set gPrompt(yes) 0
! 204: set gPrompt(result) Cancel
! 205: }
! 206: pack $buttonFrame.yes $buttonFrame.no $buttonFrame.cancel -side left
! 207: bind $dialog <Alt-Key> break
! 208:
! 209: Centre_Dialog $dialog default
! 210: update
! 211:
! 212: focus $dialog
! 213: capaRaise $dialog
! 214: capaGrab $dialog
! 215: vwait gPrompt(yes)
! 216: capaGrab release $dialog
! 217: bind $dialog <Destroy> ""
! 218: destroy $dialog
! 219: if {$gPrompt(yes)} {
! 220: eval $cmd
! 221: } else {
! 222: return $gPrompt(result)
! 223: }
! 224: }
! 225:
! 226: ###########################################################
! 227: # printAssignment
! 228: ###########################################################
! 229: ###########################################################
! 230: ###########################################################
! 231: proc printAssignment { classconfig } {
! 232: global gCT gFile gUniqueNumber gCapaConfig
! 233:
! 234: set num [incr gUniqueNumber]
! 235: set gFile($num) [file dirname $classconfig]
! 236: getOneStudent "" $gFile($num) s_id s_name
! 237: if { $s_id == "" } { return }
! 238: set s_id [string toupper $s_id]
! 239: if { "" == [set setlist [getSetRange "" $gFile($num)]] } { return }
! 240: set cmdnum [incr gUniqueNumber]
! 241: if { "Yes" != [makeSure "Are you sure you want to print set(s) [linsert $setlist 1 to] for student: $s_name"] } {
! 242: return
! 243: }
! 244: displayStatus "Running qzparse" message $num
! 245: parseCapaConfig $num $gFile($num)
! 246: set command "$gCapaConfig($num.qzparse_command) -c $gFile($num) \
! 247: -set [lindex $setlist 0]:[lindex $setlist 1] -stu $s_id"
! 248: eval "exec $command"
! 249: set tex_file [file join $gFile($num) TeX $s_id.tex]
! 250: set command "$gCapaConfig($num.latex_command) $tex_file"
! 251: removeStatus $num
! 252: if { "Yes" != [makeSure "Planning on running LaTeX, Continue?"] } { return }
! 253: displayStatus "Running LaTeX" message $num
! 254: set directory [pwd]
! 255: cd [file join $gFile($num) TeX]
! 256: eval "exec $command"
! 257: cd $directory
! 258: set dvi_file [file join $gFile($num) TeX $s_id.dvi]
! 259: set ps_file [file join $gFile($num) TeX $s_id.ps]
! 260: set command "$gCapaConfig($num.dvips_command) $dvi_file -o $ps_file >& /dev/null"
! 261: removeStatus $num
! 262: if { "Yes" != [makeSure "Planning on running dvips, Continue?"] } { return }
! 263: displayStatus "Running dvips" message $num
! 264: eval "exec $command"
! 265: removeStatus $num
! 266: if { "Cancel" == [set lprcmd [getLprCommand $ps_file $num]] } { return }
! 267: if { [catch { eval "exec $lprcmd" } errors ] } {
! 268: displayError "An error occurred while printing: $errors"
! 269: }
! 270: foreach name [array names gCapaConfig "$num.*"] {
! 271: unset gCapaConfig($name)
! 272: }
! 273: }
! 274:
! 275: source common.tcl
! 276: source utils.tcl
! 277: source classl.tcl
! 278: source scorer.tcl
! 279: source scorer.anon.tcl
! 280: source scorer.errors.tcl
! 281: source capastats.tcl
! 282: source seating.tcl
! 283:
! 284: set gUniqueNumber 0
! 285: set gMaxSet 99
! 286: set gMaxTries 99
! 287: option add *font 8x13bold
! 288: option add selectbackground #b4b4ff
! 289: createControlWindow
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>