retronews

a featureful fork of the luke8086/retronews hn+lobste.rs tui
Log | Files | Refs | README | LICENSE

commit 82bf499bfbf510046abc6ce711e5f5cbae5a8dbc
parent bd894b7a85ccbd29982b33ad46e0bf5ea59c30a3
Author: luke8086 <55237178+luke8086@users.noreply.github.com>
Date:   Sat, 23 Jul 2022 21:19:40 +0000

Initial support for pager scrolling

Diffstat:
Mretronews.py | 15++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/retronews.py b/retronews.py @@ -86,6 +86,7 @@ class AppState: messages_by_id: Dict[str, Message] = field(default_factory=dict) selected_message: Optional[Message] = None pager_visible: bool = False + pager_offset: int = 0 raw_mode: bool = False flash: Optional[str] = None @@ -172,6 +173,14 @@ def cmd_down(app: AppState) -> None: app_select_message(app, list_get(app.messages, pos, app.selected_message)) +def cmd_pager_up(app: AppState) -> None: + app.pager_offset = max(0, app.pager_offset - 1) + + +def cmd_pager_down(app: AppState) -> None: + app.pager_offset += 1 + + def cmd_page_up(app: AppState) -> None: index_height = app_get_index_height(app) pos = app.selected_message.index_position - index_height if app.selected_message else 0 @@ -227,6 +236,8 @@ KEY_BINDINGS = { ord("r"): cmd_toggle_raw_mode, curses.KEY_UP: cmd_up, curses.KEY_DOWN: cmd_down, + ord("k"): cmd_pager_up, + ord("j"): cmd_pager_down, curses.KEY_PPAGE: cmd_page_up, curses.KEY_NPAGE: cmd_page_down, } @@ -296,6 +307,8 @@ def app_select_message(app: AppState, message: Optional[Message], show_pager: bo db_save_message(app.db, message) db_load_read_comments(app.db, {message.story_id: app.messages_by_id[message.story_id]}) + app.pager_offset = 0 + def app_load_messages( app: AppState, messages: List[Message], selected_message_id: Optional[str] = None, show_pager: bool = False @@ -401,7 +414,7 @@ def app_render_pager(app: AppState, top: int, height: int) -> None: return for i in range(height): - line = list_get(message.lines, i) or "" + line = list_get(message.lines, i + app.pager_offset) or "" app_render_pager_line(app, i + top, line)