}
proc newfile {} {
- global currentfile defaultfile
+ global currentfile defaultfile logfile
set newfile [tk_getOpenFile -multiple 0 -initialfile $currentfile \
-title "Select YPP log to track"]
if {![string length $newfile]} return
+ catch { close $logfile }
+ catch { unset logfile }
+
set currentfile $newfile
set newdefaults [open $defaultfile.new w]
puts $newdefaults "[list set currentfile $currentfile]"
set e_life 120
set tint_switch 90
+set bell_again 60
set tint_switched [expr { exp( -($tint_switch+0.0) / $e_life ) }]
proc retint {} {
set age [expr {$now-$time}]
if {!$time} {
lappend newprtimes {}
- } elseif {$age < 120} {
+ } elseif {$age < 60} {
lappend newprtimes [format "%3ds" $age]
+ } elseif {$age < 3600} {
+ lappend newprtimes [format "%3dm" [expr {$age/60}]]
} else {
- lappend newprtimes [format "%3dm" [expr {$age/120}]]
+ lappend newprtimes [format "%3dh" [expr {$age/3600}]]
}
set latest [expr { $time > $latest ? $time : $latest }]
set tint [expr { exp( (-($age >= 0 ? $age : 0) + 0.0) / $e_life ) }]
-puts "AGE $age LA $latest TI $tint"
+#puts "AGE $age LA $latest TI $tint"
tintentries .msg $i $tint
incr i
}
set l "$bufdata$lhs"
set bufdata {}
set got $rhs
-puts ">>$l<<"
+#puts ">>$l<<"
uplevel 1 $body
}
append bufdata $got
file-read-lines l {
hidenotice
if {[regexp {^\[\d+:\d+:\d+\] (.*)} $l dummy rhs]} {
-puts PROCLINE
+#puts PROCLINE
process-line $rhs
}
}
proc process-line {l} {
if {[regexp {^(\w+) tells ye, \"(.*)\"$} $l dummy pirate msg]} {
-puts "MESSAGE $l"
+#puts "MESSAGE $l"
message $pirate $msg
}
}
proc message {pirate msg} {
global times pirates messages height
- global lw_ls lw_ws
+ global lw_ls lw_ws bell_again
set ix [lsearch -exact $pirates $pirate]
set now [clock seconds]
+
+ if {$bell_again > -2 &&
+ ($ix<0 || [lindex $times $ix] < $now-$bell_again)} {
+ bell -nice
+ }
if {$ix < 0} {
set cix 0
set oldest $now
$w delete $ix
$w insert $ix $new
}
-puts "TIMES $times"
+#puts "TIMES $times"
.pirate itemconfigure $ix -foreground white
retint
}
foreach arg $argv {
if {![string compare $arg --test-tints]} {
showtints
+ } elseif {![string compare $arg --no-bell]} {
+ set bell_again -2
} else {
error "unknown option $arg"
}