1
# Copyright (c) 2007, Enthought, Inc.
5
Implementation of a RangeEditor demo plugin for the Traits UI demo program.
7
This demo shows each of the four styles of the RangeEditor. Variations for
8
a small integer range, a medium-sized integer range, a large integer range
9
and a float range are demonstrated on separate tabs.
14
import HasTraits, Range
17
import Item, Group, View
19
# The main demo class:
20
class RangeEditorDemo ( HasTraits ):
21
""" Defines the RangeEditor demo class.
24
# Define a trait for each of four range variants:
25
small_int_range = Range( 1, 16 )
26
medium_int_range = Range( 1, 25 )
27
large_int_range = Range( 1, 150 )
28
float_range = Range( 0.0, 150.0 )
30
# RangeEditor display for narrow integer Range traits (< 17 wide):
31
int_range_group1 = Group(
32
Item( 'small_int_range', style = 'simple', label = 'Simple' ),
34
Item( 'small_int_range', style = 'custom', label = 'Custom' ),
36
Item( 'small_int_range', style = 'text', label = 'Text' ),
38
Item( 'small_int_range', style = 'readonly', label = 'ReadOnly' ),
42
# RangeEditor display for medium-width integer Range traits (17 to 100):
43
int_range_group2 = Group(
44
Item( 'medium_int_range', style = 'simple', label = 'Simple' ),
46
Item( 'medium_int_range', style = 'custom', label = 'Custom' ),
48
Item( 'medium_int_range', style = 'text', label = 'Text' ),
50
Item( 'medium_int_range', style = 'readonly', label = 'ReadOnly' ),
54
# RangeEditor display for wide integer Range traits (> 100):
55
int_range_group3 = Group(
56
Item( 'large_int_range', style = 'simple', label = 'Simple' ),
58
Item( 'large_int_range', style = 'custom', label = 'Custom' ),
60
Item( 'large_int_range', style = 'text', label = 'Text' ),
62
Item( 'large_int_range', style = 'readonly', label = 'ReadOnly' ),
66
# RangeEditor display for float Range traits:
67
float_range_group = Group(
68
Item( 'float_range', style = 'simple', label = 'Simple' ),
70
Item( 'float_range', style = 'custom', label = 'Custom' ),
72
Item( 'float_range', style = 'text', label = 'Text' ),
74
Item( 'float_range', style = 'readonly', label = 'ReadOnly' ),
78
# The view includes one group per data type. These will be displayed
79
# on separate tabbed panels:
85
title = 'RangeEditor',
92
demo = RangeEditorDemo()
94
# Run the demo (if invoked from the comand line):
95
if __name__ == '__main__':
96
demo.configure_traits()