mirror of
https://github.com/esphome/esphome.git
synced 2025-07-29 06:36:45 +00:00
[lvgl] Add content styling to tabview (#8823)
This commit is contained in:
parent
6109acb6f3
commit
090feb55e9
@ -247,11 +247,13 @@ FLAG_LIST = cv.ensure_list(df.LvConstant("LV_OBJ_FLAG_", *df.OBJ_FLAGS).one_of)
|
||||
def part_schema(parts):
|
||||
"""
|
||||
Generate a schema for the various parts (e.g. main:, indicator:) of a widget type
|
||||
:param parts: The parts to include in the schema
|
||||
:param parts: The parts to include
|
||||
:return: The schema
|
||||
"""
|
||||
return cv.Schema({cv.Optional(part): STATE_SCHEMA for part in parts}).extend(
|
||||
STATE_SCHEMA
|
||||
return (
|
||||
cv.Schema({cv.Optional(part): STATE_SCHEMA for part in parts})
|
||||
.extend(STATE_SCHEMA)
|
||||
.extend(FLAG_SCHEMA)
|
||||
)
|
||||
|
||||
|
||||
@ -288,9 +290,7 @@ def base_update_schema(widget_type, parts):
|
||||
:param parts: The allowable parts to specify
|
||||
:return:
|
||||
"""
|
||||
return (
|
||||
part_schema(parts)
|
||||
.extend(
|
||||
return part_schema(parts).extend(
|
||||
{
|
||||
cv.Required(CONF_ID): cv.ensure_list(
|
||||
cv.maybe_simple_value(
|
||||
@ -303,8 +303,6 @@ def base_update_schema(widget_type, parts):
|
||||
cv.Optional(CONF_STATE): SET_STATE_SCHEMA,
|
||||
}
|
||||
)
|
||||
.extend(FLAG_SCHEMA)
|
||||
)
|
||||
|
||||
|
||||
def create_modify_schema(widget_type):
|
||||
@ -321,7 +319,6 @@ def obj_schema(widget_type: WidgetType):
|
||||
"""
|
||||
return (
|
||||
part_schema(widget_type.parts)
|
||||
.extend(FLAG_SCHEMA)
|
||||
.extend(LAYOUT_SCHEMA)
|
||||
.extend(ALIGN_TO_SCHEMA)
|
||||
.extend(automation_schema(widget_type.w_type))
|
||||
|
@ -24,6 +24,7 @@ from .obj import obj_spec
|
||||
|
||||
CONF_TABVIEW = "tabview"
|
||||
CONF_TAB_STYLE = "tab_style"
|
||||
CONF_CONTENT_STYLE = "content_style"
|
||||
|
||||
lv_tab_t = LvType("lv_obj_t")
|
||||
|
||||
@ -39,6 +40,7 @@ TABVIEW_SCHEMA = cv.Schema(
|
||||
)
|
||||
),
|
||||
cv.Optional(CONF_TAB_STYLE): part_schema(buttonmatrix_spec.parts),
|
||||
cv.Optional(CONF_CONTENT_STYLE): part_schema(obj_spec.parts),
|
||||
cv.Optional(CONF_POSITION, default="top"): DIRECTIONS.one_of,
|
||||
cv.Optional(CONF_SIZE, default="10%"): size,
|
||||
}
|
||||
@ -79,6 +81,11 @@ class TabviewType(WidgetType):
|
||||
"tabview_btnmatrix", lv_obj_t, rhs=lv_expr.tabview_get_tab_btns(w.obj)
|
||||
) as btnmatrix_obj:
|
||||
await set_obj_properties(Widget(btnmatrix_obj, obj_spec), button_style)
|
||||
if content_style := config.get(CONF_CONTENT_STYLE):
|
||||
with LocalVariable(
|
||||
"tabview_content", lv_obj_t, rhs=lv_expr.tabview_get_content(w.obj)
|
||||
) as content_obj:
|
||||
await set_obj_properties(Widget(content_obj, obj_spec), content_style)
|
||||
|
||||
def obj_creator(self, parent: MockObjClass, config: dict):
|
||||
return lv_expr.call(
|
||||
|
@ -781,6 +781,13 @@ lvgl:
|
||||
value: !lambda return (int)((float)rand() / RAND_MAX * 100);
|
||||
- tabview:
|
||||
id: tabview_id
|
||||
tab_style:
|
||||
border_color: 0x00FF00
|
||||
border_width: 6
|
||||
items:
|
||||
text_color: 0x0000FF
|
||||
content_style:
|
||||
scrollable: false
|
||||
width: 100%
|
||||
height: 80%
|
||||
position: top
|
||||
|
Loading…
x
Reference in New Issue
Block a user