| 1 | import Tkinter |
| 2 | import Test |
| 3 | import Pmw |
| 4 | |
| 5 | Test.initialise() |
| 6 | |
| 7 | c = Pmw.NoteBook |
| 8 | |
| 9 | class 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 | |
| 19 | createCallback = callbackCollector() |
| 20 | raiseCallback = callbackCollector() |
| 21 | lowerCallback = callbackCollector() |
| 22 | |
| 23 | def checkCallbacks(clear = 0): |
| 24 | rtn = createCallback.get(), raiseCallback.get(), lowerCallback.get() |
| 25 | if not clear: |
| 26 | return rtn |
| 27 | |
| 28 | def _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 | |
| 35 | def _getTopPageName(): |
| 36 | w = Test.currentWidget() |
| 37 | return w._topPageName |
| 38 | |
| 39 | kw_1 = {'tabpos' : None} |
| 40 | tests_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 | |
| 124 | tests_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 | |
| 139 | kw_2 = { |
| 140 | 'tabpos' : None, |
| 141 | 'borderwidth' : 10, |
| 142 | 'pagemargin' : 10, |
| 143 | } |
| 144 | |
| 145 | tests_2 = ( |
| 146 | (c.pack, ()), |
| 147 | ('hull_relief', 'sunken'), |
| 148 | ('hull_borderwidth', 20), |
| 149 | ) + tests_1_common |
| 150 | |
| 151 | kw_3 = {} |
| 152 | |
| 153 | tests_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 | |
| 161 | alltests = ( |
| 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 | |
| 170 | testData = ((c, alltests),) |
| 171 | |
| 172 | if __name__ == '__main__': |
| 173 | Test.runTests(testData) |