#///////////////////////////////////////////////////////////////////////////// # FILE : progressbar.tcl # PURPOSE : facilitates the use of a progress bar in tcl #///////////////////////////////////////////////////////////////////////////// namespace eval ::progressbar { variable data } #///////////////////////////////////////////////////////////////////////////// proc ::progressbar::Show { {title ""} {w 20} {h 2} {tolvar {}}} { #///////////////////////////////////////////////////////////////////////////// variable data set cmd {} set stop {} if { [llength $tolvar] } { set cmd "::progressbar::AbortAndDestroy $tolvar" set stop [mc "Abort"] } ProgressDlg .__ProgressBarDialog -title $title \ -variable ::progressbar::data(var) \ -textvariable ::progressbar::data(txt) \ -width $w -height $h -stop $stop -command $cmd wm protocol .__ProgressBarDialog WM_DELETE_WINDOW [list ::progressbar::Destroy] set data(var) 0 update } #///////////////////////////////////////////////////////////////////////////// proc ::progressbar::Destroy { } { #///////////////////////////////////////////////////////////////////////////// variable data destroy .__ProgressBarDialog set data(var) "" set data(txt) "" } #///////////////////////////////////////////////////////////////////////////// proc ::progressbar::Set { p } { #///////////////////////////////////////////////////////////////////////////// variable data set data(var) $p update } #///////////////////////////////////////////////////////////////////////////// proc ::progressbar::SetText { t } { #///////////////////////////////////////////////////////////////////////////// variable data set data(txt) $t update } #///////////////////////////////////////////////////////////////////////////// proc ::progressbar::AbortAndDestroy { tolvar } { #///////////////////////////////////////////////////////////////////////////// ::tol::console eval "Real $tolvar := (1.0)" ::tol::console stack release $tolvar ::progressbar::Destroy }