mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 06:33:51 +00:00 
			
		
		
		
	[lvgl] Make layouts work properly on base display (#8193)
This commit is contained in:
		| @@ -396,75 +396,87 @@ def add_hello_world(config): | |||||||
|  |  | ||||||
| FINAL_VALIDATE_SCHEMA = final_validation | FINAL_VALIDATE_SCHEMA = final_validation | ||||||
|  |  | ||||||
| LVGL_SCHEMA = ( | LVGL_SCHEMA = cv.All( | ||||||
|     cv.polling_component_schema("1s") |     container_schema( | ||||||
|     .extend(obj_schema(LvScrActType())) |         obj_spec, | ||||||
|     .extend( |         cv.polling_component_schema("1s") | ||||||
|         { |         .extend( | ||||||
|             cv.GenerateID(CONF_ID): cv.declare_id(LvglComponent), |             { | ||||||
|             cv.GenerateID(df.CONF_DISPLAYS): display_schema, |                 cv.GenerateID(CONF_ID): cv.declare_id(LvglComponent), | ||||||
|             cv.Optional(df.CONF_COLOR_DEPTH, default=16): cv.one_of(16), |                 cv.GenerateID(df.CONF_DISPLAYS): display_schema, | ||||||
|             cv.Optional(df.CONF_DEFAULT_FONT, default="montserrat_14"): lvalid.lv_font, |                 cv.Optional(df.CONF_COLOR_DEPTH, default=16): cv.one_of(16), | ||||||
|             cv.Optional(df.CONF_FULL_REFRESH, default=False): cv.boolean, |                 cv.Optional( | ||||||
|             cv.Optional(df.CONF_DRAW_ROUNDING, default=2): cv.positive_int, |                     df.CONF_DEFAULT_FONT, default="montserrat_14" | ||||||
|             cv.Optional(CONF_BUFFER_SIZE, default="100%"): cv.percentage, |                 ): lvalid.lv_font, | ||||||
|             cv.Optional(df.CONF_LOG_LEVEL, default="WARN"): cv.one_of( |                 cv.Optional(df.CONF_FULL_REFRESH, default=False): cv.boolean, | ||||||
|                 *df.LV_LOG_LEVELS, upper=True |                 cv.Optional(df.CONF_DRAW_ROUNDING, default=2): cv.positive_int, | ||||||
|             ), |                 cv.Optional(CONF_BUFFER_SIZE, default="100%"): cv.percentage, | ||||||
|             cv.Optional(df.CONF_BYTE_ORDER, default="big_endian"): cv.one_of( |                 cv.Optional(df.CONF_LOG_LEVEL, default="WARN"): cv.one_of( | ||||||
|                 "big_endian", "little_endian" |                     *df.LV_LOG_LEVELS, upper=True | ||||||
|             ), |                 ), | ||||||
|             cv.Optional(df.CONF_STYLE_DEFINITIONS): cv.ensure_list( |                 cv.Optional(df.CONF_BYTE_ORDER, default="big_endian"): cv.one_of( | ||||||
|                 cv.Schema({cv.Required(CONF_ID): cv.declare_id(lv_style_t)}) |                     "big_endian", "little_endian" | ||||||
|                 .extend(STYLE_SCHEMA) |                 ), | ||||||
|                 .extend( |                 cv.Optional(df.CONF_STYLE_DEFINITIONS): cv.ensure_list( | ||||||
|  |                     cv.Schema({cv.Required(CONF_ID): cv.declare_id(lv_style_t)}) | ||||||
|  |                     .extend(STYLE_SCHEMA) | ||||||
|  |                     .extend( | ||||||
|  |                         { | ||||||
|  |                             cv.Optional(df.CONF_GRID_CELL_X_ALIGN): grid_alignments, | ||||||
|  |                             cv.Optional(df.CONF_GRID_CELL_Y_ALIGN): grid_alignments, | ||||||
|  |                             cv.Optional(df.CONF_PAD_ROW): lvalid.pixels, | ||||||
|  |                             cv.Optional(df.CONF_PAD_COLUMN): lvalid.pixels, | ||||||
|  |                         } | ||||||
|  |                     ) | ||||||
|  |                 ), | ||||||
|  |                 cv.Optional(CONF_ON_IDLE): validate_automation( | ||||||
|                     { |                     { | ||||||
|                         cv.Optional(df.CONF_GRID_CELL_X_ALIGN): grid_alignments, |                         cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(IdleTrigger), | ||||||
|                         cv.Optional(df.CONF_GRID_CELL_Y_ALIGN): grid_alignments, |                         cv.Required(CONF_TIMEOUT): cv.templatable( | ||||||
|                         cv.Optional(df.CONF_PAD_ROW): lvalid.pixels, |                             cv.positive_time_period_milliseconds | ||||||
|                         cv.Optional(df.CONF_PAD_COLUMN): lvalid.pixels, |                         ), | ||||||
|                     } |                     } | ||||||
|                 ) |                 ), | ||||||
|             ), |                 cv.Optional(df.CONF_ON_PAUSE): validate_automation( | ||||||
|             cv.Optional(CONF_ON_IDLE): validate_automation( |                     { | ||||||
|                 { |                         cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(PauseTrigger), | ||||||
|                     cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(IdleTrigger), |                     } | ||||||
|                     cv.Required(CONF_TIMEOUT): cv.templatable( |                 ), | ||||||
|                         cv.positive_time_period_milliseconds |                 cv.Optional(df.CONF_ON_RESUME): validate_automation( | ||||||
|                     ), |                     { | ||||||
|                 } |                         cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(PauseTrigger), | ||||||
|             ), |                     } | ||||||
|             cv.Optional(df.CONF_ON_PAUSE): validate_automation( |                 ), | ||||||
|                 { |                 cv.Exclusive(df.CONF_WIDGETS, CONF_PAGES): cv.ensure_list( | ||||||
|                     cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(PauseTrigger), |                     WIDGET_SCHEMA | ||||||
|                 } |                 ), | ||||||
|             ), |                 cv.Exclusive(CONF_PAGES, CONF_PAGES): cv.ensure_list( | ||||||
|             cv.Optional(df.CONF_ON_RESUME): validate_automation( |                     container_schema(page_spec) | ||||||
|                 { |                 ), | ||||||
|                     cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(PauseTrigger), |                 cv.Optional(df.CONF_MSGBOXES): cv.ensure_list(MSGBOX_SCHEMA), | ||||||
|                 } |                 cv.Optional(df.CONF_PAGE_WRAP, default=True): lv_bool, | ||||||
|             ), |                 cv.Optional(df.CONF_TOP_LAYER): container_schema(obj_spec), | ||||||
|             cv.Exclusive(df.CONF_WIDGETS, CONF_PAGES): cv.ensure_list(WIDGET_SCHEMA), |                 cv.Optional( | ||||||
|             cv.Exclusive(CONF_PAGES, CONF_PAGES): cv.ensure_list( |                     df.CONF_TRANSPARENCY_KEY, default=0x000400 | ||||||
|                 container_schema(page_spec) |                 ): lvalid.lv_color, | ||||||
|             ), |                 cv.Optional(df.CONF_THEME): cv.Schema( | ||||||
|             cv.Optional(df.CONF_MSGBOXES): cv.ensure_list(MSGBOX_SCHEMA), |                     { | ||||||
|             cv.Optional(df.CONF_PAGE_WRAP, default=True): lv_bool, |                         cv.Optional(name): obj_schema(w) | ||||||
|             cv.Optional(df.CONF_TOP_LAYER): container_schema(obj_spec), |                         for name, w in WIDGET_TYPES.items() | ||||||
|             cv.Optional(df.CONF_TRANSPARENCY_KEY, default=0x000400): lvalid.lv_color, |                     } | ||||||
|             cv.Optional(df.CONF_THEME): cv.Schema( |                 ), | ||||||
|                 {cv.Optional(name): obj_schema(w) for name, w in WIDGET_TYPES.items()} |                 cv.Optional(df.CONF_GRADIENTS): GRADIENT_SCHEMA, | ||||||
|             ), |                 cv.Optional(df.CONF_TOUCHSCREENS, default=None): touchscreen_schema, | ||||||
|             cv.Optional(df.CONF_GRADIENTS): GRADIENT_SCHEMA, |                 cv.Optional(df.CONF_ENCODERS, default=None): ENCODERS_CONFIG, | ||||||
|             cv.Optional(df.CONF_TOUCHSCREENS, default=None): touchscreen_schema, |                 cv.Optional(df.CONF_KEYPADS, default=None): KEYPADS_CONFIG, | ||||||
|             cv.Optional(df.CONF_ENCODERS, default=None): ENCODERS_CONFIG, |                 cv.GenerateID(df.CONF_DEFAULT_GROUP): cv.declare_id(lv_group_t), | ||||||
|             cv.Optional(df.CONF_KEYPADS, default=None): KEYPADS_CONFIG, |                 cv.Optional(df.CONF_RESUME_ON_INPUT, default=True): cv.boolean, | ||||||
|             cv.GenerateID(df.CONF_DEFAULT_GROUP): cv.declare_id(lv_group_t), |             } | ||||||
|             cv.Optional(df.CONF_RESUME_ON_INPUT, default=True): cv.boolean, |         ) | ||||||
|         } |         .extend(DISP_BG_SCHEMA), | ||||||
|     ) |     ), | ||||||
|     .extend(DISP_BG_SCHEMA) |     cv.has_at_most_one_key(CONF_PAGES, df.CONF_LAYOUT), | ||||||
|     .add_extra(add_hello_world) |     add_hello_world, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user