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 74
|
# 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 __future__ import absolute_import
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()
|