annotate Lib/stdwin/gwin.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 1d06b1499eb9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 # Module 'gwin'
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 # Generic stdwin windows
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 # This is used as a base class from which to derive other window types.
1110
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
5 # XXX DON'T USE THIS CODE ANY MORE! It is ages old!
526
2b0ad52ac396 Use modern stdwinevent constants.
Guido van Rossum <guido@python.org>
parents: 359
diff changeset
6
359
0696f198753f integrate with stdwinq
Guido van Rossum <guido@python.org>
parents: 101
diff changeset
7 import stdwin, stdwinq
101
08e55db6f796 Use stdwinevents instead of stdwinsupport.
Guido van Rossum <guido@python.org>
parents: 5
diff changeset
8 from stdwinevents import *
1110
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
9 from mainloop import mainloop, register, unregister, windows
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 # Open a window
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 def open(title): # Open a generic window
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 w = stdwin.open(title)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 stdwin.setdefwinsize(0, 0)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 # Set default event handlers
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 w.draw = nop
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 w.char = nop
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 w.mdown = nop
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 w.mmove = nop
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 w.mup = nop
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 w.m2down = m2down
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 w.m2up = m2up
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 w.size = nop
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 w.move = nop
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 w.activate = w.deactivate = nop
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 w.timer = nop
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 # default command handlers
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 w.close = close
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 w.tab = tab
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 w.enter = enter
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 w.backspace = backspace
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 w.arrow = arrow
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 w.kleft = w.kup = w.kright = w.kdown = nop
1110
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
35 w.dispatch = treatevent
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
36 register(w)
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 return w
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 def treatevent(e): # Handle a stdwin event
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 type, w, detail = e
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
42 if type == WE_DRAW:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 w.draw(w, detail)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
44 elif type == WE_MENU:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 m, item = detail
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 m.action[item](w, m, item)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
47 elif type == WE_COMMAND:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 treatcommand(w, detail)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
49 elif type == WE_CHAR:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 w.char(w, detail)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
51 elif type == WE_MOUSE_DOWN:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 if detail[1] > 1: w.m2down(w, detail)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 else: w.mdown(w, detail)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
54 elif type == WE_MOUSE_MOVE:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 w.mmove(w, detail)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
56 elif type == WE_MOUSE_UP:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 if detail[1] > 1: w.m2up(w, detail)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 else: w.mup(w, detail)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
59 elif type == WE_SIZE:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 w.size(w, w.getwinsize())
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
61 elif type == WE_ACTIVATE:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 w.activate(w)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
63 elif type == WE_DEACTIVATE:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 w.deactivate(w)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
65 elif type == WE_MOVE:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 w.move(w)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
67 elif type == WE_TIMER:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 w.timer(w)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
69 elif type == WE_CLOSE:
101
08e55db6f796 Use stdwinevents instead of stdwinsupport.
Guido van Rossum <guido@python.org>
parents: 5
diff changeset
70 w.close(w)
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
71
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 def treatcommand(w, type): # Handle a we_command event
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
73 if type == WC_CLOSE:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 w.close(w)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
75 elif type == WC_RETURN:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 w.enter(w)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
77 elif type == WC_TAB:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 w.tab(w)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
79 elif type == WC_BACKSPACE:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 w.backspace(w)
526
2b0ad52ac396 Use modern stdwinevent constants.
Guido van Rossum <guido@python.org>
parents: 359
diff changeset
81 elif type in (WC_LEFT, WC_UP, WC_RIGHT, WC_DOWN):
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
82 w.arrow(w, type)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
83
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
84
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 # Methods
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
86
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
87 def close(w): # Close method
1110
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
88 unregister(w)
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
89 del w.close # Delete our close function
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
90 w.close() # Call the close method
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
91
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
92 def arrow(w, detail): # Arrow key method
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
93 if detail == WC_LEFT:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 w.kleft(w)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
95 elif detail == WC_UP:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 w.kup(w)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
97 elif detail == WC_RIGHT:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 w.kright(w)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 526
diff changeset
99 elif detail == WC_DOWN:
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 w.kdown(w)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
101
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
102
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 # Trivial methods
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
104
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 def tab(w): w.char(w, '\t')
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 def enter(w): w.char(w, '\n') # 'return' is a Python reserved word
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 def backspace(w): w.char(w, '\b')
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 def m2down(w, detail): w.mdown(w, detail)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 def m2up(w, detail): w.mup(w, detail)
1110
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
110 def nop(*args): pass