summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.rst3
-rw-r--r--res/HaikuApp.pngbin0 -> 6468 bytes
-rw-r--r--wasp/apps/haiku.py62
3 files changed, 65 insertions, 0 deletions
diff --git a/README.rst b/README.rst
index 584b851..6236671 100644
--- a/README.rst
+++ b/README.rst
@@ -150,5 +150,8 @@ wasp-os also contains a library of additional applications for you to choose.
These are disabled by default but can be easily enabled by adding them
using one of the techniques is the Application Writer's guide.
+.. image:: res/HaikuApp.png
+ :alt: Haiku application running in the wasp-os simulator
+
.. image:: res/LifeApp.png
:alt: Game of Life runnin in the wasp-os simulator
diff --git a/res/HaikuApp.png b/res/HaikuApp.png
new file mode 100644
index 0000000..1f09a7e
--- /dev/null
+++ b/res/HaikuApp.png
Binary files differ
diff --git a/wasp/apps/haiku.py b/wasp/apps/haiku.py
new file mode 100644
index 0000000..ca5c3f4
--- /dev/null
+++ b/wasp/apps/haiku.py
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: LGPL-3.0-or-later
+# Copyright (C) 2020 Daniel Thompson
+
+"""Haiku viewer
+~~~~~~~~~~~~~~~
+
+These three lines poems are fun to write and fit nicely on a tiny screen.
+
+If there is a file called haiku.txt in the flash filesystem then this app
+allows it to be displayed three lines at a time using the pager.
+
+This application also (optionally) loads an icon from the filesystem allowing
+to be customized to match whether theme your verses are based around.
+"""
+
+import wasp
+import icons
+
+import io
+import sys
+
+from apps.pager import PagerApp
+
+class HaikuApp(PagerApp):
+ NAME = 'Haiku'
+
+ def __init__(self):
+ # Throw an exception if there is no poetry for us to read...
+ open('haiku.txt').close()
+
+ try:
+ with open('haiku.rle', 'rb') as f:
+ self.ICON = f.read()
+ except:
+ # Leave the default app icon if none is present
+ pass
+
+ super().__init__('')
+ self._counter = -4
+
+ def foreground(self):
+ lines = []
+ self._counter += 4
+
+ with open('haiku.txt') as f:
+ for i in range(self._counter):
+ _ = f.readline()
+
+ lines = [ '', ]
+ for i in range(3):
+ lines.append(f.readline())
+
+ if len(lines[2]) == 0:
+ self._counter = 0
+ f.seek(0)
+ lines = [ '', ]
+ for i in range(3):
+ lines.append(f.readline())
+
+ self._msg = '\n'.join(lines)
+
+ super().foreground()