1from unittest import TestCase 2 3from traits.api import HasTraits, Str, Int, List 4from traitsui.api import View, Group, Item, TableEditor, ObjectColumn, RGBColor 5from traitsui.color_column import ColorColumn 6 7from traitsui.tests._tools import ( 8 BaseTestMixin, 9 create_ui, 10 requires_toolkit, 11 reraise_exceptions, 12 ToolkitName, 13) 14 15 16class MyEntry(HasTraits): 17 name = Str() 18 value = Int(0) 19 color = RGBColor() 20 21 entry_view = View(Group(Item("name"), Item("value"), Item("color"))) 22 23 24my_editor = TableEditor( 25 columns=[ 26 ObjectColumn(name="name"), 27 ObjectColumn(name="value"), 28 ColorColumn(name="color", style="readonly"), 29 ], 30 orientation="vertical", 31 show_toolbar=True, 32 row_factory=MyEntry, 33) 34 35 36class MyData(HasTraits): 37 data_list = List(MyEntry) 38 39 view = View(Item("data_list", editor=my_editor, show_label=False)) 40 41 42class TestColorColumn(BaseTestMixin, TestCase): 43 44 def setUp(self): 45 BaseTestMixin.setUp(self) 46 47 def tearDown(self): 48 BaseTestMixin.tearDown(self) 49 50 @requires_toolkit([ToolkitName.qt, ToolkitName.wx]) 51 def test_color_column(self): 52 # Behaviour: column ui should display without error 53 54 d1 = MyEntry(name="a", value=2, color=(1.0, 0.3, 0.1)) 55 d2 = MyEntry(name="b", value=3, color=(0.1, 0.0, 0.9)) 56 data = MyData(data_list=[d1, d2]) 57 with reraise_exceptions(), create_ui(data): 58 pass 59