summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Thompson <daniel@redfelineninja.org.uk>2021-03-10 21:33:22 (GMT)
committerDaniel Thompson <daniel@redfelineninja.org.uk>2021-03-10 21:33:22 (GMT)
commitdf5aa24d2d193b59a566f4248198ce8c0b2af0dd (patch)
tree1ca1cfc5dd6dd9170e8b3ddec0140e9cd5907693
parentcec8d97aeb47002697c07ea9ad6d8b0bd5a9b6bf (diff)
apps: software: Automatically track y position for checkboxes
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
-rw-r--r--wasp/apps/software.py50
1 files changed, 34 insertions, 16 deletions
diff --git a/wasp/apps/software.py b/wasp/apps/software.py
index b45cc0e..1d7acaf 100644
--- a/wasp/apps/software.py
+++ b/wasp/apps/software.py
@@ -24,34 +24,52 @@ class SoftwareApp():
def foreground(self):
"""Activate the application."""
- self.db = (
- ('alarm', wasp.widgets.Checkbox(0, 0, 'Alarm')),
- ('calc', wasp.widgets.Checkbox(0, 40, 'Calculator')),
- ('chrono', wasp.widgets.Checkbox(0, 80, 'Chrono')),
- ('fibonacci_clock', wasp.widgets.Checkbox(0, 120, 'Fibonacci Clock')),
- ('gameoflife', wasp.widgets.Checkbox(0, 160, 'Game Of Life')),
- ('musicplayer', wasp.widgets.Checkbox(0, 0, 'Music Player')),
- ('play2048', wasp.widgets.Checkbox(0, 40, 'Play 2048')),
- ('snake', wasp.widgets.Checkbox(0, 80, 'Snake Game')),
- ('flashlight', wasp.widgets.Checkbox(0, 120, 'Torch')),
- ('testapp', wasp.widgets.Checkbox(0, 160, 'Test')),
- ('timer', wasp.widgets.Checkbox(0, 0, 'Timer')),
- )
- self.si = wasp.widgets.ScrollIndicator()
- self.page = 0
+
+ def factory(label):
+ nonlocal y
+
+ cb = wasp.widgets.Checkbox(0, y, label)
+ y += 40
+ if y > 160:
+ y = 0
+ return cb
+
+
+ y = 0
+ db = []
+ db.append(('alarm', factory('Alarm')))
+ db.append(('calc', factory('Calculator')))
+ db.append(('chrono', factory('Chrono')))
+ db.append(('fibonacci_clock', factory('Fibonacci Clock')))
+ db.append(('gameoflife', factory('Game Of Life')))
+ db.append(('musicplayer', factory('Music Player')))
+ db.append(('play2048', factory('Play 2048')))
+ db.append(('snake', factory('Snake Game')))
+ db.append(('flashlight', factory('Torch')))
+ db.append(('testapp', factory('Test')))
+ db.append(('timer', factory('Timer')))
# Get the initial state for the checkboxes
- for _, checkbox in self.db:
+ for _, checkbox in db:
label = checkbox.label.replace(' ', '')
for app in wasp.system.launcher_ring:
if type(app).__name__.startswith(label):
checkbox.state = True
break
+ self.si = wasp.widgets.ScrollIndicator()
+ self.page = 0
+ self.db = db
+
self._draw()
wasp.system.request_event(wasp.EventMask.TOUCH |
wasp.EventMask.SWIPE_UPDOWN)
+ def background(self):
+ del self.si
+ del self.page
+ del self.db
+
def get_page(self):
i = self.page * 5
return self.db[i:i+5]