X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=theme.h;h=d2f6d2c586a396199af736e6898b6ea0526a2641;hb=e284d1c7a2e18ee7e4aea082c4a57a3504a0f5e8;hp=f7897c77f9bf6b16ae3e5927af9b4c212ae21cc4;hpb=36afa76e579a3afaaf6826a76f33baff049a54ed;p=nageru diff --git a/theme.h b/theme.h index f7897c7..d2f6d2c 100644 --- a/theme.h +++ b/theme.h @@ -104,9 +104,26 @@ public: } #endif + struct MenuEntry { + std::string text; + int lua_ref; + }; + std::vector get_theme_menu() { return theme_menu; } // Can be empty for no menu. + void theme_menu_entry_clicked(int lua_ref); + + // Will be invoked every time the theme sets a new menu. + // Is not invoked for a menu that exists at the time of the callback. + void set_theme_menu_callback(std::function callback) + { + theme_menu_callback = callback; + } + private: void register_constants(); void register_class(const char *class_name, const luaL_Reg *funcs); + int set_theme_menu(lua_State *L); + + std::string theme_path; std::mutex m; lua_State *L; // Protected by . @@ -125,7 +142,11 @@ private: std::vector> html_signal_connections; #endif + std::vector theme_menu; + std::function theme_menu_callback; + friend class LiveInputWrapper; + friend int ThemeMenu_set(lua_State *L); }; // LiveInputWrapper is a facade on top of an YCbCrInput, exposed to