]> git.sesse.net Git - nageru/blobdiff - nageru/theme.cpp
Make it possible to put checkboxes on theme menu entries.
[nageru] / nageru / theme.cpp
index ec8f43191aefb0f31d3bef4aae0e7c1b588cba81..ce3d2d6d55c917f6fdc0afba77c1cec348428ca2 100644 (file)
@@ -1412,6 +1412,8 @@ void Theme::register_globals()
        const vector<pair<string, int>> num_constants = {
                { "VIDEO_FORMAT_BGRA", bmusb::PixelFormat_8BitBGRA },
                { "VIDEO_FORMAT_YCBCR", bmusb::PixelFormat_8BitYCbCrPlanar },
+               { "CHECKABLE", MenuEntry::CHECKABLE },
+               { "CHECKED", MenuEntry::CHECKED },
        };
        const vector<pair<string, string>> str_constants = {
                { "THEME_PATH", theme_path },
@@ -1802,6 +1804,13 @@ unique_ptr<Theme::MenuEntry> create_theme_menu_entry(lua_State *L, int index)
        const string text = checkstdstring(L, -1);
        lua_pop(L, 1);
 
+       unsigned flags = 0;
+       if (lua_objlen(L, -1) > 2) {
+               lua_rawgeti(L, -1, 3);
+               flags = luaL_checknumber(L, -1);
+               lua_pop(L, 1);
+       }
+
        lua_rawgeti(L, index, 2);
        if (lua_istable(L, -1)) {
                vector<unique_ptr<Theme::MenuEntry>> submenu = create_recursive_theme_menu(L);
@@ -1810,7 +1819,7 @@ unique_ptr<Theme::MenuEntry> create_theme_menu_entry(lua_State *L, int index)
        } else {
                luaL_checktype(L, -1, LUA_TFUNCTION);
                int ref = luaL_ref(L, LUA_REGISTRYINDEX);
-               entry.reset(new Theme::MenuEntry{ text, L, ref });
+               entry.reset(new Theme::MenuEntry{ text, L, ref, flags });
        }
        return entry;
 }