From ddca99c4ed0dd1814f45186c259f168e84eaafa6 Mon Sep 17 00:00:00 2001 From: Serge Bazanski <q3k@q3k.org> Date: Thu, 3 Aug 2023 19:06:14 +0200 Subject: [PATCH] py: st4m -> st3m --- python_payload/apps/cap_touch_demo.py | 8 +- python_payload/apps/demo_worms4.py | 10 +- python_payload/apps/harmonic_demo.py | 8 +- python_payload/apps/melodic_demo.py | 8 +- python_payload/apps/nick.py | 10 +- python_payload/main.py | 16 +- python_payload/main_st4m.py | 275 ------------------ python_payload/mypystubs/hardware.pyi | 2 +- python_payload/st3m/__init__.py | 11 + python_payload/{st4m => st3m}/application.py | 6 +- python_payload/{st4m => st3m}/goose.py | 2 +- python_payload/{st4m => st3m}/input.py | 4 +- python_payload/{st4m => st3m}/logging.py | 2 +- python_payload/{st4m => st3m}/property.py | 0 python_payload/{st4m => st3m}/reactor.py | 8 +- python_payload/{st4m => st3m}/system.py | 0 python_payload/{st4m => st3m}/ui/__init__.py | 0 python_payload/{st4m => st3m}/ui/ctx.py | 6 +- .../{st4m => st3m}/ui/elements/__init__.py | 0 .../{st4m => st3m}/ui/elements/menus.py | 12 +- .../{st4m => st3m}/ui/elements/visuals.py | 8 +- .../{st4m => st3m}/ui/interactions.py | 10 +- python_payload/{st4m => st3m}/ui/menu.py | 14 +- python_payload/{st4m => st3m}/ui/view.py | 8 +- python_payload/{st4m => st3m}/utils.py | 0 python_payload/st4m/README.md | 24 -- python_payload/st4m/__init__.py | 11 - 27 files changed, 82 insertions(+), 381 deletions(-) delete mode 100644 python_payload/main_st4m.py create mode 100644 python_payload/st3m/__init__.py rename python_payload/{st4m => st3m}/application.py (81%) rename python_payload/{st4m => st3m}/goose.py (99%) rename python_payload/{st4m => st3m}/input.py (99%) rename python_payload/{st4m => st3m}/logging.py (97%) rename python_payload/{st4m => st3m}/property.py (100%) rename python_payload/{st4m => st3m}/reactor.py (95%) rename python_payload/{st4m => st3m}/system.py (100%) rename python_payload/{st4m => st3m}/ui/__init__.py (100%) rename python_payload/{st4m => st3m}/ui/ctx.py (98%) rename python_payload/{st4m => st3m}/ui/elements/__init__.py (100%) rename python_payload/{st4m => st3m}/ui/elements/menus.py (92%) rename python_payload/{st4m => st3m}/ui/elements/visuals.py (96%) rename python_payload/{st4m => st3m}/ui/interactions.py (98%) rename python_payload/{st4m => st3m}/ui/menu.py (93%) rename python_payload/{st4m => st3m}/ui/view.py (97%) rename python_payload/{st4m => st3m}/utils.py (100%) delete mode 100644 python_payload/st4m/README.md delete mode 100644 python_payload/st4m/__init__.py diff --git a/python_payload/apps/cap_touch_demo.py b/python_payload/apps/cap_touch_demo.py index 1252fbae2e..a3dea8fa3c 100644 --- a/python_payload/apps/cap_touch_demo.py +++ b/python_payload/apps/cap_touch_demo.py @@ -1,7 +1,7 @@ -from st4m import application, logging -from st4m.goose import List -from st4m.ui.ctx import Ctx -from st4m.input import InputState +from st3m import application, logging +from st3m.goose import List +from st3m.ui.ctx import Ctx +from st3m.input import InputState log = logging.Log(__name__, level=logging.INFO) log.info("import") diff --git a/python_payload/apps/demo_worms4.py b/python_payload/apps/demo_worms4.py index b0d9de8c66..f121b01d45 100644 --- a/python_payload/apps/demo_worms4.py +++ b/python_payload/apps/demo_worms4.py @@ -4,11 +4,11 @@ import time import math # flow3r imports -from st4m import application -from st4m import Ctx, InputState -from st4m.property import BLUE, WHITE -from st4m.goose import Optional -from st4m.utils import xy_from_polar +from st3m import application +from st3m import Ctx, InputState +from st3m.property import BLUE, WHITE +from st3m.goose import Optional +from st3m.utils import xy_from_polar tau = 2 * math.pi diff --git a/python_payload/apps/harmonic_demo.py b/python_payload/apps/harmonic_demo.py index 46398229f4..4f5c3ac541 100644 --- a/python_payload/apps/harmonic_demo.py +++ b/python_payload/apps/harmonic_demo.py @@ -3,9 +3,9 @@ import captouch import leds import hardware -from st4m.ui.ctx import Ctx -from st4m.goose import List -from st4m.input import InputState +from st3m.ui.ctx import Ctx +from st3m.goose import List +from st3m.input import InputState chords = [ [-4, 0, 3, 8, 10], @@ -16,7 +16,7 @@ chords = [ ] -from st4m.application import Application +from st3m.application import Application class HarmonicApp(Application): diff --git a/python_payload/apps/melodic_demo.py b/python_payload/apps/melodic_demo.py index 78000e5dd3..5c3d2110ac 100644 --- a/python_payload/apps/melodic_demo.py +++ b/python_payload/apps/melodic_demo.py @@ -3,9 +3,9 @@ from hardware import * import captouch import leds -from st4m.goose import List -from st4m.input import InputState -from st4m.ui.ctx import Ctx +from st3m.goose import List +from st3m.input import InputState +from st3m.ui.ctx import Ctx octave = 0 synths: List[tinysynth] = [] @@ -78,7 +78,7 @@ def foreground() -> None: adjust_playing_field_to_octave() -from st4m.application import Application +from st3m.application import Application # TODO(q3k): properly port this app diff --git a/python_payload/apps/nick.py b/python_payload/apps/nick.py index 085f6cdfb4..476fabc022 100644 --- a/python_payload/apps/nick.py +++ b/python_payload/apps/nick.py @@ -1,8 +1,8 @@ -from st4m.application import Application -from st4m.property import PUSH_RED, GO_GREEN, BLACK -from st4m.goose import Dict, Any -from st4m.ui.ctx import Ctx -from st4m.input import InputState +from st3m.application import Application +from st3m.property import PUSH_RED, GO_GREEN, BLACK +from st3m.goose import Dict, Any +from st3m.ui.ctx import Ctx +from st3m.input import InputState import leds import json diff --git a/python_payload/main.py b/python_payload/main.py index b8c9d4de6e..44d5374854 100644 --- a/python_payload/main.py +++ b/python_payload/main.py @@ -2,23 +2,23 @@ import time, gc ts_start = time.time() -from st4m import logging +from st3m import logging log = logging.Log(__name__, level=logging.INFO) log.info(f"starting main") log.info(f"free memory: {gc.mem_free()}") -import st4m +import st3m -from st4m.goose import Optional, List, ABCBase, abstractmethod -from st4m.ui.view import View, ViewManager, ViewTransitionBlend -from st4m.ui.menu import ( +from st3m.goose import Optional, List, ABCBase, abstractmethod +from st3m.ui.view import View, ViewManager, ViewTransitionBlend +from st3m.ui.menu import ( MenuItemBack, MenuItemForeground, MenuItemNoop, ) -from st4m.ui.elements.menus import FlowerMenu, SimpleMenu, SunMenu +from st3m.ui.elements.menus import FlowerMenu, SimpleMenu, SunMenu log.info("import apps done") log.info(f"free memory: {gc.mem_free()}") @@ -26,7 +26,7 @@ ts_end = time.time() log.info(f"boot took {ts_end-ts_start} seconds") # TODO persistent settings -from st4m.system import audio, captouch +from st3m.system import audio, captouch log.info("calibrating captouch, reset volume") captouch.calibration_request() @@ -95,7 +95,7 @@ menu_main = SunMenu( vm.push(menu_main) -reactor = st4m.Reactor() +reactor = st3m.Reactor() reactor.set_top(vm) # reactor.set_top(pr) reactor.run() diff --git a/python_payload/main_st4m.py b/python_payload/main_st4m.py deleted file mode 100644 index 437e8e2b02..0000000000 --- a/python_payload/main_st4m.py +++ /dev/null @@ -1,275 +0,0 @@ -""" -Experimental/Research UI/UX framework (st4m). - -To run, rename this file to main.py. - -See st4m/README.md for more information. -""" - - -import st4m - -from st4m.goose import Optional, List, ABCBase, abstractmethod -from st4m.ui.view import View, ViewManager, ViewTransitionBlend -from st4m.ui.menu import ( - MenuItem, - MenuController, - MenuItemBack, - MenuItemForeground, - MenuItemNoop, -) -from st4m import Responder, InputState, Ctx - -import math, hardware - -from st4m.ui.elements.menus import SunMenu, SimpleMenu - -vm = ViewManager(ViewTransitionBlend()) - -menu_music = SimpleMenu( - [ - MenuItemBack(), - MenuItemNoop("Harmonic"), - MenuItemNoop("Melodic"), - MenuItemNoop("TinySynth"), - MenuItemNoop("CrazySynth"), - MenuItemNoop("Sequencer"), - ], - vm, -) - -menu_apps = SimpleMenu( - [ - MenuItemBack(), - MenuItemNoop("captouch"), - MenuItemNoop("worms"), - ], - vm, -) - - -class USBIcon(Responder): - """ - Found in the bargain bin at an Aldi Süd. - """ - - def draw(self, ctx: Ctx) -> None: - ctx.gray(1.0) - ctx.arc(-90, 0, 20, 0, 6.28, 0).fill() - ctx.line_width = 10.0 - ctx.move_to(-90, 0).line_to(90, 0).stroke() - ctx.move_to(100, 0).line_to(70, 15).line_to(70, -15).line_to(100, 0).fill() - ctx.move_to(-50, 0).line_to(-10, -40).line_to(20, -40).stroke() - ctx.arc(20, -40, 15, 0, 6.28, 0).fill() - ctx.move_to(-30, 0).line_to(10, 40).line_to(40, 40).stroke() - ctx.rectangle(40 - 15, 40 - 15, 30, 30).fill() - - def think(self, ins: InputState, delta_ms: int) -> None: - pass - - -class REPLIcon(Responder): - def draw(self, ctx: Ctx) -> None: - ctx.gray(1.0) - ctx.line_width = 10.0 - for i in range(3): - x = i * 40 - ctx.move_to(-60 + x, -60).line_to(0 + x, 0).line_to(-60 + x, 60).stroke() - - def think(self, ins: InputState, delta_ms: int) -> None: - pass - - -class Sun(Responder): - """ - A rotating sun widget. - """ - - def __init__(self) -> None: - self.x = 0.0 - self.y = 0.0 - self.size = 50.0 - self.ts = 1.0 - - def think(self, ins: InputState, delta_ms: int) -> None: - self.ts += delta_ms - pass - - def draw(self, ctx: Ctx) -> None: - nrays = 10 - angle_per_ray = 6.28 / nrays - for i in range(nrays): - angle = i * angle_per_ray + self.ts / 4000 - angle %= 3.14159 * 2 - - if angle > 2 and angle < 4: - continue - - ctx.save() - ctx.rgb(0.5, 0.5, 0) - ctx.line_width = 30 - ctx.translate(-120, 0).rotate(angle) - ctx.move_to(20, 0) - ctx.line_to(260, 0) - ctx.stroke() - ctx.restore() - - ctx.save() - ctx.rgb(0.92, 0.89, 0) - ctx.translate(-120, 0) - - ctx.arc(self.x, self.y, self.size, 0, 6.29, 0) - ctx.fill() - ctx.restore() - - -class MainMenu(MenuController): - """ - A circular menu with a rotating sun. - """ - - __slots__ = ( - "_ts", - "_sun", - ) - - def __init__(self, items: List[MenuItem], vm: ViewManager) -> None: - self._ts = 0 - self._sun = Sun() - super().__init__(items, vm) - - def think(self, ins: InputState, delta_ms: int) -> None: - super().think(ins, delta_ms) - self._sun.think(ins, delta_ms) - self._ts += delta_ms - - def _draw_text_angled( - self, ctx: Ctx, text: str, angle: float, activity: float - ) -> None: - size = lerp(20, 40, activity) - color = lerp(0, 1, activity) - if color < 0.01: - return - - ctx.save() - ctx.translate(-120, 0).rotate(angle).translate(140, 0) - ctx.font_size = size - ctx.rgba(1.0, 1.0, 1.0, color).move_to(0, 0).text(text) - ctx.restore() - - def draw(self, ctx: Ctx) -> None: - ctx.gray(0) - ctx.rectangle(-120, -120, 240, 240).fill() - - self._sun.draw(ctx) - - ctx.font_size = 40 - ctx.text_align = ctx.CENTER - ctx.text_baseline = ctx.MIDDLE - - angle_per_item = 0.4 - - current = self._scroll_controller.current_position() - - for ix, item in enumerate(self._items): - rot = (ix - current) * angle_per_item - self._draw_text_angled(ctx, item.label(), rot, 1 - abs(rot)) - - -class SimpleMenu(MenuController): - """ - A simple line-by-line menu. - """ - - def draw(self, ctx: Ctx) -> None: - ctx.gray(0) - ctx.rectangle(-120, -120, 240, 240).fill() - - ctx.text_align = ctx.CENTER - ctx.text_baseline = ctx.MIDDLE - - current = self._scroll_controller.current_position() - - ctx.gray(1) - for ix, item in enumerate(self._items): - offs = (ix - current) * 30 - size = lerp(30, 20, abs(offs / 20)) - ctx.font_size = size - ctx.move_to(0, offs).text(item.label()) - - -menu_music = SimpleMenu( - [ - MenuItemBack(), - MenuItemNoop("Harmonic"), - MenuItemNoop("Melodic"), - MenuItemNoop("TinySynth"), - MenuItemNoop("CrazySynth"), - MenuItemNoop("Sequencer"), - ], - vm, -) - -menu_apps = SimpleMenu( - [ - MenuItemBack(), - MenuItemNoop("captouch"), - MenuItemNoop("worms"), - ], - vm, -) - -menu_main = SunMenu( - [ - MenuItemForeground("Music", menu_music), - MenuItemForeground("Apps", menu_apps), - MenuItemNoop("Settings"), - ], - vm, -) - -vm.push(menu_main) - - -class Viewport(Responder): - def __init__(self, vm: ViewManager) -> None: - self.vm = vm - self.usb = USBIcon() - self.repl = REPLIcon() - self.visible: List[Responder] = [] - - def think(self, ins: InputState, delta_ms: int) -> None: - self.vm.think(ins, delta_ms) - - self.visible = [] - usb = hardware.usb_connected() - console = hardware.usb_console_active() - if not usb: - console = False - if usb: - self.visible.append(self.usb) - # if console: - # self.visible.append(self.repl) - - for v in self.visible: - v.think(ins, delta_ms) - - def draw(self, ctx: Ctx) -> None: - self.vm.draw(ctx) - - nicons = len(self.visible) - dist = 20 - width = (nicons - 1) * dist - x0 = width / -2 - for i, v in enumerate(self.visible): - x = x0 + i * dist - ctx.save() - ctx.translate(x, -100) - ctx.scale(0.1, 0.1) - v.draw(ctx) - ctx.restore() - - -reactor = st4m.Reactor() -reactor.set_top(Viewport(vm)) -reactor.run() diff --git a/python_payload/mypystubs/hardware.pyi b/python_payload/mypystubs/hardware.pyi index e6aab870e8..267e3628a7 100644 --- a/python_payload/mypystubs/hardware.pyi +++ b/python_payload/mypystubs/hardware.pyi @@ -1,6 +1,6 @@ import time -from st4m.ui.ctx import Ctx +from st3m.ui.ctx import Ctx def freertos_sleep(ms: int) -> None: ... def get_ctx() -> Ctx: ... diff --git a/python_payload/st3m/__init__.py b/python_payload/st3m/__init__.py new file mode 100644 index 0000000000..d10e648325 --- /dev/null +++ b/python_payload/st3m/__init__.py @@ -0,0 +1,11 @@ +from st3m.reactor import Reactor, Responder +from st3m.ui.ctx import Ctx +from st3m.input import InputState, InputController + +__all__ = [ + "Reactor", + "Responder", + "InputState", + "InputController", + "Ctx", +] diff --git a/python_payload/st4m/application.py b/python_payload/st3m/application.py similarity index 81% rename from python_payload/st4m/application.py rename to python_payload/st3m/application.py index 165ab5fccc..0ea4e0372b 100644 --- a/python_payload/st4m/application.py +++ b/python_payload/st3m/application.py @@ -1,6 +1,6 @@ -from st4m.ui.view import ViewWithInputState, ViewTransitionSwipeRight, ViewManager -from st4m.input import InputState -from st4m.goose import Optional +from st3m.ui.view import ViewWithInputState, ViewTransitionSwipeRight, ViewManager +from st3m.input import InputState +from st3m.goose import Optional class Application(ViewWithInputState): diff --git a/python_payload/st4m/goose.py b/python_payload/st3m/goose.py similarity index 99% rename from python_payload/st4m/goose.py rename to python_payload/st3m/goose.py index 8fb29609b4..979cba2e71 100644 --- a/python_payload/st4m/goose.py +++ b/python_payload/st3m/goose.py @@ -1,5 +1,5 @@ """ -Goose implements Goose Typing (tm), a set of shims which allows the st4m +Goose implements Goose Typing (tm), a set of shims which allows the st3m codebase to use both Python type annotations, Abstract Base Classes and run under Micropython. """ diff --git a/python_payload/st4m/input.py b/python_payload/st3m/input.py similarity index 99% rename from python_payload/st4m/input.py rename to python_payload/st3m/input.py index b85f918a76..6842b50839 100644 --- a/python_payload/st4m/input.py +++ b/python_payload/st3m/input.py @@ -1,5 +1,5 @@ -from st4m.goose import List, Optional, Enum, Tuple -from st4m.ui.ctx import Ctx +from st3m.goose import List, Optional, Enum, Tuple +from st3m.ui.ctx import Ctx import hardware import captouch diff --git a/python_payload/st4m/logging.py b/python_payload/st3m/logging.py similarity index 97% rename from python_payload/st4m/logging.py rename to python_payload/st3m/logging.py index a5e3764984..64fce19d93 100644 --- a/python_payload/st4m/logging.py +++ b/python_payload/st3m/logging.py @@ -1,6 +1,6 @@ import sys import time -from st4m.goose import Enum +from st3m.goose import Enum class Level(Enum): diff --git a/python_payload/st4m/property.py b/python_payload/st3m/property.py similarity index 100% rename from python_payload/st4m/property.py rename to python_payload/st3m/property.py diff --git a/python_payload/st4m/reactor.py b/python_payload/st3m/reactor.py similarity index 95% rename from python_payload/st4m/reactor.py rename to python_payload/st3m/reactor.py index 30f1e22436..0957f7f99d 100644 --- a/python_payload/st4m/reactor.py +++ b/python_payload/st3m/reactor.py @@ -1,6 +1,6 @@ -from st4m.goose import ABCBase, abstractmethod, List, Optional -from st4m.input import InputState -from st4m.ui.ctx import Ctx +from st3m.goose import ABCBase, abstractmethod, List, Optional +from st3m.input import InputState +from st3m.ui.ctx import Ctx import time, hardware @@ -50,7 +50,7 @@ class Responder(ABCBase): class Reactor: """ - The Reactor is the main Micropython scheduler of the st4m system and any + The Reactor is the main Micropython scheduler of the st3m system and any running payloads. It will attempt to run a top Responder with a fixed tickrate a framerate diff --git a/python_payload/st4m/system.py b/python_payload/st3m/system.py similarity index 100% rename from python_payload/st4m/system.py rename to python_payload/st3m/system.py diff --git a/python_payload/st4m/ui/__init__.py b/python_payload/st3m/ui/__init__.py similarity index 100% rename from python_payload/st4m/ui/__init__.py rename to python_payload/st3m/ui/__init__.py diff --git a/python_payload/st4m/ui/ctx.py b/python_payload/st3m/ui/ctx.py similarity index 98% rename from python_payload/st4m/ui/ctx.py rename to python_payload/st3m/ui/ctx.py index 7119f205d3..094e336084 100644 --- a/python_payload/st4m/ui/ctx.py +++ b/python_payload/st3m/ui/ctx.py @@ -1,14 +1,14 @@ -from st4m.goose import ABCBase, abstractmethod, List +from st3m.goose import ABCBase, abstractmethod, List class Ctx(ABCBase): """ - Ctx is the rendering/rasterization API used by st4m. + Ctx is the rendering/rasterization API used by st3m. It's a WebCanvas-style vector API, with an implicit pen which can be moved and can draw lines, arcs, text, etc. - In st4m, the Ctx object is backed by a drawlist generator. That is, any + In st3m, the Ctx object is backed by a drawlist generator. That is, any operation performed on the ctx object will cause an entry to be added to an in-memory draw list. Then, when the rasterizer is ready, it will rasterize said drawlist to pixels in a separate thread. diff --git a/python_payload/st4m/ui/elements/__init__.py b/python_payload/st3m/ui/elements/__init__.py similarity index 100% rename from python_payload/st4m/ui/elements/__init__.py rename to python_payload/st3m/ui/elements/__init__.py diff --git a/python_payload/st4m/ui/elements/menus.py b/python_payload/st3m/ui/elements/menus.py similarity index 92% rename from python_payload/st4m/ui/elements/menus.py rename to python_payload/st3m/ui/elements/menus.py index 7afab42b61..69f3414daf 100644 --- a/python_payload/st4m/ui/elements/menus.py +++ b/python_payload/st3m/ui/elements/menus.py @@ -1,11 +1,11 @@ -from st4m.goose import Optional, List, ABCBase, abstractmethod -from st4m.ui.view import ViewManager -from st4m.ui.elements.visuals import Sun, GroupRing, FlowerIcon -from st4m.ui.menu import MenuController, MenuItem +from st3m.goose import Optional, List, ABCBase, abstractmethod +from st3m.ui.view import ViewManager +from st3m.ui.elements.visuals import Sun, GroupRing, FlowerIcon +from st3m.ui.menu import MenuController, MenuItem -from st4m import Ctx, InputState +from st3m import Ctx, InputState -from st4m.utils import lerp, tau +from st3m.utils import lerp, tau import math diff --git a/python_payload/st4m/ui/elements/visuals.py b/python_payload/st3m/ui/elements/visuals.py similarity index 96% rename from python_payload/st4m/ui/elements/visuals.py rename to python_payload/st3m/ui/elements/visuals.py index 64f68d045e..760801a864 100644 --- a/python_payload/st4m/ui/elements/visuals.py +++ b/python_payload/st3m/ui/elements/visuals.py @@ -1,7 +1,7 @@ -from st4m.utils import xy_from_polar, tau -from st4m.property import PUSH_RED, GO_GREEN, BLACK -from st4m.goose import List, Optional -from st4m import Responder, Ctx, InputState +from st3m.utils import xy_from_polar, tau +from st3m.property import PUSH_RED, GO_GREEN, BLACK +from st3m.goose import List, Optional +from st3m import Responder, Ctx, InputState import random diff --git a/python_payload/st4m/ui/interactions.py b/python_payload/st3m/ui/interactions.py similarity index 98% rename from python_payload/st4m/ui/interactions.py rename to python_payload/st3m/ui/interactions.py index 0bfcb74ef3..488d4648e6 100644 --- a/python_payload/st4m/ui/interactions.py +++ b/python_payload/st3m/ui/interactions.py @@ -1,11 +1,11 @@ -import st4m +import st3m -from st4m.input import InputState -from st4m.ui.ctx import Ctx -from st4m import Responder +from st3m.input import InputState +from st3m.ui.ctx import Ctx +from st3m import Responder -class ScrollController(st4m.Responder): +class ScrollController(st3m.Responder): """ ScrolLController is a controller for physically scrollable one-dimensional lists. diff --git a/python_payload/st4m/ui/menu.py b/python_payload/st3m/ui/menu.py similarity index 93% rename from python_payload/st4m/ui/menu.py rename to python_payload/st3m/ui/menu.py index e076dedd52..329e90e55b 100644 --- a/python_payload/st4m/ui/menu.py +++ b/python_payload/st3m/ui/menu.py @@ -1,17 +1,17 @@ -import st4m +import st3m -from st4m import Responder -from st4m.goose import ABCBase, abstractmethod, List, Optional -from st4m.input import InputState, InputController -from st4m.ui.view import ( +from st3m import Responder +from st3m.goose import ABCBase, abstractmethod, List, Optional +from st3m.input import InputState, InputController +from st3m.ui.view import ( ViewWithInputState, View, ViewManager, ViewTransitionSwipeLeft, ViewTransitionSwipeRight, ) -from st4m.ui.interactions import ScrollController -from st4m.ui.ctx import Ctx +from st3m.ui.interactions import ScrollController +from st3m.ui.ctx import Ctx class MenuItem(ABCBase): diff --git a/python_payload/st4m/ui/view.py b/python_payload/st3m/ui/view.py similarity index 97% rename from python_payload/st4m/ui/view.py rename to python_payload/st3m/ui/view.py index da19488744..752f9d63bc 100644 --- a/python_payload/st4m/ui/view.py +++ b/python_payload/st3m/ui/view.py @@ -1,7 +1,7 @@ -from st4m.reactor import Responder -from st4m.goose import ABCBase, abstractmethod, Optional, List -from st4m.input import InputState, InputController -from st4m.ui.ctx import Ctx +from st3m.reactor import Responder +from st3m.goose import ABCBase, abstractmethod, Optional, List +from st3m.input import InputState, InputController +from st3m.ui.ctx import Ctx class View(Responder): diff --git a/python_payload/st4m/utils.py b/python_payload/st3m/utils.py similarity index 100% rename from python_payload/st4m/utils.py rename to python_payload/st3m/utils.py diff --git a/python_payload/st4m/README.md b/python_payload/st4m/README.md deleted file mode 100644 index f1aafcbdb4..0000000000 --- a/python_payload/st4m/README.md +++ /dev/null @@ -1,24 +0,0 @@ -st4m -==== - -Experimental, heavily-typed flow3r UI/UX framework. - -Proof of concept of: - 1. Strongly typed Python (using MyPy) which is also used as docs. - 2. A deep class hierarchy that is still performant enough. - 3. Pretty UX. - -Does not implement application lifecycle, but that could be built upon -View/ViewWithInput. - -Should be trickle-merged into st3m. - -Typechecking ------------- - - MYPYPATH=$(pwd)/python_payload/mypystubs mypy python_payload/main_st4m.py --strict - -Running -------- - -Move `main_st4m.py` to `main.py` then either run on badge or in simulator. diff --git a/python_payload/st4m/__init__.py b/python_payload/st4m/__init__.py deleted file mode 100644 index 2aaabd2b50..0000000000 --- a/python_payload/st4m/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -from st4m.reactor import Reactor, Responder -from st4m.ui.ctx import Ctx -from st4m.input import InputState, InputController - -__all__ = [ - "Reactor", - "Responder", - "InputState", - "InputController", - "Ctx", -] -- GitLab