summaryrefslogtreecommitdiff
path: root/wasp/apps
diff options
context:
space:
mode:
Diffstat (limited to 'wasp/apps')
-rw-r--r--wasp/apps/haiku.py62
1 files changed, 62 insertions, 0 deletions
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()