1import Tkinter
2import Test
3import Pmw
4
5Test.initialise()
6
7c = Pmw.NoteBook
8
9class callbackCollector:
10    def __init__(self):
11        self.list = []
12    def __call__(self, pageName):
13        self.list.append(pageName)
14    def get(self):
15        rtn = self.list
16        self.list = []
17        return rtn
18
19createCallback = callbackCollector()
20raiseCallback = callbackCollector()
21lowerCallback = callbackCollector()
22
23def checkCallbacks(clear = 0):
24    rtn = createCallback.get(), raiseCallback.get(), lowerCallback.get()
25    if not clear:
26        return rtn
27
28def _populatePage(pageName):
29    w = Test.currentWidget()
30    page = w.page(pageName)
31    text = Tkinter.Text(page)
32    text.pack()
33    return w.pagenames()[w.index(pageName)]
34
35def _getTopPageName():
36    w = Test.currentWidget()
37    return w._topPageName
38
39kw_1 = {'tabpos' : None}
40tests_1_common = (
41  (Test.num_options, (), 7),
42  ('createcommand', createCallback),
43  ('raisecommand', raiseCallback),
44  ('lowercommand', lowerCallback),
45  (checkCallbacks, 1),
46  (c.index, Pmw.END, 'ValueError: NoteBook has no pages'),
47  (c.index, Pmw.SELECT, 'ValueError: NoteBook has no pages'),
48  (c.setnaturalsize, ()),
49  (c.getcurselection, ()),
50  (c.insert, ('Temp', 0), {'page_pyclass' : Tkinter.Canvas}, Tkinter.Canvas),
51  (checkCallbacks, (), (['Temp'], ['Temp'], [])),
52  (c.getcurselection, (), 'Temp'),
53  (c.setnaturalsize, ()),
54  (c.delete, 'Temp'),
55  (checkCallbacks, (), ([], [], [])),
56  (c.getcurselection, ()),
57  (c.insert, ('Temp', Pmw.END), Tkinter.Frame),
58  (checkCallbacks, (), (['Temp'], ['Temp'], [])),
59  (c.delete, 'Temp'),
60  (c.add, 'Start', Tkinter.Frame),
61  ('Start_background', 'green'),
62  (c.insert, ('Final', Pmw.END), {'page_background' : 'blue'}, Tkinter.Frame),
63  (c.insert, ('Middle', 'Final'), Tkinter.Frame),
64  (c.index, Pmw.SELECT, 0),
65  (c.insert, ('First', 'Start'), Tkinter.Frame),
66  (c.index, Pmw.SELECT, 1),
67  (c.getcurselection, (), 'Start'),
68  (c.selectpage, Pmw.END),
69  (checkCallbacks, (), (['Start', 'Final'], ['Start', 'Final'], ['Start'])),
70  (c.index, Pmw.SELECT, 3),
71  (c.getcurselection, (), 'Final'),
72  (c.recolorborders, ()),
73  (c.selectpage, 2),
74  (c.index, Pmw.SELECT, 2),
75  (c.getcurselection, (), 'Middle'),
76  (checkCallbacks, (), (['Middle'], ['Middle'], ['Final'])),
77  (c.selectpage, 3),
78  (c.selectpage, 2),
79  (checkCallbacks, (), ([], ['Final', 'Middle'], ['Middle', 'Final'])),
80  (c.selectpage, 'Final'),
81  (c.index, Pmw.SELECT, 3),
82  (c.getcurselection, (), 'Final'),
83  (c.add, 'Last', Tkinter.Frame),
84  (c.pagenames, (), ['First', 'Start', 'Middle', 'Final', 'Last']),
85  (c.setnaturalsize, ()),
86  (_populatePage, Pmw.SELECT, 'Final'),
87  (_populatePage, 'Middle', 'Middle'),
88  (c.setnaturalsize, ()),
89  (c.add, 'Start', 'ValueError: Page "Start" already exists.'),
90  ('Page_background', 'yellow'),
91  (c.index, 1, 1),
92  (c.index, 10, 'ValueError: index "10" is out of range'),
93  (c.index, Pmw.END, 4),
94  (c.index, 'First', 0),
95  (c.index, 'Middle', 2),
96  (c.index, 'bogus', 'ValueError: bad index "bogus": ' + \
97      'must be a name, a number, Pmw.END or Pmw.SELECT'),
98  (c.previouspage, ()),
99  (c.getcurselection, (), 'Middle'),
100  (c.previouspage, 'Start'),
101  (c.getcurselection, (), 'First'),
102  (c.nextpage, ()),
103  (c.getcurselection, (), 'Start'),
104  (c.nextpage, 'Middle'),
105  (c.getcurselection, (), 'Final'),
106  (c.delete, ('First', 'Start', 'Middle', 'Final', 'Last')),
107  (c.add, 'Temp', {'page_pyclass' : Tkinter.Button}, Tkinter.Button),
108  (c.delete, 'Temp'),
109  (c.add, 'Temp', {'page_pyclass' : Tkinter.Text}, Tkinter.Text),
110  (c.delete, 'Temp'),
111  (c.add, 'Temp', {'page_pyclass' : Pmw.ScrolledText,
112      'page_vscrollmode' : 'static', 'page_text_state' : 'disabled'},
113      Pmw.ScrolledText),
114  ('Temp_text_background', 'red'),
115  (c.page, 'Temp', Pmw.ScrolledText),
116  (c.pagenames, (), ['Temp']),
117  (c.getcurselection, (), 'Temp'),
118  (c.delete, 'Temp'),
119  (c.getcurselection, (), None),
120  (c.add, 'Start', Tkinter.Frame),
121  (c.getcurselection, (), 'Start'),
122)
123
124tests_1 = tests_1_common + (
125  (_getTopPageName, (), None),
126  (c.pack, ()),
127  (_getTopPageName, (), 'Start'),
128  (c.delete, 'Start'),
129) + tests_1_common + (
130  (_getTopPageName, (), 'Start'),
131  (c.delete, 'Start'),
132  (c.pack_forget, ()),
133) + tests_1_common + (
134  (_getTopPageName, (), None),
135  (c.pack, ()),
136  (_getTopPageName, (), 'Start'),
137)
138
139kw_2 = {
140    'tabpos' : None,
141    'borderwidth' : 10,
142    'pagemargin' : 10,
143}
144
145tests_2 = (
146  (c.pack, ()),
147  ('hull_relief', 'sunken'),
148  ('hull_borderwidth', 20),
149) + tests_1_common
150
151kw_3 = {}
152
153tests_3 = (
154  (c.pack, ()),
155) + tests_1_common + (
156  ('Tab_background', 'red'),
157  (c.add, 'One', Tkinter.Frame),
158  (c.tab, 'One', Tkinter.Button),
159)
160
161alltests = (
162  (tests_1, kw_1),
163  (tests_1, kw_2),
164  (tests_1, kw_3),
165  (tests_2, kw_1),
166  (tests_2, kw_3),
167  (tests_3, kw_3),
168)
169
170testData = ((c, alltests),)
171
172if __name__ == '__main__':
173    Test.runTests(testData)
174