Skip to content

Commit

Permalink
Add public access to a TreeNode's label
Browse files Browse the repository at this point in the history
This adds public support to reading a TreeNode's label, and also setting it
too.

See Textualize#1396.
  • Loading branch information
davep committed Jan 5, 2023
1 parent a1e63a1 commit b8a3296
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 2 deletions.
10 changes: 8 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## [0.10.0] - Unreleased

### Added

- Added public `TreeNode` label access via `TreeNode.label` https://github.com/Textualize/textual/issues/1396

## [0.9.1] - 2022-12-30

### Added
Expand All @@ -23,8 +29,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).

- Widget.render_line now returns a Strip
- Fix for slow updates on Windows
- Bumped Rich dependency
- Bumped Rich dependency

## [0.8.2] - 2022-12-28

### Fixed
Expand Down
11 changes: 11 additions & 0 deletions src/textual/widgets/_tree.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,17 @@ def toggle(self) -> None:
self._updates += 1
self._tree._invalidate()

@property
def label(self) -> TextType:
"""TextType: The label for the node."""
return self._label

@label.setter
def label(self, new_label: TextType) -> TextType:
"""TextType: The label for the node."""
self.set_label(new_label)
return self.label

def set_label(self, label: TextType) -> None:
"""Set a new label for the node.
Expand Down
17 changes: 17 additions & 0 deletions tests/test_tree.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from textual.widgets import Tree, TreeNode
from rich.text import Text

def test_tree_node_label() -> None:
"""It should be possible to modify a TreeNode's label."""
node = TreeNode(Tree[None]("Xenomorph Lifecycle"), None, 0, "Facehugger")
assert node.label == Text("Facehugger")
node.label = "Chestbuster"
assert node.label == Text("Chestbuster")

def test_tree_node_label_via_tree() -> None:
"""It should be possible to modify a TreeNode's label when created via a Tree."""
tree = Tree[None]("Xenomorph Lifecycle")
node = tree.root.add("Facehugger")
assert node.label == Text("Facehugger")
node.label = "Chestbuster"
assert node.label == Text("Chestbuster")

0 comments on commit b8a3296

Please sign in to comment.