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 73
|
# Copyright (c) 2007, Enthought, Inc.
# License: BSD Style.
"""
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.
"""
# Imports:
from traits.api \
import HasTraits, Str, Range, Bool, Instance
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.
"""
# Create an Instance trait to view:
sample_instance = Instance( 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:
view = View(
inst_group,
title = 'InstanceEditor',
buttons = [ 'OK' ],
resizable = True
)
# Create the demo:
demo = InstanceEditorDemo()
# Run the demo (if invoked from the command line):
if __name__ == '__main__':
demo.configure_traits()
|