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
|
# (C) Copyright 2004-2023 Enthought, Inc., Austin, TX
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in 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!
"""
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 traits.api import Dict
from traitsui.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
)
|