diff options
| author | Daniel Thompson <daniel@redfelineninja.org.uk> | 2021-09-10 18:53:28 (GMT) |
|---|---|---|
| committer | Daniel Thompson <daniel@redfelineninja.org.uk> | 2021-09-10 20:17:57 (GMT) |
| commit | ba8546dd605799c189ccce778b0c468cb129054d (patch) | |
| tree | edbb8dcc118c156f4e5f0b88f3a9032897159a3b | |
| parent | 2a3ffad07d62fcca7fa8dd3fe387f4377b44d3e4 (diff) | |
apps: software: Add support for user-defined applications
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
| -rw-r--r-- | apps/ReadMe.py | 18 | ||||
| -rw-r--r-- | wasp/apps/software.py | 15 |
2 files changed, 33 insertions, 0 deletions
diff --git a/apps/ReadMe.py b/apps/ReadMe.py new file mode 100644 index 0000000..bf6962c --- /dev/null +++ b/apps/ReadMe.py @@ -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) diff --git a/wasp/apps/software.py b/wasp/apps/software.py index 91bde38..c51036b 100644 --- a/wasp/apps/software.py +++ b/wasp/apps/software.py @@ -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(' ', '') |
