From 8a0a167adbf3d9b6f8b6f16aaf20ca39ad5549de Mon Sep 17 00:00:00 2001 From: jacqueline Date: Sun, 12 Nov 2023 19:14:09 +1100 Subject: Convert the main menu screen to lua lol --- lib/luavgl/examples/dropdown.lua | 74 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 lib/luavgl/examples/dropdown.lua (limited to 'lib/luavgl/examples/dropdown.lua') diff --git a/lib/luavgl/examples/dropdown.lua b/lib/luavgl/examples/dropdown.lua new file mode 100644 index 00000000..037f51cb --- /dev/null +++ b/lib/luavgl/examples/dropdown.lua @@ -0,0 +1,74 @@ +-- a dropdown on top left +local dd = lvgl.Dropdown(nil, { + -- note there are two "Orange" + options = "Apple\nBanana\nOrange\nCherry\nGrape\nRaspberry\nMelon\nOrange\nLemon\nNuts", + symbol = "\xEF\x81\x94", + dir = lvgl.DIR.RIGHT, + highlight = false, + text = nil, + align = { + type = lvgl.ALIGN.TOP_LEFT, + x_ofs = 20, + y_ofs = 20, + } +}) +local list = dd:get("list") +print("get dropdown list: ", list) +list:set { text_font = lvgl.BUILTIN_FONT.MONTSERRAT_20 } + +print("available options:", dd:get("options")) + +local cnt = 0 +dd:onevent(lvgl.EVENT.VALUE_CHANGED, + ---comment + ---@param obj Dropdown + ---@param code ObjEventCode + function(obj, code) + obj:add_option(string.format("Option:%d", cnt), dd:get("option_cnt")) + cnt = cnt + 1 + print(obj:get("selected_str"), "option_cnt" .. obj:get("option_cnt")) + end +) + +-- another dropdown on top left +local dd = lvgl.Dropdown(nil, { + options = "Apple\nBanana\nOrange\nCherry\nGrape\nRaspberry\nMelon\nOrange\nLemon\nNuts", + symbol = "\xEF\x81\xB7", + dir = lvgl.DIR.BOTTOM, + text = "SetText", + selected = 5, + text_font = lvgl.BUILTIN_FONT.MONTSERRAT_20, + align = { + type = lvgl.ALIGN.BOTTOM_MID, + x_ofs = 0, + y_ofs = -20, + } +}) + + +dd:get("list"):set { text_font = lvgl.Font("montserrat", 24) } +dd:onevent(lvgl.EVENT.VALUE_CHANGED, function(obj, code) + print(obj:get("selected_str") .. ":" .. obj:get("selected"), + "dir:" .. obj:get("dir"), + "option_index" .. dd:get("option_index", obj:get("selected_str"))) +end) + + + +lvgl.Timer { + period = 1000, + cb = function(t) + t:delete() + dd:open() + print("now dd should be opened: " .. (dd:is_open() and "open" or "closed")) + end +} + +lvgl.Timer { + period = 2000, + cb = function(t) + t:delete() + dd:close() + print("now dd should be closed: " .. (dd:is_open() and "open" or "closed")) + end +} -- cgit v1.2.3