1# -*- tcl -*- 2# (C) 2006 Andreas Kupries <andreas_kupries@users.sourceforge.net> 3## 4# ### 5 6namespace eval ::sak::animate {} 7 8# ### 9 10proc ::sak::animate::init {} { 11 variable prefix 12 variable n 0 13 variable max [llength $prefix] 14 variable extend 0 15} 16 17proc ::sak::animate::next {string} { 18 variable prefix 19 variable n 20 variable max 21 Extend string 22 23 puts -nonewline stdout \r\[[lindex $prefix $n]\]\ $string 24 flush stdout 25 26 incr n ; if {$n >= $max} {set n 0} 27 return 28} 29 30proc ::sak::animate::last {string} { 31 variable clear 32 Extend string 33 34 puts stdout \r\[$clear\]\ $string 35 flush stdout 36 return 37} 38 39# ### 40 41proc ::sak::animate::Extend {sv} { 42 variable extend 43 upvar 1 $sv string 44 45 set l [string length $string] 46 while {[string length $string] < $extend} {append string " "} 47 if {$l > $extend} {set extend $l} 48 return 49} 50 51# ### 52 53namespace eval ::sak::animate { 54 namespace export init next last 55 56 variable prefix { 57 {* } {* } {* } {* } {* } 58 { * } { * } { * } { * } { * } 59 { * } { * } { * } { * } { * } 60 { *} { *} { *} { *} { *} 61 { * } { * } { * } { * } { * } 62 { * } { * } { * } { * } { * } 63 } 64 variable clear { } 65} 66 67## 68# ### 69 70package provide sak::animate 1.0 71