annotate Lib/stdwin/Buttons.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 1d06b1499eb9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
1 # Module 'Buttons'
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
4 # Import module 'rect' renamed as '_rect' to avoid exporting it on
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
5 # 'from Buttons import *'
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 import rect
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 _rect = rect
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 del rect
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 # Field indices in mouse event detail
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 _HV = 0
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 _CLICKS = 1
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 _BUTTON = 2
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 _MASK = 3
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
20 # LabelAppearance provides defaults for all appearance methods.
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
21 # selected state not visible
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
22 # disabled --> crossed out
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
23 # hilited --> inverted
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 #
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
25 class LabelAppearance:
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 # Initialization
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 #
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
29 def init_appearance(self):
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
30 self.bounds = _rect.empty
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 self.enabled = 1
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 self.hilited = 0
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 self.selected = 0
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 self.text = ''
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
35 #
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
36 # Size enquiry
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
37 #
1110
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
38 def getminsize(self, m, (width, height)):
345
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
39 width = max(width, m.textwidth(self.text) + 6)
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
40 height = max(height, m.lineheight() + 6)
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
41 return width, height
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
42 #
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
43 def getbounds(self):
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
44 return self.bounds
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 # Changing the parameters
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 def settext(self, text):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 self.text = text
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
50 if self.bounds <> _rect.empty:
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
51 self.recalctextpos()
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
52 self.redraw()
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 def setbounds(self, bounds):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 self.bounds = bounds
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
56 if self.bounds <> _rect.empty:
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
57 self.recalc()
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 #
188
d81818e62671 Added dummy realize() method.
Guido van Rossum <guido@python.org>
parents: 63
diff changeset
59 def realize(self):
d81818e62671 Added dummy realize() method.
Guido van Rossum <guido@python.org>
parents: 63
diff changeset
60 pass
d81818e62671 Added dummy realize() method.
Guido van Rossum <guido@python.org>
parents: 63
diff changeset
61 #
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 # Changing the state bits
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 def enable(self, flag):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 if flag <> self.enabled:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 self.enabled = flag
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
67 if self.bounds <> _rect.empty:
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
68 self.flipenable(self.parent.begindrawing())
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 def hilite(self, flag):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 if flag <> self.hilited:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 self.hilited = flag
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
73 if self.bounds <> _rect.empty:
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
74 self.fliphilite(self.parent.begindrawing())
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 def select(self, flag):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 if flag <> self.selected:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 self.selected = flag
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
79 if self.bounds <> _rect.empty:
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
80 self.redraw()
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
81 #
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
82 # Recalculate the box bounds and text position.
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
83 # This can be overridden by buttons that draw different boxes
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
84 # or want their text in a different position.
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
85 #
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
86 def recalc(self):
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
87 if self.bounds <> _rect.empty:
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
88 self.recalcbounds()
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
89 self.recalctextpos()
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
90 #
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
91 def recalcbounds(self):
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
92 self.hilitebounds = _rect.inset(self.bounds, (3, 3))
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
93 self.crossbounds = self.bounds
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
94 #
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
95 def recalctextpos(self):
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
96 (left, top), (right, bottom) = self.bounds
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
97 m = self.parent.beginmeasuring()
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
98 h = (left + right - m.textwidth(self.text)) / 2
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
99 v = (top + bottom - m.lineheight()) / 2
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
100 self.textpos = h, v
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
101 #
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
102 # Generic drawing interface.
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
103 # Do not override redraw() or draw() methods; override drawit() c.s.
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 def redraw(self):
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
106 if self.bounds <> _rect.empty:
245
43133d885c4c *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 188
diff changeset
107 d = self.parent.begindrawing()
43133d885c4c *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 188
diff changeset
108 d.erase(self.bounds)
43133d885c4c *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 188
diff changeset
109 self.draw(d, self.bounds)
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 #
1110
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
111 def draw(self, d, area):
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
112 area = _rect.intersect([area, self.bounds])
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 531
diff changeset
113 if area == _rect.empty:
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 return
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 d.cliprect(area)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 self.drawit(d)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 d.noclip()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
119 # The drawit() method is fairly generic but may be overridden.
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
120 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 def drawit(self, d):
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
122 self.drawpict(d)
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 if self.text:
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
124 d.text(self.textpos, self.text)
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 if not self.enabled:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
126 self.flipenable(d)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
127 if self.hilited:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
128 self.fliphilite(d)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 # Default drawing detail functions.
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
131 # Overriding these is normally sufficient to get different
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 # appearances.
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
133 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 def drawpict(self, d):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
135 pass
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 def flipenable(self, d):
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
138 _xorcross(d, self.crossbounds)
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 def fliphilite(self, d):
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
141 d.invert(self.hilitebounds)
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
142
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
143
345
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
144 # A Strut is a label with no width of its own.
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
145
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
146 class StrutAppearance(LabelAppearance):
345
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
147 #
1110
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
148 def getminsize(self, m, (width, height)):
345
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
149 height = max(height, m.lineheight() + 6)
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
150 return width, height
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
151 #
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
152
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
153
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
154 # ButtonAppearance displays a centered string in a box.
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
155 # selected --> bold border
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
156 # disabled --> crossed out
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
157 # hilited --> inverted
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
158 #
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
159 class ButtonAppearance(LabelAppearance):
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
160 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
161 def drawpict(self, d):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
162 d.box(_rect.inset(self.bounds, (1, 1)))
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
163 if self.selected:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
164 # Make a thicker box
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
165 d.box(self.bounds)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
166 d.box(_rect.inset(self.bounds, (2, 2)))
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
167 d.box(_rect.inset(self.bounds, (3, 3)))
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
168 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
169
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
170
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
171 # CheckAppearance displays a small square box and a left-justified string.
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
172 # selected --> a cross appears in the box
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 # disabled --> whole button crossed out
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 # hilited --> box is inverted
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
175 #
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
176 class CheckAppearance(LabelAppearance):
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
177 #
1110
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
178 def getminsize(self, m, (width, height)):
345
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
179 minwidth = m.textwidth(self.text) + 6
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
180 minheight = m.lineheight() + 6
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
181 width = max(width, minwidth + minheight + m.textwidth(' '))
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
182 height = max(height, minheight)
2e0ea6d5c6ce Added class StrutAppearance (a label with with 0).
Guido van Rossum <guido@python.org>
parents: 245
diff changeset
183 return width, height
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
184 #
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
185 def drawpict(self, d):
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
186 d.box(self.boxbounds)
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
187 if self.selected: _xorcross(d, self.boxbounds)
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
188 #
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
189 def recalcbounds(self):
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
190 LabelAppearance.recalcbounds(self)
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 (left, top), (right, bottom) = self.bounds
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
192 self.size = bottom - top - 4
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
193 self.boxbounds = (left+2, top+2), (left+2+self.size, bottom-2)
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
194 self.hilitebounds = self.boxbounds
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
195 #
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
196 def recalctextpos(self):
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
197 m = self.parent.beginmeasuring()
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
198 (left, top), (right, bottom) = self.boxbounds
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
199 h = right + m.textwidth(' ')
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
200 v = top + (self.size - m.lineheight()) / 2
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
201 self.textpos = h, v
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
202 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
203
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
204
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
205 # RadioAppearance displays a round indicator and a left-justified string.
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
206 # selected --> a dot appears in the indicator
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
207 # disabled --> whole button crossed out
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
208 # hilited --> indicator is inverted
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
209 #
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
210 class RadioAppearance(CheckAppearance):
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
211 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
212 def drawpict(self, d):
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
213 (left, top), (right, bottom) = self.boxbounds
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
214 radius = self.size / 2
245
43133d885c4c *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 188
diff changeset
215 center = left + radius, top + radius
43133d885c4c *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 188
diff changeset
216 d.circle(center, radius)
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
217 if self.selected:
245
43133d885c4c *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 188
diff changeset
218 d.fillcircle(center, radius*3/5)
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
219 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
220
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
221
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
222 # NoReactivity ignores mouse events.
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
223 #
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
224 class NoReactivity:
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
225 def init_reactivity(self): pass
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
226
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
227
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
228 # BaseReactivity defines hooks and asks for mouse events,
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
229 # but provides only dummy mouse event handlers.
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
230 # The trigger methods call the corresponding hooks set by the user.
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
231 # Hooks (and triggers) mean the following:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
232 # down_hook called on some mouse-down events
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
233 # move_hook called on some mouse-move events
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
234 # up_hook called on mouse-up events
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
235 # on_hook called for buttons with on/off state, when it goes on
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
236 # hook called when a button 'fires' or a radiobutton goes on
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
237 # There are usually extra conditions, e.g., hooks are only called
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
238 # when the button is enabled, or active, or selected (on).
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
239 #
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
240 class BaseReactivity:
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
241 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
242 def init_reactivity(self):
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
243 self.down_hook = self.move_hook = self.up_hook = \
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
244 self.on_hook = self.off_hook = \
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
245 self.hook = self.active = 0
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
246 self.parent.need_mouse(self)
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
247 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
248 def mousetest(self, hv):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
249 return _rect.pointinrect(hv, self.bounds)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
250 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
251 def mouse_down(self, detail):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
252 pass
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
253 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
254 def mouse_move(self, detail):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
255 pass
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
256 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
257 def mouse_up(self, detail):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
258 pass
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
259 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
260 def down_trigger(self):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
261 if self.down_hook: self.down_hook(self)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
262 #
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
263 def move_trigger(self):
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
264 if self.move_hook: self.move_hook(self)
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
265 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
266 def up_trigger(self):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
267 if self.up_hook: self.up_hook(self)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
268 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
269 def on_trigger(self):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
270 if self.on_hook: self.on_hook(self)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
271 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
272 def off_trigger(self):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
273 if self.off_hook: self.off_hook(self)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
274 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
275 def trigger(self):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
276 if self.hook: self.hook(self)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
277
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
278
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
279 # ToggleReactivity acts like a simple pushbutton.
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
280 # It toggles its hilite state on mouse down events.
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
281 #
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
282 class ToggleReactivity(BaseReactivity):
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
283 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
284 def mouse_down(self, detail):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
285 if self.enabled and self.mousetest(detail[_HV]):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
286 self.active = 1
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
287 self.hilite(not self.hilited)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
288 self.down_trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
289 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
290 def mouse_move(self, detail):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
291 if self.active:
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
292 self.move_trigger()
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
293 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
294 def mouse_up(self, detail):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
295 if self.active:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
296 self.up_trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
297 self.active = 0
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
298 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
299 def down_trigger(self):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
300 if self.hilited:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
301 self.on_trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
302 else:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
303 self.off_trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
304 self.trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
305 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
306
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
307
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
308 # TriggerReactivity acts like a fancy pushbutton.
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
309 # It hilites itself while the mouse is down within its bounds.
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
310 #
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
311 class TriggerReactivity(BaseReactivity):
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
312 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
313 def mouse_down(self, detail):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
314 if self.enabled and self.mousetest(detail[_HV]):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
315 self.active = 1
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
316 self.hilite(1)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
317 self.down_trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
318 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
319 def mouse_move(self, detail):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
320 if self.active:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
321 self.hilite(self.mousetest(detail[_HV]))
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
322 if self.hilited:
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
323 self.move_trigger()
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
324 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
325 def mouse_up(self, detail):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
326 if self.active:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
327 self.hilite(self.mousetest(detail[_HV]))
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
328 if self.hilited:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
329 self.up_trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
330 self.trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
331 self.active = 0
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
332 self.hilite(0)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
333 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
334
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
335
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
336 # CheckReactivity handles mouse events like TriggerReactivity,
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
337 # It overrides the up_trigger method to flip its selected state.
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
338 #
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
339 class CheckReactivity(TriggerReactivity):
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
340 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
341 def up_trigger(self):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
342 self.select(not self.selected)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
343 if self.selected:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
344 self.on_trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
345 else:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
346 self.off_trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
347 self.trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
348
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
349
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
350 # RadioReactivity turns itself on and the other buttons in its group
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
351 # off when its up_trigger method is called.
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
352 #
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
353 class RadioReactivity(TriggerReactivity):
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
354 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
355 def init_reactivity(self):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
356 TriggerReactivity.init_reactivity(self)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
357 self.group = []
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
358 #
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
359 def up_trigger(self):
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
360 for b in self.group:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
361 if b <> self:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
362 if b.selected:
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
363 b.select(0)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
364 b.off_trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
365 self.select(1)
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
366 self.on_trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
367 self.trigger()
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
368
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
369
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
370 # Auxiliary class for 'define' method.
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
371 # Call the initializers in the right order.
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
372 #
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
373 class Define:
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
374 #
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
375 def define(self, parent):
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
376 self.parent = parent
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
377 parent.addchild(self)
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
378 self.init_appearance()
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
379 self.init_reactivity()
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
380 return self
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
381 #
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
382 def destroy(self):
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
383 self.parent = 0
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
384 #
1110
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
385 def definetext(self, parent, text):
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
386 self = self.define(parent)
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
387 self.settext(text)
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
388 return self
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
389
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
390
31
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
391 # Subroutine to cross out a rectangle.
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
392 #
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
393 def _xorcross(d, bounds):
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
394 ((left, top), (right, bottom)) = bounds
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
395 # This is s bit funny to make it look better
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
396 left = left + 2
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
397 right = right - 2
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
398 top = top + 2
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
399 bottom = bottom - 3
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
400 d.xorline(((left, top), (right, bottom)))
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
401 d.xorline((left, bottom), (right, top))
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
402
c487dfc30663 Generalizations.
Guido van Rossum <guido@python.org>
parents: 28
diff changeset
403
63
61311506f2cd *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 52
diff changeset
404 # Ready-made button classes.
28
e5c50c688117 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
405 #
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
406 class Label(NoReactivity, LabelAppearance, Define): pass
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
407 class Strut(NoReactivity, StrutAppearance, Define): pass
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
408 class PushButton(TriggerReactivity, ButtonAppearance, Define): pass
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
409 class CheckButton(CheckReactivity, CheckAppearance, Define): pass
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
410 class RadioButton(RadioReactivity, RadioAppearance, Define): pass
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 345
diff changeset
411 class ToggleButton(ToggleReactivity, ButtonAppearance, Define): pass