Files
nspanel-lovelace-ui/apps/nspanel-lovelace-ui/luibackend/theme.py
2022-05-24 23:09:01 +09:30

88 lines
3.6 KiB
Python

from helper import rgb_dec565
default_screensaver_color_mapping = {
#"item": "color in decimal RGB565 (0-65535)"
"background": "0",
"time": "65535",
"timeAMPM": "65535",
"date": "65535",
"tMainIcon": "65535",
"tMainText": "65535",
"tForecast1": "65535",
"tForecast2": "65535",
"tForecast3": "65535",
"tForecast4": "65535",
"tF1Icon": "65535",
"tF2Icon": "65535",
"tF3Icon": "65535",
"tF4Icon": "65535",
"tForecast1Val": "65535",
"tForecast2Val": "65535",
"tForecast3Val": "65535",
"tForecast4Val": "65535",
"bar": "65535",
"tMainIconAlt": "65535",
"tMainTextAlt": "65535",
"tMRIcon": "65535",
"tMR": "65535"
}
default_weather_icon_color_mapping = {
#"item-per HA" "color in decimal RGB 565 (0-65535)"
"clear-night": "35957", #50% grey
"cloudy": "31728", #grey-blue
"exceptional": "63488", #red
"fog": "21130", #75% grey
"hail": "65535", #white
"lightning": "65120", #golden-yellow
"lightning-rainy": "50400", #dark-golden-yellow
"partlycloudy": "35957", #50% grey
"pouring": "249", #blue
"rainy": "33759", #light-blue
"snowy": "65535", #white
"snowy-rainy": "44479", #light-blue-grey
"sunny": "63469", #bright-yellow
"windy": "35957", #50% grey
"windy-variant": "35957" #50% grey
}
def get_screensaver_color_output(theme, state=None,alternativeEnable=None):
color_output = "color"
for key in default_screensaver_color_mapping:
color_output += f"~{map_color(key=key, theme=theme, state=state, alternativeEnable=alternativeEnable)}"
return color_output
def map_color(key, theme, state=None, alternativeEnable=None):
config_color = default_screensaver_color_mapping[key]
# Use theme color if set
if key in theme:
config_color = rgb_dec565(theme[key])
# Use Autocolouring for weather
elif state is not None:
if key in ["tMainIcon", "tF1Icon", "tF2Icon", "tF3Icon", "tF4Icon", "tMainIconAlt"]:
config_color = map_weather_icon_color(key=key, state=state, alternativeEnable=alternativeEnable)
return config_color
def map_weather_icon_color(key, state, alternativeEnable=None):
if alternativeEnable:
# Hack to make alternativelayout work. Do something better later.
if key in ["tMainIcon", "tF1Icon"]:
# Parse as if white for now. These may do something else in the future for alternativeLayout.
config_color = "65535"
# In alternativeLayout F2 is actually F1 and so on. tMainIconAlt replaces tMainIcon. Remap these
elif key == "tF2Icon":
config_color = default_weather_icon_color_mapping[state["tF1Icon"]]
elif key == "tF3Icon":
config_color = default_weather_icon_color_mapping[state["tF2Icon"]]
elif key == "tF4Icon":
config_color = default_weather_icon_color_mapping[state["tF3Icon"]]
elif key == "tMainIconAlt":
config_color = default_weather_icon_color_mapping[state["tMainIcon"]]
else:
if key in state and state[key] in default_weather_icon_color_mapping:
config_color = default_weather_icon_color_mapping[state[key]]
else:
config_color = "65535"
return config_color