From ad9714b0dc2f2053d3d31a8cd013d456fefdc93d Mon Sep 17 00:00:00 2001 From: Daniel Thompson Date: Thu, 31 Dec 2020 19:12:38 +0000 Subject: [PATCH] manager: Recategorize the theme labels for apps By default bright and mid are white/grey tones, the ui widgets are blue and the spot colours are different variants of orange. Signed-off-by: Daniel Thompson --- tools/test_theme.py | 10 ++++++---- tools/themer.py | 20 ++++++++++++-------- wasp/apps/chrono.py | 9 ++++----- wasp/apps/clock.py | 6 +++--- wasp/apps/heart.py | 2 +- wasp/apps/steps.py | 2 +- wasp/apps/stopwatch.py | 7 ++++--- wasp/wasp.py | 20 ++++++++++++-------- wasp/widgets.py | 12 ++++++------ 9 files changed, 49 insertions(+), 39 deletions(-) diff --git a/tools/test_theme.py b/tools/test_theme.py index 2c161ff..b2241d6 100644 --- a/tools/test_theme.py +++ b/tools/test_theme.py @@ -9,7 +9,9 @@ class Theme(DefaultTheme): BATTERY_COLOR = 0x07ff SMALL_CLOCK_COLOR = 0x599f NOTIFICATION_COLOR = 0x8fe0 - ACCENT_MID = 0xf800 - ACCENT_LO = 0x001f - ACCENT_HI = 0x07e0 - SLIDER_DEFAULT_COLOR = 0x7777 + BRIGHT = 0xffff + MID = 0xff00 + UI = 0x39ff + SPOT1 = 0x00ff + SPOT2 = 0x44d0 + CONTRAST = 7 diff --git a/tools/themer.py b/tools/themer.py index 9eee132..2689133 100755 --- a/tools/themer.py +++ b/tools/themer.py @@ -17,10 +17,12 @@ class DefaultTheme(): BATTERY_COLOR = 0x7bef SMALL_CLOCK_COLOR = 0xe73c NOTIFICATION_COLOR = 0x7bef - ACCENT_MID = 0xb5b6 - ACCENT_LO = 0xbdb6 - ACCENT_HI = 0xffff - SLIDER_DEFAULT_COLOR = 0x39ff + BRIGHT = 0xffff + MID = 0xbdb6 + UI = 0x39ff + SPOT1 = 0xff00 + SPOT2 = 0xddd0 + CONTRAST = 15 def serialize(self) -> bytes: """Serializes the theme for use in wasp-os""" @@ -32,10 +34,12 @@ class DefaultTheme(): *split_bytes(self.BATTERY_COLOR), *split_bytes(self.SMALL_CLOCK_COLOR), *split_bytes(self.NOTIFICATION_COLOR), - *split_bytes(self.ACCENT_MID), - *split_bytes(self.ACCENT_LO), - *split_bytes(self.ACCENT_HI), - *split_bytes(self.SLIDER_DEFAULT_COLOR), + *split_bytes(self.BRIGHT), + *split_bytes(self.MID), + *split_bytes(self.UI), + *split_bytes(self.SPOT1), + *split_bytes(self.SPOT2), + *split_bytes(self.CONTRAST) ]) return theme_bytes diff --git a/wasp/apps/chrono.py b/wasp/apps/chrono.py index a327127..3eae3a1 100644 --- a/wasp/apps/chrono.py +++ b/wasp/apps/chrono.py @@ -58,9 +58,8 @@ class ChronoApp(): True then a full redraw is be performed. """ draw = wasp.watch.drawable - hi = wasp.system.theme('accent-hi') - mid = wasp.system.theme('accent-mid') - lo = wasp.system.theme('accent-lo') + hi = wasp.system.theme('bright') + c1 = draw.darken(wasp.system.theme('spot1'), wasp.system.theme('contrast')) if redraw: now = wasp.watch.rtc.get_localtime() @@ -72,7 +71,7 @@ class ChronoApp(): wasp.system.bar.draw() # Draw the dividers - draw.set_color(mid) + draw.set_color(wasp.system.theme('mid')) for theta in range(12): draw.polar(120, 120, theta * 360 // 12, 110, 118, 3) @@ -98,5 +97,5 @@ class ChronoApp(): hh = (30 * (self._hh % 12)) + (self._mm / 2) mm = 6 * self._mm draw.polar(120, 120, hh, 5, 75, 7, hi) - draw.polar(120, 120, hh, 5, 60, 3, lo) + draw.polar(120, 120, hh, 5, 60, 3, draw.darken(c1, 2)) draw.polar(120, 120, mm, 5, 106, 5, hi) diff --git a/wasp/apps/clock.py b/wasp/apps/clock.py index f0af15b..9e6ba05 100644 --- a/wasp/apps/clock.py +++ b/wasp/apps/clock.py @@ -70,9 +70,9 @@ class ClockApp(): True then a full redraw is be performed. """ draw = wasp.watch.drawable - hi = wasp.system.theme('accent-hi') - mid = wasp.system.theme('accent-mid') - lo = wasp.system.theme('accent-lo') + hi = wasp.system.theme('bright') + lo = wasp.system.theme('mid') + mid = draw.lighten(lo, 1) if redraw: now = wasp.watch.rtc.get_localtime() diff --git a/wasp/apps/heart.py b/wasp/apps/heart.py index bff558e..b465cb4 100644 --- a/wasp/apps/heart.py +++ b/wasp/apps/heart.py @@ -45,7 +45,7 @@ class HeartApp(): 0, 6, width=240) # Graph is orange by default... - color = 0xffc0 + color = wasp.system.theme('spot1') # If the maths goes wrong lets show it in the chart! if spl > 100 or spl < -100: diff --git a/wasp/apps/steps.py b/wasp/apps/steps.py index 321a0c1..c7899a6 100644 --- a/wasp/apps/steps.py +++ b/wasp/apps/steps.py @@ -102,5 +102,5 @@ class StepCounterApp(): t = str(count) w = fonts.width(fonts.sans36, t) draw.set_font(fonts.sans36) - draw.set_color(0xfff0) + draw.set_color(draw.lighten(wasp.system.theme('spot1'), wasp.system.theme('contrast'))) draw.string(t, 228-w, 132-18) diff --git a/wasp/apps/stopwatch.py b/wasp/apps/stopwatch.py index 43166a6..0d572af 100644 --- a/wasp/apps/stopwatch.py +++ b/wasp/apps/stopwatch.py @@ -88,6 +88,9 @@ class StopwatchApp(): return y = 240 - 6 - (len(splits) * 24) + draw.set_font(fonts.sans24) + draw.set_color(wasp.system.theme('mid')) + n = self._nsplits for i, s in enumerate(splits): centisecs = s @@ -99,8 +102,6 @@ class StopwatchApp(): t = '# {} {:02}:{:02}.{:02}'.format(n, minutes, secs, centisecs) n -= 1 - draw.set_font(fonts.sans24) - draw.set_color(0xe73c) w = fonts.width(fonts.sans24, t) draw.string(t, 0, y + (i*24), 240) @@ -139,7 +140,7 @@ class StopwatchApp(): draw = wasp.watch.drawable draw.set_font(fonts.sans36) - draw.set_color(0xc67f) + draw.set_color(draw.lighten(wasp.system.theme('ui'), wasp.system.theme('contrast'))) w = fonts.width(fonts.sans36, t1) draw.string(t1, 180-w, 120-36) draw.fill(0, 0, 120-36, 180-w, 36) diff --git a/wasp/wasp.py b/wasp/wasp.py index 488f92f..de572e5 100644 --- a/wasp/wasp.py +++ b/wasp/wasp.py @@ -123,10 +123,12 @@ class Manager(): b'\x7b\xef' # battery b'\xe7\x3c' # status-clock b'\x7b\xef' # notify-icon - b'\xb5\xb6' # accent-mid - b'\xbd\xb6' # accent-lo - b'\xff\xff' # accent-hi - b'\x39\xff' # slider-default + b'\xff\xff' # bright + b'\xbd\xb6' # mid + b'\x39\xff' # ui + b'\xff\x00' # spot1 + b'\xdd\xd0' # spot2 + b'\x00\x0f' # contrast ) self.blank_after = 15 @@ -542,10 +544,12 @@ class Manager(): "battery", "status-clock", "notify-icon", - "accent-mid", - "accent-lo", - "accent-hi", - "slider-default") + "bright", + "mid", + "ui", + "spot1", + "spot2", + "contrast") if theme_part not in theme_parts: raise IndexError('Theme part {} does not exist'.format(theme_part)) idx = theme_parts.index(theme_part) * 2 diff --git a/wasp/widgets.py b/wasp/widgets.py index 40523ce..dec213e 100644 --- a/wasp/widgets.py +++ b/wasp/widgets.py @@ -235,13 +235,13 @@ class Checkbox(): draw = wasp.watch.drawable im = self._im if self.state: - c1 = wasp.system.theme('slider-default') - c2 = draw.lighten(c1, 15) + c1 = wasp.system.theme('ui') + c2 = draw.lighten(c1, wasp.system.theme('contrast')) fg = c2 else: c1 = 0 c2 = 0 - fg = wasp.system.theme('accent-lo') + fg = wasp.system.theme('mid') # Draw checkbox on the right margin if there is a label, otherwise # draw at the natural location x = 239 - 32 - 4 if im[2] else im[0] @@ -283,10 +283,10 @@ class Slider(): y = self._y color = self._color if self._color is None: - self._color = wasp.system.theme('slider-default') + self._color = wasp.system.theme('ui') color = self._color if self._lowlight is None: - self._lowlight = draw.lighten(color, 15) + self._lowlight = draw.lighten(color, wasp.system.theme('contrast')) light = self._lowlight knob_x = x + ((_SLIDER_TRACK * self.value) // (self._steps-1)) @@ -344,7 +344,7 @@ class Spinner(): """Draw the slider.""" draw = watch.drawable im = self._im - fg = draw.lighten(wasp.system.theme('slider-default'), 15) + fg = draw.lighten(wasp.system.theme('ui'), wasp.system.theme('contrast')) draw.blit(icons.up_arrow, im[0]+30-8, im[1]+20, fg) draw.blit(icons.down_arrow, im[0]+30-8, im[1]+120-20-9, fg) self.update()