]> git.sesse.net Git - nageru/blobdiff - theme.h
Do not link kaeru against CEF.
[nageru] / theme.h
diff --git a/theme.h b/theme.h
index c2b93c2301b98d2b092bb9bae03b6c240e826503..d2f6d2c586a396199af736e6898b6ea0526a2641 100644 (file)
--- 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<MenuEntry> 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<void()> 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 <m>.
@@ -116,10 +137,16 @@ private:
 
        std::vector<FFmpegCapture *> video_inputs;
        std::vector<std::pair<LiveInputWrapper *, FFmpegCapture *>> video_signal_connections;
+#ifdef HAVE_CEF
        std::vector<CEFCapture *> html_inputs;
        std::vector<std::pair<LiveInputWrapper *, CEFCapture *>> html_signal_connections;
+#endif
+
+       std::vector<MenuEntry> theme_menu;
+       std::function<void()> theme_menu_callback;
 
        friend class LiveInputWrapper;
+       friend int ThemeMenu_set(lua_State *L);
 };
 
 // LiveInputWrapper is a facade on top of an YCbCrInput, exposed to