Begin migration of remaining screens to Lua

This commit is contained in:
jacqueline
2024-01-15 12:31:20 +11:00
parent 0e04eb918e
commit 7cdcd44e0c
53 changed files with 1242 additions and 2908 deletions
+278 -217
View File
@@ -9,278 +9,278 @@ lvgl = {}
--- @enum ObjEventCode
lvgl.EVENT = {
ALL = 0,
PRESSED = 0,
PRESSING = 0,
PRESS_LOST = 0,
SHORT_CLICKED = 0,
LONG_PRESSED = 0,
LONG_PRESSED_REPEAT = 0,
CLICKED = 0,
RELEASED = 0,
SCROLL_BEGIN = 0,
SCROLL_END = 0,
SCROLL = 0,
GESTURE = 0,
KEY = 0,
FOCUSED = 0,
DEFOCUSED = 0,
LEAVE = 0,
HIT_TEST = 0,
COVER_CHECK = 0,
REFR_EXT_DRAW_SIZE = 0,
DRAW_MAIN_BEGIN = 0,
DRAW_MAIN = 0,
DRAW_MAIN_END = 0,
DRAW_POST_BEGIN = 0,
DRAW_POST = 0,
DRAW_POST_END = 0,
DRAW_PART_BEGIN = 0,
DRAW_PART_END = 0,
VALUE_CHANGED = 0,
INSERT = 0,
REFRESH = 0,
READY = 0,
CANCEL = 0,
DELETE = 0,
CHILD_CHANGED = 0,
CHILD_CREATED = 0,
CHILD_DELETED = 0,
SCREEN_UNLOAD_START = 0,
SCREEN_LOAD_START = 0,
SCREEN_LOADED = 0,
SCREEN_UNLOADED = 0,
SIZE_CHANGED = 0,
STYLE_CHANGED = 0,
LAYOUT_CHANGED = 0,
GET_SELF_SIZE = 0,
ALL = 0,
PRESSED = 0,
PRESSING = 0,
PRESS_LOST = 0,
SHORT_CLICKED = 0,
LONG_PRESSED = 0,
LONG_PRESSED_REPEAT = 0,
CLICKED = 0,
RELEASED = 0,
SCROLL_BEGIN = 0,
SCROLL_END = 0,
SCROLL = 0,
GESTURE = 0,
KEY = 0,
FOCUSED = 0,
DEFOCUSED = 0,
LEAVE = 0,
HIT_TEST = 0,
COVER_CHECK = 0,
REFR_EXT_DRAW_SIZE = 0,
DRAW_MAIN_BEGIN = 0,
DRAW_MAIN = 0,
DRAW_MAIN_END = 0,
DRAW_POST_BEGIN = 0,
DRAW_POST = 0,
DRAW_POST_END = 0,
DRAW_PART_BEGIN = 0,
DRAW_PART_END = 0,
VALUE_CHANGED = 0,
INSERT = 0,
REFRESH = 0,
READY = 0,
CANCEL = 0,
DELETE = 0,
CHILD_CHANGED = 0,
CHILD_CREATED = 0,
CHILD_DELETED = 0,
SCREEN_UNLOAD_START = 0,
SCREEN_LOAD_START = 0,
SCREEN_LOADED = 0,
SCREEN_UNLOADED = 0,
SIZE_CHANGED = 0,
STYLE_CHANGED = 0,
LAYOUT_CHANGED = 0,
GET_SELF_SIZE = 0,
}
--- object flag for obj:add_flag obj:clear_flag
--- @enum ObjFlag
lvgl.FLAG = {
PRESSED = 0,
HIDDEN = 0,
CLICKABLE = 0,
CLICK_FOCUSABLE = 0,
CHECKABLE = 0,
SCROLLABLE = 0,
SCROLL_ELASTIC = 0,
SCROLL_MOMENTUM = 0,
SCROLL_ONE = 0,
SCROLL_CHAIN_HOR = 0,
SCROLL_CHAIN_VER = 0,
SCROLL_CHAIN = 0,
SCROLL_ON_FOCUS = 0,
SCROLL_WITH_ARROW = 0,
SNAPPABLE = 0,
PRESS_LOCK = 0,
EVENT_BUBBLE = 0,
GESTURE_BUBBLE = 0,
ADV_HITTEST = 0,
IGNORE_LAYOUT = 0,
FLOATING = 0,
OVERFLOW_VISIBLE = 0,
LAYOUT_1 = 0,
LAYOUT_2 = 0,
WIDGET_1 = 0,
WIDGET_2 = 0,
USER_1 = 0,
USER_2 = 0,
USER_3 = 0,
USER_4 = 0,
PRESSED = 0,
HIDDEN = 0,
CLICKABLE = 0,
CLICK_FOCUSABLE = 0,
CHECKABLE = 0,
SCROLLABLE = 0,
SCROLL_ELASTIC = 0,
SCROLL_MOMENTUM = 0,
SCROLL_ONE = 0,
SCROLL_CHAIN_HOR = 0,
SCROLL_CHAIN_VER = 0,
SCROLL_CHAIN = 0,
SCROLL_ON_FOCUS = 0,
SCROLL_WITH_ARROW = 0,
SNAPPABLE = 0,
PRESS_LOCK = 0,
EVENT_BUBBLE = 0,
GESTURE_BUBBLE = 0,
ADV_HITTEST = 0,
IGNORE_LAYOUT = 0,
FLOATING = 0,
OVERFLOW_VISIBLE = 0,
LAYOUT_1 = 0,
LAYOUT_2 = 0,
WIDGET_1 = 0,
WIDGET_2 = 0,
USER_1 = 0,
USER_2 = 0,
USER_3 = 0,
USER_4 = 0,
}
--- @enum ObjState
lvgl.STATE = {
DEFAULT = 0,
CHECKED = 0,
FOCUSED = 0,
FOCUS_KEY = 0,
EDITED = 0,
HOVERED = 0,
PRESSED = 0,
SCROLLED = 0,
DISABLED = 0,
USER_1 = 0,
USER_2 = 0,
USER_3 = 0,
USER_4 = 0,
ANY = 0,
DEFAULT = 0,
CHECKED = 0,
FOCUSED = 0,
FOCUS_KEY = 0,
EDITED = 0,
HOVERED = 0,
PRESSED = 0,
SCROLLED = 0,
DISABLED = 0,
USER_1 = 0,
USER_2 = 0,
USER_3 = 0,
USER_4 = 0,
ANY = 0,
}
--- @enum ObjAlignType
lvgl.ALIGN = {
DEFAULT = 0,
TOP_LEFT = 0,
TOP_MID = 0,
TOP_RIGHT = 0,
BOTTOM_LEFT = 0,
BOTTOM_MID = 0,
BOTTOM_RIGHT = 0,
LEFT_MID = 0,
RIGHT_MID = 0,
CENTER = 0,
OUT_TOP_LEFT = 0,
OUT_TOP_MID = 0,
OUT_TOP_RIGHT = 0,
OUT_BOTTOM_LEFT = 0,
OUT_BOTTOM_MID = 0,
OUT_BOTTOM_RIGHT = 0,
OUT_LEFT_TOP = 0,
OUT_LEFT_MID = 0,
OUT_LEFT_BOTTOM = 0,
OUT_RIGHT_TOP = 0,
OUT_RIGHT_MID = 0,
OUT_RIGHT_BOTTOM = 0,
DEFAULT = 0,
TOP_LEFT = 0,
TOP_MID = 0,
TOP_RIGHT = 0,
BOTTOM_LEFT = 0,
BOTTOM_MID = 0,
BOTTOM_RIGHT = 0,
LEFT_MID = 0,
RIGHT_MID = 0,
CENTER = 0,
OUT_TOP_LEFT = 0,
OUT_TOP_MID = 0,
OUT_TOP_RIGHT = 0,
OUT_BOTTOM_LEFT = 0,
OUT_BOTTOM_MID = 0,
OUT_BOTTOM_RIGHT = 0,
OUT_LEFT_TOP = 0,
OUT_LEFT_MID = 0,
OUT_LEFT_BOTTOM = 0,
OUT_RIGHT_TOP = 0,
OUT_RIGHT_MID = 0,
OUT_RIGHT_BOTTOM = 0,
}
--- @enum BuiltinFont
lvgl.BUILTIN_FONT = {
MONTSERRAT_8 = 0,
MONTSERRAT_10 = 0,
MONTSERRAT_12 = 0,
MONTSERRAT_14 = 0,
MONTSERRAT_16 = 0,
MONTSERRAT_18 = 0,
MONTSERRAT_20 = 0,
MONTSERRAT_22 = 0,
MONTSERRAT_24 = 0,
MONTSERRAT_26 = 0,
MONTSERRAT_28 = 0,
MONTSERRAT_30 = 0,
MONTSERRAT_32 = 0,
MONTSERRAT_34 = 0,
MONTSERRAT_36 = 0,
MONTSERRAT_38 = 0,
MONTSERRAT_40 = 0,
MONTSERRAT_42 = 0,
MONTSERRAT_44 = 0,
MONTSERRAT_46 = 0,
MONTSERRAT_48 = 0,
MONTSERRAT_12_SUBPX = 0,
MONTSERRAT_28_COMPRESSED = 0,
DEJAVU_16_PERSIAN_HEBREW = 0,
SIMSUN_16_CJK = 0,
UNSCII_8 = 0,
UNSCII_16 = 0,
MONTSERRAT_8 = 0,
MONTSERRAT_10 = 0,
MONTSERRAT_12 = 0,
MONTSERRAT_14 = 0,
MONTSERRAT_16 = 0,
MONTSERRAT_18 = 0,
MONTSERRAT_20 = 0,
MONTSERRAT_22 = 0,
MONTSERRAT_24 = 0,
MONTSERRAT_26 = 0,
MONTSERRAT_28 = 0,
MONTSERRAT_30 = 0,
MONTSERRAT_32 = 0,
MONTSERRAT_34 = 0,
MONTSERRAT_36 = 0,
MONTSERRAT_38 = 0,
MONTSERRAT_40 = 0,
MONTSERRAT_42 = 0,
MONTSERRAT_44 = 0,
MONTSERRAT_46 = 0,
MONTSERRAT_48 = 0,
MONTSERRAT_12_SUBPX = 0,
MONTSERRAT_28_COMPRESSED = 0,
DEJAVU_16_PERSIAN_HEBREW = 0,
SIMSUN_16_CJK = 0,
UNSCII_8 = 0,
UNSCII_16 = 0,
}
--- @enum LABEL
lvgl.LABEL = {
LONG_WRAP = 0,
LONG_DOT = 0,
LONG_SCROLL = 0,
LONG_SCROLL_CIRCULAR = 0,
LONG_CLIP = 0,
LONG_WRAP = 0,
LONG_DOT = 0,
LONG_SCROLL = 0,
LONG_SCROLL_CIRCULAR = 0,
LONG_CLIP = 0,
}
--- @enum SCR_LOAD_ANIM
lvgl.SCR_LOAD_ANIM = {
NONE = 0,
OVER_LEFT = 0,
OVER_RIGHT = 0,
OVER_TOP = 0,
OVER_BOTTOM = 0,
MOVE_LEFT = 0,
MOVE_RIGHT = 0,
MOVE_TOP = 0,
MOVE_BOTTOM = 0,
FADE_IN = 0,
FADE_ON = 0,
FADE_OUT = 0,
OUT_LEFT = 0,
OUT_RIGHT = 0,
OUT_TOP = 0,
OUT_BOTTOM = 0,
NONE = 0,
OVER_LEFT = 0,
OVER_RIGHT = 0,
OVER_TOP = 0,
OVER_BOTTOM = 0,
MOVE_LEFT = 0,
MOVE_RIGHT = 0,
MOVE_TOP = 0,
MOVE_BOTTOM = 0,
FADE_IN = 0,
FADE_ON = 0,
FADE_OUT = 0,
OUT_LEFT = 0,
OUT_RIGHT = 0,
OUT_TOP = 0,
OUT_BOTTOM = 0,
}
--- @enum ScrollbarMode
lvgl.SCROLLBAR_MODE = {
OFF = 0,
ON = 0,
ACTIVE = 0,
AUTO = 0,
OFF = 0,
ON = 0,
ACTIVE = 0,
AUTO = 0,
}
--- @enum Dir
lvgl.DIR = {
NONE = 0,
LEFT = 0,
RIGHT = 0,
TOP = 0,
BOTTOM = 0,
HOR = 0,
VER = 0,
ALL = 0,
NONE = 0,
LEFT = 0,
RIGHT = 0,
TOP = 0,
BOTTOM = 0,
HOR = 0,
VER = 0,
ALL = 0,
}
--- @enum KeyboardMode
lvgl.KEYBOARD_MODE = {
TEXT_LOWER = 0,
TEXT_UPPER = 0,
SPECIAL = 0,
NUMBER = 0,
USER_1 = 0,
USER_2 = 0,
USER_3 = 0,
USER_4 = 0,
TEXT_ARABIC = 0,
TEXT_LOWER = 0,
TEXT_UPPER = 0,
SPECIAL = 0,
NUMBER = 0,
USER_1 = 0,
USER_2 = 0,
USER_3 = 0,
USER_4 = 0,
TEXT_ARABIC = 0,
}
--- @enum FlexFlow
lvgl.FLEX_FLOW = {
ROW = 0,
COLUMN = 0,
ROW_WRAP = 0,
ROW_REVERSE = 0,
ROW_WRAP_REVERSE = 0,
COLUMN_WRAP = 0,
COLUMN_REVERSE = 0,
COLUMN_WRAP_REVERSE = 0,
ROW = 0,
COLUMN = 0,
ROW_WRAP = 0,
ROW_REVERSE = 0,
ROW_WRAP_REVERSE = 0,
COLUMN_WRAP = 0,
COLUMN_REVERSE = 0,
COLUMN_WRAP_REVERSE = 0,
}
--- @enum FlexAlign
lvgl.FLEX_ALIGN = {
START = 0,
END = 0,
CENTER = 0,
SPACE_EVENLY = 0,
SPACE_AROUND = 0,
SPACE_BETWEEN = 0,
START = 0,
END = 0,
CENTER = 0,
SPACE_EVENLY = 0,
SPACE_AROUND = 0,
SPACE_BETWEEN = 0,
}
--- @enum GridAlign
lvgl.GRID_ALIGN = {
START = 0,
CENTER = 0,
END = 0,
STRETCH = 0,
SPACE_EVENLY = 0,
SPACE_AROUND = 0,
SPACE_BETWEEN = 0,
START = 0,
CENTER = 0,
END = 0,
STRETCH = 0,
SPACE_EVENLY = 0,
SPACE_AROUND = 0,
SPACE_BETWEEN = 0,
}
--- @enum RollerMode
lvgl.ROLLER_MODE = {
NORMAL = 0,
INFINITE = 0,
NORMAL = 0,
INFINITE = 0,
}
--- @enum KEY
lvgl.KEY = {
UP = 0,
DOWN = 0,
RIGHT = 0,
LEFT = 0,
ESC = 0,
DEL = 0,
BACKSPACE = 0,
ENTER = 0,
NEXT = 0,
PREV = 0,
HOME = 0,
END = 0,
UP = 0,
DOWN = 0,
RIGHT = 0,
LEFT = 0,
ESC = 0,
DEL = 0,
BACKSPACE = 0,
ENTER = 0,
NEXT = 0,
PREV = 0,
HOME = 0,
END = 0,
}
lvgl.ANIM_REPEAT_INFINITE = 0
@@ -404,7 +404,6 @@ end
function lvgl.Keyboard(parent, property)
end
---
--- Create Led Widget on parent
--- @param parent? Object | nil
@@ -429,6 +428,20 @@ end
function lvgl.Roller(parent, property)
end
--- Create Slider widget on parent
--- @param parent? Object | nil
--- @param property? BarStyle
--- @return Slider
function lvgl.Slider(parent, property)
end
--- Create Switch widget on parent
--- @param parent? Object | nil
--- @param property? StyleProp
--- @return Switch
function lvgl.Switch(parent, property)
end
---
--- Create Timer
--- @param p TimerPara
@@ -555,13 +568,27 @@ end
function obj:List(property)
end
---
--- Create Roller Widget on parent
--- @param property? RollerStyle
--- @return Roller
function obj:Roller(parent, property)
end
---
--- Create Slider on object
--- @param property? BarStyle
--- @return Slider
function obj:Slider(property)
end
---
--- Create switch on object
--- @param property? StyleProp
--- @return Switch
function obj:Switch(property)
end
---
--- Set object property
--- @param p StyleProp
@@ -1049,6 +1076,40 @@ end
function label:cut_text(pos, cnt)
end
---
--- Slider widget
---@class Slider:Object
---
local slider = {}
--- set method for slider widget. Uses Bar widget's properties.
--- @param p BarStyle
--- @return nil
function slider:set(p)
end
--- get value of slider
--- @return integer
function slider:value()
end
---
--- Switch widget
---@class Switch:Object
---
local switch = {}
--- set method for switch widget
--- @param p StyleProp
--- @return nil
function switch:set(p)
end
--- get checked state of switch
--- @return boolean
function switch:enabled()
end
---
--- Textarea widget
---@class Textarea: Object
+88
View File
@@ -0,0 +1,88 @@
#include "lua.h"
#include "luavgl.h"
#include "private.h"
#include <src/widgets/lv_slider.h>
static int luavgl_slider_create(lua_State *L) {
return luavgl_obj_create_helper(L, lv_slider_create);
}
static void _lv_slider_set_range(void *obj, lua_State *L) {
int min = 0, max = 100;
int type = lua_type(L, -1);
if (type == LUA_TTABLE) {
lua_getfield(L, -1, "min");
min = lua_tointeger(L, -1);
lua_pop(L, 1);
lua_getfield(L, -1, "max");
max = luavgl_tointeger(L, -1);
lua_pop(L, 1);
}
lv_slider_set_range(obj, min, max);
}
static void _lv_slider_set_value(void *obj, int value) {
lv_slider_set_value(obj, value, LV_ANIM_OFF);
}
static const luavgl_value_setter_t slider_property_table[] = {
{"range", SETTER_TYPE_STACK, {.setter_stack = _lv_slider_set_range}},
{"value", SETTER_TYPE_INT, {.setter = (setter_int_t)_lv_slider_set_value}},
};
LUALIB_API int luavgl_slider_set_property_kv(lua_State *L, void *data) {
lv_obj_t *obj = data;
int ret = luavgl_set_property(L, obj, slider_property_table);
if (ret == 0) {
return 0;
}
/* a base obj property? */
ret = luavgl_obj_set_property_kv(L, obj);
if (ret != 0) {
debug("unkown property for slider.\n");
}
return ret;
}
static int luavgl_slider_set(lua_State *L) {
lv_obj_t *obj = luavgl_to_obj(L, 1);
if (!lua_istable(L, -1)) {
luaL_error(L, "expect a table on 2nd para.");
return 0;
}
luavgl_iterate(L, -1, luavgl_slider_set_property_kv, obj);
return 0;
}
static int luavgl_slider_value(lua_State *L) {
lv_obj_t *obj = luavgl_to_obj(L, 1);
lua_pushinteger(L, lv_slider_get_value(obj));
return 1;
}
static int luavgl_slider_tostring(lua_State *L) {
lv_obj_t *obj = luavgl_to_obj(L, 1);
lua_pushfstring(L, "lv_slider:%p", obj);
return 1;
}
static const luaL_Reg luavgl_slider_methods[] = {
{"set", luavgl_slider_set},
{"value", luavgl_slider_value},
{NULL, NULL},
};
static void luavgl_slider_init(lua_State *L) {
luavgl_obj_newmetatable(L, &lv_slider_class, "lv_slider",
luavgl_slider_methods);
lua_pushcfunction(L, luavgl_slider_tostring);
lua_setfield(L, -2, "__tostring");
lua_pop(L, 1);
}
+57
View File
@@ -0,0 +1,57 @@
#include "luavgl.h"
#include "private.h"
#include <src/widgets/lv_switch.h>
static int luavgl_switch_create(lua_State *L) {
return luavgl_obj_create_helper(L, lv_switch_create);
}
LUALIB_API int luavgl_switch_set_property_kv(lua_State *L, void *data) {
lv_obj_t *obj = data;
/* switches only use base properties */
int ret = luavgl_obj_set_property_kv(L, obj);
if (ret != 0) {
debug("unkown property for switch.\n");
}
return ret;
}
static int luavgl_switch_set(lua_State *L) {
lv_obj_t *obj = luavgl_to_obj(L, 1);
if (!lua_istable(L, -1)) {
luaL_error(L, "expect a table on 2nd para.");
return 0;
}
luavgl_iterate(L, -1, luavgl_switch_set_property_kv, obj);
return 0;
}
static int luavgl_switch_enabled(lua_State *L) {
lv_obj_t *obj = luavgl_to_obj(L, 1);
lua_pushboolean(L, lv_obj_has_state(obj, LV_STATE_CHECKED));
return 1;
}
static int luavgl_switch_tostring(lua_State *L) {
lv_obj_t *obj = luavgl_to_obj(L, 1);
lua_pushfstring(L, "lv_switch:%p", obj);
return 1;
}
static const luaL_Reg luavgl_switch_methods[] = {
{"set", luavgl_switch_set},
{"enabled", luavgl_switch_enabled},
{NULL, NULL},
};
static void luavgl_switch_init(lua_State *L) {
luavgl_obj_newmetatable(L, &lv_switch_class, "lv_switch",
luavgl_switch_methods);
lua_pushcfunction(L, luavgl_switch_tostring);
lua_setfield(L, -2, "__tostring");
lua_pop(L, 1);
}
+24
View File
@@ -45,6 +45,14 @@
#include "roller.c"
#endif
#if LV_USE_SLIDER
#include "slider.c"
#endif
#if LV_USE_SWITCH
#include "switch.c"
#endif
#if LV_USE_TEXTAREA
#include "textarea.c"
#endif
@@ -98,6 +106,14 @@ static const luaL_Reg widget_create_methods[] = {
{"Roller", luavgl_roller_create },
#endif
#if LV_USE_SLIDER
{"Slider", luavgl_slider_create},
#endif
#if LV_USE_SWITCH
{"Switch", luavgl_switch_create},
#endif
#if LV_USE_TEXTAREA
{"Textarea", luavgl_textarea_create},
#endif
@@ -154,4 +170,12 @@ static void luavgl_widgets_init(lua_State *L)
luavgl_bar_init(L);
#endif
#if LV_USE_SLIDER
luavgl_slider_init(L);
#endif
#if LV_USE_SWITCH
luavgl_switch_init(L);
#endif
}