[http://mywebpages.comcast.net/jakeforce/iLogWatch.jpg] if {0} {
by [Michael Jacobson]
iLogWatch is my updates to [RS]'s [A little stopwatch] application. With the following additions (while maintaining the small codebase ~ 73 lines of code):
* added hours (HH:MM:SS.MS)
* take a split time
* comment field
* logging window
* ability to save the log
* file/clear menu
* colored buttons
* larger fonts (easier to press on my pda)
This application was developed for my [PocketPC] but the current port of the TclTk does not work well enough to run this application (hopefully some day it will).}
======
entry .e1
eval [concat font create Time "[font actual [.e1 cget -font]] -size 12 -weight bold"]
destroy .e1
#----- button and Time
frame .b
button .b.start -text Start -command {eval \[.b.start cget -text\]} -bg green -width 5 -font Time
label .b.time -textvar time -width 12 -bg black -fg green -font Time
set time 00:00:00.00
button .b.split -text Split -command Split -state disable -bg SystemButtonFace -width 5 -font Time
pack .b.start .b.time .b.split -side left -fill y
pack .b -side top -fill y -expand 1
#----- Comment label and entry
frame .c
label .c.comm -text Comments -width 9
entry .c.mess -width 30 -textvariable Mess
pack .c.comm .c.mess -side left -fill y -expand 1
pack .c -side top -fill y -expand 1
bind .c.mess <KeyPress-Return> Comment
focus .c.mess
#----- Log window
frame .a
scrollbar .a.y -command ".a.t yview"
text .a.t -yscrollc ".a.y set" -wrap word -font {Tahoma 8} -padx 2 -pady 3 -borderwidth 0 -takefocus 0
pack .a.y -side right -fill y
pack .a.t -side right -fill both -expand 1
pack .a -side bottom
#----- procedures
proc every {ms body} {eval $body; after $ms [info level 0]}
proc Time {} {
set m [expr {[clock clicks -milliseconds] - $::time0}]
return [format %2.2d:%2.2d:%2.2d.%2.2d \
[expr {$m/360000}] [expr {$m/60000}] [expr {($m/1000)%60}] [expr {$m%1000/10}]] }
proc Start {} {
if {$::time=="00:00:00.00"} {
set ::time0 [clock clicks -milliseconds] .a.t insert 1.0 "Start : [clock format [clock seconds] -format %T_%D]\n"
.b.start configure -text Stop -bg red
.b.split configure -state normal -bg green
}
every 10 {
set ::time [Time]
} }
proc Stop {} {
if {[llength [after info]]} { after cancel [after info] }
.b.start configure -text Reset -bg yellow
.b.split configure -state disable -bg SystemButtonFace
.a.t insert 1.0 "Stop : [Time]\n" }
proc Reset {} {
set ::time 00:00:00.00
.b.start configure -text Start -bg green }
proc Split {} {
.a.t insert 1.0 "Split : [Time]\n" }
proc Save {} {
set filetime [clock format [clock seconds] -format %y-%m-%d_%H^%M^%S]
set name [tk_getSaveFile -initialfile iLogWatch-$filetime.txt \
-filetypes [list "{Logs} .txt" {All *.*}]]
if {$name != ""} { set fp [open $name w]
puts $fp [.a.t get 1.0 end-1c]
close $fp
} }
proc Comment {} {
.a.t insert 1.0 "Comment : $::Mess \n"; set ::Mess "" }
#----- Size and Menu for PocketPC
wm geometry . 240x268+0+0
. config -menu [menu .m]
.m add casc -label File -menu [menu .m.file -tearoff 0]
.m.file add comm -label Save -comm Save
.m.file add comm -label Exit -comm exit
.m add casc -label Log -menu [menu .m.log -tearoff 0]
.m.log add comm -label Clear -comm [list .a.t delete 0.0 end]
======
----
[C<<categoryies>> Application] |
[Category Graphics]