From ba8546dd605799c189ccce778b0c468cb129054d Mon Sep 17 00:00:00 2001 From: Daniel Thompson Date: Fri, 10 Sep 2021 19:53:28 +0100 Subject: [PATCH] apps: software: Add support for user-defined applications Signed-off-by: Daniel Thompson --- apps/ReadMe.py | 18 ++++++++++++++++++ wasp/apps/software.py | 15 +++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 apps/ReadMe.py 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(' ', '')