apps: software: Add support for user-defined applications

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
This commit is contained in:
Daniel Thompson 2021-09-10 19:53:28 +01:00
parent 2a3ffad07d
commit ba8546dd60
2 changed files with 33 additions and 0 deletions

18
apps/ReadMe.py Normal file
View File

@ -0,0 +1,18 @@
# SPDX-License-Identifier: LGPL-3.0-or-later
# Copyright (C) 2021 Daniel Thompson
"""Example of any automatically discovered application.
Any python file (``.py`` or ``.mpy``) discovered in the ``apps/``
directory will be automatically added to the Software application.
"""
import wasp
class ReadMeApp():
NAME = "ReadMe"
def foreground(self):
draw = wasp.watch.drawable
draw.fill()
draw.string('Autoloaded from', 0, 96, width=240)
draw.string('apps/ReadMe.py', 0, 96+32, width=240)

View File

@ -16,6 +16,7 @@ whilst still allowing users to activate so many awesome applications!
import wasp
import icons
import os
class SoftwareApp():
@ -50,6 +51,20 @@ class SoftwareApp():
db.append(('timer', factory('Timer')))
db.append(('weather', factory('Weather')))
# Handle user-loaded applications
try:
for app in os.listdir('apps'):
name = None
if app.endswith('.py'):
name = app[:-3]
if app.endswith('.mpy'):
name = app[:-4]
if name:
db.append((name, factory(name)))
except OSError:
# apps does not exist...
pass
# Get the initial state for the checkboxes
for _, checkbox in db:
label = checkbox.label.replace(' ', '')