/* * Copyright 2023 jacqueline * * SPDX-License-Identifier: GPL-3.0-only */ #pragma once #include "lua.hpp" #include "property.hpp" #include "screen.hpp" namespace ui { namespace screens { class Lua : public Screen { public: Lua(); ~Lua(); auto onShown() -> void override; auto onHidden() -> void override; auto canPop() -> bool override; auto SetObjRef(lua_State*) -> void; private: /* Invokes a method on this screen's Lua counterpart. */ auto callMethod(std::string name) -> void; /* Applies fn to each binding in this screen's `bindings` field. */ auto forEachBinding(std::function fn) -> void; lua_State* s_; std::optional obj_ref_; }; } // namespace screens } // namespace ui