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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
|
#-------------------------------------------------------------------------------
#
# Copyright (c) 2007, Enthought, Inc.
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in enthought/LICENSE.txt and may be redistributed only
# under the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
#
# Thanks for using Enthought open source!
#
# Author: David C. Morrill
# Date: 05/20/2007
#
#-------------------------------------------------------------------------------
""" A traits UI editor for editing tabular data (arrays, list of tuples, lists
of objects, etc).
"""
#-------------------------------------------------------------------------------
# Imports:
#-------------------------------------------------------------------------------
from __future__ import absolute_import
from traits.api import Str, Bool, Property, List, Enum, Instance
from ..ui_traits import Image
from ..basic_editor_factory import BasicEditorFactory
from ..toolkit import toolkit_object
#-------------------------------------------------------------------------------
# 'TabularEditor' editor factory class:
#-------------------------------------------------------------------------------
class TabularEditor ( BasicEditorFactory ):
""" Editor factory for tabular editors.
"""
#-- Trait Definitions ------------------------------------------------------
# The editor class to be created:
klass = Property
# Should column headers (i.e. titles) be displayed?
show_titles = Bool( True )
# Should row headers be displated (Qt4 only)?
show_row_titles = Bool( False )
# The optional extended name of the trait used to indicate that a complete
# table update is needed:
update = Str
# The optional extended name of the trait used to indicate that the table
# just needs to be repainted.
refresh = Str
# Should the table update automatically when the table item's contents
# change? Note that in order for this feature to work correctly, the editor
# trait should be a list of objects derived from HasTraits. Also,
# performance can be affected when very long lists are used, since enabling
# this feature adds and removed Traits listeners to each item in the list.
auto_update = Bool( False )
# The optional extended name of the trait to synchronize the selection
# values with:
selected = Str
# The optional extended name of the trait to synchronize the selection rows
# with:
selected_row = Str
# Whether or not to allow selection.
selectable = Bool( True )
# The optional extended name of the trait to synchronize the activated value
# with:
activated = Str
# The optional extended name of the trait to synchronize the activated
# value's row with:
activated_row = Str
# The optional extended name of the trait to synchronize left click data
# with. The data is a TabularEditorEvent:
clicked = Str
# The optional extended name of the trait to synchronize left double click
# data with. The data is a TabularEditorEvent:
dclicked = Str
# The optional extended name of the trait to synchronize right click data
# with. The data is a TabularEditorEvent:
right_clicked = Str
# The optional extended name of the trait to synchronize right double
# clicked data with. The data is a TabularEditorEvent:
right_dclicked = Str
# The optional extended name of the trait to synchronize column
# clicked data with. The data is a TabularEditorEvent:
column_clicked = Str
# The optional extended name of the trait to synchronize column
# right clicked data with. The data is a TabularEditorEvent:
column_right_clicked = Str
# The optional extended name of the Event trait that should be used to
# trigger a scroll-to command. The data is an integer giving the row.
scroll_to_row = Str
# Controls behavior of scroll to row
scroll_to_row_hint = Enum("center", "top", "bottom", "visible")
# Can the user edit the values?
editable = Bool( True )
# Can the user edit the labels (i.e. the first column)
editable_labels = Bool( False )
# Are multiple selected items allowed?
multi_select = Bool( False )
# Should horizontal lines be drawn between items?
horizontal_lines = Bool( True )
# Should vertical lines be drawn between items?
vertical_lines = Bool( True )
# Should the columns automatically resize? Don't allow this when the amount
# of data is large.
auto_resize = Bool( False )
# Should the rows automatically resize (Qt4 only)? Don't allow
# this when the amount of data is large.
auto_resize_rows = Bool( False )
# Whether to stretch the last column to fit the available space.
stretch_last_section = Bool( True )
# The adapter from trait values to editor values:
adapter = Instance( 'traitsui.tabular_adapter.TabularAdapter', () )
# What type of operations are allowed on the list:
operations = List( Enum( 'delete', 'insert', 'append', 'edit', 'move' ),
[ 'delete', 'insert', 'append', 'edit', 'move' ] )
# Are 'drag_move' operations allowed (i.e. True), or should they always be
# treated as 'drag_copy' operations (i.e. False):
drag_move = Bool( False )
# The set of images that can be used:
images = List( Image )
def _get_klass(self):
""" Returns the toolkit-specific editor class to be instantiated.
"""
return toolkit_object('tabular_editor:TabularEditor')
### EOF #######################################################################
|