diff --git a/python_payload/apps/__init__.py b/python_payload/apps/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/python_payload/cap_touch_demo.py b/python_payload/apps/cap_touch_demo.py similarity index 92% rename from python_payload/cap_touch_demo.py rename to python_payload/apps/cap_touch_demo.py index 3bbac30b5e0d187fd43b0fdd386758cabef52892..85fb4bfd2c9475fd9c5e3d85aa3bb36f6e6916e3 100644 --- a/python_payload/cap_touch_demo.py +++ b/python_payload/apps/cap_touch_demo.py @@ -1,9 +1,10 @@ -import hardware -import utils import cmath import math import time +import hardware +from st3m import utils + ctx = hardware.get_ctx() def init(): @@ -29,7 +30,7 @@ def foreground(): pass -from application import Application +from st3m.application import Application app = Application("cap touch") app.main_foreground = run diff --git a/python_payload/apps/demo_mandelbrot.py b/python_payload/apps/demo_mandelbrot.py new file mode 100644 index 0000000000000000000000000000000000000000..1528d7aab3364d6a0125706ced53cb20c0686619 --- /dev/null +++ b/python_payload/apps/demo_mandelbrot.py @@ -0,0 +1,31 @@ +from application import Application +import ui + +class MandelbrotApp(Application): + def on_init(self): + pass + + def on_foreground(self): + print("on foreground") + ctx = self.ui.ctx + + #center the text horizontally and vertically + ctx.text_align = ctx.CENTER + ctx.text_baseline = ctx.MIDDLE + + #ctx.rgb() expects individual values for the channels, so unpack a list/tuple with * + #operations on ctx can be chained + #create a blue background + ctx.rgb(*ui.RED).rectangle(-ui.WIDTH/2,-ui.HEIGHT/2,ui.WIDTH,ui.HEIGHT).fill() + + #Write some text + ctx.move_to(0,0).rgb(*ui.WHITE).text("Mandelbrot") + + def main_forground(): + + for x in range(-240,240): + for y in range(-240,240): + + +app=MandelbrotApp("Mandelbrot") +app.run() \ No newline at end of file diff --git a/python_payload/demo_sparabo.py b/python_payload/apps/demo_sparabo.py similarity index 94% rename from python_payload/demo_sparabo.py rename to python_payload/apps/demo_sparabo.py index f22a12a6aacfdf1678ea309d21a7acca86277d53..e4cf06b0a99e0c0f9f353122ecfc5da0e1213ff6 100644 --- a/python_payload/demo_sparabo.py +++ b/python_payload/apps/demo_sparabo.py @@ -2,13 +2,9 @@ import math #badge23 -import event -import hardware +from st3m import event,application,ui +from st3m.system import hardware,audio from synth import tinysynth -import application -import ui - -import audio popcorn = [9,7,9,5,0,5,-3,999] diff --git a/python_payload/demo_worms.py b/python_payload/apps/demo_worms.py similarity index 98% rename from python_payload/demo_worms.py rename to python_payload/apps/demo_worms.py index b1a2c4cf25e92b8d2c3ecb7a42c94eb60e19a321..d45ed1d5525a7e8d5b5606e4c3845464e1460eb8 100644 --- a/python_payload/demo_worms.py +++ b/python_payload/apps/demo_worms.py @@ -4,10 +4,7 @@ import time import math #flow3r imports -import event -import application -import ui - +from st3m import event,application,ui # Subclass Application class AppWorms(application.Application): diff --git a/python_payload/apps/flow3r/__init__.py b/python_payload/apps/flow3r/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/python_payload/menu_settings.py b/python_payload/apps/flow3r/menu_settings.py similarity index 97% rename from python_payload/menu_settings.py rename to python_payload/apps/flow3r/menu_settings.py index aa74f8ddacea80e69e0f63829330893c99b6dc8d..5436d933d5d1c34f4608cd9e3a0d32736996582b 100644 --- a/python_payload/menu_settings.py +++ b/python_payload/apps/flow3r/menu_settings.py @@ -1,9 +1,5 @@ -import menu -import event -import audio -import control -import ui -import hardware +from st3m import menu,event,control,ui +from st3m.system import audio,hardware ui_input = ui.Icon("") diff --git a/python_payload/menu_tinysynth.py b/python_payload/apps/flow3r/menu_tinysynth.py similarity index 94% rename from python_payload/menu_tinysynth.py rename to python_payload/apps/flow3r/menu_tinysynth.py index de60b013570d40a764495b349bd1cbd7e82be3ea..70c67a3a82d76e5b15976ed3d1c3c3a8a9463378 100644 --- a/python_payload/menu_tinysynth.py +++ b/python_payload/apps/flow3r/menu_tinysynth.py @@ -1,11 +1,7 @@ from synth import tinysynth -import menu -import event -import control -import ui -import hardware -import audio +from st3m import menu,event,control,ui +from st3m.system import hardware,audio synth = tinysynth(440,0) diff --git a/python_payload/apps/flow3roids.py b/python_payload/apps/flow3roids.py new file mode 100644 index 0000000000000000000000000000000000000000..2cd1398735dc39c1bc167c2f4dfee759eb471b19 --- /dev/null +++ b/python_payload/apps/flow3roids.py @@ -0,0 +1,22 @@ +from application import SimpleApplication + +app = SimpleApplication("flow3rdroids") + +def on_init(): + ship_position = complex(0,0) + ship_direction = complex(0,0) + +def on_tick(): + if abs(ship_position.real)>240: ship_position.real*=-1 + if abs(ship_position.imag)>240: ship_position.imag*=-1 + + ship_position += ship_direction + +def on_draw(): + ui.Pointer(x=ship_position.imag,y=ship_position.real) + +def on_scroll_step(direction): + #TODO: ship_direction += direction * angle + +def def on_enter(): + #TODO:ship_direction += speed diff --git a/python_payload/harmonic_demo.py b/python_payload/apps/harmonic_demo.py similarity index 97% rename from python_payload/harmonic_demo.py rename to python_payload/apps/harmonic_demo.py index 372c6e5016b302659106739d30b74ed2e9ceceb9..e211bd92657339c43e589f3967cc86bc243f0877 100644 --- a/python_payload/harmonic_demo.py +++ b/python_payload/apps/harmonic_demo.py @@ -59,7 +59,7 @@ def foreground(): chord_index = -1 set_chord(tmp) -from application import Application +from st3m.application import Application class HarmonicApp(Application): def on_init(self): init() diff --git a/python_payload/melodic_demo.py b/python_payload/apps/melodic_demo.py similarity index 97% rename from python_payload/melodic_demo.py rename to python_payload/apps/melodic_demo.py index 06878ead5db0d7a18e69c16e2f81d44075a382e1..6460bb623ff67c248bd11e7bc8653a1495a80279 100644 --- a/python_payload/melodic_demo.py +++ b/python_payload/apps/melodic_demo.py @@ -66,7 +66,7 @@ def init(): def foreground(): adjust_playing_field_to_octave() -from application import Application +from st3m.application import Application class MelodicApp(Application): def on_init(self): diff --git a/python_payload/demo_menu.py b/python_payload/demo_menu.py index d247069e4073f127a92925d6175bc24ff2c59883..6e92a9f126fb3f2303449fd4817b38c1b82ec4f3 100644 --- a/python_payload/demo_menu.py +++ b/python_payload/demo_menu.py @@ -1,19 +1,12 @@ -import menu -import event -import hardware -import control -import audio -import application +from st3m import menu,event,control,application -import demo_worms, cap_touch_demo -import demo_sparabo, melodic_demo, harmonic_demo -import menu_settings,menu_tinysynth +from apps import demo_worms, cap_touch_demo +from apps import demo_sparabo, melodic_demo, harmonic_demo +from apps.flow3r import menu_settings,menu_tinysynth import time -hardware.captouch_autocalib() -audio.set_volume_dB(0) menu_main = menu.Menu("flow3r",has_back=False) menu_badge = menu.Menu("badge") diff --git a/python_payload/main.py b/python_payload/main.py index 4371fafc7724d64b6125c396ab20680dcafacb2b..a89d95269ac17fab23240bb80e44635c1e44464a 100644 --- a/python_payload/main.py +++ b/python_payload/main.py @@ -1 +1,6 @@ +from st3m.system import hardware,audio + import demo_menu + +hardware.captouch_autocalib() +audio.set_volume_dB(0) \ No newline at end of file diff --git a/python_payload/st3m/__init__.py b/python_payload/st3m/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/python_payload/application.py b/python_payload/st3m/application.py similarity index 99% rename from python_payload/application.py rename to python_payload/st3m/application.py index 9751a9a7f304588bd529f058d73fad80ad8d0990..23fe9f9a41c725489670867ffb9b28111a54372c 100644 --- a/python_payload/application.py +++ b/python_payload/st3m/application.py @@ -1,6 +1,4 @@ -import ui -import event -import menu +from . import ui,event,menu STATE_OFF = 0 STATE_INIT = 10 diff --git a/python_payload/control.py b/python_payload/st3m/control.py similarity index 96% rename from python_payload/control.py rename to python_payload/st3m/control.py index c1fabf6be6d23510c01ce5fc479172e11a765bd0..fe3febc9a68a8ae410256f2d6e86226dcd5d7376 100644 --- a/python_payload/control.py +++ b/python_payload/st3m/control.py @@ -1,4 +1,4 @@ -import ui +from . import ui class Control(): def __init__(self,name, default=0, on_set=None, on_get=None, on_mod=None): @@ -119,4 +119,10 @@ class ControlSlide(ControlFloat): if z<0: #Release if self.do_reset: self.set_value(self._saved_value) - self.draw() \ No newline at end of file + self.draw() + +class ControlString(Control): + pass + +class ControlTextField(): + pass \ No newline at end of file diff --git a/python_payload/event.py b/python_payload/st3m/event.py similarity index 100% rename from python_payload/event.py rename to python_payload/st3m/event.py diff --git a/python_payload/menu.py b/python_payload/st3m/menu.py similarity index 99% rename from python_payload/menu.py rename to python_payload/st3m/menu.py index 27319bea5e3a8dd59df6d212eb38852ede4d04db..31d7f762aebc30ad79073e69e33ac3a06ea627d5 100644 --- a/python_payload/menu.py +++ b/python_payload/st3m/menu.py @@ -1,8 +1,9 @@ -import ui -import time +from . import ui,event import hardware + + +import time import math -import event menu_stack = [] active_menu = None diff --git a/python_payload/st3m/system/__init__.py b/python_payload/st3m/system/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..93c01cec089e843cc4dd252e3d521b6feadd0345 --- /dev/null +++ b/python_payload/st3m/system/__init__.py @@ -0,0 +1,30 @@ +import hardware as _hardware + +class NamedObject(): + def __init__(self,name="foo"): + self.__name = name + + def __repr__(self): + return self.__name + +class MockObject(NamedObject): + + def __getattr__(self,attr): + attr_name = "{}.{}".format(str(self),attr) + print ("mock attr", attr_name) + return MockObject(attr_name) + + def __call__(self,*args,**kwargs): + call_name = "{}({}{})".format(str(self),args,kwargs) + print ("mock call",call_name) + return MockObject(call_name) + + +try: + import audio as _audio +except ModuleNotFoundError: + print("no real audio, using mock module") + _audio = MockObject("audio") + +hardware = _hardware +audio = _audio \ No newline at end of file diff --git a/python_payload/ui.py b/python_payload/st3m/ui.py similarity index 100% rename from python_payload/ui.py rename to python_payload/st3m/ui.py diff --git a/python_payload/utils.py b/python_payload/st3m/utils.py similarity index 96% rename from python_payload/utils.py rename to python_payload/st3m/utils.py index 060d754b6555249ab9b5d7ba96ae68d0b1b14922..0be418b9e617a8150934c75705afee918b3d2aff 100644 --- a/python_payload/utils.py +++ b/python_payload/st3m/utils.py @@ -1,6 +1,6 @@ import time from hardware import * -import audio +from st3m.system import audio RED = 0b1111100000000000 GREEN = 0b0000011111100000