mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
Document the filtering support of DirectoryTree
This commit is contained in:
20
docs/examples/widgets/directory_tree_filtered.py
Normal file
20
docs/examples/widgets/directory_tree_filtered.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from pathlib import Path
|
||||
from typing import Iterable
|
||||
|
||||
from textual.app import App, ComposeResult
|
||||
from textual.widgets import DirectoryTree
|
||||
|
||||
|
||||
class FilteredDirectoryTree(DirectoryTree):
|
||||
def filter_paths(self, paths: Iterable[Path]) -> Iterable[Path]:
|
||||
return [path for path in paths if not path.name.startswith(".")]
|
||||
|
||||
|
||||
class DirectoryTreeApp(App):
|
||||
def compose(self) -> ComposeResult:
|
||||
yield FilteredDirectoryTree("./")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = DirectoryTreeApp()
|
||||
app.run()
|
||||
@@ -14,6 +14,26 @@ The example below creates a simple tree to navigate the current working director
|
||||
--8<-- "docs/examples/widgets/directory_tree.py"
|
||||
```
|
||||
|
||||
## Filtering
|
||||
|
||||
There may be times where you want to filter what appears in the
|
||||
`DirectoryTree`. To do this inherit from `DirectoryTree` and implement your
|
||||
own version of the `filter_paths` method. It should take an iterable of
|
||||
Python `Path` objects, and return those that pass the filter. For example,
|
||||
if you wanted to take the above code an filter out all of the "hidden" files
|
||||
and directories:
|
||||
|
||||
=== "Output"
|
||||
|
||||
```{.textual path="docs/examples/widgets/directory_tree_filtered.py"}
|
||||
```
|
||||
|
||||
=== "directory_tree_filtered.py"
|
||||
|
||||
~~~python
|
||||
--8<-- "docs/examples/widgets/directory_tree_filtered.py"
|
||||
~~~
|
||||
|
||||
## Messages
|
||||
|
||||
### ::: textual.widgets.DirectoryTree.FileSelected
|
||||
|
||||
Reference in New Issue
Block a user