diff --git a/.gitmodules b/.gitmodules index 4299d8d3..e39b749c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "src/Library/imgui"] path = src/Library/imgui url = https://github.com/ocornut/imgui.git +[submodule "src/Library/ImGuiFileDialog"] + path = src/Library/ImGuiFileDialog + url = https://github.com/aiekick/ImGuiFileDialog.git diff --git a/src/Application/View/Editor.cc b/src/Application/View/Editor.cc index 3e7dee94..2c694568 100644 --- a/src/Application/View/Editor.cc +++ b/src/Application/View/Editor.cc @@ -36,11 +36,25 @@ void Editor::DrawYazeMenu() const { } ImGui::EndMenuBar(); } + + // display + if (ImGuiFileDialog::Instance()->Display("ChooseFileDlgKey")) { + // action if OK + if (ImGuiFileDialog::Instance()->IsOk()) { + std::string filePathName = ImGuiFileDialog::Instance()->GetFilePathName(); + std::string filePath = ImGuiFileDialog::Instance()->GetCurrentPath(); + } + + // close + ImGuiFileDialog::Instance()->Close(); + } + } void Editor::DrawFileMenu() const { if (ImGui::MenuItem("Open", "Ctrl+O")) { // TODO: Add the ability to open ALTTP ROM + ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Open ROM", ".sfc,.smc", "."); } if (ImGui::BeginMenu("Open Recent")) { ImGui::MenuItem("alttp.sfc"); diff --git a/src/Application/View/Editor.h b/src/Application/View/Editor.h index 8889926e..3e697aef 100644 --- a/src/Application/View/Editor.h +++ b/src/Application/View/Editor.h @@ -6,6 +6,7 @@ #include "imgui/backends/imgui_impl_sdl.h" #include "imgui/backends/imgui_impl_sdlrenderer.h" #include "imgui/misc/cpp/imgui_stdlib.h" +#include "ImGuiFileDialog/ImGuiFileDialog.h" namespace yaze { namespace Application { diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 54654b79..9e5b106e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -15,6 +15,14 @@ target_include_directories("ImGui" PUBLIC ${IMGUI_PATH}) target_include_directories(ImGui PUBLIC ${SDL2_INCLUDE_DIR}) target_compile_definitions(ImGui PUBLIC IMGUI_IMPL_OPENGL_LOADER_CUSTOM= GL_GLEXT_PROTOTYPES=1) +# ImGuiFileDialog +set(IMGUI_FILE_DLG_PATH "Library/ImGuiFileDialog") +file(GLOB IMGUI_FILE_DLG_SOURCES ${IMGUI_FILE_DLG_PATH}/*.cpp) +add_library("ImGuiFileDialog" STATIC ${IMGUI_FILE_DLG_SOURCES}) +target_include_directories(ImGuiFileDialog PUBLIC ${IMGUI_PATH}) +target_include_directories(ImGuiFileDialog PUBLIC ${SDL2_INCLUDE_DIR}) +target_compile_definitions(ImGuiFileDialog PUBLIC IMGUI_IMPL_OPENGL_LOADER_CUSTOM= GL_GLEXT_PROTOTYPES=1) + # Executable Linkage -------------------------------------------------------------------------------------- add_executable( yaze @@ -32,6 +40,7 @@ add_executable( ${IMGUI_PATH}/backends/imgui_impl_sdl.cpp ${IMGUI_PATH}/backends/imgui_impl_sdlrenderer.cpp ${IMGUI_PATH}/misc/cpp/imgui_stdlib.cpp + ${IMGUI_FILE_DLG_PATH}/ImGuiFileDialog.cpp ) target_include_directories( diff --git a/src/Library/ImGuiFileDialog b/src/Library/ImGuiFileDialog new file mode 160000 index 00000000..dabf0961 --- /dev/null +++ b/src/Library/ImGuiFileDialog @@ -0,0 +1 @@ +Subproject commit dabf09615e03362605eff65db9434dd5f991acaf