X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=ypp-chatlog-alerter;h=275d7b5fc3d1e55f23311b73959e7a19e1a906c3;hb=6c12b260489687e82eaa1c6fed353dd2a40da838;hp=caefc5e306d3e538b6f38b4d45aa94019760ff92;hpb=8b472bed997ca5aba2337321a7162e174af2b299;p=ypp-sc-tools.db-live.git diff --git a/ypp-chatlog-alerter b/ypp-chatlog-alerter index caefc5e..275d7b5 100755 --- a/ypp-chatlog-alerter +++ b/ypp-chatlog-alerter @@ -74,12 +74,15 @@ proc hidenotice {} { } 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]" @@ -103,6 +106,7 @@ proc for_lw {args} { 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 {} { @@ -116,14 +120,16 @@ proc retint {} { set age [expr {$now-$time}] if {!$time} { lappend newprtimes {} - } elseif {$age < 120} { + } elseif {$age < 60} { lappend newprtimes [format "%3ds" $age] - } else { + } elseif {$age < 3600} { lappend newprtimes [format "%3dm" [expr {$age/60}]] + } else { + 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 } @@ -212,7 +218,7 @@ proc file-read-lines {lvar body} { set l "$bufdata$lhs" set bufdata {} set got $rhs -puts ">>$l<<" +#puts ">>$l<<" uplevel 1 $body } append bufdata $got @@ -256,7 +262,7 @@ proc pollfile {} { file-read-lines l { hidenotice if {[regexp {^\[\d+:\d+:\d+\] (.*)} $l dummy rhs]} { -puts PROCLINE +#puts PROCLINE process-line $rhs } } @@ -264,17 +270,21 @@ puts PROCLINE 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 {$ix<0 || [lindex $times $ix] < $now-$bell_again} { + bell -nice + } if {$ix < 0} { set cix 0 set oldest $now @@ -298,7 +308,7 @@ proc message {pirate msg} { $w delete $ix $w insert $ix $new } -puts "TIMES $times" +#puts "TIMES $times" .pirate itemconfigure $ix -foreground white retint } @@ -308,6 +318,8 @@ proc parseargs {} { foreach arg $argv { if {![string compare $arg --test-tints]} { showtints + } elseif {![string compare $arg --no-bell]} { + set bell_again -1 } else { error "unknown option $arg" }