infinipaint/src/GUIStuff/Elements/TreeListing.hpp

31 lines
1.3 KiB
C++
Raw Normal View History

2025-12-20 16:38:51 +03:00
#pragma once
#include "Element.hpp"
2025-12-21 00:33:04 +03:00
#include <Helpers/NetworkingObjects/NetObjID.hpp>
2025-12-20 16:38:51 +03:00
namespace GUIStuff {
class GUIManager;
class TreeListing : public Element {
public:
2025-12-21 00:33:04 +03:00
static constexpr float ENTRY_HEIGHT = 25.0f;
struct DisplayData {
struct ObjInList {
NetworkingObjects::NetObjID id;
bool isDirectory = false;
bool isDirectoryOpen = false;
};
std::function<std::optional<ObjInList>(NetworkingObjects::NetObjID, size_t)> getObjInListAtIndex;
std::function<void(NetworkingObjects::NetObjID, bool)> setDirectoryOpen;
std::function<bool(NetworkingObjects::NetObjID)> drawNonDirectoryObjIconGUI;
std::function<bool(NetworkingObjects::NetObjID, NetworkingObjects::NetObjID)> drawObjGUI;
};
void update(UpdateInputData& io, GUIManager& gui, NetworkingObjects::NetObjID rootObjID, const DisplayData& displayData);
2025-12-20 16:38:51 +03:00
virtual void clay_draw(SkCanvas* canvas, UpdateInputData& io, Clay_RenderCommand* command) override;
private:
2025-12-21 00:33:04 +03:00
void recursive_gui(UpdateInputData& io, GUIManager& gui, const DisplayData& displayData, NetworkingObjects::NetObjID objID, size_t& itemCount, size_t itemCountToStartAt, size_t itemCountToEndAt, size_t listDepth);
2025-12-20 16:38:51 +03:00
std::optional<NetworkingObjects::NetObjID> objSelected;
};
}