add a MainMenuBar and make Tile Picker and Demo Window hidden by default

use dockspace for positioning Tile Picker
This commit is contained in:
Sven Balzer 2025-03-21 21:35:45 +01:00
parent dc7c424d7f
commit 002bbcd097

View File

@ -1191,6 +1191,7 @@ int main(int argc, char **argv) {
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;
io.ConfigFlags |= ImGuiConfigFlags_IsSRGB; io.ConfigFlags |= ImGuiConfigFlags_IsSRGB;
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
ImGui::StyleColorsDark(); ImGui::StyleColorsDark();
@ -1208,8 +1209,10 @@ int main(int argc, char **argv) {
}; };
ImGui_ImplSDLGPU3_Init(&imgui_init_info); ImGui_ImplSDLGPU3_Init(&imgui_init_info);
bool show_demo_window = true;
bool first_frame = true; bool first_frame = true;
bool show_demo_window = false;
bool show_tile_picker = false;
SDL_GetWindowSizeInPixels(window, &window_width, &window_height); SDL_GetWindowSizeInPixels(window, &window_width, &window_height);
@ -1237,10 +1240,35 @@ int main(int argc, char **argv) {
calendar_time.minute = real_mod(calendar_time.minute, 60); calendar_time.minute = real_mod(calendar_time.minute, 60);
calendar_time.hour = real_mod(calendar_time.hour, 24); calendar_time.hour = real_mod(calendar_time.hour, 24);
ImGui::SetNextWindowPos(ImVec2(0, 0)); if (ImGui::BeginMainMenuBar()) {
ImGui::SetNextWindowSizeConstraints(ImVec2(0, window_height), ImVec2(window_width, window_height)); if (ImGui::BeginMenu("File")) {
ImGui::SetNextWindowSize(ImVec2(0.2 * window_width, window_height), ImGuiCond_FirstUseEver); ImGui::MenuItem("Demo Window", NULL, &show_demo_window);
if (ImGui::Begin("Tile Picker", NULL, ImGuiWindowFlags_NoFocusOnAppearing)) {
ImGui::EndMenu();
}
if (ImGui::BeginMenu("Edit")) {
ImGui::MenuItem("Tile Picker", NULL, &show_tile_picker);
ImGui::EndMenu();
}
ImGui::EndMainMenuBar();
}
ImGuiID main_viewport_dock = ImGui::GetID("main_viewport_dock");
if (!ImGui::DockBuilderGetNode(main_viewport_dock)) {
ImGui::DockBuilderAddNode (main_viewport_dock, (ImGuiDockNodeFlags)ImGuiDockNodeFlags_DockSpace | ImGuiDockNodeFlags_AutoHideTabBar | ImGuiDockNodeFlags_PassthruCentralNode | ImGuiDockNodeFlags_NoDockingOverCentralNode);
ImGui::DockBuilderSetNodePos (main_viewport_dock, ImGui::GetMainViewport()->WorkPos);
ImGui::DockBuilderSetNodeSize(main_viewport_dock, ImGui::GetMainViewport()->WorkSize);
ImGuiID left_dock = ImGui::DockBuilderSplitNode(main_viewport_dock, ImGuiDir_Left, 0.2f, NULL, NULL);
ImGui::DockBuilderDockWindow("Tile Picker", left_dock);
ImGui::DockBuilderFinish(main_viewport_dock);
}
ImGui::DockSpaceOverViewport(main_viewport_dock, ImGui::GetMainViewport(), ImGuiDockNodeFlags_AutoHideTabBar | ImGuiDockNodeFlags_PassthruCentralNode | ImGuiDockNodeFlags_NoDockingOverCentralNode);
if (show_tile_picker) {
if (ImGui::Begin("Tile Picker", &show_tile_picker, ImGuiWindowFlags_NoFocusOnAppearing)) {
if (SelectableTile("##tile", selected_tile == -1, NULL, 0, ImVec2(32, 32))) { if (SelectableTile("##tile", selected_tile == -1, NULL, 0, ImVec2(32, 32))) {
selected_tile = -1; selected_tile = -1;
} }
@ -1328,6 +1356,7 @@ int main(int argc, char **argv) {
} }
} }
ImGui::End(); ImGui::End();
}
if (show_demo_window) if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window); ImGui::ShowDemoWindow(&show_demo_window);
@ -1680,5 +1709,10 @@ int main(int argc, char **argv) {
} }
FrameMark; FrameMark;
} }
ImGui_ImplSDLGPU3_Shutdown();
ImGui_ImplSDL3_Shutdown();
ImGui::DestroyContext();
return 0; return 0;
} }