mirror of
https://github.com/Threnklyn/esphome-dev.git
synced 2026-06-06 21:09:53 +02:00
[lvgl] Final stage (#7184)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import esphome.config_validation as cv
|
||||
from esphome.const import CONF_MAX_VALUE, CONF_MIN_VALUE, CONF_MODE, CONF_VALUE
|
||||
|
||||
from ..defines import (
|
||||
BAR_MODES,
|
||||
CONF_ANIMATED,
|
||||
CONF_INDICATOR,
|
||||
CONF_KNOB,
|
||||
CONF_MAIN,
|
||||
literal,
|
||||
)
|
||||
from ..helpers import add_lv_use
|
||||
from ..lv_validation import animated, get_start_value, lv_float
|
||||
from ..lvcode import lv
|
||||
from ..types import LvNumber, NumberType
|
||||
from . import Widget
|
||||
from .lv_bar import CONF_BAR
|
||||
|
||||
CONF_SLIDER = "slider"
|
||||
SLIDER_MODIFY_SCHEMA = cv.Schema(
|
||||
{
|
||||
cv.Optional(CONF_VALUE): lv_float,
|
||||
cv.Optional(CONF_ANIMATED, default=True): animated,
|
||||
}
|
||||
)
|
||||
|
||||
SLIDER_SCHEMA = cv.Schema(
|
||||
{
|
||||
cv.Optional(CONF_VALUE): lv_float,
|
||||
cv.Optional(CONF_MIN_VALUE, default=0): cv.int_,
|
||||
cv.Optional(CONF_MAX_VALUE, default=100): cv.int_,
|
||||
cv.Optional(CONF_MODE, default="NORMAL"): BAR_MODES.one_of,
|
||||
cv.Optional(CONF_ANIMATED, default=True): animated,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
class SliderType(NumberType):
|
||||
def __init__(self):
|
||||
super().__init__(
|
||||
CONF_SLIDER,
|
||||
LvNumber("lv_slider_t"),
|
||||
parts=(CONF_MAIN, CONF_INDICATOR, CONF_KNOB),
|
||||
schema=SLIDER_SCHEMA,
|
||||
modify_schema=SLIDER_MODIFY_SCHEMA,
|
||||
)
|
||||
|
||||
@property
|
||||
def animated(self):
|
||||
return True
|
||||
|
||||
async def to_code(self, w: Widget, config):
|
||||
add_lv_use(CONF_BAR)
|
||||
if CONF_MIN_VALUE in config:
|
||||
# not modify case
|
||||
lv.slider_set_range(w.obj, config[CONF_MIN_VALUE], config[CONF_MAX_VALUE])
|
||||
lv.slider_set_mode(w.obj, literal(config[CONF_MODE]))
|
||||
value = await get_start_value(config)
|
||||
if value is not None:
|
||||
lv.slider_set_value(w.obj, value, literal(config[CONF_ANIMATED]))
|
||||
|
||||
|
||||
slider_spec = SliderType()
|
||||
Reference in New Issue
Block a user