#ifndef WIDGETS_HPP_INCLUDED
#define WIDGETS_HPP_INCLUDED

#include "../../Game/Interactable/Widget.hpp"
#include <functional>
#include <cstdint>
#include <vector>

/** @addtogroup Tools
* @{ */
class Widgets
{
    public:

        static std::vector<std::vector<Interactable::Widget>> GetAll();
        static std::vector<Interactable::Widget> GetAll(std::int32_t Parent);
        static std::vector<Interactable::Widget> GetAll(const std::function<bool (Interactable::Widget&)>& Filter);

        static Interactable::Widget Get(std::int32_t Parent, std::int32_t Child = -1);
        static Interactable::Widget Get(std::int32_t Parent, std::int32_t Child, std::int32_t Grandchild);
        static Interactable::Widget Get(const std::function<bool (Interactable::Widget&)>& Filter);
};

/** @} */

#endif // WIDGETS_HPP_INCLUDED
