From dc645884a3f4494768a1302f7f1a80e126e1f9a9 Mon Sep 17 00:00:00 2001 From: Serge Bazanski <q3k@q3k.org> Date: Sun, 13 Aug 2023 14:43:37 +0200 Subject: [PATCH] py: don't draw status icons in most apps --- python_payload/st3m/run.py | 4 ++-- python_payload/st3m/ui/elements/overlays.py | 9 ++++++--- python_payload/st3m/ui/menu.py | 3 +++ python_payload/st3m/ui/view.py | 16 ++++++++++++++++ 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/python_payload/st3m/run.py b/python_payload/st3m/run.py index fb95351492..ae95af878e 100644 --- a/python_payload/st3m/run.py +++ b/python_payload/st3m/run.py @@ -56,11 +56,11 @@ def _make_bundle_menu(bundles: List[BundleMetadata], kind: str) -> SimpleMenu: return SimpleMenu(entries) -def _make_compositor(reactor: Reactor, r: Responder) -> overlays.Compositor: +def _make_compositor(reactor: Reactor, vm: ViewManager) -> overlays.Compositor: """ Set up top-level compositor (for combining viewmanager with overlays). """ - compositor = overlays.Compositor(r) + compositor = overlays.Compositor(vm) volume = overlays.OverlayVolume() compositor.add_overlay(volume) diff --git a/python_payload/st3m/ui/elements/overlays.py b/python_payload/st3m/ui/elements/overlays.py index a5db8189e8..83f9780b1c 100644 --- a/python_payload/st3m/ui/elements/overlays.py +++ b/python_payload/st3m/ui/elements/overlays.py @@ -9,6 +9,7 @@ etc. from st3m import Responder, InputState, Reactor from st3m.goose import Dict, Enum, List, ABCBase, abstractmethod, Optional from st3m.utils import tau +from st3m.ui.view import ViewManager from ctx import Context import math @@ -43,11 +44,11 @@ class Overlay(Responder): class Compositor(Responder): """ - A Compositor blends together some main Responder (usually a ViewManager) - alongside with active Overlays. Overlays can be enabled/disabled by kind. + A Compositor blends together some ViewManager alongside with active + Overlays. Overlays can be enabled/disabled by kind. """ - def __init__(self, main: Responder): + def __init__(self, main: ViewManager): self.main = main self.overlays: Dict[OverlayKind, List[Responder]] = {} self.enabled: Dict[OverlayKind, bool] = { @@ -61,6 +62,8 @@ class Compositor(Responder): for kind in _all_kinds: if not self.enabled.get(kind, False): continue + if kind == OverlayKind.Indicators and not self.main.wants_icons(): + continue for overlay in self.overlays.get(kind, []): res.append(overlay) return res diff --git a/python_payload/st3m/ui/menu.py b/python_payload/st3m/ui/menu.py index 66c82ca9db..efcc8c5920 100644 --- a/python_payload/st3m/ui/menu.py +++ b/python_payload/st3m/ui/menu.py @@ -211,3 +211,6 @@ class MenuController(BaseView): Automatically called on canonical user input. """ self._items[self._scroll_controller.target_position()].press(self.vm) + + def show_icons(self) -> bool: + return True diff --git a/python_payload/st3m/ui/view.py b/python_payload/st3m/ui/view.py index b3d8ba013a..90aef9e574 100644 --- a/python_payload/st3m/ui/view.py +++ b/python_payload/st3m/ui/view.py @@ -25,6 +25,13 @@ class View(Responder): """ pass + def show_icons(self) -> bool: + """ + View should return True if it accepts having system icons drawn on top + if it. + """ + return False + class BaseView(View): """ @@ -229,3 +236,12 @@ class ViewManager(Responder): return r = self._history.pop() self.replace(r, override_vt) + + def wants_icons(self) -> bool: + """ + Returns true if the current active view wants icon to be drawn on top of it. + """ + if self._incoming is not None: + return self._incoming.show_icons() + else: + return True -- GitLab