Remove testing code and clean up (somewhat)

This commit is contained in:
Joscha 2019-06-08 18:49:04 +00:00
parent 148f2d2667
commit 204411726e

View file

@ -1,14 +1,10 @@
# TODO remove testing code and clean up
import datetime
import time
from typing import Optional, Tuple, TypeVar from typing import Optional, Tuple, TypeVar
import urwid import urwid
from .attributed_lines_widget import AttributedLinesWidget from .attributed_lines_widget import AttributedLinesWidget
from .cursor_rendering import CursorTreeRenderer from .cursor_rendering import CursorTreeRenderer
from .element import Element, Message from .element import Element
__all__ = ["CursorTreeWidget"] __all__ = ["CursorTreeWidget"]
@ -19,11 +15,27 @@ class CursorTreeWidget(urwid.WidgetWrap):
This widget draws a CursorTree and moves the cursor around. This widget draws a CursorTree and moves the cursor around.
""" """
def __init__(self, tree: CursorTreeRenderer[E]) -> None: def __init__(self,
tree: CursorTreeRenderer[E],
vertical_scroll_step: int = 1,
horizontal_scroll_step: int = 4,
half_page_scroll: bool = False,
) -> None:
self._tree = tree self._tree = tree
self._lines = AttributedLinesWidget() self._lines = AttributedLinesWidget()
super().__init__(self._lines) super().__init__(self._lines)
# Configurable variables
if vertical_scroll_step < 1:
raise ValueError("vertical scroll step must be at least 1")
if horizontal_scroll_step < 1:
raise ValueError("horizontal scroll step must be at least 1")
self._vertical_scroll_step = vertical_scroll_step
self._horizontal_scroll_step = horizontal_scroll_step
self._half_page_scroll = half_page_scroll
def render(self, size: Tuple[int, int], focus: bool) -> None: def render(self, size: Tuple[int, int], focus: bool) -> None:
width, height = size width, height = size
@ -38,41 +50,39 @@ class CursorTreeWidget(urwid.WidgetWrap):
def keypress(self, size: Tuple[int, int], key: str) -> Optional[str]: def keypress(self, size: Tuple[int, int], key: str) -> Optional[str]:
width, height = size width, height = size
if key == "up": if key in {"up", "k"}:
self._tree.move_cursor_up() self._tree.move_cursor_up()
self._invalidate() self._invalidate()
elif key == "down": elif key in {"down", "j"}:
self._tree.move_cursor_down() self._tree.move_cursor_down()
self._invalidate() self._invalidate()
elif key == "shift up": elif key in {"shift up", "K"}:
self._tree.scroll(1) self._tree.scroll(self._vertical_scroll_step)
self._invalidate() self._invalidate()
elif key == "shift down": elif key in {"shift down", "J"}:
self._tree.scroll(-1) self._tree.scroll(-self._vertical_scroll_step)
self._invalidate() self._invalidate()
elif key == "shift right": elif key in {"shift right", "L"}:
self.scroll_horizontally(1) self.scroll_horizontally(self._horizontal_scroll_step)
elif key == "shift left": elif key in {"shift left", "H"}:
self.scroll_horizontally(-1) self.scroll_horizontally(-self._horizontal_scroll_step)
elif key in {"home", "shift home"}: elif key == "shift home":
self._lines.horizontal_offset = 0 self._lines.horizontal_offset = 0
self._invalidate() self._invalidate()
elif key == "shift page up": elif key == "shift page up":
self._tree.scroll(height - 1) if self._half_page_scroll:
self._tree.scroll(height // 2)
else:
self._tree.scroll(height - 1)
self._invalidate() self._invalidate()
elif key == "shift page down": elif key == "shift page down":
self._tree.scroll(-(height - 1)) if self._half_page_scroll:
self._tree.scroll(-(height // 2))
else:
self._tree.scroll(-(height - 1))
self._invalidate() self._invalidate()
else: else:
t = datetime.datetime(2019,5,7,13,25,6) return key
self._tree._supply.add(Message(
str(time.time()),
self._tree._cursor_id,
t,
"key",
key,
))
self._invalidate()
return None return None