version 1.1, 1999/09/28 21:25:36
|
version 1.5, 2000/08/07 20:47:29
|
Line 1
|
Line 1
|
|
# classl editor |
|
# Copyright (C) 1992-2000 Michigan State University |
|
# |
|
# The CAPA system is free software; you can redistribute it and/or |
|
# modify it under the terms of the GNU General Public License as |
|
# published by the Free Software Foundation; either version 2 of the |
|
# License, or (at your option) any later version. |
|
# |
|
# The CAPA system is distributed in the hope that it will be useful, |
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
# General Public License for more details. |
|
# |
|
# You should have received a copy of the GNU General Public |
|
# License along with the CAPA system; see the file COPYING. If not, |
|
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
|
# Boston, MA 02111-1307, USA. |
|
# |
|
# As a special exception, you have permission to link this program |
|
# with the TtH/TtM library and distribute executables, as long as you |
|
# follow the requirements of the GNU GPL in regard to all of the |
|
# software in the executable aside from TtH/TtM. |
|
|
########################################################### |
########################################################### |
# createClasslEditor |
# createClasslEditor |
########################################################### |
########################################################### |
Line 67 proc createClasslEditor { classlFile } {
|
Line 90 proc createClasslEditor { classlFile } {
|
#action |
#action |
button $actionFrame.add -text "Add" -command "classlAdd $num" |
button $actionFrame.add -text "Add" -command "classlAdd $num" |
button $actionFrame.edit -text "Edit" -command "classlEdit $num" |
button $actionFrame.edit -text "Edit" -command "classlEdit $num" |
|
button $actionFrame.save -text "Save" -command "saveClassl $num 1" |
button $actionFrame.delete -text "Delete" -command "classlDelete $num" |
button $actionFrame.delete -text "Delete" -command "classlDelete $num" |
button $actionFrame.section -text "Change Section" -command "classlSectionChange $num" |
button $actionFrame.section -text "Change Section" -command "classlSectionChange $num" |
button $actionFrame.sort -text "Sort" -command "classlSort $num" |
button $actionFrame.sort -text "Sort" -command "classlSort $num" |
button $actionFrame.print -text "Print" -command "classlPrint $num" |
button $actionFrame.print -text "Print" -command "classlPrint $num" |
button $actionFrame.find -text "Find" -command "classlFind $num" |
button $actionFrame.find -text "Find" -command "classlFind $num" |
pack $actionFrame.add $actionFrame.edit $actionFrame.delete $actionFrame.section \ |
button $actionFrame.merge -text "Merge" -command "classlMerge $num" |
$actionFrame.sort $actionFrame.print $actionFrame.find -side left |
pack $actionFrame.add $actionFrame.edit $actionFrame.save $actionFrame.delete \ |
|
$actionFrame.section $actionFrame.sort $actionFrame.print $actionFrame.find \ |
|
$actionFrame.merge -side left |
|
|
#window |
#window |
set leftFrame [frame $windowFrame.left] |
set leftFrame [frame $windowFrame.left] |
Line 738 proc classlDoFind { num type } {
|
Line 764 proc classlDoFind { num type } {
|
incr which |
incr which |
} |
} |
set max [$gClassl($num) index end] |
set max [$gClassl($num) index end] |
for {set i 0} { $i < ($max-1)} {incr i} { |
for {set i 0} { $i < ($max)} {incr i} { |
set current [expr ($i+$which)%$max] |
set current [expr ($i+$which)%$max] |
puts -nonewline "$current:" |
|
set entry [$gClassl($num) get $current] |
set entry [$gClassl($num) get $current] |
switch $type { |
switch $type { |
name { set tmp [string range [$gClassl($num) get $current] 24 53] } |
name { set tmp [string range [$gClassl($num) get $current] 24 53] } |
Line 751 proc classlDoFind { num type } {
|
Line 776 proc classlDoFind { num type } {
|
$gClassl($num) selection clear 0 end |
$gClassl($num) selection clear 0 end |
$gClassl($num) selection set $current |
$gClassl($num) selection set $current |
$gClassl($num) see $current |
$gClassl($num) see $current |
puts " " |
|
return |
return |
} |
} |
} |
} |
displayMessage "Not Found" |
displayMessage "Not Found" |
} |
|
|
|
|
} |
|
|
|
########################################################### |
|
# classlMerge |
|
########################################################### |
|
########################################################### |
|
########################################################### |
|
proc classlMerge { num } { |
|
global gClassl |
|
|
|
set filename [tk_getOpenFile -title "Select a File to merge in"] |
|
|
|
if { $filename == "" } { return } |
|
set fileId [open $filename "r"] |
|
set maxlines [lindex [exec wc -l $filename] 0] |
|
set linenum 0 |
|
set newentries 0 |
|
displayStatus "Merging $filename" both $num |
|
set aline [gets $fileId] |
|
while {![eof $fileId]} { |
|
incr linenum |
|
set found 0 |
|
set stunum [string range $aline 14 22] |
|
set max [$gClassl($num) index end] |
|
for {set i 0} { $i < ($max)} {incr i} { |
|
set tmp [string range [$gClassl($num) get $i] 14 22] |
|
if { [regexp -nocase $stunum $tmp] } { |
|
set found 1 |
|
break |
|
} |
|
} |
|
if { !$found } { |
|
incr newentries |
|
$gClassl($num) insert end $aline |
|
} |
|
updateStatusBar [expr $linenum/double($maxlines)] $num |
|
set aline [gets $fileId] |
|
} |
|
removeStatus $num |
|
if { $newentries != 0 } { |
|
$gClassl($num) see $max |
|
$gClassl($num) selection set $max |
|
} |
|
displayMessage "Added $newentries students." |
|
} |