time_count
Télécharger (3 Ko)
#!/usr/bin/wish
#Script Tcl/Tk affichant un compteur.
#Affiche le temps passé depuis son lancement mais aussi
#un cumul (avec possibilité de le remettre à 0).
#Je m'en servais pour compter mon temps de
#connexion Internet par mois.
set TIME_FILE /usr/bin/internet/total_time
set chour 0
set cmin 0
set csec 0
set thour 0
set tmin 0
set tsec 0
set file [open $TIME_FILE r]
gets $file phour
gets $file pmin
gets $file psec
close $file
set start_time [exec date +%s]
proc quit_timer {} {
save_time
exit 0
}
proc save_time {} {
upvar thour thour
upvar tmin tmin
upvar tsec tsec
upvar chour chour
upvar cmin cmin
upvar csec csec
upvar TIME_FILE TIME_FILE
set file [open $TIME_FILE w]
puts $file $thour
puts $file $tmin
puts $file $tsec
puts $file $chour
puts $file $cmin
puts $file $csec
close $file
puts "saved"
exit 0
}
proc mk_time {hour min sec} {
set zh ""
set zm ""
set zs ""
if {$hour<10} {
set zh "0"
}
if {$min<10} {
set zm "0"
}
if {$sec<10} {
set zs "0"
}
return "$zh$hour:$zm$min:$zs$sec"
}
proc update_timer {} {
upvar phour phour
upvar pmin pmin
upvar psec psec
upvar chour chour
upvar cmin cmin
upvar csec csec
upvar thour thour
upvar tmin tmin
upvar tsec tsec
upvar start_time start_time
set curtime [exec date +%s]
set elapsed_time [expr $curtime - $start_time]
set chour [expr $elapsed_time / 3600]
set elapsed_time [expr $elapsed_time - [expr $chour * 3600]]
set cmin [expr $elapsed_time / 60]
set csec [expr $elapsed_time % 60]
set thour [expr $phour + $chour]
set tmin [expr $pmin + $cmin]
set tsec [expr $psec + $csec]
set retenu [expr $tsec / 60]
if {$retenu != 0} {
set tmin [expr $tmin + $retenu]
set tsec [expr $tsec % 60]
}
set retenu [expr $tmin / 60]
if {$retenu != 0} {
set thour [expr $thour + $retenu]
set tmin [expr $tmin % 60]
}
.lvTotal config -text [mk_time $thour $tmin $tsec]
.lvCurrent config -text [mk_time $chour $cmin $csec]
after 1000 update_timer
}
proc reset {} {
upvar phour phour
upvar pmin pmin
upvar psec psec
upvar chour chour
upvar cmin cmin
upvar csec csec
upvar thour thour
upvar tmin tmin
upvar tsec tsec
upvar start_time start_time
set phour 0
set pmin 0
set psec 0
set thour 0
set tmin 0
set tsec 0
set chour 0
set cmin 0
set csec 0
set start_time [exec date +%s]
.lvTotal config -text [mk_time $thour $tmin $tsec]
.lvCurrent config -text [mk_time $chour $cmin $csec]
}
. config -bg steelblue
label .liTotal -text "Temps total: " -justify right -bg steelblue
label .lvTotal -text [mk_time $phour $pmin $psec] -justify left -bg steelblue
label .liCurrent -text "Temps courant: " -justify right -bg steelblue
label .lvCurrent -text "0" -justify left -bg steelblue
button .bReset -text "RAZ" -justify center -command {reset}
grid .liTotal -row 0 -column 0 -sticky "e"
grid .lvTotal -row 0 -column 1 -sticky "w"
grid .liCurrent -row 1 -column 0 -sticky "e"
grid .lvCurrent -row 1 -column 1 -sticky "w"
grid .bReset -row 2 -column 0 -columnspan 2 -sticky "new"
bind .lvTotal <Destroy> {save_time}
update_timer
#Script Tcl/Tk affichant un compteur.
#Affiche le temps passé depuis son lancement mais aussi
#un cumul (avec possibilité de le remettre à 0).
#Je m'en servais pour compter mon temps de
#connexion Internet par mois.
set TIME_FILE /usr/bin/internet/total_time
set chour 0
set cmin 0
set csec 0
set thour 0
set tmin 0
set tsec 0
set file [open $TIME_FILE r]
gets $file phour
gets $file pmin
gets $file psec
close $file
set start_time [exec date +%s]
proc quit_timer {} {
save_time
exit 0
}
proc save_time {} {
upvar thour thour
upvar tmin tmin
upvar tsec tsec
upvar chour chour
upvar cmin cmin
upvar csec csec
upvar TIME_FILE TIME_FILE
set file [open $TIME_FILE w]
puts $file $thour
puts $file $tmin
puts $file $tsec
puts $file $chour
puts $file $cmin
puts $file $csec
close $file
puts "saved"
exit 0
}
proc mk_time {hour min sec} {
set zh ""
set zm ""
set zs ""
if {$hour<10} {
set zh "0"
}
if {$min<10} {
set zm "0"
}
if {$sec<10} {
set zs "0"
}
return "$zh$hour:$zm$min:$zs$sec"
}
proc update_timer {} {
upvar phour phour
upvar pmin pmin
upvar psec psec
upvar chour chour
upvar cmin cmin
upvar csec csec
upvar thour thour
upvar tmin tmin
upvar tsec tsec
upvar start_time start_time
set curtime [exec date +%s]
set elapsed_time [expr $curtime - $start_time]
set chour [expr $elapsed_time / 3600]
set elapsed_time [expr $elapsed_time - [expr $chour * 3600]]
set cmin [expr $elapsed_time / 60]
set csec [expr $elapsed_time % 60]
set thour [expr $phour + $chour]
set tmin [expr $pmin + $cmin]
set tsec [expr $psec + $csec]
set retenu [expr $tsec / 60]
if {$retenu != 0} {
set tmin [expr $tmin + $retenu]
set tsec [expr $tsec % 60]
}
set retenu [expr $tmin / 60]
if {$retenu != 0} {
set thour [expr $thour + $retenu]
set tmin [expr $tmin % 60]
}
.lvTotal config -text [mk_time $thour $tmin $tsec]
.lvCurrent config -text [mk_time $chour $cmin $csec]
after 1000 update_timer
}
proc reset {} {
upvar phour phour
upvar pmin pmin
upvar psec psec
upvar chour chour
upvar cmin cmin
upvar csec csec
upvar thour thour
upvar tmin tmin
upvar tsec tsec
upvar start_time start_time
set phour 0
set pmin 0
set psec 0
set thour 0
set tmin 0
set tsec 0
set chour 0
set cmin 0
set csec 0
set start_time [exec date +%s]
.lvTotal config -text [mk_time $thour $tmin $tsec]
.lvCurrent config -text [mk_time $chour $cmin $csec]
}
. config -bg steelblue
label .liTotal -text "Temps total: " -justify right -bg steelblue
label .lvTotal -text [mk_time $phour $pmin $psec] -justify left -bg steelblue
label .liCurrent -text "Temps courant: " -justify right -bg steelblue
label .lvCurrent -text "0" -justify left -bg steelblue
button .bReset -text "RAZ" -justify center -command {reset}
grid .liTotal -row 0 -column 0 -sticky "e"
grid .lvTotal -row 0 -column 1 -sticky "w"
grid .liCurrent -row 1 -column 0 -sticky "e"
grid .lvCurrent -row 1 -column 1 -sticky "w"
grid .bReset -row 2 -column 0 -columnspan 2 -sticky "new"
bind .lvTotal <Destroy> {save_time}
update_timer
Si avez des problèmes avec ce script, vous pouvez utiliser le Forum Scripts