mirror of
https://github.com/arendst/Tasmota.git
synced 2026-09-11 09:13:17 +00:00
HASPmota better support for textarea (#24946)
This commit is contained in:
@@ -19,6 +19,7 @@ All notable changes to this project will be documented in this file.
|
||||
- Reset BLE scan flag on new operation (#24925)
|
||||
- Minor fixes in `LList` (#24927)
|
||||
- TLS fix public key fingerprint for ECDSA certificates (#24928)
|
||||
- HASPmota better support for `textarea`
|
||||
|
||||
### Removed
|
||||
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
/********************************************************************
|
||||
* Generated code, don't edit
|
||||
*******************************************************************/
|
||||
|
||||
extern int be_ntv_lv_style_init(bvm *vm);
|
||||
extern int be_ntv_lv_font_init(bvm *vm);
|
||||
extern int be_ntv_lv_color_init(bvm *vm);
|
||||
extern int be_ntv_lv_theme_init(bvm *vm);
|
||||
extern int be_ntv_lv_group_init(bvm *vm);
|
||||
extern int be_ntv_lv_obj_init(bvm *vm);
|
||||
extern int be_ntv_lv_event_init(bvm *vm);
|
||||
extern int be_ntv_lv_display_init(bvm *vm);
|
||||
extern int be_ntv_lv_indev_init(bvm *vm);
|
||||
extern int be_ntv_lv_qrcode_init(bvm *vm);
|
||||
extern int be_ntv_lv_anim_init(bvm *vm);
|
||||
extern int be_ntv_lv_timer_init(bvm *vm);
|
||||
extern int be_ntv_lv_animimg_init(bvm *vm);
|
||||
extern int be_ntv_lv_arc_init(bvm *vm);
|
||||
extern int be_ntv_lv_arclabel_init(bvm *vm);
|
||||
extern int be_ntv_lv_bar_init(bvm *vm);
|
||||
extern int be_ntv_lv_button_init(bvm *vm);
|
||||
extern int be_ntv_lv_buttonmatrix_init(bvm *vm);
|
||||
extern int be_ntv_lv_calendar_init(bvm *vm);
|
||||
extern int be_ntv_lv_canvas_init(bvm *vm);
|
||||
extern int be_ntv_lv_chart_init(bvm *vm);
|
||||
extern int be_ntv_lv_checkbox_init(bvm *vm);
|
||||
extern int be_ntv_lv_dropdown_init(bvm *vm);
|
||||
extern int be_ntv_lv_image_init(bvm *vm);
|
||||
extern int be_ntv_lv_imagebutton_init(bvm *vm);
|
||||
extern int be_ntv_lv_keyboard_init(bvm *vm);
|
||||
extern int be_ntv_lv_label_init(bvm *vm);
|
||||
extern int be_ntv_lv_led_init(bvm *vm);
|
||||
extern int be_ntv_lv_line_init(bvm *vm);
|
||||
extern int be_ntv_lv_list_init(bvm *vm);
|
||||
extern int be_ntv_lv_menu_init(bvm *vm);
|
||||
extern int be_ntv_lv_menu_page_init(bvm *vm);
|
||||
extern int be_ntv_lv_menu_cont_init(bvm *vm);
|
||||
extern int be_ntv_lv_menu_section_init(bvm *vm);
|
||||
extern int be_ntv_lv_menu_separator_init(bvm *vm);
|
||||
extern int be_ntv_lv_msgbox_init(bvm *vm);
|
||||
extern int be_ntv_lv_roller_init(bvm *vm);
|
||||
extern int be_ntv_lv_scale_init(bvm *vm);
|
||||
extern int be_ntv_lv_scale_section_init(bvm *vm);
|
||||
extern int be_ntv_lv_slider_init(bvm *vm);
|
||||
extern int be_ntv_lv_span_init(bvm *vm);
|
||||
extern int be_ntv_lv_spangroup_init(bvm *vm);
|
||||
extern int be_ntv_lv_spinbox_init(bvm *vm);
|
||||
extern int be_ntv_lv_spinner_init(bvm *vm);
|
||||
extern int be_ntv_lv_switch_init(bvm *vm);
|
||||
extern int be_ntv_lv_table_init(bvm *vm);
|
||||
extern int be_ntv_lv_tabview_init(bvm *vm);
|
||||
extern int be_ntv_lv_textarea_init(bvm *vm);
|
||||
extern int be_ntv_lv_tileview_init(bvm *vm);
|
||||
extern int be_ntv_lv_colorwheel_init(bvm *vm);
|
||||
extern int be_ntv_lv_stripes_init(bvm *vm);
|
||||
|
||||
extern const bclass be_class_lv_anim;
|
||||
extern const bclass be_class_lv_animimg;
|
||||
extern const bclass be_class_lv_arc;
|
||||
extern const bclass be_class_lv_arclabel;
|
||||
extern const bclass be_class_lv_bar;
|
||||
extern const bclass be_class_lv_button;
|
||||
extern const bclass be_class_lv_buttonmatrix;
|
||||
extern const bclass be_class_lv_calendar;
|
||||
extern const bclass be_class_lv_canvas;
|
||||
extern const bclass be_class_lv_chart;
|
||||
extern const bclass be_class_lv_checkbox;
|
||||
extern const bclass be_class_lv_color;
|
||||
extern const bclass be_class_lv_colorwheel;
|
||||
extern const bclass be_class_lv_display;
|
||||
extern const bclass be_class_lv_dropdown;
|
||||
extern const bclass be_class_lv_event;
|
||||
extern const bclass be_class_lv_font;
|
||||
extern const bclass be_class_lv_group;
|
||||
extern const bclass be_class_lv_image;
|
||||
extern const bclass be_class_lv_imagebutton;
|
||||
extern const bclass be_class_lv_indev;
|
||||
extern const bclass be_class_lv_keyboard;
|
||||
extern const bclass be_class_lv_label;
|
||||
extern const bclass be_class_lv_led;
|
||||
extern const bclass be_class_lv_line;
|
||||
extern const bclass be_class_lv_list;
|
||||
extern const bclass be_class_lv_menu;
|
||||
extern const bclass be_class_lv_menu_cont;
|
||||
extern const bclass be_class_lv_menu_page;
|
||||
extern const bclass be_class_lv_menu_section;
|
||||
extern const bclass be_class_lv_menu_separator;
|
||||
extern const bclass be_class_lv_msgbox;
|
||||
extern const bclass be_class_lv_obj;
|
||||
extern const bclass be_class_lv_qrcode;
|
||||
extern const bclass be_class_lv_roller;
|
||||
extern const bclass be_class_lv_scale;
|
||||
extern const bclass be_class_lv_scale_section;
|
||||
extern const bclass be_class_lv_slider;
|
||||
extern const bclass be_class_lv_span;
|
||||
extern const bclass be_class_lv_spangroup;
|
||||
extern const bclass be_class_lv_spinbox;
|
||||
extern const bclass be_class_lv_spinner;
|
||||
extern const bclass be_class_lv_stripes;
|
||||
extern const bclass be_class_lv_style;
|
||||
extern const bclass be_class_lv_switch;
|
||||
extern const bclass be_class_lv_table;
|
||||
extern const bclass be_class_lv_tabview;
|
||||
extern const bclass be_class_lv_textarea;
|
||||
extern const bclass be_class_lv_theme;
|
||||
extern const bclass be_class_lv_tileview;
|
||||
extern const bclass be_class_lv_timer;
|
||||
@@ -35,110 +35,8 @@ extern const lv_obj_class_t lv_colorwheel_class;
|
||||
// custom Tasmota widget: rectangle filled with an angled stripe pattern
|
||||
extern const lv_obj_class_t lv_stripes_class;
|
||||
|
||||
#include "be_lv_classes.h"
|
||||
|
||||
extern int be_ntv_lv_style_init(bvm *vm);
|
||||
extern int be_ntv_lv_font_init(bvm *vm);
|
||||
extern int be_ntv_lv_color_init(bvm *vm);
|
||||
extern int be_ntv_lv_theme_init(bvm *vm);
|
||||
extern int be_ntv_lv_group_init(bvm *vm);
|
||||
extern int be_ntv_lv_obj_init(bvm *vm);
|
||||
extern int be_ntv_lv_event_init(bvm *vm);
|
||||
extern int be_ntv_lv_display_init(bvm *vm);
|
||||
extern int be_ntv_lv_indev_init(bvm *vm);
|
||||
extern int be_ntv_lv_qrcode_init(bvm *vm);
|
||||
extern int be_ntv_lv_anim_init(bvm *vm);
|
||||
extern int be_ntv_lv_timer_init(bvm *vm);
|
||||
extern int be_ntv_lv_animimg_init(bvm *vm);
|
||||
extern int be_ntv_lv_arc_init(bvm *vm);
|
||||
extern int be_ntv_lv_arclabel_init(bvm *vm);
|
||||
extern int be_ntv_lv_bar_init(bvm *vm);
|
||||
extern int be_ntv_lv_button_init(bvm *vm);
|
||||
extern int be_ntv_lv_buttonmatrix_init(bvm *vm);
|
||||
extern int be_ntv_lv_calendar_init(bvm *vm);
|
||||
extern int be_ntv_lv_canvas_init(bvm *vm);
|
||||
extern int be_ntv_lv_chart_init(bvm *vm);
|
||||
extern int be_ntv_lv_checkbox_init(bvm *vm);
|
||||
extern int be_ntv_lv_dropdown_init(bvm *vm);
|
||||
extern int be_ntv_lv_image_init(bvm *vm);
|
||||
extern int be_ntv_lv_imagebutton_init(bvm *vm);
|
||||
extern int be_ntv_lv_keyboard_init(bvm *vm);
|
||||
extern int be_ntv_lv_label_init(bvm *vm);
|
||||
extern int be_ntv_lv_led_init(bvm *vm);
|
||||
extern int be_ntv_lv_line_init(bvm *vm);
|
||||
extern int be_ntv_lv_list_init(bvm *vm);
|
||||
extern int be_ntv_lv_menu_init(bvm *vm);
|
||||
extern int be_ntv_lv_menu_page_init(bvm *vm);
|
||||
extern int be_ntv_lv_menu_cont_init(bvm *vm);
|
||||
extern int be_ntv_lv_menu_section_init(bvm *vm);
|
||||
extern int be_ntv_lv_menu_separator_init(bvm *vm);
|
||||
extern int be_ntv_lv_msgbox_init(bvm *vm);
|
||||
extern int be_ntv_lv_roller_init(bvm *vm);
|
||||
extern int be_ntv_lv_scale_init(bvm *vm);
|
||||
extern int be_ntv_lv_scale_section_init(bvm *vm);
|
||||
extern int be_ntv_lv_slider_init(bvm *vm);
|
||||
extern int be_ntv_lv_span_init(bvm *vm);
|
||||
extern int be_ntv_lv_spangroup_init(bvm *vm);
|
||||
extern int be_ntv_lv_spinbox_init(bvm *vm);
|
||||
extern int be_ntv_lv_spinner_init(bvm *vm);
|
||||
extern int be_ntv_lv_switch_init(bvm *vm);
|
||||
extern int be_ntv_lv_table_init(bvm *vm);
|
||||
extern int be_ntv_lv_tabview_init(bvm *vm);
|
||||
extern int be_ntv_lv_textarea_init(bvm *vm);
|
||||
extern int be_ntv_lv_tileview_init(bvm *vm);
|
||||
extern int be_ntv_lv_colorwheel_init(bvm *vm);
|
||||
extern int be_ntv_lv_stripes_init(bvm *vm);
|
||||
|
||||
extern const bclass be_class_lv_anim;
|
||||
extern const bclass be_class_lv_animimg;
|
||||
extern const bclass be_class_lv_arc;
|
||||
extern const bclass be_class_lv_arclabel;
|
||||
extern const bclass be_class_lv_bar;
|
||||
extern const bclass be_class_lv_button;
|
||||
extern const bclass be_class_lv_buttonmatrix;
|
||||
extern const bclass be_class_lv_calendar;
|
||||
extern const bclass be_class_lv_canvas;
|
||||
extern const bclass be_class_lv_chart;
|
||||
extern const bclass be_class_lv_checkbox;
|
||||
extern const bclass be_class_lv_color;
|
||||
extern const bclass be_class_lv_colorwheel;
|
||||
extern const bclass be_class_lv_display;
|
||||
extern const bclass be_class_lv_dropdown;
|
||||
extern const bclass be_class_lv_event;
|
||||
extern const bclass be_class_lv_font;
|
||||
extern const bclass be_class_lv_group;
|
||||
extern const bclass be_class_lv_image;
|
||||
extern const bclass be_class_lv_imagebutton;
|
||||
extern const bclass be_class_lv_indev;
|
||||
extern const bclass be_class_lv_keyboard;
|
||||
extern const bclass be_class_lv_label;
|
||||
extern const bclass be_class_lv_led;
|
||||
extern const bclass be_class_lv_line;
|
||||
extern const bclass be_class_lv_list;
|
||||
extern const bclass be_class_lv_menu;
|
||||
extern const bclass be_class_lv_menu_cont;
|
||||
extern const bclass be_class_lv_menu_page;
|
||||
extern const bclass be_class_lv_menu_section;
|
||||
extern const bclass be_class_lv_menu_separator;
|
||||
extern const bclass be_class_lv_msgbox;
|
||||
extern const bclass be_class_lv_obj;
|
||||
extern const bclass be_class_lv_qrcode;
|
||||
extern const bclass be_class_lv_roller;
|
||||
extern const bclass be_class_lv_scale;
|
||||
extern const bclass be_class_lv_scale_section;
|
||||
extern const bclass be_class_lv_slider;
|
||||
extern const bclass be_class_lv_span;
|
||||
extern const bclass be_class_lv_spangroup;
|
||||
extern const bclass be_class_lv_spinbox;
|
||||
extern const bclass be_class_lv_spinner;
|
||||
extern const bclass be_class_lv_stripes;
|
||||
extern const bclass be_class_lv_style;
|
||||
extern const bclass be_class_lv_switch;
|
||||
extern const bclass be_class_lv_table;
|
||||
extern const bclass be_class_lv_tabview;
|
||||
extern const bclass be_class_lv_textarea;
|
||||
extern const bclass be_class_lv_theme;
|
||||
extern const bclass be_class_lv_tileview;
|
||||
extern const bclass be_class_lv_timer;
|
||||
|
||||
|
||||
/********************************************************************
|
||||
|
||||
@@ -11,6 +11,7 @@ Inputs (produced by ``preprocessor.py``, see ``gen.sh``)
|
||||
|
||||
Outputs (written to ``generate/``)
|
||||
be_lv_c_mapping.h C function dispatch tables + widget constructors
|
||||
be_lv_classes.h extern declarations for widget constructors/classes
|
||||
be_lvgl_widgets_lib.c solidified Berry class/widget definitions
|
||||
be_lvgl_module.c the ``lv`` module (global functions + constants)
|
||||
LVGL_API_Reference.md human readable API reference (Markdown)
|
||||
@@ -716,6 +717,13 @@ extern const lv_obj_class_t lv_colorwheel_class;
|
||||
// custom Tasmota widget: rectangle filled with an angled stripe pattern
|
||||
extern const lv_obj_class_t lv_stripes_class;
|
||||
|
||||
#include "be_lv_classes.h"
|
||||
|
||||
"""
|
||||
|
||||
CLASSES_HEADER = """/********************************************************************
|
||||
* Generated code, don't edit
|
||||
*******************************************************************/
|
||||
"""
|
||||
|
||||
WIDGETS_LIB_CORE_CLASSES = """
|
||||
@@ -869,11 +877,13 @@ extern void arc_anim_end_angle(void * obj, int32_t v);
|
||||
"""
|
||||
|
||||
|
||||
def generate_widgets_lib(path, lv):
|
||||
"""Generate ``be_lvgl_widgets_lib.c``: the solidified Berry class and
|
||||
widget definitions (consumed later by the ``coc`` tool)."""
|
||||
def generate_classes_header(path, lv):
|
||||
"""Generate ``be_lv_classes.h``: extern declarations for the ad-hoc
|
||||
LVGL8 colorwheel/stripes classes, the widget constructor (``_init``)
|
||||
functions, and the widget class objects (included by
|
||||
``be_lvgl_widgets_lib.c``)."""
|
||||
with open(path, 'w') as out:
|
||||
print(WIDGETS_LIB_HEADER, file=out)
|
||||
print(CLASSES_HEADER, file=out)
|
||||
|
||||
# expose all extern constructor definitions
|
||||
for subtype, flv in lv.items():
|
||||
@@ -883,7 +893,13 @@ def generate_widgets_lib(path, lv):
|
||||
# extern class declarations
|
||||
for subtype in sorted(lv):
|
||||
print(f"extern const bclass be_class_lv_{subtype};", file=out)
|
||||
print(file=out)
|
||||
|
||||
|
||||
def generate_widgets_lib(path, lv):
|
||||
"""Generate ``be_lvgl_widgets_lib.c``: the solidified Berry class and
|
||||
widget definitions (consumed later by the ``coc`` tool)."""
|
||||
with open(path, 'w') as out:
|
||||
print(WIDGETS_LIB_HEADER, file=out)
|
||||
|
||||
# hand-written core classes (lv_obj and friends)
|
||||
print(WIDGETS_LIB_CORE_CLASSES, file=out)
|
||||
@@ -1022,6 +1038,7 @@ def generate_module(path, lv0, lv_module):
|
||||
|
||||
# Output file names (inside the generate directory)
|
||||
BE_LV_C_MAPPING = "be_lv_c_mapping.h"
|
||||
BE_LV_CLASSES = "be_lv_classes.h"
|
||||
BE_LV_WIDGETS_LIB = "be_lvgl_widgets_lib.c"
|
||||
BE_LV_MODULE = "be_lvgl_module.c"
|
||||
BE_LV_DOC = "LVGL_API_Reference.md"
|
||||
@@ -1050,6 +1067,7 @@ def main():
|
||||
# 3. generate the output files (same order as the historical script)
|
||||
generate_doc(out_dir / BE_LV_DOC, lv, lv0)
|
||||
generate_c_mapping(out_dir / BE_LV_C_MAPPING, lv)
|
||||
generate_classes_header(out_dir / BE_LV_CLASSES, lv)
|
||||
generate_widgets_lib(out_dir / BE_LV_WIDGETS_LIB, lv)
|
||||
generate_module(out_dir / BE_LV_MODULE, lv0, lv_module)
|
||||
|
||||
|
||||
@@ -6,35 +6,7 @@
|
||||
#ifdef USE_LVGL
|
||||
#ifdef USE_LVGL_HASPMOTA
|
||||
|
||||
extern const bclass be_class_lv_page;
|
||||
extern const bclass be_class_lv_obj;
|
||||
extern const bclass be_class_lv_scr;
|
||||
extern const bclass be_class_lv_btn;
|
||||
extern const bclass be_class_lv_switch;
|
||||
extern const bclass be_class_lv_checkbox;
|
||||
extern const bclass be_class_lv_label;
|
||||
extern const bclass be_class_lv_spinner;
|
||||
extern const bclass be_class_lv_line;
|
||||
extern const bclass be_class_lv_img;
|
||||
extern const bclass be_class_lv_roller;
|
||||
extern const bclass be_class_lv_btnmatrix;
|
||||
extern const bclass be_class_lv_bar;
|
||||
extern const bclass be_class_lv_slider;
|
||||
extern const bclass be_class_lv_arc;
|
||||
extern const bclass be_class_lv_led;
|
||||
extern const bclass be_class_lv_dropdown;
|
||||
extern const bclass be_class_lv_scale;
|
||||
extern const bclass be_class_lv_qrcode;
|
||||
extern const bclass be_class_lv_chart;
|
||||
extern const bclass be_class_lv_spangroup;
|
||||
extern const bclass be_class_lv_span;
|
||||
extern const bclass be_class_lv_tabview;
|
||||
extern const bclass be_class_lv_button;
|
||||
extern const bclass be_class_lv_image;
|
||||
extern const bclass be_class_lv_buttonmatrix;
|
||||
extern const bclass be_class_lv_msgbox;
|
||||
// ported from LVGL 8
|
||||
extern const bclass be_class_lv_colorwheel;
|
||||
#include "../../libesp32_lvgl/lv_binding_berry/generate/be_lv_classes.h"
|
||||
|
||||
#include "solidify/solidified_lv_haspmota.h"
|
||||
|
||||
|
||||
@@ -1104,8 +1104,12 @@ class lvh_obj : lvh_root
|
||||
self._lv_obj.set_value(t)
|
||||
end
|
||||
end
|
||||
def get_val()
|
||||
return self._lv_obj.get_value()
|
||||
def get_val() # if there is no underlining `get_value()` native class, return `nil` instead of exception
|
||||
import introspect
|
||||
if introspect.contains(self._lv_obj, "get_value")
|
||||
return self._lv_obj.get_value()
|
||||
end
|
||||
return nil
|
||||
end
|
||||
#====================================================================
|
||||
# `radius2`
|
||||
@@ -2709,7 +2713,12 @@ class lvh_checkbox : lvh_obj
|
||||
return self.get_toggle()
|
||||
end
|
||||
end
|
||||
# class lvh_textarea : lvh_obj static var _lv_class = lv.textarea end
|
||||
#@ solidify:lvh_textarea,weak
|
||||
class lvh_textarea : lvh_obj
|
||||
static var _lv_class = lv.textarea
|
||||
def get_val() return self._lv_obj.get_text() end
|
||||
def set_val(t) self._lv_obj.set_text(str(t)) end
|
||||
end
|
||||
# special case for scr (which is actually lv_obj)
|
||||
#@ solidify:lvh_scr,weak
|
||||
class lvh_scr : lvh_obj
|
||||
@@ -3022,7 +3031,9 @@ class HASPmota
|
||||
static lvh_arc = lvh_arc
|
||||
# static lvh_linemeter = lvh_linemeter
|
||||
# static lvh_gauge = lvh_gauge
|
||||
# static lvh_textarea = lvh_textarea # additional?
|
||||
#if BE_LV_WIDGET_TEXTAREA
|
||||
static lvh_textarea = lvh_textarea # conditional
|
||||
#endif
|
||||
static lvh_led = lvh_led
|
||||
static lvh_scale = lvh_scale
|
||||
static lvh_scale_section = lvh_scale_section
|
||||
|
||||
Reference in New Issue
Block a user