tkgoodstuff/tcl/Alarm.tcl

121 lines
4.3 KiB
Tcl
Executable File

#######
# Alarm stuff
#######
proc AlarmView {} {
global Alarm Clock Alarm_strings
setifunset Alarm(hour) $Clock(modhour)
if {$Alarm(hour) == 0 && !$Clock(24hour)} {set Alarm(hour) 12}
setifunset Alarm(minute) $Clock(minute)
if {!$Clock(24hour)} {
setifunset Alarm(ampm) $Clock(ampm)
}
TKGDialog alarm_view \
-wmtitle $Alarm_strings(settitle) \
-title $Alarm_strings(isset) \
-nodeiconify \
-nodismiss \
-buttons [ list \
[ list enable $Alarm_strings(enable) {
set Alarm(enablealarms) 1
DEBUG "Enabling Alarm"
AlarmSet
destroy .alarm_view
}
] \
[ list disable $Alarm_strings(disable) {
set Alarm(enablealarms) 0
DEBUG "Disabling Alarm"
AlarmSet
destroy .alarm_view
}
]
]
frame .alarm_view.top -borderwidth 0 -highlightthickness 0
grid .alarm_view.top -row 1 -column 0 -sticky ew -pady 10
label .alarm_view.top.time -textvariable Alarm(timedisplay) \
-font $Alarm(timefont) -relief sunken\
-pady 0 -borderwidth 0 -highlightthickness 0
grid .alarm_view.top.time -row 0 -column 0 -padx 40
frame .alarm_view.hour -borderwidth 0 -highlightthickness 0
grid .alarm_view.hour -row 2 -sticky nsw
label .alarm_view.hour.hourlabel -text $Alarm_strings(hour)\
-pady 0 -borderwidth 0 -highlightthickness 0
grid .alarm_view.hour.hourlabel -row 0 -column 0 -padx 10
if {!$Clock(24hour)} {
tk_optionMenu .alarm_view.hour.hourbutton Alarm(hour) 12 1 2 3 4 5 6 7 8 9 10 11
grid .alarm_view.hour.hourbutton -row 0 -column 1
tk_optionMenu .alarm_view.hour.ampmbutton Alarm(ampm) am pm
grid .alarm_view.hour.ampmbutton -row 0 -column 2
trace variable Alarm(ampm) w AlarmUpdateDisplay
} else {
scale .alarm_view.hour.hourscale -orient horizontal -length 394 -from 0 -to 23 \
-tickinterval 10 -variable Alarm(hour) -command "AlarmUpdateDisplay"
grid .alarm_view.hour.hourscale -row 0 -column 1 -sticky new
}
trace variable Alarm(hour) w AlarmUpdateDisplay
frame .alarm_view.minute
grid .alarm_view.minute -row 3 -column 0 -sticky news -padx 10
label .alarm_view.minute.minutelabel -text $Alarm_strings(minute)
grid .alarm_view.minute.minutelabel -row 0 -column 0
scale .alarm_view.minute.minutescale -orient horizontal -length 394 -from 0 -to 59 \
-tickinterval 10 -variable Alarm(minute) -command "AlarmUpdateDisplay"
grid .alarm_view.minute.minutescale -row 0 -column 1 -sticky new
frame .alarm_view.msgfrm
grid columnconfigure .alarm_view.msgfrm 1 -weight 1
grid .alarm_view.msgfrm -row 4 -column 0 -sticky new -padx 10 -pady 20
label .alarm_view.msgfrm.lbl -text $Alarm_strings(message)
grid .alarm_view.msgfrm.lbl -row 0 -column 0
entry .alarm_view.msgfrm.entry -textvariable Alarm(message) \
-background \#87ceff
grid .alarm_view.msgfrm.entry -row 0 -column 1 -sticky nsew
TKGCenter .alarm_view
}
proc AlarmUpdateDisplay args {
global Alarm Clock
if {!$Clock(24hour)} {
set Alarm(timedisplay) "[format %2i $Alarm(hour)]:[format %02i $Alarm(minute)] $Alarm(ampm)"
} else {
set Alarm(timedisplay) "[format %2i $Alarm(hour)]:[format %02i $Alarm(minute)]"
}
set Alarm(minute) [TKGZeroTrim $Alarm(minute)]
}
proc AlarmSet {} {
global Alarm Clock_window Clock
if !$Alarm(enablealarms) {
catch { $Clock_window.analog delete alarmflag }
ColorConfig $Clock_window $Clock(foreground) -
catch "unset Alarm(minute) Alarm(hour) Alarm(ampm)"
return
}
if [winfo exists $Clock_window.analog] {
$Clock_window.analog create text 0 0 -text A -anchor nw\
-fill $Alarm(Analogflagcolor) -font $Alarm(flagfont) -tags alarmflag
} else {
ColorConfig $Clock_window $Alarm(NoAnalogflagcolor) -
set Clock(currentfg) $Alarm(NoAnalogflagcolor)
}
}
proc AlarmAlarm {} {
global TKG Clock Alarm TKG Alarm_strings
TKGDialog alarm_alarm \
-image warning \
-wmtitle "$Alarm_strings(title) $Clock(prettytime)" \
-title "$Alarm_strings(title) $Clock(prettytime)" \
-message $Alarm(message)
ColorConfig .alarm_alarm.title \#000000 \#f81440
if {!$Alarm(nobeep)} {TKGBell 1.2 1.3 10}
if ![Empty $Alarm(event)] {eval exec $Alarm(event) &}
catch { $Clock_window.analog delete alarmflag }
set Alarm(enablealarms) 0
AlarmSet
}