# Created By : Dr. Detlef Groth, MPIMG Berlin # Last Modified : <050221.1233> # # Description : snittype for a console progressbar, # required to get feedback during parsing of gigabytes # of biological data # 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} { 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 {} { set p [Progress %AUTO% -size 100] for {set i 0} {$i < 100} { incr i} { $p progress $i update after 200 } } # test -> ##### 20 #### 40 #### 60 #### 80 ###