32 lines
835 B
Python
32 lines
835 B
Python
from abc import ABC, abstractmethod
|
|
from dataclasses import dataclass
|
|
from typing import Generic, TypeVar
|
|
|
|
from .attributed_lines import AttributedLines
|
|
from .element import Element, Id
|
|
from .element_renderer import ElementRenderer
|
|
from .element_supply import ElementSupply
|
|
|
|
__all__ = ["ElementTreeRenderer", "CursorTreeRenderer"]
|
|
|
|
E = TypeVar("E", bound=Element)
|
|
|
|
class ElementTreeRenderer(ABC, Generic[E]):
|
|
def __init__(self,
|
|
supply: ElementSupply[E],
|
|
renderer: ElementRenderer[E],
|
|
) -> None:
|
|
self.supply = supply
|
|
self.renderer = renderer
|
|
|
|
self.lines = AttributedLines()
|
|
|
|
@abstractmethod
|
|
def rerender(self) -> None:
|
|
pass
|
|
|
|
class CursorTreeRenderer(ElementTreeRenderer[E]):
|
|
pass # TODO
|
|
|
|
#class HighlightTreeRenderer(ElementTreeRenderer[E]):
|
|
# pass
|