# Created By : $AUTHOR$ # Last Modified : <040509.1504> # # Description # package require snit 0.93 snit::type Progress { # options option -size "" option -file "" # variables variable state 0 # typevariables constructor {args} { $self configurelist $args if {[file exists $options(-file)]} { set options(-size) [file size $options(-file)] } } # public methods (are lowercase) method progress {pos} { #puts stderr "$pos expr $pos / $options(-size) * 100 [expr $pos / $options(-size) * 100]" if {[expr $state + 4] < [expr 1.0 * $pos / $options(-size) * 100]} { if {[expr $state % 20] == 0 && $state > 0} { puts -nonewline stderr " $state " ; } else { puts -nonewline stderr "#" } incr state 4 } } # private methods (are uppercase) } # test proc test {} { Progress p -size 100 for {set i 0} {$i < 100} { incr i} { p progress $i after 1000 } }