class ReportAdapter(TabularAdapter): """ The tabular adapter interfaces between the tabular editor and the data being displayed. For more details, please refer to the traitsUI user guide. """ # List of (Column labels, Column ID). columns = [('Name', 'name'), ('Age', 'age'), ('Address', 'address'), ('Spouse', 'spouse')] row_label_name = 'surname' # Interfacing between the model and the view: make some of the cell # attributes a property whose behavior is then controlled by the get # (and optionally set methods). The cell is identified by its column # ID (age, spouse). # Font fails with wx in OSX; see traitsui issue #13: # font = 'Courier 10' age_alignment = Constant('right') MarriedPerson_age_image = Property() MarriedPerson_bg_color = Color(0xE0E0FF) MarriedPerson_spouse_text = Property() Person_spouse_text = Constant('') def _get_MarriedPerson_age_image(self): if self.item.age < 18: return '@icons:red_ball' return None def _get_MarriedPerson_spouse_text(self): return self.item.partner.name
class ColorEditorDemo(HasTraits): """ Defines the main ColorEditor demo. """ # Define a Color trait to view: color_trait = Color() # Items are used to define the demo display, one item per editor style: color_group = Group( Item('color_trait', style='simple', label='Simple'), Item('_'), Item('color_trait', style='custom', label='Custom'), Item('_'), Item('color_trait', style='text', label='Text'), Item('_'), Item('color_trait', style='readonly', label='ReadOnly')) # Demo view traits_view = View(color_group, title='ColorEditor', buttons=['OK'], resizable=True)
class ReportAdapter(TabularAdapter): columns = [('Name', 'name'), ('Age', 'age'), ('Address', 'address'), ('Spouse', 'spouse')] font = 'Courier 10' age_alignment = Constant('right') MarriedPerson_age_image = Property() MarriedPerson_bg_color = Color(0xE0E0FF) MarriedPerson_spouse_text = Property() Person_spouse_text = Constant('') def _get_MarriedPerson_age_image(self): if self.item.age < 18: return 'red_flag' return None def _get_MarriedPerson_spouse_text(self): return self.item.partner.name
class TraitsTest(HasTraits): #------------------------------------------------------------------------- # Trait definitions: #------------------------------------------------------------------------- enabled = Bool(True) integer_text = Int(1) enumeration = Trait('one', 'two', 'three', 'four', 'five', 'six', cols=3) float_range = Range(0.0, 10.0, 10.0) int_range = Range(1, 6) int_range2 = Range(1, 50) compound = Trait(1, Range(1, 6), 'one', 'two', 'three', 'four', 'five', 'six') boolean = Bool(True) instance = Trait(Instance()) color = Color('cyan') font = Font() check_list = List( editor=CheckListEditor(values=['one', 'two', 'three', 'four'], cols=4)) list = List(Str, ['East of Eden', 'The Grapes of Wrath', 'Of Mice and Men']) button = Event(0, editor=ButtonEditor(label='Click')) file = File() directory = Directory() image_enum = Trait(editor=ImageEnumEditor(values=origin_values, suffix='_origin', cols=4, klass=Instance), *origin_values) #------------------------------------------------------------------------- # View definitions: #------------------------------------------------------------------------- view = View( ('|{Enum}', ('enabled', ), ('|<[Enumeration]', 'f1:enumeration[Simple]', '_', 'f2:enumeration[Custom]@', '_', 'f3:enumeration[Text]*', '_', 'f4:enumeration[Readonly]~'), ('|<[Check List]', 'f5:check_list[Simple]', '_', 'f6:check_list[Custom]@', '_', 'f7:check_list[Text]*', '_', 'f8:check_list[Readonly]~')), ('|{Range}', ('|<[Float Range]', 'f9:float_range[Simple]', '_', 'f10:float_range[Custom]@', '_', 'f11:float_range[Text]*', '_', 'f12:float_range[Readonly]~'), ('|<[Int Range]', 'f13:int_range[Simple]', '_', 'f14:int_range[Custom]@', '_', 'f15:int_range[Text]*', '_', 'f16:int_range[Readonly]~'), ('|<[Int Range 2]', 'f17:int_range2[Simple]', '_', 'f18:int_range2[Custom]@', '_', 'f19:int_range2[Text]*', '_', 'f20:int_range2[Readonly]~')), ('|{Misc}', ('|<[Integer Text]', 'f21:integer_text[Simple]', '_', 'f22:integer_text[Custom]@', '_', 'f23:integer_text[Text]*', '_', 'f24:integer_text[Readonly]~'), ('|<[Compound]', 'f25:compound[Simple]', '_', 'f26:compound[Custom]@', '_', 'f27:compound[Text]*', '_', 'f28:compound[Readonly]~'), ('|<[Boolean]', 'f29:boolean[Simple]', '_', 'f30:boolean[Custom]@', '_', 'f31:boolean[Text]*', '_', 'f32:boolean[Readonly]~')), ('|{Color/Font}', ('|<[Color]', 'f33:color[Simple]', '_', 'f34:color[Custom]@', '_', 'f35:color[Text]*', '_', 'f36:color[Readonly]~'), ('|<[Font]', 'f37:font[Simple]', '_', 'f38:font[Custom]@', '_', 'f39:font[Text]*', '_', 'f40:font[Readonly]~')), ('|{List}', ('|<[List]', 'f41:list[Simple]', '_', 'f42:list[Custom]@', '_', 'f43:list[Text]*', '_', 'f44:list[Readonly]~')), ( '|{Button}', ('|<[Button]', 'f45:button[Simple]', '_', 'f46:button[Custom]@'), # 'button[Text]*', # 'button[Readonly]~' ), ('|<[Image Enum]', 'f47:image_enum[Simple]', '_', 'f48:image_enum[Custom]@', '_', 'f49:image_enum[Text]*', '_', 'f50:image_enum[Readonly]~'), ('|<[Instance]', 'f51:instance[Simple]', '_', 'f52:instance[Custom]@', '_', 'f53:instance[Text]*', '_', 'f54:instance[Readonly]~'), ), ('|{File}', ( '|<[File]', 'f55:file[Simple]', '_', 'f56:file[Custom]@', '_', 'f57:file[Text]*', '_', 'f58:file[Readonly]~', ), ('|<[Directory]', 'f59:directory[Simple]', '_', 'f60:directory[Custom]@', '_', 'f61:directory[Text]*', '_', 'f62:directory[Readonly]~')), buttons=['Apply', 'Revert', 'Undo', 'OK'], handler=TraitsTestHandler())
class Polygon(HasTraits): line_color = Trait(Color((0, 0, 0)), editor=ColorEditor())