15 ImGui::PushID(imguiIds);
18 if (!ImGui::Begin(ICON_NAME, &open))
26 static int selected = 0;
28 std::string selectedContainerToLaunch =
"";
32 if (ImGui::BeginChild(
"item view", ImVec2(0, -ImGui::GetFrameHeightWithSpacing())))
34 if (ImGui::BeginTabBar(
"##Tabs", ImGuiTabBarFlags_Reorderable))
36 if (ImGui::BeginTabItem(ICON_FK_PLUS_SQUARE_O
" Create container"))
38 ImGui::Text(
"Available containers");
42 ImGui::PushID(imguiIds + 1);
46 static char filter[256] = {};
48 std::vector<std::string> containerNames;
49 containerNames.reserve(loadedDll.containerInfo.size());
51 for (
auto& i : loadedDll.containerInfo)
53 containerNames.push_back(i.containerName);
56 auto contentSize = ImGui::GetItemRectSize();
57 contentSize.y -= ImGui::GetFrameHeightWithSpacing();
60 ImGui::ListWithFilter(
"##list box container info", &itemCurrentAvailableCOntainers, filter,
sizeof(filter),
61 containerNames, contentSize);
71 ImGui::PushID(imguiIds + 2);
74 if (itemCurrentAvailableCOntainers < loadedDll.containerInfo.size())
76 auto& c = loadedDll.containerInfo[itemCurrentAvailableCOntainers];
78 ImGui::Text(
"Container info: %s", c.containerName.c_str());
81 selectedContainerToLaunch = c.containerName;
83 ImGui::Text(ICON_FK_PIE_CHART
" Memory");
88#pragma region total memory requirement
89 size_t totalHeapMemory = c.containerStaticInfo.defaultHeapMemorySize;
90 for (
auto i : c.containerStaticInfo.bonusAllocators)
95 size_t totalMemory = totalHeapMemory + c.containerStructBaseSize;
97 ImGui::Text(
"Total Memory requirement: ");
101 ImGui::Text(
"Total Heap requirement: ");
108 ImGui::Text(
"Static Memory requirement: ");
112 ImGui::Text(
"Default Heap Memory requirement: ");
116 ImGui::Text(
"Other Heap Memory Allocators count: ");
121 if (!c.containerStaticInfo.bonusAllocators.empty())
123 if (ImGui::BeginChild(
"##heap allocators",
124 { 0, 100 },
true, ImGuiWindowFlags_AlwaysVerticalScrollbar))
127 for (
auto i : c.containerStaticInfo.bonusAllocators)
140 ImGui::Text(ICON_FK_PLUS_SQUARE_O
" Launch");
145 if (!selectedContainerToLaunch.empty()
146 && ImGui::Button(ICON_FK_PLAY
" Launch a default configuration"))
148 if (createAtSpecificMemoryRegion)
151 logManager, imguiIdsManager, std::string(),
samurai::TB(1));
155 containerManager.
createContainer(selectedContainerToLaunch, loadedDll, logManager,
156 imguiIdsManager, std::string());
160 ImGui::Checkbox(
"allocate at specific memory region", &createAtSpecificMemoryRegion);
166 ImGui::Text(
"Container info:");
179 if (ImGui::BeginTabItem(ICON_FK_MICROCHIP
" Running containers"))
183 ImGui::Text(
"Running containers");
190 std::vector<samurai::containerId_t> containerIds;
191 std::vector<std::string> containerNames;
193 ImGui::PushID(imguiIds + 3);
202 containerIds.push_back(i.first);
203 containerNames.push_back(
204 std::string(i.second.baseContainerName) +
": " + std::to_string(i.first));
207 auto contentSize = ImGui::GetItemRectSize();
208 contentSize.y -= ImGui::GetFrameHeightWithSpacing();
211 ImGui::ListWithFilter(
"##list box container info", &itemCurrentCreatedContainers,
212 filterContainerInfo,
sizeof(filterContainerInfo),
213 containerNames, contentSize);
223 ImGui::PushID(imguiIds + 4);
226 if (itemCurrentCreatedContainers < containerIds.size())
228 auto& c = containerManager.
runningContainers[containerIds[itemCurrentCreatedContainers]];
231 ImGui::Text(
"Running container: %s #%u", c.baseContainerName, containerIds[itemCurrentCreatedContainers]);
234#pragma region buttons
238 ImGuiStyle& style = ImGui::GetStyle();
240 width += ImGui::CalcTextSize(ICON_FK_PAUSE).x;
241 width += style.ItemSpacing.x;
242 width += ImGui::CalcTextSize(ICON_FK_PAUSE).x;
243 width += style.ItemSpacing.x;
244 width += ImGui::CalcTextSize(ICON_FK_PAUSE).x;
253 bool stopped =
false;
255 if (ImGui::Button(ICON_FK_STOP))
258 containerManager.
destroyContainer(containerIds[itemCurrentCreatedContainers], loadedDll, logManager);
261 if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
263 ImGui::SetTooltip(
"Stop container.");
268 if (ImGui::Button(ICON_FK_EJECT))
274 if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
276 ImGui::SetTooltip(
"Force stop container (not recomended).\nThis won't call any destructors.");