"""
Replaces an urwid.BaseScreen with one that renders the terminal into html
files.
"""
from typing import List, Optional, Tuple
import urwid
[docs]class KeypressEmulatorBase:
[docs] def get_next(self) -> Optional[Tuple[int, int, List[str]]]:
raise NotImplementedError("get_next is not implemented")
[docs] def get_default_delay(self) -> int:
raise NotImplementedError("get_default_delay is not implemented")
[docs]class HtmlScreenshotScreen(urwid.BaseScreen):
""" """
def __init__(
self,
draw_screen_callback,
keys: Optional[KeypressEmulatorBase] = None,
cols: int = 150,
rows: int = 100,
):
super().__init__()
self.keys = keys
self.cols = cols
self.rows = rows
self._draw_screen_callback = draw_screen_callback
self.last_info = {
"render_count": 0,
"key_idx": 0,
"key": [""],
"delay": 0 if not keys else keys.get_default_delay(),
}
[docs] def set_terminal_properties(self, *args, **kwargs):
pass
[docs] def set_mouse_tracking(self, enable=True):
pass
[docs] def reset_default_terminal_palette(self, *args):
pass
[docs] def get_cols_rows(self):
return (self.cols, self.rows)
[docs] def draw_screen(self, size: Tuple[int, int], canvas: urwid.Canvas):
self._draw_screen_callback(self.last_info, canvas)
self.last_info["render_count"] += 1