diff --git a/wpigui/.styleguide b/wpigui/.styleguide index 9a462a3759..225b12a846 100644 --- a/wpigui/.styleguide +++ b/wpigui/.styleguide @@ -27,4 +27,5 @@ includeOtherLibs { ^imgui ^implot ^stb + ^wpi/ } diff --git a/wpigui/CMakeLists.txt b/wpigui/CMakeLists.txt index 59c4d6fafb..ec4628977c 100644 --- a/wpigui/CMakeLists.txt +++ b/wpigui/CMakeLists.txt @@ -15,7 +15,7 @@ set_property(TARGET wpigui PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET wpigui PROPERTY FOLDER "libraries") wpilib_target_warnings(wpigui) -target_link_libraries(wpigui PUBLIC imgui) +target_link_libraries(wpigui PUBLIC imgui wpiutil) target_include_directories(wpigui PUBLIC $ diff --git a/wpigui/build.gradle b/wpigui/build.gradle index 5959b67026..5b8c4b2abc 100644 --- a/wpigui/build.gradle +++ b/wpigui/build.gradle @@ -62,6 +62,7 @@ if (!project.hasProperty('onlylinuxathena') && !project.hasProperty('onlylinuxra } binaries.all { nativeUtils.useRequiredLibrary(it, 'imgui_static') + lib project: ':wpiutil', library: 'wpiutil', linkage: 'shared' if (it.targetPlatform.name == nativeUtils.wpi.platforms.roborio || it.targetPlatform.name == nativeUtils.wpi.platforms.raspbian || it.targetPlatform.name == nativeUtils.wpi.platforms.aarch64bionic) { it.buildable = false return @@ -119,6 +120,7 @@ if (!project.hasProperty('onlylinuxathena') && !project.hasProperty('onlylinuxra binaries.all { lib library: 'wpigui' nativeUtils.useRequiredLibrary(it, 'imgui_static') + lib project: ':wpiutil', library: 'wpiutil', linkage: 'shared' } } } diff --git a/wpigui/src/main/native/cpp/wpigui.cpp b/wpigui/src/main/native/cpp/wpigui.cpp index 3843522e55..4b200b5af9 100644 --- a/wpigui/src/main/native/cpp/wpigui.cpp +++ b/wpigui/src/main/native/cpp/wpigui.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include "wpigui_internal.h" @@ -290,6 +291,11 @@ void gui::Main() { ImPlot::DestroyContext(); ImGui::DestroyContext(); + // Delete the save file if requested. + if (gContext->resetOnExit) { + fs::remove(fs::path{gContext->iniPath}); + } + glfwDestroyWindow(gContext->window); glfwTerminate(); } @@ -466,6 +472,8 @@ void gui::EmitViewMenu() { } ImGui::EndMenu(); } + + ImGui::MenuItem("Reset UI on Exit?", nullptr, &gContext->resetOnExit); ImGui::EndMenu(); } } diff --git a/wpigui/src/main/native/include/wpigui_internal.h b/wpigui/src/main/native/include/wpigui_internal.h index c891a29d2d..13e504cccf 100644 --- a/wpigui/src/main/native/include/wpigui_internal.h +++ b/wpigui/src/main/native/include/wpigui_internal.h @@ -57,6 +57,7 @@ struct Context : public SavedSettings { std::vector icons; std::string iniPath = "imgui.ini"; + bool resetOnExit = false; }; extern Context* gContext;