Remove testing code and clean up (somewhat)
This commit is contained in:
parent
148f2d2667
commit
204411726e
1 changed files with 38 additions and 28 deletions
|
|
@ -1,14 +1,10 @@
|
|||
# TODO remove testing code and clean up
|
||||
|
||||
import datetime
|
||||
import time
|
||||
from typing import Optional, Tuple, TypeVar
|
||||
|
||||
import urwid
|
||||
|
||||
from .attributed_lines_widget import AttributedLinesWidget
|
||||
from .cursor_rendering import CursorTreeRenderer
|
||||
from .element import Element, Message
|
||||
from .element import Element
|
||||
|
||||
__all__ = ["CursorTreeWidget"]
|
||||
|
||||
|
|
@ -19,11 +15,27 @@ class CursorTreeWidget(urwid.WidgetWrap):
|
|||
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._lines = AttributedLinesWidget()
|
||||
|
||||
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:
|
||||
width, height = size
|
||||
|
||||
|
|
@ -38,41 +50,39 @@ class CursorTreeWidget(urwid.WidgetWrap):
|
|||
def keypress(self, size: Tuple[int, int], key: str) -> Optional[str]:
|
||||
width, height = size
|
||||
|
||||
if key == "up":
|
||||
if key in {"up", "k"}:
|
||||
self._tree.move_cursor_up()
|
||||
self._invalidate()
|
||||
elif key == "down":
|
||||
elif key in {"down", "j"}:
|
||||
self._tree.move_cursor_down()
|
||||
self._invalidate()
|
||||
elif key == "shift up":
|
||||
self._tree.scroll(1)
|
||||
elif key in {"shift up", "K"}:
|
||||
self._tree.scroll(self._vertical_scroll_step)
|
||||
self._invalidate()
|
||||
elif key == "shift down":
|
||||
self._tree.scroll(-1)
|
||||
elif key in {"shift down", "J"}:
|
||||
self._tree.scroll(-self._vertical_scroll_step)
|
||||
self._invalidate()
|
||||
elif key == "shift right":
|
||||
self.scroll_horizontally(1)
|
||||
elif key == "shift left":
|
||||
self.scroll_horizontally(-1)
|
||||
elif key in {"home", "shift home"}:
|
||||
elif key in {"shift right", "L"}:
|
||||
self.scroll_horizontally(self._horizontal_scroll_step)
|
||||
elif key in {"shift left", "H"}:
|
||||
self.scroll_horizontally(-self._horizontal_scroll_step)
|
||||
elif key == "shift home":
|
||||
self._lines.horizontal_offset = 0
|
||||
self._invalidate()
|
||||
elif key == "shift page up":
|
||||
if self._half_page_scroll:
|
||||
self._tree.scroll(height // 2)
|
||||
else:
|
||||
self._tree.scroll(height - 1)
|
||||
self._invalidate()
|
||||
elif key == "shift page down":
|
||||
if self._half_page_scroll:
|
||||
self._tree.scroll(-(height // 2))
|
||||
else:
|
||||
self._tree.scroll(-(height - 1))
|
||||
self._invalidate()
|
||||
else:
|
||||
t = datetime.datetime(2019,5,7,13,25,6)
|
||||
self._tree._supply.add(Message(
|
||||
str(time.time()),
|
||||
self._tree._cursor_id,
|
||||
t,
|
||||
"key",
|
||||
key,
|
||||
))
|
||||
self._invalidate()
|
||||
return key
|
||||
|
||||
return None
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue