diff options
| author | jacqueline <me@jacqueline.id.au> | 2024-05-02 19:12:26 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2024-05-02 19:12:26 +1000 |
| commit | 1573a8c4cde1cd9528b422b2dcc598e37ffe94a7 (patch) | |
| tree | d162822b8fd7054f81bace0c7a65ab4d5e6f93ef /src/lua/lua_theme.cpp | |
| parent | a231fd1c8afedbeb14b0bc77d76bad61db986059 (diff) | |
| download | tangara-fw-1573a8c4cde1cd9528b422b2dcc598e37ffe94a7.tar.gz | |
WIP merge cyclically dependent components into one big component
Diffstat (limited to 'src/lua/lua_theme.cpp')
| -rw-r--r-- | src/lua/lua_theme.cpp | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/src/lua/lua_theme.cpp b/src/lua/lua_theme.cpp deleted file mode 100644 index 72434d97..00000000 --- a/src/lua/lua_theme.cpp +++ /dev/null @@ -1,89 +0,0 @@ - -/* - * Copyright 2023 ailurux <ailuruxx@gmail.com> - * - * SPDX-License-Identifier: GPL-3.0-only - */ - -#include "lua_version.hpp" - -#include <string> - -#include "bridge.hpp" -#include "lua.hpp" - -#include "esp_app_desc.h" -#include "esp_log.h" -#include "lauxlib.h" -#include "lua.h" -#include "lua_thread.hpp" -#include "luavgl.h" -#include "themes.hpp" - -namespace lua { - -static auto set_style(lua_State* L) -> int { - // Get the object and class name from the stack - std::string class_name = luaL_checkstring(L, -1); - lv_obj_t* obj = luavgl_to_obj(L, -2); - if (obj != NULL) { - ui::themes::Theme::instance()->ApplyStyle(obj, class_name); - } - return 0; -} - -static auto set_theme(lua_State* L) -> int { - std::string class_name; - luaL_checktype(L, -1, LUA_TTABLE); - lua_pushnil(L); /* first key */ - while (lua_next(L, -2) != 0) { - /* uses 'key' (at index -2) and 'value' (at index -1) */ - if (lua_type(L, -2) == LUA_TSTRING) { - class_name = lua_tostring(L, -2); - } - if (lua_type(L, -1) == LUA_TTABLE) { - // Nesting - lua_pushnil(L); // First key - while (lua_next(L, -2) != 0) { - // Nesting the second - int selector = -1; - lua_pushnil(L); // First key - while (lua_next(L, -2) != 0) { - int idx = lua_tointeger(L, -2); - if (idx == 1) { - // Selector - selector = lua_tointeger(L, -1); - } else if (idx == 2) { - // Style - lv_style_t* style = luavgl_to_style(L, -1); - if (style == NULL) { - ESP_LOGI("lua_theme", "Style was null or malformed"); - return 0; - } else { - ui::themes::Theme::instance()->AddStyle(class_name, selector, style); - } - } - lua_pop(L, 1); - } - lua_pop(L, 1); - } - } - /* removes 'value'; keeps 'key' for next iteration */ - lua_pop(L, 1); - } - return 0; -} - -static const struct luaL_Reg kThemeFuncs[] = {{"set", set_theme}, {"set_style", set_style}, {NULL, NULL}}; - -static auto lua_theme(lua_State* L) -> int { - luaL_newlib(L, kThemeFuncs); - return 1; -} - -auto RegisterThemeModule(lua_State* L) -> void { - luaL_requiref(L, "theme", lua_theme, true); - lua_pop(L, 1); -} - -} // namespace lua |
