X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=theme.h;h=d2f6d2c586a396199af736e6898b6ea0526a2641;hb=e284d1c7a2e18ee7e4aea082c4a57a3504a0f5e8;hp=c2b93c2301b98d2b092bb9bae03b6c240e826503;hpb=b68d8a25951faf5b967b7a35fa0a363b4b68fbc0;p=nageru diff --git a/theme.h b/theme.h index c2b93c2..d2f6d2c 100644 --- a/theme.h +++ b/theme.h @@ -69,6 +69,7 @@ public: return video_inputs; } +#ifdef HAVE_CEF // Should be called as part of HTMLInput.new() only. void register_html_input(CEFCapture *capture) { @@ -79,6 +80,7 @@ public: { return html_inputs; } +#endif void register_video_signal_connection(LiveInputWrapper *live_input, FFmpegCapture *capture) { @@ -90,6 +92,7 @@ public: return video_signal_connections; } +#ifdef HAVE_CEF void register_html_signal_connection(LiveInputWrapper *live_input, CEFCapture *capture) { html_signal_connections.emplace_back(live_input, capture); @@ -99,10 +102,28 @@ public: { return html_signal_connections; } +#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 . @@ -116,10 +137,16 @@ private: std::vector video_inputs; std::vector> video_signal_connections; +#ifdef HAVE_CEF std::vector html_inputs; 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