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
|
"""
Editor factory that overrides certain attributes of the default editor.
For example, the default editor for Range(low=0, high=1500) has
'1500' as the upper label. To change it to 'Max' instead, use
my_range = Range(low=0, high=1500,
editor=DefaultOverride(high_label='Max'))
Alternatively, the override can also be specified in the view:
View(Item('my_range', editor=DefaultOverride(high_label='Max'))
"""
from __future__ import absolute_import
from traits.api import Dict
from ..editor_factory import EditorFactory
class DefaultOverride(EditorFactory):
"""Editor factory for selectively overriding certain parameters
of the default editor.
"""
_overrides = Dict
def __init__(self, *args, **overrides):
EditorFactory.__init__(self, *args)
self._overrides = overrides
def _customise_default(self, editor_kind, ui, object, name,
description, parent):
"""
Obtain the given trait's default editor and set the parameters
specified in `overrides` above.
"""
trait = object.trait(name)
editor_factory = trait.trait_type.create_editor()
for option in self._overrides:
setattr(editor_factory, option, self._overrides[option])
editor = getattr(editor_factory, editor_kind)(ui, object, name,
description, parent)
return editor
def simple_editor(self, ui, object, name, description, parent):
return self._customise_default('simple_editor', ui, object,
name, description, parent)
def custom_editor(self, ui, object, name, description, parent):
return self._customise_default('custom_editor', ui, object,
name, description, parent)
def text_editor(self, ui, object, name, description, parent):
return self._customise_default('text_editor', ui, object,
name, description, parent)
def readonly_editor(self, ui, object, name, description, parent):
return self._customise_default('readonly_editor', ui, object,
name, description, parent)
|