This commit is contained in:
Waylon Walker 2023-04-27 08:51:14 -05:00
commit de5030a381
No known key found for this signature in database
GPG key ID: 66E2BF2B4190EFE4
20 changed files with 1660 additions and 0 deletions

View file

@ -0,0 +1,18 @@
Screen {
align: center middle;
layers: main footer;
}
Sidebar {
height: 100vh;
width: auto;
min-width: 20;
background: $secondary-background-darken-2;
dock: left;
margin-right: 1;
layer: main;
}
Footer {
layer: footer;
}

62
pydantic_typer/tui/app.py Normal file
View file

@ -0,0 +1,62 @@
from pathlib import Path
from textual.app import App, ComposeResult
from textual.containers import Container
from textual.css.query import NoMatches
from textual.widgets import Footer, Static
from pydantic_typer.config import config
config["tui"] = {}
config["tui"]["bindings"] = {}
class Sidebar(Static):
def compose(self) -> ComposeResult:
yield Container(
Static("sidebar"),
id="sidebar",
)
class Tui(App):
"""A Textual app to manage requests."""
CSS_PATH = Path("__file__").parent / "app.css"
BINDINGS = [tuple(b.values()) for b in config["tui"]["bindings"]]
def compose(self) -> ComposeResult:
"""Create child widgets for the app."""
yield Container(Static("hello world"))
yield Footer()
def action_toggle_dark(self) -> None:
"""An action to toggle dark mode."""
self.dark = not self.dark
def action_toggle_sidebar(self):
try:
self.query_one("PromptSidebar").remove()
except NoMatches:
self.mount(Sidebar())
def run_app():
import os
import sys
from textual.features import parse_features
dev = "--dev" in sys.argv
features = set(parse_features(os.environ.get("TEXTUAL", "")))
if dev:
features.add("debug")
features.add("devtools")
os.environ["TEXTUAL"] = ",".join(sorted(features))
app = Tui()
app.run()
if __name__ == "__main__":
run_app()