83 lines
2.3 KiB
Python
83 lines
2.3 KiB
Python
import displayio
|
|
|
|
from .app_state import AppState, InvalidStateUpdateError
|
|
|
|
|
|
|
|
DISPLAY = displayio.Group()
|
|
|
|
class App(object):
|
|
|
|
def __init__(self, macropad, config):
|
|
print("app created")
|
|
self.macropad = macropad
|
|
self.config = config
|
|
self.name = "app"
|
|
self.state = AppState.STOPPED
|
|
self.display_group = DISPLAY
|
|
|
|
def start(self):
|
|
print("Start from base class ")
|
|
if self.state is not AppState.STOPPED:
|
|
raise InvalidStateUpdateError(f"Start called but the current app state is {self.state}")
|
|
self.state = AppState.STARTING
|
|
self._on_start()
|
|
self.on_start()
|
|
self.state = AppState.PAUSED
|
|
|
|
def _on_start(self):
|
|
pass
|
|
|
|
def on_start(self):
|
|
raise NotImplementedError("on_start not implemented")
|
|
|
|
def resume(self):
|
|
if self.state is not AppState.PAUSED:
|
|
raise InvalidStateUpdateError(f"Resume called but the current app state is {self.state}")
|
|
self.state = AppState.RESUMING
|
|
self._on_resume()
|
|
self.on_resume()
|
|
self.state = AppState.RUNNING
|
|
|
|
def _on_resume(self):
|
|
pass
|
|
|
|
def on_resume(self):
|
|
raise NotImplementedError("on_resume not implemented")
|
|
|
|
def pause(self):
|
|
if self.state is not AppState.RUNNING:
|
|
raise InvalidStateUpdateError(f"Pause called but the current app state is {self.state}")
|
|
self.state = AppState.PAUSING
|
|
self._on_pause()
|
|
self.on_pause()
|
|
self.state = AppState.PAUSED
|
|
|
|
def _on_pause(self):
|
|
self.macropad.keyboard.release_all()
|
|
self.macropad.consumer_control.release()
|
|
self.macropad.mouse.release_all()
|
|
self.macropad.stop_tone()
|
|
self.macropad.pixels.show()
|
|
# self.macropad.display.refresh()
|
|
|
|
def on_pause(self):
|
|
raise NotImplementedError("on_pause not implemented")
|
|
|
|
def loop(self):
|
|
raise NotImplementedError("Not implemented")
|
|
|
|
def stop(self):
|
|
if self.state is not AppState.PAUSED:
|
|
raise InvalidStateUpdateError(f"Stop called but the current app state is {self.state}")
|
|
self.state = AppState.STOPPING
|
|
self._on_stop()
|
|
self.on_stop()
|
|
self.state = AppState.STOPPED
|
|
|
|
def _on_stop(self):
|
|
pass
|
|
|
|
def on_stop(self):
|
|
raise NotImplementedError("on_stop not implemented.")
|