diff --git a/python_payload/apps/fil3s/browser.py b/python_payload/apps/fil3s/browser.py index 21c877d2623b817881a8afb4b59a9264858f3de5..e1a1c054d88cdac82bceb011ea7c19b45e0e9e7a 100644 --- a/python_payload/apps/fil3s/browser.py +++ b/python_payload/apps/fil3s/browser.py @@ -1,6 +1,7 @@ import os import uos import stat +import math from st3m.goose import Callable, Generator, Optional from st3m.input import InputState from ctx import Context @@ -38,6 +39,8 @@ class Browser(ActionView): self._delete_hold_time = 1.5 self._delete_require_release = False + self._scroll_pos = 0.0 + self.path = path self.selected = selected self.navigate = navigate @@ -75,13 +78,18 @@ class Browser(ActionView): ctx.text(self.current_entry[1]) ctx.font_size = 24 - ctx.move_to(0, 20) ctx.font = "Camp Font 3" + xpos = 0.0 + if (width := ctx.text_width(self.current_entry[0])) > 220: + xpos = math.sin(self._scroll_pos) * (width - 220) / 2 + ctx.move_to(xpos, 20) ctx.text(self.current_entry[0]) def think(self, ins: InputState, delta_ms: int) -> None: super().think(ins, delta_ms) + self._scroll_pos += delta_ms / 1000 + # Handle delete petal being held down if ins.captouch.petals[0].pressed: if not self._delete_require_release: @@ -222,5 +230,6 @@ class Browser(ActionView): ] and self.select_enabled ) + self._scroll_pos = math.pi / 2 self._update_actions()