diff options
| author | Daniel Thompson <daniel@redfelineninja.org.uk> | 2020-05-24 13:20:02 (GMT) |
|---|---|---|
| committer | Daniel Thompson <daniel@redfelineninja.org.uk> | 2020-05-24 13:20:02 (GMT) |
| commit | de647b324cd5731eed54fe38e3efe93b26a8be42 (patch) | |
| tree | ac8f45c5fa88a44ac7424800c39527e907b430d6 /wasp/apps/testapp.py | |
| parent | 57999226fdf8e36021c37478730084424947f604 (diff) | |
widgets: Introduce a slider widget
Currently the slider doesn't actually slide (because we process touch
events rather than swipe events) but we've called is a slider anyway.
Diffstat (limited to 'wasp/apps/testapp.py')
| -rw-r--r-- | wasp/apps/testapp.py | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/wasp/apps/testapp.py b/wasp/apps/testapp.py index 6681aa5..43b99ca 100644 --- a/wasp/apps/testapp.py +++ b/wasp/apps/testapp.py @@ -16,10 +16,16 @@ class TestApp(): ICON = icons.app def __init__(self): - self.tests = ('Button', 'Crash', 'RLE', 'String', 'Touch', 'Wrap') + self.tests = ('Button', 'Crash', 'Colours', 'RLE', 'String', 'Touch', 'Wrap') self.test = self.tests[0] self.scroll = wasp.widgets.ScrollIndicator() + self._sliders = ( + wasp.widgets.Slider(32, 10, 90, 0xf800), + wasp.widgets.Slider(64, 10, 140, 0x27e4), + wasp.widgets.Slider(32, 10, 190, 0x211f), + ) + def foreground(self): """Activate the application.""" self.on_screen = ( -1, -1, -1, -1, -1, -1 ) @@ -55,7 +61,14 @@ class TestApp(): self._draw() def touch(self, event): - if self.test == 'RLE': + if self.test == 'Colours': + if event[2] > 90: + s = self._sliders[(event[2] - 90) // 50] + s.touch(event) + s.update() + self.scroll.draw() + self._update_colours() + elif self.test == 'RLE': self._benchmark_rle() elif self.test == 'String': self._benchmark_string() @@ -119,12 +132,26 @@ class TestApp(): draw.fill() draw.string('{} test'.format(self.test), 0, 6, width=240) - self.scroll.draw() if self.test == 'Crash': draw.string("Press button to", 12, 24+24) draw.string("throw exception.", 12, 24+48) + elif self.test == 'Colours': + for s in self._sliders: + s.draw() + self._update_colours() elif self.test == 'RLE': draw.blit(self.ICON, 120-48, 120-32) + self.scroll.draw() wasp.watch.display.mute(False) + + def _update_colours(self): + draw = wasp.watch.drawable + r = self._sliders[0].value + g = self._sliders[1].value + b = self._sliders[2].value + rgb = (r << 11) + (g << 5) + b + + draw.string('RGB565 #{:04x}'.format(rgb), 0, 6, width=240) + draw.fill(rgb, 60, 35, 120, 50) |
