]> git.sesse.net Git - nageru/blobdiff - nageru/theme.h
Make it possible to call set_channel_name() for live and preview.
[nageru] / nageru / theme.h
index d955e643458773eefa3527176d088072744264fa..b4e8d8c406bcd612637eb662882d04798a115f2d 100644 (file)
@@ -149,12 +149,15 @@ public:
 #endif
 
        struct MenuEntry {
-               MenuEntry(const std::string &text, lua_State *L, int lua_ref)
-                       : text(text), is_submenu(false), entry{L, lua_ref} {}
+               MenuEntry(const std::string &text, lua_State *L, int lua_ref, unsigned flags)
+                       : text(text), is_submenu(false), entry{L, lua_ref, flags} {}
                MenuEntry(const std::string &text, std::vector<std::unique_ptr<MenuEntry>> submenu)
                        : text(text), is_submenu(true), submenu(std::move(submenu)) {}
                ~MenuEntry();
 
+               static constexpr unsigned CHECKABLE = 1;
+               static constexpr unsigned CHECKED = 2;
+
                std::string text;
                bool is_submenu;
 
@@ -163,6 +166,7 @@ public:
                        struct {
                                lua_State *L;
                                int lua_ref;
+                               unsigned flags;
                        } entry;
 
                        // is_submenu = true.
@@ -219,12 +223,16 @@ private:
        std::function<void()> theme_menu_callback;
 
        std::map<unsigned, std::string> channel_names;  // Set using Nageru.set_channel_name(). Protected by <m>.
+       std::map<unsigned, int> channel_signals;  // Set using Nageru.set_channel_signal(). Protected by <m>.
+       std::map<unsigned, bool> channel_supports_wb;  // Set using Nageru.set_supports_wb(). Protected by <m>.
 
        friend class LiveInputWrapper;
        friend class Scene;
        friend int ThemeMenu_set(lua_State *L);
        friend int Nageru_set_channel_name(lua_State *L);
        friend int Nageru_set_num_channels(lua_State *L);
+       friend int Nageru_set_channel_signal(lua_State *L);
+       friend int Nageru_set_supports_wb(lua_State *L);
 };
 
 // LiveInputWrapper is a facade on top of an YCbCrInput, exposed to