diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/image.cpp | 19 | ||||
| -rw-r--r-- | src/main.cpp | 13 |
2 files changed, 31 insertions, 1 deletions
diff --git a/src/image.cpp b/src/image.cpp index e7df8b8..091a128 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -1,5 +1,6 @@ #include "image.h" #include "definitions.h" +#include "../imfiledialog/ImFileDialog.h" #define STB_IMAGE_IMPLEMENTATION #include "../stb_image.h" @@ -64,4 +65,22 @@ void ts_load_images() { size = _binary_misc_folder_png_end - _binary_misc_folder_png_start; data = (unsigned char *)_binary_misc_folder_png_start; img_folder = _ts_load_image(data, size); + + ifd::FileDialog::Instance().CreateTexture = [](uint8_t* data, int w, int h, char fmt) -> void* { + GLuint tex; + + glGenTextures(1, &tex); + glBindTexture(GL_TEXTURE_2D, tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); + //glGenerateMipmap(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, 0); + + return (void*)(intptr_t)tex; + }; + ifd::FileDialog::Instance().DeleteTexture = [](void* tex) { + GLuint texID = (GLuint)tex; + glDeleteTextures(1, &texID); + }; }
\ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 5dc0f04..a709ef4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,6 +2,7 @@ #include "../imgui/imgui_spectrum.h" #include "../imgui/imgui_impl_opengl3_loader.h" #include "../imspinner/imspinner.h" +#include "../imfiledialog/imFileDialog.h" #include "../utf8.h" #include "definitions.h" #include "search.h" @@ -328,7 +329,17 @@ void ts_create_gui(int window_w, int window_h) { ImGui::BeginChild("search-boxes2", ImVec2(frame_w, textbox_area_height), false); { ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f); - ImGui::ImageButton("Folder", (void*)(intptr_t)img_folder.id, ImVec2(18.0f, 18.0f)); + if (ImGui::ImageButton("Folder", (void*)(intptr_t)img_folder.id, ImVec2(18.0f, 18.0f))) { + ifd::FileDialog::Instance().Open("FolderSelectDialog", "Select a directory", ""); + } + if (ifd::FileDialog::Instance().IsDone("FolderSelectDialog", window_w, window_h)) { + if (ifd::FileDialog::Instance().HasResult()) { + std::string res = ifd::FileDialog::Instance().GetResult().u8string(); + snprintf(path_buffer, MAX_INPUT_LENGTH, res.c_str()); + } + ifd::FileDialog::Instance().Close(); + } + ImGui::SameLine(); ImGui::PushItemWidth(-1); if (ImGui::InputTextWithHint("filter-ti", "Filter", filter_buffer, MAX_INPUT_LENGTH, ImGuiInputTextFlags_EnterReturnsTrue)) { |
