1import unittest 2import sys 3from unittests import wtc 4import wx 5 6import wx.lib.agw.customtreectrl as CT 7 8#--------------------------------------------------------------------------- 9 10class lib_agw_customtreectrl_Tests(wtc.WidgetTestCase): 11 12 def test_lib_agw_customtreectrlCtor(self): 13 tree = CT.CustomTreeCtrl(self.frame) 14 self.assertEqual(tree.GetAGWWindowStyleFlag(), CT.TR_DEFAULT_STYLE) 15 self.assertEqual(tree.GetCount(), 0) 16 self.assertEqual(tree.GetRootItem(), None) 17 18 def test_lib_agw_customtreectrlTreeItem(self): 19 tree = CT.CustomTreeCtrl(self.frame) 20 root = tree.AddRoot('root item') 21 self.assertTrue(isinstance(root, CT.GenericTreeItem)) 22 self.assertTrue(root.IsOk()) 23 24 r = tree.GetRootItem() 25 self.assertTrue(r is root) 26 self.assertTrue(r == root) 27 28 child = tree.AppendItem(root, 'child item') 29 self.assertTrue(child is not root) 30 self.assertTrue(child != root) 31 32 def test_lib_agw_customtreectrlTreeItemData(self): 33 value = 'Some Python Object' 34 tree = CT.CustomTreeCtrl(self.frame) 35 root = tree.AddRoot('root item', data=value) 36 v = tree.GetItemData(root) 37 self.assertTrue(v == value) 38 tree.SetItemData(root, None) 39 self.assertTrue(tree.GetItemData(root) is None) 40 41 def test_lib_agw_customtreectrlTreeItemPyData(self): 42 # ensure that the "Py" versions works as the normal one 43 value = 'Some Python Object' 44 tree = CT.CustomTreeCtrl(self.frame) 45 root = tree.AddRoot('root item') 46 tree.SetItemPyData(root, value) 47 48 v = tree.GetItemPyData(root) 49 self.assertTrue(v == value) 50 tree.SetItemPyData(root, None) 51 self.assertTrue(tree.GetItemPyData(root) is None) 52 53 def test_lib_agw_customtreectrlGetSelections(self): 54 tree = CT.CustomTreeCtrl(self.frame, agwStyle=CT.TR_MULTIPLE) 55 root = tree.AddRoot('root item') 56 c1 = tree.AppendItem(root, 'c1') 57 c2 = tree.AppendItem(root, 'c2') 58 tree.SelectItem(c1) 59 tree.SelectItem(c2) 60 self.assertTrue(tree.IsSelected(c1)) 61 self.assertTrue(tree.IsSelected(c2)) 62 63 sel = tree.GetSelections() 64 self.assertTrue(isinstance(sel, list)) 65 self.assertTrue(len(sel) == 2) 66 self.assertTrue(isinstance(sel[0], CT.GenericTreeItem)) 67 68 def test_lib_agw_customtreectrlItemCheck(self): 69 70 tree = CT.CustomTreeCtrl(self.frame) 71 root = tree.AddRoot('root item') 72 73 # Checkboxes, there can be more than one checked at the same level 74 c1 = tree.AppendItem(root, 'c1', ct_type=1) 75 c2 = tree.AppendItem(root, 'c2', ct_type=1) 76 77 tree.CheckItem(c1) 78 tree.CheckItem(c2) 79 80 self.assertTrue(tree.IsItemChecked(c1)) 81 self.assertTrue(tree.IsItemChecked(c2)) 82 83 # RadioButtons, there can NOT be more than one checked at the same level 84 c1 = tree.AppendItem(root, 'c1', ct_type=2) 85 c2 = tree.AppendItem(root, 'c2', ct_type=2) 86 87 tree.CheckItem(c1) 88 tree.CheckItem(c2) 89 90 self.assertTrue(not tree.IsItemChecked(c1)) 91 self.assertTrue(tree.IsItemChecked(c2)) 92 93 def test_lib_agw_customtreectrlSetWindow(self): 94 tree = CT.CustomTreeCtrl(self.frame, agwStyle=CT.TR_DEFAULT_STYLE|CT.TR_HAS_VARIABLE_ROW_HEIGHT) 95 root = tree.AddRoot('root item') 96 c1 = tree.AppendItem(root, 'c1') 97 c2 = tree.AppendItem(root, 'c2') 98 99 window = wx.TextCtrl(tree, -1, 'Hello World') 100 tree.SetItemWindow(c2, window) 101 102 other = tree.GetItemWindow(c2) 103 self.assertTrue(window == other) 104 105 tree.DeleteAllItems() 106 self.assertTrue(tree.GetCount() == 0) 107 if sys.platform == 'darwin': 108 # On Mac the scrollbars and the gripper between them on 109 # ScrolledWindows are also wx widgets, so they are in the 110 # children list. 111 self.assertEqual(len(tree.GetChildren()), 3) 112 else: 113 self.assertEqual(len(tree.GetChildren()), 0) 114 115 def test_lib_agw_customtreectrlConstantsExist(self): 116 CT.TR_NO_BUTTONS 117 CT.TR_SINGLE 118 CT.TR_HAS_BUTTONS 119 CT.TR_NO_LINES 120 CT.TR_LINES_AT_ROOT 121 CT.TR_DEFAULT_STYLE 122 CT.TR_TWIST_BUTTONS 123 CT.TR_MULTIPLE 124 CT.TR_EXTENDED 125 CT.TR_HAS_VARIABLE_ROW_HEIGHT 126 CT.TR_EDIT_LABELS 127 CT.TR_ROW_LINES 128 CT.TR_HIDE_ROOT 129 CT.TR_FULL_ROW_HIGHLIGHT 130 CT.TR_AUTO_CHECK_CHILD 131 CT.TR_AUTO_TOGGLE_CHILD 132 CT.TR_AUTO_CHECK_PARENT 133 CT.TR_ALIGN_WINDOWS 134 CT.TR_ALIGN_WINDOWS_RIGHT 135 CT.TR_ELLIPSIZE_LONG_ITEMS 136 CT.TR_TOOLTIP_ON_LONG_ITEMS 137 138 CT.TreeItemIcon_Normal 139 CT.TreeItemIcon_Selected 140 CT.TreeItemIcon_Expanded 141 CT.TreeItemIcon_SelectedExpanded 142 143 CT.TreeItemIcon_Checked 144 CT.TreeItemIcon_NotChecked 145 CT.TreeItemIcon_Undetermined 146 CT.TreeItemIcon_Flagged 147 CT.TreeItemIcon_NotFlagged 148 149 CT.TREE_HITTEST_ABOVE 150 CT.TREE_HITTEST_BELOW 151 CT.TREE_HITTEST_NOWHERE 152 CT.TREE_HITTEST_ONITEMBUTTON 153 CT.TREE_HITTEST_ONITEMICON 154 CT.TREE_HITTEST_ONITEMINDENT 155 CT.TREE_HITTEST_ONITEMLABEL 156 CT.TREE_HITTEST_ONITEM 157 CT.TREE_HITTEST_ONITEMRIGHT 158 CT.TREE_HITTEST_TOLEFT 159 CT.TREE_HITTEST_TORIGHT 160 CT.TREE_HITTEST_ONITEMUPPERPART 161 CT.TREE_HITTEST_ONITEMLOWERPART 162 CT.TREE_HITTEST_ONITEMCHECKICON 163 CT.TREE_HITTEST_ONITEM 164 165 def test_lib_agw_customtreectrlEventsExist(self): 166 CT.wxEVT_TREE_BEGIN_DRAG 167 CT.wxEVT_TREE_BEGIN_RDRAG 168 CT.wxEVT_TREE_BEGIN_LABEL_EDIT 169 CT.wxEVT_TREE_END_LABEL_EDIT 170 CT.wxEVT_TREE_DELETE_ITEM 171 CT.wxEVT_TREE_GET_INFO 172 CT.wxEVT_TREE_SET_INFO 173 CT.wxEVT_TREE_ITEM_EXPANDED 174 CT.wxEVT_TREE_ITEM_EXPANDING 175 CT.wxEVT_TREE_ITEM_COLLAPSED 176 CT.wxEVT_TREE_ITEM_COLLAPSING 177 CT.wxEVT_TREE_SEL_CHANGED 178 CT.wxEVT_TREE_SEL_CHANGING 179 CT.wxEVT_TREE_KEY_DOWN 180 CT.wxEVT_TREE_ITEM_ACTIVATED 181 CT.wxEVT_TREE_ITEM_RIGHT_CLICK 182 CT.wxEVT_TREE_ITEM_MIDDLE_CLICK 183 CT.wxEVT_TREE_END_DRAG 184 CT.wxEVT_TREE_STATE_IMAGE_CLICK 185 CT.wxEVT_TREE_ITEM_GETTOOLTIP 186 CT.wxEVT_TREE_ITEM_MENU 187 CT.wxEVT_TREE_ITEM_CHECKING 188 CT.wxEVT_TREE_ITEM_CHECKED 189 CT.wxEVT_TREE_ITEM_HYPERLINK 190 191 CT.EVT_TREE_BEGIN_DRAG 192 CT.EVT_TREE_BEGIN_LABEL_EDIT 193 CT.EVT_TREE_BEGIN_RDRAG 194 CT.EVT_TREE_DELETE_ITEM 195 CT.EVT_TREE_END_DRAG 196 CT.EVT_TREE_END_LABEL_EDIT 197 CT.EVT_TREE_GET_INFO 198 CT.EVT_TREE_ITEM_ACTIVATED 199 CT.EVT_TREE_ITEM_CHECKED 200 CT.EVT_TREE_ITEM_CHECKING 201 CT.EVT_TREE_ITEM_COLLAPSED 202 CT.EVT_TREE_ITEM_COLLAPSING 203 CT.EVT_TREE_ITEM_EXPANDED 204 CT.EVT_TREE_ITEM_EXPANDING 205 CT.EVT_TREE_ITEM_GETTOOLTIP 206 CT.EVT_TREE_ITEM_HYPERLINK 207 CT.EVT_TREE_ITEM_MENU 208 CT.EVT_TREE_ITEM_MIDDLE_CLICK 209 CT.EVT_TREE_ITEM_RIGHT_CLICK 210 CT.EVT_TREE_KEY_DOWN 211 CT.EVT_TREE_SEL_CHANGED 212 CT.EVT_TREE_SEL_CHANGING 213 CT.EVT_TREE_SET_INFO 214 CT.EVT_TREE_STATE_IMAGE_CLICK 215 216#--------------------------------------------------------------------------- 217 218if __name__ == '__main__': 219 unittest.main() 220