annotate Demo/stdwin/clock.py @ 5817:48b94de85bf3 legacy-trunk

Extensive changes by AMK.
author Guido van Rossum <guido@python.org>
date Thu, 17 Jul 1997 16:29:42 +0000
parents 73758db2f464
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4573
73758db2f464 /usr/local/bin/python -> /usr/bin/env python
Guido van Rossum <guido@python.org>
parents: 2631
diff changeset
1 #! /usr/bin/env python
752
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 # 'clock' -- A simple alarm clock
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 # The alarm can be set at 5 minute intervals on a 12 hour basis.
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 # It is controlled with the mouse:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 # - Click and drag around the circle to set the alarm.
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 # - Click far outside the circle to clear the alarm.
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 # - Click near the center to set the alarm at the last time set.
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 # The alarm time is indicated by a small triangle just outside the circle,
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 # and also by a digital time at the bottom.
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 # The indicators disappear when the alarm is not set.
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 # When the alarm goes off, it beeps every minute for five minutes,
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 # and the clock turns into inverse video.
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 # Click or activate the window to turn the ringing off.
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 import stdwin
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 from stdwinevents import WE_MOUSE_DOWN, WE_MOUSE_MOVE, WE_MOUSE_UP, \
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 WE_TIMER, WE_DRAW, WE_SIZE, WE_CLOSE, WE_ACTIVATE
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 import mainloop
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 import time
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 from math import sin, cos, atan2, pi, sqrt
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 DEFWIDTH, DEFHEIGHT = 200, 200
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 MOUSE_EVENTS = (WE_MOUSE_DOWN, WE_MOUSE_MOVE, WE_MOUSE_UP)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 ORIGIN = 0, 0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 FARAWAY = 2000, 2000
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 EVERYWHERE = ORIGIN, FARAWAY
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 def main():
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 win = makewindow()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 del win
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 mainloop.mainloop()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 def makewindow():
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 stdwin.setdefwinsize(DEFWIDTH, DEFHEIGHT + stdwin.lineheight())
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 win = stdwin.open('clock')
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 setdimensions(win)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 win.set = 1 # True when alarm is set
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 win.time = 11*60 + 40 # Time when alarm must go off
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 win.ring = 0 # True when alarm is ringing
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 win.dispatch = cdispatch
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 mainloop.register(win)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 settimer(win)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 return win
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 def cdispatch(event):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 type, win, detail = event
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 if type == WE_DRAW:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 drawproc(win, detail)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 elif type == WE_TIMER:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 settimer(win)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 drawproc(win, EVERYWHERE)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 elif type in MOUSE_EVENTS:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 mouseclick(win, type, detail)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 elif type == WE_ACTIVATE:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 if win.ring:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 # Turn the ringing off
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 win.ring = 0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 win.begindrawing().invert(win.mainarea)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 elif type == WE_SIZE:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 win.change(EVERYWHERE)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 setdimensions(win)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 elif type == WE_CLOSE:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 mainloop.unregister(win)
1185
0efef9785a25 Close the window when receiving a close request; turn time into int.
Guido van Rossum <guido@python.org>
parents: 1120
diff changeset
68 win.close()
752
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
69
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 def setdimensions(win):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 width, height = win.getwinsize()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 height = height - stdwin.lineheight()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 if width < height: size = width
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 else: size = height
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 halfwidth = width/2
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 halfheight = height/2
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 win.center = halfwidth, halfheight
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 win.radius = size*45/100
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
79 win.width = width
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 win.height = height
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
81 win.corner = width, height
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
82 win.mainarea = ORIGIN, win.corner
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
83 win.lineheight = stdwin.lineheight()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 win.farcorner = width, height + win.lineheight
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 win.statusarea = (0, height), win.farcorner
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
86 win.fullarea = ORIGIN, win.farcorner
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
87
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
88 def settimer(win):
2631
912317a37e2b changed treatment of local time
Guido van Rossum <guido@python.org>
parents: 1185
diff changeset
89 now = time.time()
912317a37e2b changed treatment of local time
Guido van Rossum <guido@python.org>
parents: 1185
diff changeset
90 hours, minutes, seconds = win.times = calctime(now)
912317a37e2b changed treatment of local time
Guido van Rossum <guido@python.org>
parents: 1185
diff changeset
91 delay = 61 - seconds
752
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
92 win.settimer(10 * delay)
2631
912317a37e2b changed treatment of local time
Guido van Rossum <guido@python.org>
parents: 1185
diff changeset
93 minutes = minutes + hours*60
752
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 if win.ring:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 # Is it time to stop the alarm ringing?
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 since = (minutes - win.time + 720) % 720
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 if since >= 5:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 # Stop it now
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 win.ring = 0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 else:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 # Ring again, once every minute
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 stdwin.fleep()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 elif win.set and minutes == win.time:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 # Start the alarm ringing
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 win.ring = 1
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 stdwin.fleep()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
107
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 def drawproc(win, area):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 hours, minutes, seconds = win.times
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 d = win.begindrawing()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 d.cliprect(area)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 d.erase(EVERYWHERE)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
113 d.circle(win.center, win.radius)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 d.line(win.center, calcpoint(win, hours*30 + minutes/2, 0.6))
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 d.line(win.center, calcpoint(win, minutes*6, 1.0))
2631
912317a37e2b changed treatment of local time
Guido van Rossum <guido@python.org>
parents: 1185
diff changeset
116 str = "%02d:%02d" % (hours, minutes)
752
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 p = (win.width - d.textwidth(str))/2, win.height * 3 / 4
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 d.text(p, str)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
119 if win.set:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
120 drawalarm(win, d)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 drawalarmtime(win, d)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
122 if win.ring:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 d.invert(win.mainarea)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
124
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 def mouseclick(win, type, detail):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
126 d = win.begindrawing()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
127 if win.ring:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
128 # First turn the ringing off
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 win.ring = 0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 d.invert(win.mainarea)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
131 h, v = detail[0]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 ch, cv = win.center
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
133 x, y = h-ch, cv-v
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 dist = sqrt(x*x + y*y) / float(win.radius)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
135 if dist > 1.2:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 if win.set:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 drawalarm(win, d)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
138 erasealarmtime(win, d)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 win.set = 0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 elif dist < 0.8:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
141 if not win.set:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
142 win.set = 1
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
143 drawalarm(win, d)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
144 drawalarmtime(win, d)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
145 else:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 # Convert to half-degrees (range 0..720)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 alpha = atan2(y, x)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
148 hdeg = alpha*360.0/pi
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 hdeg = 180.0 - hdeg
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 hdeg = (hdeg + 720.0) % 720.0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 atime = 5*int(hdeg/5.0 + 0.5)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 if atime <> win.time or not win.set:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 if win.set:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
154 drawalarm(win, d)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
155 erasealarmtime(win, d)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
156 win.set = 1
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
157 win.time = atime
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
158 drawalarm(win, d)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
159 drawalarmtime(win, d)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
160
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
161 def drawalarm(win, d):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
162 p1 = calcpoint(win, float(win.time)/2.0, 1.02)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
163 p2 = calcpoint(win, float(win.time)/2.0 - 4.0, 1.1)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
164 p3 = calcpoint(win, float(win.time)/2.0 + 4.0, 1.1)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
165 d.xorline(p1, p2)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
166 d.xorline(p2, p3)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
167 d.xorline(p3, p1)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
168
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 def erasealarmtime(win, d):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
170 d.erase(win.statusarea)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
171
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
172 def drawalarmtime(win, d):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 # win.time is in the range 0..720 with origin at 12 o'clock
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 # Convert to hours (0..12) and minutes (12*(0..60))
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
175 hh = win.time/60
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
176 mm = win.time%60
2631
912317a37e2b changed treatment of local time
Guido van Rossum <guido@python.org>
parents: 1185
diff changeset
177 str = 'Alarm@%02d:%02d' % (hh, mm)
752
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
178 p1 = (win.width - d.textwidth(str))/2, win.height
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
179 d.text(p1, str)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
180
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
181 def calcpoint(win, degrees, size):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
182 alpha = pi/2.0 - float(degrees) * pi/180.0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
183 x, y = cos(alpha), sin(alpha)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
184 h, v = win.center
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
185 r = float(win.radius)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
186 return h + int(x*size*r), v - int(y*size*r)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
187
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
188 def calctime(now):
2631
912317a37e2b changed treatment of local time
Guido van Rossum <guido@python.org>
parents: 1185
diff changeset
189 hours, minutes, seconds = time.localtime(now)[3:6]
912317a37e2b changed treatment of local time
Guido van Rossum <guido@python.org>
parents: 1185
diff changeset
190 hours = hours % 12
752
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 return hours, minutes, seconds
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
192
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
193 main()