diff options
Diffstat (limited to 'lib/luavgl/examples/dropdown.lua')
| -rw-r--r-- | lib/luavgl/examples/dropdown.lua | 74 |
1 files changed, 74 insertions, 0 deletions
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 +} |
