Source code for enable.component_editor
# (C) Copyright 2005-2022 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!
""" Defines a Traits editor for displaying an Enable component.
"""
from enable.colors import ColorTrait
from enable.window import Window
from traits.api import Bool, Property, Tuple
from traitsui.api import BasicEditorFactory, Editor as BaseEditor, toolkit_object
Editor = toolkit_object("editor:Editor")
if not issubclass(Editor, BaseEditor):
Editor = object
class _ComponentEditor(Editor):
# The plot editor is scrollable (overrides Traits UI Editor).
scrollable = True
def init(self, parent):
""" Finishes initializing the editor by creating the underlying toolkit
widget.
"""
size = self._get_initial_size()
self._window = Window(
parent,
size=size,
component=self.value,
high_resolution=self.factory.high_resolution,
)
self.control = self._window.control
self._window.bgcolor = self.factory.bgcolor
self._parent = parent
def dispose(self):
""" Disposes of the contents of an editor.
"""
self._window.cleanup()
self._window = None
self._parent = None
super().dispose()
def update_editor(self):
""" Updates the editor when the object trait changes externally to the
editor.
"""
self._window.component = self.value
def _get_initial_size(self):
""" Compute the initial size of the component.
Use the item size to set the size of the component;
if not specified, use the default size given in ComponentEditor.size
"""
width = self.item.width
if width < 0:
width = self.factory.size[0]
height = self.item.height
if height < 0:
height = self.factory.size[1]
return width, height
[docs]class ComponentEditor(BasicEditorFactory):
""" TraitsUI editor factory for Enable components.
"""
# -------------------------------------------------------------------------
# Trait definitions:
# -------------------------------------------------------------------------
# The class used to create all editor styles (overrides BasicEditorFactory)
klass = _ComponentEditor
#: The background color for the window
bgcolor = ColorTrait("sys_window")
#: When available, use HiDPI for GraphicsContext rasterization.
high_resolution = Bool(True)
#: The default size of the Window wrapping this Enable component
size = Tuple((400, 400))
#: Convenience function for accessing the width
width = Property
#: Convenience function for accessing the width
height = Property
def _get_width(self):
return self.size[0]
def _set_width(self, width):
self.size = (width, self.size[1])
def _get_height(self):
return self.size[1]
def _set_height(self, height):
self.size = (self.size[0], height)