diff --git a/python_payload/apps/cap_touch_demo.py b/python_payload/apps/cap_touch_demo.py index 1252fbae2e34b28a04391bb6e55cbc735d94b999..a3dea8fa3c8c050a24ce03897b4dac2094995342 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 b0d9de8c66a197077a1f87a9faeefea2f2ffbae3..f121b01d455351ecfb01ada1332fdf8d345e940d 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 46398229f4992fe7e078a5a6b94d651504f5d2c3..4f5c3ac541fb90e9ba88820bf888c8d11d06dd5f 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 78000e5dd3dfa0a5e71fcc7f5b6d829670edc470..5c3d2110aca1c7581804ff4d3423cbbc369cf6b6 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 085f6cdfb4fd7b412f4ed273e295d0e610b16cc2..476fabc022235bbc141a11a7976f9721e4e68f2d 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 b8c9d4de6e5c5240d94e4e3102ac70cd2152262f..44d53748545c61df99df44963980060cac5dce5e 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 437e8e2b02984326a3e7e83a377f7792ede1602c..0000000000000000000000000000000000000000 --- 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 e6aab870e8d8385648cb89201c571abf521ad9bd..267e3628a78cbfc7d48e86b5e514c0ba3518d484 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 0000000000000000000000000000000000000000..d10e6483253ff0043a008d0b091fffb787b948c2 --- /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 165ab5fccca80f811e964e5b82d764c6784c1aed..0ea4e0372beebcce3f4d7caec117d09e8267290a 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 8fb29609b4f36d94518a1b54729918f629f4ef7a..979cba2e7154855955355f70b7c4bc52d84fcab5 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 b85f918a762d464e46f9eefa6605ae88002fffcc..6842b50839f475cd1db1034454c3582ac337b2dc 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 a5e37649846aea70c8a8b7dbc1dd0653dc118dc8..64fce19d9334ba22ce5e75840c59bd53f677265a 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 30f1e22436571b98b4c33b9762ed2bdc92b246b3..0957f7f99df8f89e4312f61a3654ec59a0944a28 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 7119f205d3157721035212e87c4654de555a034d..094e336084c0debaa18ad62f7e613436f1027524 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 7afab42b6131e091d0bda9a8697496f31baf2708..69f3414daf631a8876a7e9f21022af6801cab150 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 64f68d045e1b2fef7c714ac6624f505d594eaab9..760801a86422419f7b1cf442032ffbe4f900605c 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 0bfcb74ef3eb89bd8c6bf5c0a6916ee63d0006cc..488d4648e649e8430d4823b1bd6f513b41ce8b18 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 e076dedd52dce11e28f6bb4ca76de0c89384d636..329e90e55b692353d48241f1a5048ea10fb0fc57 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 da1948874465ab3cded8816ebe7f9582b0cd50d6..752f9d63bc242590ca85db5ee313fc0df5fece75 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 f1aafcbdb4226fbeddf9005a9c3bc56a97b012e7..0000000000000000000000000000000000000000 --- 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 2aaabd2b504060d133ef481606cb34633af7feff..0000000000000000000000000000000000000000 --- 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", -]