terminal size| cols=146; lines=38

terminal size| cols=106; lines=33

80x25 ?

class TextFlowStyle - spacing around paragraphs, lists
class TextParagraph
class TextList(ordered=True)


class MainTheme(Theme):
    def __init__(self) -> None:
        super().__init__(
            **{
                "general": [COL_WHITEBLACK, True],
                "border": [COL_BLUEBLACK, True],
                "header": [COL_WHITEBLACK, True],
                "home": [COL_WHITEBLACK, False],
                "title": [COL_CYANBLACK, False],
                "warntitle": [COL_WHITEBLACK, False],
                "warnborder": [COL_REDBLACK, False],
            }
        )


2026-05-05
====================================== ANY VIEW:
theme_palette: ThemePalette = ThemePalette()
theme: Theme = theme_palette.get_theme()  # Default is "main"


layout_manager: LayoutManager = LayoutManager(
    stdscr=stdscr,
    xspacing=0,
    yspacing=0,
    xmargin=0,
    ymargin=0,
    theme=theme
)
layout_manager.add_column(36)
box1: TUIBox = layout_manager.add_box()      ######## 2026-05-14
box2: TUIBox = layout_manager.add_box(
    column_num=0,
    title="new window",
    width=10,
    height=3
)
...
layout_manager.draw_boxes()

box1.printyx(y, x, "blah")  # themekey is last argument
box1.print("blah", "title")  # themekey=title

layout_manager.refresh_screen()  # Pushes all the changes
time.sleep(1)  # Prevent 100% CPU usage




##canvas: TUICanvas = TUICanvas(stdscr)  # Initialization
##canvas.init_colors()

# Boxes
## title_box: TUIBox = TUIBox(theme, stdscr, y, x, lines, cols, "")
## title_box.draw_box()

canvas.boxes = [title_box, ...]

#  title_box.printxy(y, x, "blah", themekey|cp)
#  title_box.print("blah\n", themekey|cp)
#  title_box.clear()

...
canvas.refresh()  # Will update all boxed and the canvas



Snow depth:
001 - 1cm 
002 - 2cm
... - ...
996 - 996cm
997 - Less than 0.5cm
998 - Snow cover, not continuous
999 - Measurement impossible or inaccurate


