1# 2# $Id$ 3# 4# Ttk widget set: progress bar utilities. 5# 6 7namespace eval ttk::progressbar { 8 variable Timers ;# Map: widget name -> after ID 9} 10 11# Autoincrement -- 12# Periodic callback procedure for autoincrement mode 13# 14proc ttk::progressbar::Autoincrement {pb steptime stepsize} { 15 variable Timers 16 17 if {![winfo exists $pb]} { 18 # widget has been destroyed -- cancel timer 19 unset -nocomplain Timers($pb) 20 return 21 } 22 23 $pb step $stepsize 24 25 set Timers($pb) [after $steptime \ 26 [list ttk::progressbar::Autoincrement $pb $steptime $stepsize] ] 27} 28 29# ttk::progressbar::start -- 30# Start autoincrement mode. Invoked by [$pb start] widget code. 31# 32proc ttk::progressbar::start {pb {steptime 50} {stepsize 1}} { 33 variable Timers 34 if {![info exists Timers($pb)]} { 35 Autoincrement $pb $steptime $stepsize 36 } 37} 38 39# ttk::progressbar::stop -- 40# Cancel autoincrement mode. Invoked by [$pb stop] widget code. 41# 42proc ttk::progressbar::stop {pb} { 43 variable Timers 44 if {[info exists Timers($pb)]} { 45 after cancel $Timers($pb) 46 unset Timers($pb) 47 } 48 $pb configure -value 0 49} 50 51 52