| 233 | }; |
| 234 | |
| 235 | struct 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 | { |
nothing calls this directly
no outgoing calls
no test coverage detected