]> SALOME platform Git repositories - tools/eficas.git/blob - Pmw/Pmw_1_2/tests/Options_test.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / Pmw / Pmw_1_2 / tests / Options_test.py
1 # This tests Pmw option and component handling.
2
3 import Tkinter
4 import Test
5 import Pmw
6
7 Test.initialise()
8
9 """
10     Definitions:
11         initialisation option:  an option that can be set in the call
12             to the constructor but not in configure()
13         configuration option:  an option that can be set in the call
14             to the constructor and to configure()
15         option: either an initialisation option or a configuration option
16
17     Tests
18     -----
19     in constructor:
20     + define an option, its default value and whether it is an
21         initialisation or a configuration option
22     + set a callback function for a configuration option
23     + set a different default for an option of a base class
24     + set a different default for an option of a component of a base class
25     + override the callback for a configuration option of a base class
26     + create a component
27     + create an alias for a component
28     + create an alias for a sub-component
29
30     calling constructor:
31     + set an option
32     + set an option of a base class
33     + set an option of a component created in the constructor
34     + set an option of an aliased component or sub-component created in
35         the constructor
36     + set an option of one or more components via their group name
37     + use the default value of an option
38     + use the default value of an option of a base class
39     + use the default value of an option of a base class where the default
40         value is redefined in the derived class
41
42     calling configure:
43     + set a configuration option
44     + set a configuration option of a base class
45     + set a configuration option of a component
46     + set a configuration option of an aliased component or sub-component
47     + set a configuration option of one or more components via their group name
48     + set a configuration option with a callback
49     + set a configuration option of a base class with a callback in the
50         derived class
51 """
52
53 class Simple(Pmw.MegaWidget):
54     def __init__(self, parent = None, **kw):
55         optiondefs = (
56             ('initsimple1', 'initsimple1', Pmw.INITOPT),
57             ('initsimple2', 'initsimple2', Pmw.INITOPT),
58             ('optsimple1', 'optsimple1', None),
59             ('optsimple2', 'optsimple2', None),
60         )
61         self.defineoptions(kw, optiondefs)
62         Pmw.MegaWidget.__init__(self, parent)
63
64         interior = self.interior()
65         self._widget = self.createcomponent('widget',
66                 (('widgy', 'widget'),), None,
67                 Tkinter.Button, (interior,))
68         self._widget.grid(column=0, row=0, sticky='nsew')
69
70         self.initialiseoptions()
71
72 class Complex(Pmw.MegaWidget):
73     def __init__(self, parent = None, **kw):
74         optiondefs = (
75             ('initcomplex1', 'initcomplex1', Pmw.INITOPT),
76             ('initcomplex2', 'initcomplex2', Pmw.INITOPT),
77             ('optcomplex1', 'optcomplex1', None),
78             ('optcomplex2', 'optcomplex2', None),
79         )
80         self.defineoptions(kw, optiondefs)
81         Pmw.MegaWidget.__init__(self, parent)
82
83         interior = self.interior()
84         self._simple = self.createcomponent('simple',
85                 (('widget', 'simple_widget'),), None,
86                 Simple, (interior,))
87         self._simple.grid(column=0, row=0, sticky='nsew')
88
89         self.initialiseoptions()
90
91 class Base(Pmw.MegaWidget):
92     def __init__(self, parent = None, **kw):
93         optiondefs = (
94             ('initbase1', 'initbase1', Pmw.INITOPT),
95             ('initbase2', 'initbase2', Pmw.INITOPT),
96             ('initbase3', 'initbase3', Pmw.INITOPT),
97             ('optbase1', 'optbase1', self._optbase1),
98             ('optbase2', 'optbase2', None),
99             ('optbase3', 'optbase3', None),
100         )
101         self.defineoptions(kw, optiondefs)
102         Pmw.MegaWidget.__init__(self, parent)
103
104         oldInterior = Pmw.MegaWidget.interior(self)
105         self._widget = self.createcomponent('basesimple',
106                 (('widget', 'basesimple_widget'),), None,
107                 Simple, (oldInterior,))
108         self._widget.grid(column=0, row=0, sticky='nsew')
109
110         self._child = self.createcomponent('child',
111                 (), 'Mygroup',
112                 Tkinter.Frame, (oldInterior,))
113         self._child.grid(column=0, row=1, sticky='nsew')
114
115         self._groupie = self.createcomponent('groupie',
116                 (), 'Mygroup',
117                 Tkinter.Button, (oldInterior,), text = 'XXXXX')
118         self._groupie.grid(column=0, row=2, sticky='nsew')
119
120         self.basedummy = []
121
122         self.initialiseoptions()
123
124     def _optbase1(self):
125         self.basedummy.append(self['optbase1'])
126
127     def getbasedummy(self):
128         return self.basedummy
129
130     def interior(self):
131         return self._child
132
133 class Derived(Base):
134     def __init__(self, parent = None, **kw):
135         # Define the options for this megawidget.
136         optiondefs = (
137             ('initbase2', 'initbase2inderived', Pmw.INITOPT),
138             ('initderived1', 'initderived1', Pmw.INITOPT),
139             ('initderived2', 'initderived2', Pmw.INITOPT),
140             ('optbase1', 'optbase1', self._optbase1),
141             ('optderived1', 'optderived1', None),
142             ('optderived2', 'optderived2', None),
143             ('groupie_text', 'YYYYY', None),
144         )
145         self.defineoptions(kw, optiondefs)
146
147         # Initialise the base class (after defining my options).
148         Base.__init__(self, parent)
149
150         # Create components.
151         interior = self.interior()
152         self._widget = self.createcomponent('derivedcomplex',
153                 (('derivedsimple', 'derivedcomplex_simple'),), None,
154                 Complex, (interior,))
155         self._widget.grid(column=0, row=0, sticky='nsew')
156
157         # Initialise instance.
158
159         # Initialise instance variables.
160         self.deriveddummy = []
161
162         # Check keywords and initialise options.
163         self.initialiseoptions()
164
165     def _optbase1(self):
166         self.deriveddummy.append(self['optbase1'])
167
168     def getderiveddummy(self):
169         return self.deriveddummy
170
171 testData = ()
172
173 c = Simple
174 kw_1 = {
175     'hull_borderwidth' :2,
176     'hull_relief' :'sunken',
177     'hull_background' :'red',
178     'widget_text' :'simple',
179     'widgy_foreground' :'red',
180     'initsimple1' :'initsimple1_new',
181 }
182 tests = (
183     (c.pack, ()),
184     (c.components, (), ['hull', 'widget']),
185     (c.componentaliases, (), [('widgy', 'widget'),]),
186     (c.options, (), [('initsimple1', 'initsimple1', 1), ('initsimple2', 'initsimple2', 1), ('optsimple1', 'optsimple1', 0), ('optsimple2', 'optsimple2', 0)]),
187     (c.cget, 'initsimple1', 'initsimple1_new'),
188     (c.cget, 'initsimple2', 'initsimple2'),
189     (c.cget, 'optsimple1', 'optsimple1'),
190     (c.cget, 'optsimple2', 'optsimple2'),
191     (c.cget, 'widget_foreground', 'red'),
192     ('optsimple1', 'optsimple1_new'),
193     (c.cget, 'optsimple1', 'optsimple1_new'),
194 )
195 testData = testData + ((c, ((tests, kw_1),)),)
196
197
198 c = Complex
199 kw_1 = {
200     'hull_borderwidth' : 2,
201     'hull_relief' : 'sunken',
202     'hull_background' : 'red',
203     'simple_widget_text' : 'complex',
204     'widget_foreground' : 'yellow',
205 }
206 tests = (
207     (c.pack, ()),
208     (c.components, (), ['hull', 'simple']),
209     (c.componentaliases, (), [('widget', 'simple_widget'),]),
210     (c.options, (), [('initcomplex1', 'initcomplex1', 1), ('initcomplex2', 'initcomplex2', 1), ('optcomplex1', 'optcomplex1', 0), ('optcomplex2', 'optcomplex2', 0)]),
211 )
212 testData = testData + ((c, ((tests, kw_1),)),)
213
214 c = Base
215 kw_1 = {
216     'hull_borderwidth' : 2,
217     'hull_relief' : 'sunken',
218     'hull_background' : 'red',
219     'basesimple_widget_text' : 'base',
220     'widget_foreground' : 'green',
221     'initbase1' : 'initbase1_new',
222 }
223 tests = (
224     (c.pack, ()),
225     (c.components, (), ['basesimple', 'child', 'groupie', 'hull']),
226     (c.componentaliases, (), [('widget', 'basesimple_widget'),]),
227     (c.options, (), [('initbase1', 'initbase1', 1), ('initbase2', 'initbase2', 1), ('initbase3', 'initbase3', 1), ('optbase1', 'optbase1', 0), ('optbase2', 'optbase2', 0), ('optbase3', 'optbase3', 0)]),
228     (c.cget, 'widget_foreground', 'green'),
229     (c.cget, 'basesimple_widget_foreground', 'green'),
230     (c.cget, 'basesimple_widgy_foreground', 'green'),
231     ('widget_foreground', 'blue'),
232     (c.cget, 'widget_foreground', 'blue'),
233     (c.cget, 'basesimple_widget_foreground', 'blue'),
234     (c.cget, 'basesimple_widgy_foreground', 'blue'),
235     (c.cget, 'optbase1', 'optbase1'),
236     (c.cget, 'groupie_text', 'XXXXX'),
237     # When Test created the widget, it performed a test where it configured
238     # each option. Hence, _optbase1() has been called twice:
239     (c.getbasedummy, (), ['optbase1', 'optbase1']),
240     ('optbase1', 'basedummy_new'),
241     (c.getbasedummy, (), ['optbase1', 'optbase1', 'basedummy_new']),
242 )
243 testData = testData + ((c, ((tests, kw_1),)),)
244
245
246 c = Derived
247 kw_1 = {
248     'hull_borderwidth' : 2,
249     'hull_relief' : 'sunken',
250     'hull_background' : 'red',
251     'basesimple_widget_text' : 'base simple',
252     'derivedcomplex_widget_text' : 'derived complex',
253     'initderived1' : 'initderived1_new',
254     'initbase1' : 'initbase1_new',
255     'optbase3' : 'optbase3_new',
256     'derivedcomplex_initcomplex1' : 'derivedcomplex_initcomplex1',
257     'derivedsimple_initsimple1' : 'derivedsimple_initsimple1',
258     'hull_cursor' : 'gumby',
259     'Mygroup_borderwidth' : 2,
260     'Mygroup_relief' : 'ridge',
261 }
262 tests = (
263     (c.pack, ()),
264     (c.components, (), ['basesimple', 'child', 'derivedcomplex', 'groupie', 'hull']),
265     (c.componentaliases, (), [('derivedsimple', 'derivedcomplex_simple'), ('widget', 'basesimple_widget'),]),
266     (c.options, (), [('initbase1', 'initbase1', 1), ('initbase2', 'initbase2inderived', 1), ('initbase3', 'initbase3', 1), ('initderived1', 'initderived1', 1), ('initderived2', 'initderived2', 1), ('optbase1', 'optbase1', 0), ('optbase2', 'optbase2', 0), ('optbase3', 'optbase3', 0), ('optderived1', 'optderived1', 0), ('optderived2', 'optderived2', 0), ]),
267     (c.getbasedummy, (), []),
268     (c.getderiveddummy, (), ['optbase1', 'optbase1']),
269     ('optbase1', 'derivedbasedummy_new'),
270     (c.getbasedummy, (), []),
271     (c.getderiveddummy, (), ['optbase1', 'optbase1', 'derivedbasedummy_new']),
272     (c.cget, 'optbase3', 'optbase3_new'),
273     ('optbase3', 'optbase3_newer'),
274     (c.cget, 'optbase3', 'optbase3_newer'),
275     (c.cget, 'optderived1', 'optderived1'),
276     (c.cget, 'initderived1', 'initderived1_new'),
277     (c.cget, 'initbase2', 'initbase2inderived'),
278     (c.cget, 'initbase1', 'initbase1_new'),
279     (c.cget, 'initbase3', 'initbase3'),
280     (c.cget, 'groupie_text', 'YYYYY'),
281     ('groupie_text', 'ZZZZZ'),
282     (c.cget, 'groupie_text', 'ZZZZZ'),
283     (c.cget, 'derivedcomplex_optcomplex1', 'optcomplex1'),
284     ('derivedcomplex_optcomplex1', 'optcomplex1_new'),
285     (c.cget, 'derivedcomplex_optcomplex1', 'optcomplex1_new'),
286     (c.cget, 'derivedsimple_optsimple2', 'optsimple2'),
287     ('derivedsimple_optsimple2', 'optsimple2_new'),
288     (c.cget, 'derivedcomplex_simple_optsimple2', 'optsimple2_new'),
289     ('derivedcomplex_simple_optsimple2', 'optsimple2_newer'),
290     (c.cget, 'derivedsimple_optsimple2', 'optsimple2_newer'),
291     (c.cget, 'hull_cursor', 'gumby'),
292     (c.cget, 'groupie_relief', 'ridge'),
293     (c.cget, 'Mygroup_relief', 'ridge'),
294     ('Mygroup_relief', 'sunken'),
295     (c.cget, 'groupie_relief', 'sunken'),
296     (c.cget, 'Mygroup_relief', 'sunken'),
297     ('groupie_relief', 'groove'),
298     (c.cget, 'groupie_relief', 'groove'),
299 )
300 testData = testData + ((c, ((tests, kw_1),)),)
301
302 if __name__ == '__main__':
303     #Test.setverbose(1)
304     Test.runTests(testData)