iLogWatch

Difference between version 10 and 11 - Previous - Next
[https://web.archive.org/web/20070208092047/mywebpages.comcast.net/jakeforce/iLogWatch.jpg] if {0} { 
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 [namespace code [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]
======

<<categories>> Application | Graphics