version 1.1, 1999/09/28 21:25:36
|
version 1.13, 2000/01/31 18:34:13
|
Line 641 proc getProbValTryVal {} {
|
Line 641 proc getProbValTryVal {} {
|
########################################################### |
########################################################### |
# updateDateBox |
# updateDateBox |
########################################################### |
########################################################### |
|
# sticks the date information from gControlDates into the date listbox |
########################################################### |
########################################################### |
########################################################### |
########################################################### |
proc updateDateBox { listbox } { |
proc updateDateBox { listbox } { |
Line 665 proc loadDates { listbox } {
|
Line 666 proc loadDates { listbox } {
|
global gControlDates |
global gControlDates |
if { [catch {getHeaderInfo}]} { |
if { [catch {getHeaderInfo}]} { |
displayError "That set.db does not exist" |
displayError "That set.db does not exist" |
} |
} else { |
|
if { [llength $gControlDates] > 2 } { |
|
set gControlDates [linsert [lreverse [lrange $gControlDates 1 end]] 0 [lindex $gControlDates 0]] |
|
} |
|
} |
updateDateBox $listbox |
updateDateBox $listbox |
} |
} |
|
|
Line 819 proc getday { kind } {
|
Line 824 proc getday { kind } {
|
} |
} |
|
|
########################################################### |
########################################################### |
|
# moveUpDate |
|
########################################################### |
|
########################################################### |
|
########################################################### |
|
proc moveUpDate { listbox } { |
|
global gControlDates gDates |
|
if { ![winfo exists $listbox] } { return } |
|
if { [set which [$listbox curselection]] == "" } { |
|
displayMessage "Please select a date to move." |
|
return |
|
} |
|
if { $which > 1 } { |
|
set element [lindex $gControlDates $which] |
|
set gControlDates [lreplace $gControlDates $which $which] |
|
set gControlDates [linsert $gControlDates [expr $which - 1] $element] |
|
updateDateBox $listbox |
|
$listbox selection set [expr {$which - 1}] |
|
$listbox see [expr {$which -1}] |
|
} |
|
} |
|
|
|
########################################################### |
|
# moveDownDate |
|
########################################################### |
|
########################################################### |
|
########################################################### |
|
proc moveDownDate { listbox } { |
|
global gControlDates gDates |
|
if { ![winfo exists $listbox] } { return } |
|
if { [set which [$listbox curselection]] == "" } { |
|
displayMessage "Please select a date to move." |
|
return |
|
} |
|
if { ($which > 0) && ($which < ([llength $gControlDates]-1)) } { |
|
set element [lindex $gControlDates $which] |
|
set gControlDates [lreplace $gControlDates $which $which] |
|
set gControlDates [linsert $gControlDates [expr $which + 1] $element] |
|
updateDateBox $listbox |
|
$listbox selection set [expr {$which + 1}] |
|
$listbox see [expr {$which + 1}] |
|
} |
|
} |
|
|
|
########################################################### |
# enableDateValidation |
# enableDateValidation |
########################################################### |
########################################################### |
########################################################### |
########################################################### |
Line 948 proc createDateDialog { toplevel makedef
|
Line 997 proc createDateDialog { toplevel makedef
|
checkbutton $optionsFrame2.response -variable gDates(inhibitresponse) \ |
checkbutton $optionsFrame2.response -variable gDates(inhibitresponse) \ |
-text "Inhibit Correct/Incorrect response \n(normally only for exams/quizzes)" |
-text "Inhibit Correct/Incorrect response \n(normally only for exams/quizzes)" |
pack $durationFrame $optionsFrame2.view $optionsFrame2.response -side top |
pack $durationFrame $optionsFrame2.view $optionsFrame2.response -side top |
set gDates(viewbetween) 1 |
set gDates(viewbetween) 0 |
set gDates(inhibitresponse) 0 |
set gDates(inhibitresponse) 0 |
|
|
label $durationFrame.label -text "Duration" |
label $durationFrame.label -text "Duration" |
Line 1162 proc addDate { listbox } {
|
Line 1211 proc addDate { listbox } {
|
########################################################### |
########################################################### |
proc createDBHeader {} { |
proc createDBHeader {} { |
global gNumberParsedText gPrompt gLoadHeaderSet gControlDates \ |
global gNumberParsedText gPrompt gLoadHeaderSet gControlDates \ |
gSetNumberText gHeaderQCount |
gSetNumberText gHeaderQCount gEnableDiscussion gFile |
|
|
if { $gNumberParsedText == "" } { |
if { $gNumberParsedText == "" } { |
displayError "You must first preview the file before creating the \ |
displayError "You must first preview the file before creating the \ |
Line 1182 proc createDBHeader {} {
|
Line 1231 proc createDBHeader {} {
|
message $dialog.msg -text "Header Information" -aspect 1000 |
message $dialog.msg -text "Header Information" -aspect 1000 |
set loadFrame [frame $dialog.loadFrame -borderwidth 4 -relief sunken] |
set loadFrame [frame $dialog.loadFrame -borderwidth 4 -relief sunken] |
set infoFrame [frame $dialog.infoFrame -borderwidth 4 -relief sunken] |
set infoFrame [frame $dialog.infoFrame -borderwidth 4 -relief sunken] |
|
label $dialog.message -text "Later entries will override earlier entries" |
|
set optionFrame [frame $dialog.options] |
set buttonFrame [frame $dialog.buttons -bd 10] |
set buttonFrame [frame $dialog.buttons -bd 10] |
pack $dialog.msg $loadFrame $infoFrame $buttonFrame -side top -fill x |
pack $dialog.msg $loadFrame $dialog.message $infoFrame $optionFrame \ |
|
$buttonFrame -side top -fill x |
|
|
set legendFrame [frame $infoFrame.legendFrame] |
set legendFrame [frame $infoFrame.legendFrame] |
set listFrame [frame $infoFrame.listFrame] |
set listFrame [frame $infoFrame.listFrame] |
Line 1197 proc createDBHeader {} {
|
Line 1249 proc createDBHeader {} {
|
set listbox [listbox $listFrame.list -width 63 -yscrollcommand "$listFrame.scroll set" ] |
set listbox [listbox $listFrame.list -width 63 -yscrollcommand "$listFrame.scroll set" ] |
scrollbar $listFrame.scroll -command "$listbox yview" |
scrollbar $listFrame.scroll -command "$listbox yview" |
pack $listFrame.list $listFrame.scroll -side left |
pack $listFrame.list $listFrame.scroll -side left |
|
pack configure $listFrame.scroll -fill y |
updateDateBox $listbox |
updateDateBox $listbox |
|
|
button $commandFrame.add -text "Add" -command "addDate $listbox" |
button $commandFrame.add -text "Add" -command "addDate $listbox" |
button $commandFrame.change -text "Change" -command "changeDate $listbox" |
button $commandFrame.change -text "Change" -command "changeDate $listbox" |
button $commandFrame.delete -text "Delete" -command "deleteDate $listbox" |
button $commandFrame.delete -text "Delete" -command "deleteDate $listbox" |
pack $commandFrame.add $commandFrame.change $commandFrame.delete -side left |
button $commandFrame.moveup -text "MoveUp" -command "moveUpDate $listbox" |
|
button $commandFrame.movedown -text "MoveDown" -command "moveDownDate $listbox" |
|
pack $commandFrame.add $commandFrame.change $commandFrame.delete \ |
|
$commandFrame.moveup $commandFrame.movedown -side left |
bind $listbox <Double-ButtonPress-1> "changeDate $listbox" |
bind $listbox <Double-ButtonPress-1> "changeDate $listbox" |
|
|
message $loadFrame.msg -text "Load header information from set:" \ |
message $loadFrame.msg -text "Load header information from set:" \ |
Line 1212 proc createDBHeader {} {
|
Line 1268 proc createDBHeader {} {
|
button $loadFrame.load -text "load" -command "loadDates $listbox" |
button $loadFrame.load -text "load" -command "loadDates $listbox" |
pack $loadFrame.msg $loadFrame.entry $loadFrame.load -side left |
pack $loadFrame.msg $loadFrame.entry $loadFrame.load -side left |
|
|
|
if { [file exists [file join [file dirname $gFile] discussion $gSetNumberText]] } { |
|
set gEnableDiscussion 1 |
|
} else { |
|
set gEnableDiscussion 0 |
|
} |
|
checkbutton $optionFrame.discuss -text "Enable Discussion Forum" \ |
|
-variable gEnableDiscussion |
|
pack $optionFrame.discuss |
|
|
button $buttonFrame.ok -text Set -command { set gPrompt(ok) 1 } \ |
button $buttonFrame.ok -text Set -command { set gPrompt(ok) 1 } \ |
-underline 0 |
-underline 0 |
button $buttonFrame.cancel -text Cancel -command { set gPrompt(ok) 0 } \ |
button $buttonFrame.cancel -text Cancel -command { set gPrompt(ok) 0 } \ |
Line 1241 proc createDBHeader {} {
|
Line 1306 proc createDBHeader {} {
|
capaGrab release $dialog |
capaGrab release $dialog |
destroy $dialog |
destroy $dialog |
if {$gPrompt(ok) == 1 } { |
if {$gPrompt(ok) == 1 } { |
|
updateDiscussion |
|
if { [llength $gControlDates] > 2 } { |
|
set gControlDates [linsert [lreverse [lrange $gControlDates 1 end]] 0 [lindex $gControlDates 0]] |
|
} |
eval updateHeader [ eval concat $gControlDates ] |
eval updateHeader [ eval concat $gControlDates ] |
} |
} |
|
|
Line 1249 proc createDBHeader {} {
|
Line 1318 proc createDBHeader {} {
|
} |
} |
|
|
########################################################### |
########################################################### |
|
# updateDiscussion |
|
########################################################### |
|
########################################################### |
|
########################################################### |
|
proc updateDiscussion {} { |
|
global gFile gSetNumberText gEnableDiscussion |
|
set dir [file dirname $gFile] |
|
set disDir [file join $dir discussion $gSetNumberText] |
|
set logDir [file join $dir discussion logs] |
|
if { $gEnableDiscussion } { |
|
if { ![file exists $disDir] } { |
|
if { [file exists $disDir.unavailable] } { |
|
exec mv $disDir.unavailable $disDir |
|
} else { |
|
file mkdir $disDir |
|
file attributes $disDir -permissions 0777 |
|
} |
|
} |
|
if { ![file exists $logDir] } { |
|
file mkdir [file join $dir discussion logs] |
|
file attributes [file join $dir discussion logs] -permissions 0777 |
|
} |
|
} else { |
|
if { [file exists $disDir] } { exec mv $disDir $disDir.unavailable } |
|
} |
|
} |
|
|
|
########################################################### |
# allFieldsComplete2 |
# allFieldsComplete2 |
########################################################### |
########################################################### |
########################################################### |
########################################################### |
########################################################### |
########################################################### |
proc allFieldsComplete2 {} { |
proc allFieldsComplete2 {} { |
global gLoadHeaderSet gControlDates |
global gLoadHeaderSet gControlDates |
|
|
if { [string length $gOpenDate] != 8 } { |
if { [string length $gOpenDate] != 8 } { |
return 0 |
return 0 |
Line 1541 proc replaceAll {} {
|
Line 1638 proc replaceAll {} {
|
set gCreateImportLinks 1 |
set gCreateImportLinks 1 |
getFindWindow refNum |
getFindWindow refNum |
if { $refNum >= 0 } { registerCreateImportLinks $refNum 0.0 end } |
if { $refNum >= 0 } { registerCreateImportLinks $refNum 0.0 end } |
displayMessage "Replaced $num occurance$s" |
displayMessage "Replaced $num occurrence$s" |
} |
} |
|
|
########################################################### |
########################################################### |
Line 1761 proc createPrefsWindow {} {
|
Line 1858 proc createPrefsWindow {} {
|
if { [winfo exists .prefs] } { capaRaise .prefs; return } |
if { [winfo exists .prefs] } { capaRaise .prefs; return } |
|
|
set prefs [toplevel .prefs] |
set prefs [toplevel .prefs] |
$gWindowMenu add command -label "Prefrences" -command "capaRaise $prefs" |
$gWindowMenu add command -label "Prefernces" -command "capaRaise $prefs" |
wm title $prefs "Preferences" |
wm title $prefs "Preferences" |
|
|
set frameAll [frame $prefs.frameAll -relief groove -borderwidth 4] |
set frameAll [frame $prefs.frameAll -relief groove -borderwidth 4] |
Line 1805 proc createPrefsWindow {} {
|
Line 1902 proc createPrefsWindow {} {
|
button $frameButton.config -text "Reread capa.config" -command "rereadCapaConfig" |
button $frameButton.config -text "Reread capa.config" -command "rereadCapaConfig" |
button $frameButton.ok -text "Dismiss" -command "destroy $prefs |
button $frameButton.ok -text "Dismiss" -command "destroy $prefs |
trace vdelete gWhichFile w changePrefFile |
trace vdelete gWhichFile w changePrefFile |
removeWindowEntry Prefrences" |
removeWindowEntry Prefernces" |
bind $prefs <Destroy> "removeWindowEntry Preferences" |
bind $prefs <Destroy> "removeWindowEntry Preferences" |
button $frameButton.save -text "Save All" -command "savePrefs" |
button $frameButton.save -text "Save All" -command "savePrefs" |
pack $frameButton.impcolor $frameButton.commentcolor $frameButton.config \ |
pack $frameButton.impcolor $frameButton.commentcolor $frameButton.config \ |
Line 1932 proc checkHeader { numberParsed } {
|
Line 2029 proc checkHeader { numberParsed } {
|
# if { $gFirstTime } { set gFirstTime 0; return } |
# if { $gFirstTime } { set gFirstTime 0; return } |
set gLoadHeaderSet $gSetNumberText |
set gLoadHeaderSet $gSetNumberText |
set error [catch {getHeaderInfo}] |
set error [catch {getHeaderInfo}] |
|
if { [llength $gControlDates] > 2 } { |
|
set gControlDates [linsert [lreverse [lrange $gControlDates 1 end]] 0 [lindex $gControlDates 0]] |
|
} |
if { $error == 1 } { |
if { $error == 1 } { |
set gHeaderQCount "0" |
set gHeaderQCount "0" |
set gControlDates "" |
set gControlDates "" |
Line 2189 proc createPreviewWindow {} {
|
Line 2289 proc createPreviewWindow {} {
|
} |
} |
|
|
########################################################### |
########################################################### |
|
# openError |
|
########################################################### |
|
########################################################### |
|
########################################################### |
|
proc openError { file line type} { |
|
global gRefLine gLineNumberGoto gTextWindow |
|
if { $type == 2 } { |
|
set gLineNumberGoto $line |
|
gotoLine |
|
capaRaise [winfo toplevel $gTextWindow] |
|
} else { |
|
if {[set num [openReferenceFile $file]]} { |
|
update idletasks |
|
set gRefLine($num) $line |
|
gotoRefLine $num |
|
} |
|
} |
|
} |
|
|
|
########################################################### |
|
# showParseErrors |
########################################################### |
########################################################### |
########################################################### |
########################################################### |
########################################################### |
########################################################### |
proc showParseErrors {} { |
proc showParseErrors {} { |
global gParseErrorsText gWindowMenu |
global gParseErrorsText gWindowMenu gUniqueNumber gCapaConfig |
|
|
set parseErrors [getParseErrors] |
set parseErrors [getParseErrors] |
|
|
Line 2243 proc showParseErrors {} {
|
Line 2364 proc showParseErrors {} {
|
$gParseErrorsText delete 0.0 end |
$gParseErrorsText delete 0.0 end |
capaRaise .parseErrors |
capaRaise .parseErrors |
} |
} |
|
foreach line [split $parseErrors "\n"] { |
$gParseErrorsText insert end $parseErrors |
set tag 0 |
|
if { [regexp -indices {File:.+->(.+), Line ([0-9]+): ERROR:} $line result file linenum]} { |
|
set tag 1 |
|
} else { |
|
if { [regexp -indices {File:(.+), Line ([0-9]+): ERROR:} $line result file linenum]} { |
|
set tag 2 |
|
} |
|
} |
|
if { $tag } { |
|
set tagnum [incr gUniqueNumber] |
|
set linenum [eval [list string range $line] $linenum] |
|
set filename [eval [list string range $line] $file] |
|
set i [expr [lindex [split [$gParseErrorsText index end] .] 0] - 1] |
|
} |
|
$gParseErrorsText insert end "$line\n" |
|
if { $tag } { |
|
$gParseErrorsText tag add error.$tagnum $i.[lindex $file 0] $i.[expr [lindex $file 1] + 1] |
|
$gParseErrorsText tag configure error.$tagnum -foreground $gCapaConfig(IMP_color) |
|
$gParseErrorsText tag bind error.$tagnum <Double-ButtonPress> \ |
|
"eval openError $filename $linenum $tag" |
|
} |
|
} |
} else { |
} else { |
if { [winfo exists .parseErrors] } { $gParseErrorsText delete 0.0 end } |
if { [winfo exists .parseErrors] } { $gParseErrorsText delete 0.0 end } |
} |
} |
Line 2381 proc rereadCapaConfig { } {
|
Line 2523 proc rereadCapaConfig { } {
|
displayError "Invalid capa.config file" |
displayError "Invalid capa.config file" |
set gCapaConfig(printer_option) $printer_option |
set gCapaConfig(printer_option) $printer_option |
} |
} |
|
setDefaultValues |
updateColors |
updateColors |
} |
} |
|
|
Line 2399 proc pickCapaConfig { } {
|
Line 2542 proc pickCapaConfig { } {
|
cd [file dirname $file] |
cd [file dirname $file] |
set error [parseCapaConfig] |
set error [parseCapaConfig] |
if { $error != "OK" } { displayError "Invalid capa.config file"; cd $oldDir } |
if { $error != "OK" } { displayError "Invalid capa.config file"; cd $oldDir } |
|
setDefaultValues |
} |
} |
} |
} |
|
|
|
proc setDefaultValues {} { |
|
global gProbVal gTryVal gHintVal gCapaConfig |
|
catch {set gProbVal $gCapaConfig(default_prob_val)} |
|
catch {set gTryVal $gCapaConfig(default_try_val)} |
|
catch {set gHintVal $gCapaConfig(default_hint_val)} |
|
} |
|
|
########################################################### |
########################################################### |
# openDocument |
# openDocument |
########################################################### |
########################################################### |
########################################################### |
########################################################### |
########################################################### |
########################################################### |
proc openDocument {} { |
proc openDocument {} { |
global gFile gTextWindow gSetNumberText gPrefs gChanged gQuizTemp gUndo |
global gFile gTextWindow gSetNumberText gPrefs gChanged gQuizTemp gUndo |
|
|
if { $gChanged } { if { [askToSave 0 0] == "Cancel" } { return } } |
if { $gChanged } { if { [askToSave 0 0] == "Cancel" } { return } } |
if { ![catch {set gTextWindow}] } { |
if { ![catch {set gTextWindow}] } { |
Line 2478 proc openDocument {} {
|
Line 2629 proc openDocument {} {
|
set gQuizTemp true |
set gQuizTemp true |
return |
return |
} |
} |
|
setDefaultValues |
|
|
createEditingWindow 0 |
createEditingWindow 0 |
$gTextWindow delete 0.0 end |
$gTextWindow delete 0.0 end |
$gTextWindow insert 0.0 [read $fileId [file size $gFile]] |
$gTextWindow insert 0.0 [read $fileId [file size $gFile]] |
Line 2664 proc isReferenceFileOpen { file } {
|
Line 2816 proc isReferenceFileOpen { file } {
|
set entryfile [lindex $entry 1] |
set entryfile [lindex $entry 1] |
} |
} |
# puts $entryfile |
# puts $entryfile |
if { [catch {file stat $entryfile a1}] } { puts skipped;continue } |
if { [catch {file stat $entryfile a1}] } { continue } |
file stat $file a2 |
file stat $file a2 |
# puts "$a2(ino) == $a1(ino)" |
# puts "$a2(ino) == $a1(ino)" |
if { $a2(ino) == $a1(ino) } { |
if { $a2(ino) == $a1(ino) } { |
Line 2721 proc openReferenceFile { {file ""} {new
|
Line 2873 proc openReferenceFile { {file ""} {new
|
-title "Select the proper file" \ |
-title "Select the proper file" \ |
-initialdir "$gDir(reference)" ] |
-initialdir "$gDir(reference)" ] |
event generate .main <ButtonRelease-1> |
event generate .main <ButtonRelease-1> |
if { $file == "" } { return } |
if { $file == "" } { return 0 } |
set gDir(reference) [file dirname $file] |
set gDir(reference) [file dirname $file] |
|
|
if { [file isdirectory $file] } { |
if { [file isdirectory $file] } { |
displayError "You attempted to open $file which is a directory not a file." |
displayError "You attempted to open $file which is a directory not a file." |
return |
return 0 |
} |
} |
} else { |
} else { |
if { !$new } { |
if { !$new } { |
if { [set window [isReferenceFileOpen $file] ] != "" } { |
if { [set window [isReferenceFileOpen $file] ] != "" } { |
|
set num [lindex [split [lindex [split $window .] 1] e] end] |
capaRaise $window |
capaRaise $window |
return |
return $num |
} |
} |
# specifically opening the capa.config file |
# specifically opening the capa.config file |
if { $file == "capa.config" } { |
if { $file == "capa.config" } { |
Line 2743 proc openReferenceFile { {file ""} {new
|
Line 2896 proc openReferenceFile { {file ""} {new
|
{ {All Files} {"*"} } } \ |
{ {All Files} {"*"} } } \ |
-title "Select the proper file" \ |
-title "Select the proper file" \ |
-initialdir "$gDir(reference)" ] |
-initialdir "$gDir(reference)" ] |
if { $file == "" } { return } |
if { $file == "" } { return 0 } |
} else { |
} else { |
set file [file join [file dirname $gFile] capa.config] |
set file [file join [file dirname $gFile] capa.config] |
} |
} |
} else { |
} else { |
if { ![file isfile $file] && ![file readable $file] } { |
if { ![file isfile $file] && ![file readable $file] } { |
displayError "Unable to find $file" |
displayError "Unable to find $file" |
return |
return 0 |
} |
} |
if { [file isdirectory $file] } { |
if { [file isdirectory $file] } { |
displayError "You attempted to open $file which is a directory not a file." |
displayError "You attempted to open $file which is a directory not a file." |
return |
return 0 |
} |
} |
} |
} |
} |
} |
Line 2872 proc openReferenceFile { {file ""} {new
|
Line 3025 proc openReferenceFile { {file ""} {new
|
set gRefChanged($num) 0 |
set gRefChanged($num) 0 |
set gRefClosed($num) 0 |
set gRefClosed($num) 0 |
addFindList $num |
addFindList $num |
|
return $num |
} |
} |
|
|
########################################################### |
########################################################### |
Line 2912 proc trackChanges { procName num } {
|
Line 3066 proc trackChanges { procName num } {
|
set chars \[ .$procName get \$insertindex \$insertindex2 \] |
set chars \[ .$procName get \$insertindex \$insertindex2 \] |
} |
} |
set gUndo($num.\$numChange) \"insert \$insertindex \[list \$chars\] \" |
set gUndo($num.\$numChange) \"insert \$insertindex \[list \$chars\] \" |
if {\[regexp \{.*\[\"/\].*\} \$chars\] || \ |
if { \[string length \$chars\] > 100 } { |
\[regexp \{.*\[\"/\].*\} \[.$procName get \"\$insertindex linestart\" \"\$insertindex2 lineend\"\]\]} { |
registerCreateImportLinks $num \$insertindex-1line \$insertindex2+1line |
registerCreateImportLinks $num \$insertindex \$insertindex2 |
} else { |
|
if {\[regexp \{.*\[\"/\].*\} \$chars\] || \ |
|
\[regexp \{.*\[\"/\].*\} \[.$procName get \"\$insertindex linestart\" \"\$insertindex2 lineend\"\]\]} { |
|
registerCreateImportLinks $num \$insertindex \$insertindex2 |
|
} |
} |
} |
} |
} |
set result \[uplevel .$procName \$args\] |
set result \[uplevel .$procName \$args\] |
updateLocation $num |
updateLocation $num |
return \$result |
return \$result |
Line 2928 proc trackChanges { procName num } {
|
Line 3086 proc trackChanges { procName num } {
|
########################################################### |
########################################################### |
########################################################### |
########################################################### |
proc undo { num } { |
proc undo { num } { |
global gUndo gRefText gTextWindow |
global gUndo gRefText gTextWindow gChanged gRefChanged |
if { $gUndo($num.cur) == 0 } { return } |
if { $gUndo($num.cur) == 0 } { return } |
set undoInfo $gUndo($num.$gUndo($num.cur)) |
set undoInfo $gUndo($num.$gUndo($num.cur)) |
if { [regexp {.*[\"/].*} $undoInfo] } { |
if { [regexp {.*[\"/].*} $undoInfo] } { |
Line 2939 proc undo { num } {
|
Line 3097 proc undo { num } {
|
} |
} |
if { $num == 0 } { |
if { $num == 0 } { |
if {[catch {eval ".$gTextWindow $gUndo($num.$gUndo($num.cur))"}]} { return } |
if {[catch {eval ".$gTextWindow $gUndo($num.$gUndo($num.cur))"}]} { return } |
|
set gChanged 1 |
} else { |
} else { |
if {[catch {eval ".$gRefText($num) $gUndo($num.$gUndo($num.cur))"}]} { return } |
if {[catch {eval ".$gRefText($num) $gUndo($num.$gUndo($num.cur))"}]} { return } |
|
set gRefChanged($num) 1 |
} |
} |
incr gUndo($num.cur) -1 |
incr gUndo($num.cur) -1 |
} |
} |
Line 3220 proc createStopButton {} {
|
Line 3380 proc createStopButton {} {
|
if {[winfo exists .stopbutton]} {destroy .stopbutton} |
if {[winfo exists .stopbutton]} {destroy .stopbutton} |
set top [toplevel .stopbutton] |
set top [toplevel .stopbutton] |
button $top.stop -text "Stop Parser" -command "stopParser" |
button $top.stop -text "Stop Parser" -command "stopParser" |
label $top.status -textvariable gStopStatus -width 35 |
label $top.status -textvariable gStopStatus -width 35 -anchor w |
pack $top.stop $top.status |
pack $top.stop $top.status |
set gStopStatus "" |
set gStopStatus "" |
grab $top |
grab $top |
Line 3690 proc createCreateDviWin {} {
|
Line 3850 proc createCreateDviWin {} {
|
# sends the file quiztemp.ps to the printer through lpr using |
# sends the file quiztemp.ps to the printer through lpr using |
# the option foud in gLprCommand |
# the option foud in gLprCommand |
########################################################### |
########################################################### |
# Arguments: none |
# Arguments: lprCommand - actual command to be run to print |
|
# showCompletionMessage - (defaults to 1 true) |
|
# controls whether the print complete |
|
# message gets shown |
# Returns: Nothing |
# Returns: Nothing |
# Globals: gCapaConfig - |
# Globals: gCapaConfig - |
# gStopPrinting - |
# gStopPrinting - |
Line 3704 proc printBody { lprCommand { showComple
|
Line 3867 proc printBody { lprCommand { showComple
|
-o quiztemp.ps >& /dev/null} errorMsg ] |
-o quiztemp.ps >& /dev/null} errorMsg ] |
if { $error } { |
if { $error } { |
displayError \ |
displayError \ |
"When attempting to run dvips an error occured : $errorMsg" |
"When attempting to run dvips an error occurred : $errorMsg" |
return 1 |
return 1 |
} |
} |
|
|
Line 3719 proc printBody { lprCommand { showComple
|
Line 3882 proc printBody { lprCommand { showComple
|
set error [catch {set returnMessage [eval "exec $lprCommand"] } errorMsg ] |
set error [catch {set returnMessage [eval "exec $lprCommand"] } errorMsg ] |
|
|
if { $error == 1 } { |
if { $error == 1 } { |
displayError "When attempting to print an error occured : $errorMsg" |
displayError "When attempting to print an error occurred : $errorMsg" |
return 1 |
return 1 |
} else { |
} else { |
if { $showCompletionMessage } { |
if { $showCompletionMessage } { |
Line 3975 proc printSection { { lprCommand "" } }
|
Line 4138 proc printSection { { lprCommand "" } }
|
default { set type "-T" } |
default { set type "-T" } |
} |
} |
|
|
|
set prSection [string trimleft $gPrintSelection(section) 0] |
|
|
if { [set gStopPrinting [expr 2 == [runLatex \ |
if { [set gStopPrinting [expr 2 == [runLatex \ |
"echo [pwd] | $gCapaConfig(qzparse_command) \ |
"echo [pwd] | $gCapaConfig(qzparse_command) \ |
-sec $gPrintSelection(section) -set $set \ |
-sec $prSection -set $set \ |
-d [pwd] -c [pwd] $type " gCreateDviText] ] ] } { |
-d [pwd] -c [pwd] $type " gCreateDviText] ] ] } { |
for {set i $start} { $i <= $end} { incr i } { |
for {set i $start} { $i <= $end} { incr i } { |
exec rm -f section$gPrintSelection(section)-set$i.tex |
exec rm -f section$prSection-set$i.tex |
} |
} |
if {$showStopping} { |
if {$showStopping} { |
displayMessage "Printing has been stopped." |
displayMessage "Printing has been stopped." |
Line 3997 proc printSection { { lprCommand "" } }
|
Line 4162 proc printSection { { lprCommand "" } }
|
} |
} |
|
|
for { set i $start} { $i <= $end } { incr i } { |
for { set i $start} { $i <= $end } { incr i } { |
if { ! [file exists section$gPrintSelection(section)-set$i.tex] } { |
if { ! [file exists section$prSection-set$i.tex] } { |
if {$showStopping} { |
if {$showStopping} { |
displayError "The qzparse command: $gCapaConfig(qzparse_command), was unable to produce the expected output. Printing stopped" |
displayError "The qzparse command: $gCapaConfig(qzparse_command), was unable to produce the expected output. Printing stopped" |
set gStopPrinting 0 |
set gStopPrinting 0 |
Line 4006 proc printSection { { lprCommand "" } }
|
Line 4171 proc printSection { { lprCommand "" } }
|
return 2 |
return 2 |
} |
} |
|
|
exec mv section$gPrintSelection(section)-set$i.tex quiztemp.tex |
exec mv section$prSection-set$i.tex quiztemp.tex |
exec /bin/rm -f quiztemp.dvi |
exec /bin/rm -f quiztemp.dvi |
|
|
$gCreateDviText insert end "$gCapaConfig(latex_command)\n" |
$gCreateDviText insert end "$gCapaConfig(latex_command)\n" |
Line 4286 proc analyzeClass { {start 1} } {
|
Line 4451 proc analyzeClass { {start 1} } {
|
set name [lindex $gAnalyze(toprocess) 1] |
set name [lindex $gAnalyze(toprocess) 1] |
set section [lindex $gAnalyze(toprocess) 2] |
set section [lindex $gAnalyze(toprocess) 2] |
set gAnalyze(toprocess) [lrange $gAnalyze(toprocess) 3 end] |
set gAnalyze(toprocess) [lrange $gAnalyze(toprocess) 3 end] |
set command "$gCapaConfig(answers_command) $number \"$name\" $section $gAnalyze(set)" |
set command "$gCapaConfig(answers_command) $number \"$name\" 0 $gAnalyze(set)" |
set fileId [open "|$command" "r"] |
set fileId [open "|$command" "r"] |
set gAnalyze(pid) [pid $fileId] |
set gAnalyze(pid) [pid $fileId] |
fconfigure $fileId -blocking 0 |
fconfigure $fileId -blocking 0 |
Line 4424 proc analyzeRandom { } {
|
Line 4589 proc analyzeRandom { } {
|
} |
} |
|
|
########################################################### |
########################################################### |
|
# analyzeStrings |
|
########################################################### |
|
########################################################### |
|
########################################################### |
|
proc analyzeStrings { prob window create} { |
|
global gAnalyze |
|
|
|
if { ![winfo exists $window.analyzestrings] } { if {!$create} { return } } |
|
if { ![catch {set setWin [toplevel $window.analyzestrings]}] } { |
|
set msgFrame [frame $setWin.msgFrame] |
|
set valFrame [frame $setWin.valFrame] |
|
set buttonFrame [frame $setWin.buttonFrame] |
|
pack $msgFrame $valFrame $buttonFrame |
|
pack configure $valFrame -expand 1 -fill both |
|
|
|
message $msgFrame.msg -text "Correct Answers" -aspect 3000 |
|
pack $msgFrame.msg |
|
|
|
set maxWidth 1 |
|
foreach choice $gAnalyze($prob.ans) { |
|
if {[string length $choice]>$maxWidth} {set maxWidth [string length $choice]} |
|
} |
|
set maxStringWidth $maxWidth |
|
incr maxWidth 6 |
|
|
|
set selectMode none |
|
listbox $valFrame.val -width [expr $maxWidth + 2] \ |
|
-yscrollcommand "$valFrame.scroll set" -selectmode $selectMode |
|
scrollbar $valFrame.scroll -command "$valFrame.val yview" |
|
pack $valFrame.val $valFrame.scroll -side left |
|
pack configure $valFrame.val -expand 1 -fill both |
|
pack configure $valFrame.scroll -expand 0 -fill y |
|
button $buttonFrame.cancel -text "Dismiss" -command "destroy $setWin" |
|
pack $buttonFrame.cancel |
|
} else { |
|
set maxWidth 1 |
|
set valFrame $window.analyzestrings.valFrame |
|
$valFrame.val delete 0 end |
|
foreach choice $gAnalyze($prob.ans) { |
|
if {[string length $choice]>$maxWidth} {set maxWidth [string length $choice]} |
|
} |
|
set maxStringWidth $maxWidth |
|
incr maxWidth 6 |
|
} |
|
set lastchoice [lindex $gAnalyze($gAnalyze(prob).ans) 0] |
|
set num 1 |
|
foreach choice [lsort $gAnalyze($gAnalyze(prob).ans)] { |
|
if { $lastchoice != $choice } { |
|
$valFrame.val insert end \ |
|
"[format %-[set maxStringWidth]s $lastchoice] [format %5d $num]" |
|
set lastchoice $choice |
|
set num 1 |
|
} else { |
|
incr num |
|
} |
|
} |
|
$valFrame.val insert end \ |
|
"[format %-[set maxStringWidth]s $lastchoice] [format %5d $num]" |
|
} |
|
|
|
########################################################### |
# analyzeUpdate |
# analyzeUpdate |
########################################################### |
########################################################### |
########################################################### |
########################################################### |
Line 4444 proc analyzeUpdate { {newProbNumber 0} }
|
Line 4670 proc analyzeUpdate { {newProbNumber 0} }
|
set gAnalyze(highnum) [set high [lindex $gAnalyze($gAnalyze(prob).ans) end]] |
set gAnalyze(highnum) [set high [lindex $gAnalyze($gAnalyze(prob).ans) end]] |
set gAnalyze(numuniq) [llength [lunique $gAnalyze($gAnalyze(prob).ans)]] |
set gAnalyze(numuniq) [llength [lunique $gAnalyze($gAnalyze(prob).ans)]] |
#don't draw anything if the answers aren't numbers |
#don't draw anything if the answers aren't numbers |
if { [catch {expr $low + 1}]} { update idletask;return } |
if { [catch {expr $low + 1}]} { |
|
catch {destroy $c.button} |
|
update idletask |
|
button $c.button -text "List of strings" -command \ |
|
"analyzeStrings $gAnalyze(prob) $c 1" |
|
$c create window [expr $gAnalyze(canvaswidth)/2.0] 40 -window $c.button |
|
analyzeStrings $gAnalyze(prob) $c 0 |
|
return |
|
} |
|
|
$c create line 25 50 [expr $gAnalyze(canvaswidth) - 25] 50 |
$c create line 25 50 [expr $gAnalyze(canvaswidth) - 25] 50 |
set diff [expr double($high-$low)] |
set diff [expr double($high-$low)] |
if { $diff == 0 } { |
if { $diff == 0 } { |
set center [expr $gAnalyze(canvaswidth)/2.0] |
set center [expr $gAnalyze(canvaswidth)/2.0] |
$c create oval [expr $center - 2] 48 [expr $center + 2] 52 -fill green |
$c create rectangle [expr $center - 2] 48 [expr $center + 2] 52 -fill green |
update idletasks |
update idletasks |
return |
return |
} |
} |
Line 4467 proc analyzeUpdate { {newProbNumber 0} }
|
Line 4701 proc analyzeUpdate { {newProbNumber 0} }
|
set center [expr $center+25] |
set center [expr $center+25] |
$c create rectangle [expr $center - 1] 40 [expr $center + 1] 60 |
$c create rectangle [expr $center - 1] 40 [expr $center + 1] 60 |
} |
} |
|
set lastpoint [lindex $gAnalyze($gAnalyze(prob).ans) 0] |
|
set num 0 |
foreach point $gAnalyze($gAnalyze(prob).ans) { |
foreach point $gAnalyze($gAnalyze(prob).ans) { |
set center [expr ($gAnalyze(canvaswidth)-50)*(($point-$low)/$diff)] |
if { $lastpoint != $point } { |
set center [expr $center+25] |
set center [expr ($gAnalyze(canvaswidth)-50)*(($lastpoint-$low)/$diff)] |
$c create oval [expr $center - 2] 48 [expr $center + 2] 52 -fill green |
set center [expr $center+25] |
|
$c create rectangle [expr $center - 2] [expr 48-$num] \ |
|
[expr $center + 2] [expr 52+$num] -fill green |
|
set lastpoint $point |
|
set num 0 |
|
} else { |
|
incr num |
|
} |
} |
} |
|
set center [expr ($gAnalyze(canvaswidth)-50)*(($lastpoint-$low)/$diff)] |
|
set center [expr $center+25] |
|
$c create rectangle [expr $center - 2] [expr 48-$num] \ |
|
[expr $center + 2] [expr 52+$num] -fill green |
|
|
update idletasks |
update idletasks |
} |
} |
Line 4485 proc analyzeStop {} {
|
Line 4732 proc analyzeStop {} {
|
global gAnalyze |
global gAnalyze |
set gAnalyze(stop) 1 |
set gAnalyze(stop) 1 |
set gAnalyze(status) "Stopped" |
set gAnalyze(status) "Stopped" |
exec kill -SIGKILL $gAnalyze(pid) |
catch {exec kill -SIGKILL $gAnalyze(pid)} |
} |
} |
|
|
########################################################### |
########################################################### |