# # Ttk widget set: progress bar utilities. # namespace eval ttk::progressbar { variable Timers ;# Map: widget name -> after ID } # Autoincrement -- # Periodic callback procedure for autoincrement mode # proc ttk::progressbar::Autoincrement {pb steptime stepsize} { variable Timers if {![winfo exists $pb]} { # widget has been destroyed -- cancel timer unset -nocomplain Timers($pb) return } set Timers($pb) [after $steptime \ [list ttk::progressbar::Autoincrement $pb $steptime $stepsize] ] $pb step $stepsize } # ttk::progressbar::start -- # Start autoincrement mode. Invoked by [$pb start] widget code. # proc ttk::progressbar::start {pb {steptime 50} {stepsize 1}} { variable Timers if {![info exists Timers($pb)]} { Autoincrement $pb $steptime $stepsize } } # ttk::progressbar::stop -- # Cancel autoincrement mode. Invoked by [$pb stop] widget code. # proc ttk::progressbar::stop {pb} { variable Timers if {[info exists Timers($pb)]} { after cancel $Timers($pb) unset Timers($pb) } $pb configure -value 0 }