annotate Lib/stdwin/formatter.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 560ec7030817
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 # A class to help applications that do fancy text formatting.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 # You create an instance each time you must redraw the window.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 # Set the initial left, top and right coordinates;
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 # then feed it words, font changes and vertical movements.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 # This class should eventually be extended to support much fancier
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 # formatting, along the lines of TeX; for now, a very simple model
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 # is sufficient.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 #
524
b3825ce83c87 Use ImportError.
Guido van Rossum <guido@python.org>
parents: 357
diff changeset
10 class formatter:
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 # Initialize a formatter instance.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 # Pass the window's drawing object, and left, top, right
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 # coordinates of the drawing space as arguments.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 #
1435
560ec7030817 * Mass change: get rid of all init() methods, in favor of __init__()
Guido van Rossum <guido@python.org>
parents: 1110
diff changeset
16 def __init__(self, d, left, top, right):
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 self.d = d # Drawing object
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 self.left = left # Left margin
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 self.right = right # Right margin
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 self.v = top # Top of current line
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 self.center = 0
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 self.justify = 1
357
23587bea11bb Added vspacepixels.
Guido van Rossum <guido@python.org>
parents: 247
diff changeset
23 self.setfont('') # Default font
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 self._reset() # Prepare for new line
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 # Reset for start of fresh line.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 def _reset(self):
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 self.boxes = [] # Boxes and glue still to be output
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 self.sum_width = 0 # Total width of boxes
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 self.sum_space = 0 # Total space between boxes
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 self.sum_stretch = 0 # Total stretch for space between boxes
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 self.max_ascent = 0 # Max ascent of current line
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 self.max_descent = 0 # Max descent of current line
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 self.avail_width = self.right - self.left
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 self.hang_indent = 0
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 # Set the current font, and compute some values from it.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 def setfont(self, font):
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 self.font = font
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 self.d.setfont(font)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 self.font_space = self.d.textwidth(' ')
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 self.font_ascent = self.d.baseline()
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 self.font_descent = self.d.lineheight() - self.font_ascent
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 # Add a word to the list of boxes; first flush if line is full.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 # Space and stretch factors are expressed in fractions
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 # of the current font's space width.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 # (Two variations: one without, one with explicit stretch factor.)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 #
1110
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
52 def addword(self, word, spacefactor):
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 self.addwordstretch(word, spacefactor, spacefactor)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 #
1110
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
55 def addwordstretch(self, word, spacefactor, stretchfactor):
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 width = self.d.textwidth(word)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 if width > self.avail_width:
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 self._flush(1)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 space = int(float(self.font_space) * float(spacefactor))
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 stretch = int(float(self.font_space) * float(stretchfactor))
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 box = (self.font, word, width, space, stretch)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 self.boxes.append(box)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 self.sum_width = self.sum_width + width
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 self.sum_space = self.sum_space + space
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 self.sum_stretch = self.sum_stretch + stretch
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 self.max_ascent = max(self.font_ascent, self.max_ascent)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 self.max_descent = max(self.font_descent, self.max_descent)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 self.avail_width = self.avail_width - width - space
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 # Flush current line and start a new one.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 # Flushing twice is harmless (i.e. does not introduce a blank line).
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 # (Two versions: the internal one has a parameter for justification.)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 def flush(self):
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 self._flush(0)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 def _flush(self, justify):
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 if not self.boxes:
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
79 return
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
81 # Compute amount of stretch needed.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
82 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
83 if justify and self.justify or self.center:
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 # Compute extra space to fill;
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
86 # this is avail_width plus glue from last box.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
87 # Also compute available stretch.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
88 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
89 last_box = self.boxes[len(self.boxes)-1]
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
90 font, word, width, space, stretch = last_box
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
91 tot_extra = self.avail_width + space
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
92 tot_stretch = self.sum_stretch - stretch
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
93 else:
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 tot_extra = tot_stretch = 0
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 # Output the boxes.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 baseline = self.v + self.max_ascent
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 h = self.left + self.hang_indent
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 if self.center:
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 h = h + tot_extra / 2
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 tot_extra = tot_stretch = 0
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 for font, word, width, space, stretch in self.boxes:
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 self.d.setfont(font)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 v = baseline - self.d.baseline()
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 self.d.text((h, v), word)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 h = h + width + space
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 if tot_extra > 0 and tot_stretch > 0:
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 extra = stretch * tot_extra / tot_stretch
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 h = h + extra
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 tot_extra = tot_extra - extra
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 tot_stretch = tot_stretch - stretch
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
113 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 # Prepare for next line.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 self.v = baseline + self.max_descent
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 self.d.setfont(self.font)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 self._reset()
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
119 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
120 # Add vertical space; first flush.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 # Vertical space is expressed in fractions of the current
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
122 # font's line height.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 #
357
23587bea11bb Added vspacepixels.
Guido van Rossum <guido@python.org>
parents: 247
diff changeset
124 def vspace(self, lines):
23587bea11bb Added vspacepixels.
Guido van Rossum <guido@python.org>
parents: 247
diff changeset
125 self.vspacepixels(int(lines * self.d.lineheight()))
23587bea11bb Added vspacepixels.
Guido van Rossum <guido@python.org>
parents: 247
diff changeset
126 #
23587bea11bb Added vspacepixels.
Guido van Rossum <guido@python.org>
parents: 247
diff changeset
127 # Add vertical space given in pixels.
23587bea11bb Added vspacepixels.
Guido van Rossum <guido@python.org>
parents: 247
diff changeset
128 #
23587bea11bb Added vspacepixels.
Guido van Rossum <guido@python.org>
parents: 247
diff changeset
129 def vspacepixels(self, dv):
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 self.flush()
357
23587bea11bb Added vspacepixels.
Guido van Rossum <guido@python.org>
parents: 247
diff changeset
131 self.v = self.v + dv
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
133 # Set temporary (hanging) indent, for paragraph start.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 # First flush.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
135 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 def tempindent(self, space):
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 self.flush()
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
138 hang = int(float(self.font_space) * float(space))
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 self.hang_indent = hang
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 self.avail_width = self.avail_width - hang
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
141 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
142 # Add (permanent) left indentation. First flush.
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
143 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
144 def addleftindent(self, space):
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
145 self.flush()
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 self.left = self.left \
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 + int(float(self.font_space) * float(space))
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
148 self._reset()
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
150
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
151
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 # Test procedure
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 #
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
154 def test():
357
23587bea11bb Added vspacepixels.
Guido van Rossum <guido@python.org>
parents: 247
diff changeset
155 import stdwin, stdwinq
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
156 from stdwinevents import *
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
157 try:
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
158 import mac
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
159 # Mac font assignments:
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
160 font1 = 'times', '', 12
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
161 font2 = 'times', 'b', 14
524
b3825ce83c87 Use ImportError.
Guido van Rossum <guido@python.org>
parents: 357
diff changeset
162 except ImportError:
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
163 # X11R4 font assignments
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
164 font1 = '*times-medium-r-*-120-*'
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
165 font2 = '*times-bold-r-*-140-*'
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
166 words = \
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
167 ['The','quick','brown','fox','jumps','over','the','lazy','dog.']
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
168 words = words * 2
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 stage = 0
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
170 stages = [(0,0,'ragged'), (1,0,'justified'), (0,1,'centered')]
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
171 justify, center, title = stages[stage]
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
172 stdwin.setdefwinsize(300,200)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 w = stdwin.open(title)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 winsize = w.getwinsize()
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
175 while 1:
357
23587bea11bb Added vspacepixels.
Guido van Rossum <guido@python.org>
parents: 247
diff changeset
176 type, window, detail = stdwinq.getevent()
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 524
diff changeset
177 if type == WE_CLOSE:
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
178 break
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 524
diff changeset
179 elif type == WE_SIZE:
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
180 newsize = w.getwinsize()
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
181 if newsize <> winsize:
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
182 w.change((0,0), winsize)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
183 winsize = newsize
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
184 w.change((0,0), winsize)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 524
diff changeset
185 elif type == WE_MOUSE_DOWN:
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
186 stage = (stage + 1) % len(stages)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
187 justify, center, title = stages[stage]
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
188 w.settitle(title)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
189 w.change((0, 0), (1000, 1000))
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 524
diff changeset
190 elif type == WE_DRAW:
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 width, height = winsize
1435
560ec7030817 * Mass change: get rid of all init() methods, in favor of __init__()
Guido van Rossum <guido@python.org>
parents: 1110
diff changeset
192 f = formatter(w.begindrawing(), 0, 0, width)
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
193 f.center = center
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
194 f.justify = justify
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
195 if not center:
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
196 f.tempindent(5)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
197 for font in font1, font2, font1:
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
198 f.setfont(font)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
199 for word in words:
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 524
diff changeset
200 space = 1 + (word[-1:] == '.')
247
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
201 f.addword(word, space)
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
202 if center and space > 1:
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
203 f.flush()
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
204 f.flush()
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
205 height = f.v
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
206 del f
359bf109da0f Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
207 w.setdocsize(0, height)