Source code for traitsui.editors.default_override

# (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


[docs]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
[docs] def simple_editor(self, ui, object, name, description, parent): return self._customise_default( "simple_editor", ui, object, name, description, parent )
[docs] def custom_editor(self, ui, object, name, description, parent): return self._customise_default( "custom_editor", ui, object, name, description, parent )
[docs] def text_editor(self, ui, object, name, description, parent): return self._customise_default( "text_editor", ui, object, name, description, parent )
[docs] def readonly_editor(self, ui, object, name, description, parent): return self._customise_default( "readonly_editor", ui, object, name, description, parent )