36 lines
1.2 KiB
C++
36 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <psemek/ui/impl/component.hpp>
|
|
#include <psemek/ui/key.hpp>
|
|
#include <psemek/util/signal.hpp>
|
|
|
|
#include <any>
|
|
#include <optional>
|
|
#include <vector>
|
|
|
|
namespace psemek::ui::impl
|
|
{
|
|
|
|
struct container
|
|
: component
|
|
{
|
|
virtual void set_children(std::vector<std::unique_ptr<component>> children);
|
|
virtual void set_children_token(util::signal<std::vector<std::any>>::subscription_token token);
|
|
virtual void set_child_tokens(std::vector<util::signal<std::any>::subscription_token> tokens);
|
|
virtual void set_child_keys(std::vector<std::optional<key>> keys);
|
|
|
|
virtual std::vector<std::unique_ptr<component>> release_children();
|
|
virtual util::signal<>::subscription_token release_children_token();
|
|
virtual std::vector<util::signal<>::subscription_token> release_child_tokens();
|
|
virtual std::vector<std::optional<key>> release_child_keys();
|
|
|
|
util::span<std::unique_ptr<component> const> children() const override;
|
|
|
|
private:
|
|
util::signal<>::subscription_token children_token_;
|
|
std::vector<std::unique_ptr<component>> children_;
|
|
std::vector<util::signal<>::subscription_token> child_tokens_;
|
|
std::vector<std::optional<key>> child_keys_;
|
|
};
|
|
|
|
}
|