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