#ifndef FRONTEND_UI_DOCUMENT_HPP_ #define FRONTEND_UI_DOCUMENT_HPP_ #include "../typedefs.hpp" #include #include #include #include namespace fs = std::filesystem; namespace gui { class UINode; } struct uidocscript { bool onopen : 1; bool onprogress : 1; bool onclose : 1; }; using uinodes_map = std::unordered_map>; class UiDocument { std::string id; uidocscript script; uinodes_map map; std::shared_ptr root; scriptenv env; public: UiDocument( std::string id, uidocscript script, const std::shared_ptr &root, scriptenv env ); void rebuildIndices(); const std::string& getId() const; const uinodes_map& getMap() const; uinodes_map& getMapWriteable(); std::shared_ptr getRoot() const; std::shared_ptr get(const std::string& id) const; const uidocscript& getScript() const; scriptenv getEnvironment() const; static std::unique_ptr read(const scriptenv& parent_env, const std::string& name, const fs::path& file); static std::shared_ptr readElement(const fs::path& file); }; #endif // FRONTEND_UI_DOCUMENT_HPP_