1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
"""
Implementation of an InstanceEditor demo plugin for the Traits UI demo program.
This demo shows each of the four styles of the InstanceEditor.
Fixme: This version of the demo only shows the old-style InstanceEditor
capabilities.
"""
from traits.api import HasTraits, Str, Range, Bool, Trait
from traitsui.api import Item, Group, View
#-------------------------------------------------------------------------------
# Classes:
#-------------------------------------------------------------------------------
class SampleClass ( HasTraits ):
""" This Sample class is used to demonstrate the InstanceEditor demo.
"""
#--------------------------------------------------------------------------
# The actual attributes don't matter here; we just need an assortment
# to demonstrate the InstanceEditor's capabilities.
#--------------------------------------------------------------------------
name = Str
occupation = Str
age = Range( 21,65 )
registered_voter = Bool
#--------------------------------------------------------------------------
# The InstanceEditor uses whatever view is defined for the class. The
# default view lists the fields alphabetically, so it's best to define one
# explicitly.
#--------------------------------------------------------------------------
view = View( 'name', 'occupation', 'age', 'registered_voter' )
class InstanceEditorDemo ( HasTraits ):
""" This class specifies the details of the InstanceEditor demo.
"""
# To demonstrate any given Trait editor, an appropriate Trait is required.
sample_instance = Trait( SampleClass() )
# Items are used to define the demo display - one item per
# editor style
inst_group = Group( Item('sample_instance', style='simple', label='Simple'),
Item('_'),
Item('sample_instance', style='custom', label='Custom'),
Item('_'),
Item('sample_instance', style='text', label='Text'),
Item('_'),
Item('sample_instance',
style='readonly',
label='ReadOnly'))
# Demo View
view1 = View( inst_group,
title='InstanceEditor',
buttons=['OK'] )
# Create the demo:
popup = InstanceEditorDemo()
# Run the demo (if invoked from the command line):
if __name__ == '__main__':
popup.configure_traits()
|