initial commit
This commit is contained in:
commit
19c9b9537d
115 changed files with 4940 additions and 0 deletions
35
examples/tui.py
Normal file
35
examples/tui.py
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
import sys
|
||||
|
||||
from snakia.core.tui import CanvasChar, RenderContext
|
||||
from snakia.core.tui.render import ANSIRenderer
|
||||
from snakia.core.tui.widgets import (BoxWidget, HorizontalSplitWidget,
|
||||
TextWidget, VerticalSplitWidget)
|
||||
|
||||
|
||||
class StdoutTarget:
|
||||
def write(self, text: str) -> None:
|
||||
sys.stdout.write(text)
|
||||
|
||||
def flush(self) -> None:
|
||||
sys.stdout.flush()
|
||||
|
||||
|
||||
def main() -> None:
|
||||
text1 = TextWidget("Hello", CanvasChar(fg_color="red", bold=True))
|
||||
text2 = TextWidget("World", CanvasChar(fg_color="blue", bold=True))
|
||||
text3 = TextWidget("Snakia", CanvasChar(fg_color="green", bold=True))
|
||||
|
||||
box1 = BoxWidget(10, 3, CanvasChar("█", fg_color="yellow"))
|
||||
box2 = BoxWidget(8, 5, CanvasChar("█", fg_color="magenta"))
|
||||
|
||||
horizontal_split = HorizontalSplitWidget([text1, text2, text3], "|")
|
||||
vertical_split = VerticalSplitWidget([horizontal_split, box1, box2], "-")
|
||||
|
||||
renderer = ANSIRenderer(StdoutTarget())
|
||||
|
||||
with RenderContext(renderer) as ctx:
|
||||
ctx.render(vertical_split.render())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue