MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / ApplicationView

Class ApplicationView

Examples/SCExample/SCExample.cpp:235–320  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

233};
234
235struct ApplicationView
236{
237 ApplicationSystem& system;
238 ApplicationState& state;
239 ApplicationViewState& viewState;
240
241 void draw()
242 {
243 drawToolbar();
244 ImGui::SetNextWindowPos(ImVec2(0, ToolbarHeight));
245 const float width = viewState.page == ApplicationPage::Settings ? 350 : ImGui::GetIO().DisplaySize.x;
246 ImGui::SetNextWindowSize(ImVec2(width, ImGui::GetIO().DisplaySize.y - ToolbarHeight));
247 constexpr auto flags = ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoTitleBar |
248 ImGuiWindowFlags_NoScrollbar;
249 if (ImGui::Begin("Body", nullptr, flags))
250 {
251 if (viewState.page == ApplicationPage::Settings)
252 {
253 drawSettings();
254 }
255 else
256 {
257 HotReloadView view{system.hotReloadSystem, system.hotReloadSystem.state, viewState.exampleViewState};
258 view.drawBody();
259 }
260 }
261 ImGui::End();
262 }
263
264 void drawToolbar()
265 {
266 ImGui::SetNextWindowPos(ImVec2(0, 0));
267 ImGui::SetNextWindowSize(ImVec2(ImGui::GetIO().DisplaySize.x, ToolbarHeight));
268 constexpr auto flags = ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoTitleBar |
269 ImGuiWindowFlags_NoScrollbar;
270 if (ImGui::Begin("Toolbar", nullptr, flags))
271 {
272 if (ImGui::Button("Settings..."))
273 {
274 viewState.page = ApplicationPage::Settings;
275 }
276 HotReloadView view{system.hotReloadSystem, system.hotReloadSystem.state, viewState.exampleViewState};
277 if (view.drawToolbar())
278 {
279 viewState.page = ApplicationPage::Examples;
280 }
281 }
282 ImGui::End();
283 }
284
285 void drawSettings()
286 {
287 if (ImGui::CollapsingHeader("SC::Async", ImGuiTreeNodeFlags_DefaultOpen))
288 {
289 drawSettingsAsync();
290 }
291 if (ImGui::CollapsingHeader("SC::Plugin", ImGuiTreeNodeFlags_DefaultOpen))
292 {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected