Source code for pyanno.ui.arrayview
# Copyright (c) 2011, Enthought, Ltd.
# Author: Pietro Berkes <pberkes@enthought.com>
# License: Modified BSD license (2-clause)
from traits.api import HasTraits, Property, Array
from traits.trait_types import List, Int, Bool, Str
from traitsui.api import View, Item, TabularEditor
from traitsui.group import VGroup
from traitsui.tabular_adapter import TabularAdapter
from traitsui.menu import NoButtons
[docs]class Array2DAdapter(TabularAdapter):
columns = List
show_index = Bool(True)
ncolumns = Int
data_format = Str('%s')
font = 'Courier 10'
alignment = 'right'
format = data_format
index_text = Property
index_alignment = Property
width = 60
def _get_index_text(self):
return '- {} -'.format(self.row)
def _get_index_alignment(self):
return 'left'
def _columns_default(self):
columns = [('%d' % (i+1), i) for i in range(self.ncolumns)]
if self.show_index:
columns.insert(0, ('items', 'index'))
return columns
#### Testing and debugging ####################################################
[docs]def main():
"""Entry point for standalone testing/debugging."""
class TestShowArray(HasTraits):
data = Array
view = View(
Item(
'data',
editor=TabularEditor
(
adapter=Array2DAdapter(ncolumns=2,
format='%s',
show_index=False)),
show_label=False
),
title = 'Array2D editor',
width = 0.3,
height = 0.8,
resizable = True,
buttons = NoButtons
)
VGroup(Item('data',
editor=TabularEditor
(
adapter=Array2DAdapter(ncolumns=2,
format='%d',
show_index=False)),
show_label=False)),
data = [['a', 'b'], [1, 2]]
blah = TestShowArray(data=data)
blah.data = data
print blah.data
blah.configure_traits()
if __name__ == '__main__':
main()