Source code for traitsui.tree_node_renderer
# (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!
from abc import abstractmethod
from traits.api import ABCHasStrictTraits, Bool
[docs]class AbstractTreeNodeRenderer(ABCHasStrictTraits):
"""Abstract base class for renderers of tree node items.
This is currently only supported for Qt.
"""
#: Whether the renderer handles rendering everything
handles_all = Bool(False)
#: Whether the renderer handles rendering any text
handles_text = Bool(True)
#: Whether the renderer handles rendering the icon or other decoration
handles_icon = Bool(False)
[docs] @abstractmethod
def paint(self, node, column, object, paint_context):
"""Render the node.
Parameters
----------
node : ITreeNode instance
The tree node to render.
column : int
The column in the tree that should be rendererd.
object : object
The underlying object being edited.
paint_context : object
A toolkit-dependent context for performing paint operations.
Returns
-------
size : tuple of (width, height) or None
Optionally return a new preferred size so that the toolkit can
perform better layout.
"""
raise NotImplementedError()
[docs] @abstractmethod
def size(self, node, column, object, size_context):
"""Return the preferred size for the item
Parameters
----------
node : ITreeNode instance
The tree node to render.
column : int
The column in the tree that should be rendererd.
object : object
The underlying object being edited.
size_context : object
A toolkit-dependent context for performing sizing operations.
Returns
-------
size : tuple of (width, height) or None
"""
raise NotImplementedError()
[docs] def get_label(self, node, object, column=0):
"""Get the label associated with an item and column."""
if column == 0:
return node.get_label(object)
else:
return node.get_column_labels(object)[column]