forked from hoffstadt/DearPyGui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmvItemRegistry.h
108 lines (92 loc) · 4.58 KB
/
mvItemRegistry.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#pragma once
#include <stack>
#include <vector>
#include <unordered_map>
#include <queue>
#include <string>
#include <mutex>
#include <map>
#include "mvAppItem.h"
#include "cpp.hint"
#include "mvPyObject.h"
//-----------------------------------------------------------------------------
// forward declarations
//-----------------------------------------------------------------------------
struct mvItemRegistry;
class mvWindowAppItem;
//-----------------------------------------------------------------------------
// public API
//-----------------------------------------------------------------------------
void RenderItemRegistry(mvItemRegistry& registry);
// cleanup
void ClearItemRegistry(mvItemRegistry& registry);
void CleanUpItem (mvItemRegistry& registry, mvUUID uuid);
b8 DeleteItem (mvItemRegistry& registry, mvUUID uuid, b8 childrenOnly = false, i32 slot = -1);
// aliases
void AddAlias (mvItemRegistry& registry, const std::string& alias, mvUUID id);
void RemoveAlias (mvItemRegistry& registry, const std::string& alias, b8 itemTriggered = false);
mvUUID GetIdFromAlias(mvItemRegistry& registry, const std::string& alias);
// item movement
b8 MoveItem (mvItemRegistry& registry, mvUUID uuid, mvUUID parent, mvUUID before);
b8 MoveItemUp (mvItemRegistry& registry, mvUUID uuid);
b8 MoveItemDown(mvItemRegistry& registry, mvUUID uuid);
// item retrieval
mvUUID GetIDFromPyObject(PyObject* item);
mvAppItem* GetItem (mvItemRegistry& registry, mvUUID uuid);
mvRef<mvAppItem> GetRefItem (mvItemRegistry& registry, mvUUID uuid);
mvWindowAppItem* GetWindow (mvItemRegistry& registry, mvUUID uuid);
mvAppItem* GetItemRoot (mvItemRegistry& registry, mvUUID uuid);
// item operations
void DelaySearch (mvItemRegistry& registry, mvAppItem* item);
b8 AddItemWithRuntimeChecks(mvItemRegistry& registry, mvRef<mvAppItem> item, mvUUID parent, mvUUID before);
void ResetTheme (mvItemRegistry& registry);
//-----------------------------------------------------------------------------
// mvItemRegistry
// - Responsibilities:
// * holds widget hierarchy roots (windows)
// * keeping up with the active window
// * managing the parent deduction system (parent stack)
// * acts as the interface for accessing widgets
// * creates the "standard" windows on startup (debug, about, etc.)
//-----------------------------------------------------------------------------
struct mvItemRegistry
{
static constexpr i32 CachedContainerCount = 25;
// caching
mvUUID lastItemAdded = 0;
mvUUID lastContainerAdded = 0;
mvUUID lastRootAdded = 0;
i32 cachedContainerIndex = 0;
i32 cachedItemsIndex = 0;
mvUUID cachedItemsID[CachedContainerCount];
mvAppItem* cachedItemsPTR[CachedContainerCount];
mvUUID cachedContainersID[CachedContainerCount];
mvAppItem* cachedContainersPTR[CachedContainerCount];
// misc
std::stack<mvAppItem*> containers; // parent stack, top of stack becomes widget's parent
std::unordered_map<std::string, mvUUID> aliases;
mvUUID activeWindow = 0;
std::vector<mvAppItem*> delayedSearch;
b8 showImGuiDebug = false;
b8 showImPlotDebug = false;
mvRef<mvAppItem> boundedTemplateRegistry;
std::vector<mvRef<mvAppItem>> debugWindows;
mvRef<mvAppItem> capturedItem = nullptr;
PyObject* captureCallback = nullptr;
PyObject* captureCallbackUserData = nullptr;
// roots
std::vector<mvRef<mvAppItem>> colormapRoots;
std::vector<mvRef<mvAppItem>> filedialogRoots;
std::vector<mvRef<mvAppItem>> stagingRoots;
std::vector<mvRef<mvAppItem>> viewportMenubarRoots;
std::vector<mvRef<mvAppItem>> windowRoots;
std::vector<mvRef<mvAppItem>> fontRegistryRoots;
std::vector<mvRef<mvAppItem>> handlerRegistryRoots;
std::vector<mvRef<mvAppItem>> itemHandlerRegistryRoots;
std::vector<mvRef<mvAppItem>> textureRegistryRoots;
std::vector<mvRef<mvAppItem>> valueRegistryRoots;
std::vector<mvRef<mvAppItem>> themeRegistryRoots;
std::vector<mvRef<mvAppItem>> itemTemplatesRoots;
std::vector<mvRef<mvAppItem>> viewportDrawlistRoots;
mvItemRegistry();
};