annotate Lib/stdwin/stdwinq.py @ 4566:6403c94de50d legacy-trunk

Added safeguard against failure in __del__.
author Guido van Rossum <guido@python.org>
date Wed, 27 Nov 1996 19:39:58 +0000
parents 0bf825f55ac1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
364
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 # Replacements for getevent() and pollevent(),
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 # and new functions ungetevent() and sync().
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 # Every library module should ideally use this instead of
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 # stdwin.{get,poll}event(), so applications can use the services
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 # of ungetevent() and sync().
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 import stdwin
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 # Events read ahead are stored in this queue.
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 #
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 queue = []
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 # Replacement for getevent().
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 #
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 def getevent():
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 if queue:
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 event = queue[0]
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 del queue[0]
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 return event
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 else:
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 return stdwin.getevent()
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 # Replacement for pollevent().
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 #
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 def pollevent():
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 if queue:
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 return getevent()
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 else:
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 return stdwin.pollevent()
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 # Push an event back in the queue.
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 #
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 def ungetevent(event):
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 queue.insert(0, event)
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 # Synchronize the display. It turns out that this is the way to
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 # force STDWIN to call XSync(), which some (esoteric) applications need.
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 # (This is stronger than just flushing -- it actually waits for a
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 # positive response from the X server on the last command issued.)
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 #
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 def sync():
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 while 1:
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 event = stdwin.pollevent()
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 if not event: break
0bf825f55ac1 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 queue.append(event)