diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ee7b9a673..d6485bd50c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 @@ -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 diff --git a/src/textual/widgets/_tree.py b/src/textual/widgets/_tree.py index d457d85337..f88dcf60c6 100644 --- a/src/textual/widgets/_tree.py +++ b/src/textual/widgets/_tree.py @@ -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. diff --git a/tests/test_tree.py b/tests/test_tree.py new file mode 100644 index 0000000000..55af8088e5 --- /dev/null +++ b/tests/test_tree.py @@ -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")