annotate Lib/lib-stdwin/textwin.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 8b4a274e546d
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 'textwin'
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 # Text windows, a subclass of gwin
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 import stdwin
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 import gwin
533
8b4a274e546d Use new stdwinevents.
Guido van Rossum <guido@python.org>
parents: 104
diff changeset
7 from stdwinevents import *
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 def fixsize(w):
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 docwidth, docheight = w.text.getrect()[1]
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 winheight = w.getwinsize()[1]
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 if winheight > docheight: docheight = winheight
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 w.setdocsize(0, docheight)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 fixeditmenu(w)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 def cut(w, m, id):
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 s = w.text.getfocustext()
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 if s:
104
4ec8c263ab48 Adapted to new cutbuffer interface.
Guido van Rossum <guido@python.org>
parents: 5
diff changeset
20 stdwin.setcutbuffer(0, s)
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 w.text.replace('')
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 fixsize(w)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 def copy(w, m, id):
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 s = w.text.getfocustext()
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 if s:
104
4ec8c263ab48 Adapted to new cutbuffer interface.
Guido van Rossum <guido@python.org>
parents: 5
diff changeset
27 stdwin.setcutbuffer(0, s)
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 fixeditmenu(w)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 def paste(w, m, id):
104
4ec8c263ab48 Adapted to new cutbuffer interface.
Guido van Rossum <guido@python.org>
parents: 5
diff changeset
31 w.text.replace(stdwin.getcutbuffer(0))
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 fixsize(w)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 def addeditmenu(w):
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 m = w.editmenu = w.menucreate('Edit')
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 m.action = []
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 m.additem('Cut', 'X')
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 m.action.append(cut)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 m.additem('Copy', 'C')
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 m.action.append(copy)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 m.additem('Paste', 'V')
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 m.action.append(paste)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 def fixeditmenu(w):
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 m = w.editmenu
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 f = w.text.getfocus()
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 can_copy = (f[0] < f[1])
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 m.enable(1, can_copy)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 if not w.readonly:
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 m.enable(0, can_copy)
104
4ec8c263ab48 Adapted to new cutbuffer interface.
Guido van Rossum <guido@python.org>
parents: 5
diff changeset
51 m.enable(2, (stdwin.getcutbuffer(0) <> ''))
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
52
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 def draw(w, area): # Draw method
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 w.text.draw(area)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 def size(w, newsize): # Size method
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 w.text.move((0, 0), newsize)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 fixsize(w)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
59
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 def close(w): # Close method
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 del w.text # Break circular ref
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 gwin.close(w)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
63
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 def char(w, c): # Char method
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 w.text.replace(c)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 fixsize(w)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
67
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 def backspace(w): # Backspace method
533
8b4a274e546d Use new stdwinevents.
Guido van Rossum <guido@python.org>
parents: 104
diff changeset
69 void = w.text.event(WE_COMMAND, w, WC_BACKSPACE)
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 fixsize(w)
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 arrow(w, detail): # Arrow method
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 w.text.arrow(detail)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 fixeditmenu(w)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
75
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 def mdown(w, detail): # Mouse down method
533
8b4a274e546d Use new stdwinevents.
Guido van Rossum <guido@python.org>
parents: 104
diff changeset
77 void = w.text.event(WE_MOUSE_DOWN, w, detail)
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 fixeditmenu(w)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
79
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 def mmove(w, detail): # Mouse move method
533
8b4a274e546d Use new stdwinevents.
Guido van Rossum <guido@python.org>
parents: 104
diff changeset
81 void = w.text.event(WE_MOUSE_MOVE, w, detail)
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
82
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
83 def mup(w, detail): # Mouse up method
533
8b4a274e546d Use new stdwinevents.
Guido van Rossum <guido@python.org>
parents: 104
diff changeset
84 void = w.text.event(WE_MOUSE_UP, w, detail)
5
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 fixeditmenu(w)
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 activate(w): # Activate method
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
88 fixeditmenu(w)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
89
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
90 def open(title, str): # Display a string in a window
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
91 w = gwin.open(title)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
92 w.readonly = 0
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
93 w.text = w.textcreate((0, 0), w.getwinsize())
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 w.text.replace(str)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 w.text.setfocus(0, 0)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 addeditmenu(w)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 fixsize(w)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 w.draw = draw
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 w.size = size
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 w.close = close
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 w.mdown = mdown
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 w.mmove = mmove
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 w.mup = mup
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 w.char = char
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 w.backspace = backspace
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 w.arrow = arrow
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 w.activate = activate
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 return w
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
109
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 def open_readonly(title, str): # Same with char input disabled
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 w = open(title, str)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 w.readonly = 1
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
113 w.char = w.backspace = gwin.nop
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 # Disable Cut and Paste menu item; leave Copy alone
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 w.editmenu.enable(0, 0)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 w.editmenu.enable(2, 0)
5570dbb1ce55 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 return w