44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
|
"""By default, textual-autocomplete replaces the entire content of a widget
|
||
|
with a completion.
|
||
|
|
||
|
Sometimes, however, you may wish to insert the completion text, or otherwise use
|
||
|
custom logic to determine the end-state of the Input after the user selects a completion.
|
||
|
|
||
|
For example, if completing a path on a filesystem, you may wish to offer partial completions
|
||
|
of the path based on the current content of the Input. Then, when the user selects a completion,
|
||
|
you could offer a different set of completions based on the new path in the Input.
|
||
|
"""
|
||
|
|
||
|
from textual.app import App, ComposeResult
|
||
|
from textual.containers import Container
|
||
|
from textual.widgets import Input, Label
|
||
|
|
||
|
from textual_autocomplete import PathAutoComplete
|
||
|
|
||
|
|
||
|
class FileSystemPathCompletions(App[None]):
|
||
|
CSS = """
|
||
|
#container {
|
||
|
align: center middle;
|
||
|
padding: 2 4;
|
||
|
}
|
||
|
#label {
|
||
|
margin-left: 3;
|
||
|
}
|
||
|
Input {
|
||
|
width: 80%;
|
||
|
}
|
||
|
"""
|
||
|
|
||
|
def compose(self) -> ComposeResult:
|
||
|
with Container(id="container"):
|
||
|
yield Label("Choose a file!", id="label")
|
||
|
input_widget = Input(placeholder="Enter a path...")
|
||
|
yield input_widget
|
||
|
yield PathAutoComplete(target=input_widget, path="../textual")
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
app = FileSystemPathCompletions()
|
||
|
app.run()
|