48 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
|  | #!/bin/sh | ||
|  | # the next line restarts using wish \ | ||
|  | exec wish "$0" "$@" | ||
|  | 
 | ||
|  | # timer -- | ||
|  | # This script generates a counter with start and stop buttons. | ||
|  | # | ||
|  | # RCS: @(#) $Id: timer,v 1.3 2001/10/29 16:23:33 dkf Exp $ | ||
|  | 
 | ||
|  | label .counter -text 0.00 -relief raised -width 10 -padx 2m -pady 1m | ||
|  | button .start -text Start -command { | ||
|  |     if {$stopped} { | ||
|  | 	set stopped 0 | ||
|  | 	set startMoment [clock clicks -milliseconds] | ||
|  | 	tick | ||
|  | 	.stop configure -state normal | ||
|  | 	.start configure -state disabled | ||
|  |     } | ||
|  | } | ||
|  | button .stop -text Stop -state disabled -command { | ||
|  |     set stopped 1 | ||
|  |     .stop configure -state disabled | ||
|  |     .start configure -state normal | ||
|  | } | ||
|  | pack .counter -side bottom -fill both | ||
|  | pack .start -side left -fill both -expand yes | ||
|  | pack .stop -side right -fill both -expand yes | ||
|  | 
 | ||
|  | set startMoment {} | ||
|  | 
 | ||
|  | set stopped 1 | ||
|  | 
 | ||
|  | proc tick {} { | ||
|  |     global startMoment stopped | ||
|  |     if {$stopped} {return} | ||
|  |     after 50 tick | ||
|  |     set elapsedMS [expr {[clock clicks -milliseconds] - $startMoment}] | ||
|  |     .counter config -text [format "%.2f" [expr {double($elapsedMS)/1000}]] | ||
|  | } | ||
|  | 
 | ||
|  | bind . <Control-c> {destroy .} | ||
|  | bind . <Control-q> {destroy .} | ||
|  | focus . | ||
|  | 
 | ||
|  | # Local Variables: | ||
|  | # mode: tcl | ||
|  | # End: |