60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
"""Provides a Textual welcome widget."""
|
|
|
|
from rich.markdown import Markdown
|
|
|
|
from textual.app import ComposeResult
|
|
from textual.containers import Container
|
|
from textual.widgets._button import Button
|
|
from textual.widgets._static import Static
|
|
|
|
WELCOME_MD = """\
|
|
# Welcome!
|
|
|
|
Textual is a TUI, or *Text User Interface*, framework for Python inspired by modern web development. **We hope you enjoy using Textual!**
|
|
|
|
## Dune quote
|
|
|
|
> "I must not fear.
|
|
Fear is the mind-killer.
|
|
Fear is the little-death that brings total obliteration.
|
|
I will face my fear.
|
|
I will permit it to pass over me and through me.
|
|
And when it has gone past, I will turn the inner eye to see its path.
|
|
Where the fear has gone there will be nothing. Only I will remain."
|
|
"""
|
|
|
|
|
|
class Welcome(Static):
|
|
"""A Textual welcome widget.
|
|
|
|
This widget can be used as a form of placeholder within a Textual
|
|
application; although also see
|
|
[Placeholder][textual.widgets._placeholder.Placeholder].
|
|
"""
|
|
|
|
DEFAULT_CSS = """
|
|
Welcome {
|
|
width: 100%;
|
|
height: 100%;
|
|
background: $surface;
|
|
}
|
|
|
|
Welcome Container {
|
|
padding: 1;
|
|
color: $foreground;
|
|
}
|
|
|
|
Welcome #text {
|
|
margin: 0 1;
|
|
}
|
|
|
|
Welcome #close {
|
|
dock: bottom;
|
|
width: 100%;
|
|
}
|
|
"""
|
|
|
|
def compose(self) -> ComposeResult:
|
|
yield Container(Static(Markdown(WELCOME_MD), id="text"), id="md")
|
|
yield Button("OK", id="close", variant="success")
|