Diff for /capa/capa51/GUITools/quizzer.tcl between versions 1.4 and 1.12

version 1.4, 1999/10/20 19:57:37 version 1.12, 2000/01/12 21:00:25
Line 948  proc createDateDialog { toplevel makedef Line 948  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 1580  proc replaceAll {} { Line 1580  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 2228  proc createPreviewWindow {} { Line 2228  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 2282  proc showParseErrors {} { Line 2303  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 2420  proc rereadCapaConfig { } { Line 2462  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 2438  proc pickCapaConfig { } { Line 2481  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 2517  proc openDocument {} { Line 2568  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 2703  proc isReferenceFileOpen { file } { Line 2755  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 2760  proc openReferenceFile { {file ""} {new Line 2812  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 2782  proc openReferenceFile { {file ""} {new Line 2835  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 2911  proc openReferenceFile { {file ""} {new Line 2964  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 2951  proc trackChanges { procName num } { Line 3005  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 2967  proc trackChanges { procName num } { Line 3025  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 2978  proc undo { num } { Line 3036  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 3729  proc createCreateDviWin {} { Line 3789  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 3743  proc printBody { lprCommand { showComple Line 3806  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 3758  proc printBody { lprCommand { showComple Line 3821  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 4014  proc printSection { { lprCommand "" } } Line 4077  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 4036  proc printSection { { lprCommand "" } } Line 4101  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 4045  proc printSection { { lprCommand "" } } Line 4110  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 4325  proc analyzeClass { {start 1} } { Line 4390  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 4606  proc analyzeStop {} { Line 4671  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)}
 }  }
   
 ###########################################################  ###########################################################

Removed from v.1.4  
changed lines
  Added in v.1.12


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