From bd6283f74f4f082534a7539c87bfb3fc7203e3a3 Mon Sep 17 00:00:00 2001 From: Kleber Garcia Date: Thu, 21 Dec 2023 17:18:10 -0500 Subject: [PATCH] Adding dialog support --- Build/Tundra/units.lua | 3 ++- Source/pymodules/gpu/ImguiBuilder.cpp | 21 +++++++++++++++++++++ Source/pymodules/gpu/bindings/Imgui.inl | 13 +++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/Build/Tundra/units.lua b/Build/Tundra/units.lua index 644988fc..2188f978 100644 --- a/Build/Tundra/units.lua +++ b/Build/Tundra/units.lua @@ -39,6 +39,7 @@ local LibIncludes = { Config = "win64-*-*" }, ImguiDir, + ImGuiFileDialogDir, ImplotDir, LibJpgDir, LibPngDir, @@ -330,7 +331,7 @@ local CoalPyModuleIncludes = { } local CoalPyModuleDeps = { - render = { imguiLib, implotLib, spirvreflect, tinyobjloader, cjson }, + render = { imguiLib, ImGuiFileDialog, implotLib, spirvreflect, tinyobjloader, cjson }, texture = { zlibLib, libpngLib, libjpegLib } } diff --git a/Source/pymodules/gpu/ImguiBuilder.cpp b/Source/pymodules/gpu/ImguiBuilder.cpp index a1e080d7..e70ace86 100644 --- a/Source/pymodules/gpu/ImguiBuilder.cpp +++ b/Source/pymodules/gpu/ImguiBuilder.cpp @@ -7,6 +7,7 @@ #include #include //for docking API #include +#include namespace coalpy { @@ -1357,6 +1358,26 @@ PyObject* setColorEditOptions(PyObject* self, PyObject* vargs, PyObject* kwds) Py_RETURN_NONE; } +PyObject* openDialog(PyObject* self, PyObject* vargs, PyObject* kwds) +{ + CHECK_IMGUI + static char* argnames[] = { "key", "title", "filter", "path", nullptr }; + char* key, * title, * filter, * path; + if (!PyArg_ParseTupleAndKeywords(vargs, kwds, "ssss", argnames, &key, &title, &filter, &path)) + return nullptr; + + std::string keyStr = key, titleStr = title, pathStr = path; + ImGuiFileDialog::Instance()->OpenDialog(keyStr, titleStr, filter, pathStr); + + if (ImGuiFileDialog::Instance()->Display(keyStr)) + { + ImGuiFileDialog::Instance()->Close(); + } + + + Py_RETURN_NONE; +} + }//methods diff --git a/Source/pymodules/gpu/bindings/Imgui.inl b/Source/pymodules/gpu/bindings/Imgui.inl index edfb9492..d2f1c6f2 100644 --- a/Source/pymodules/gpu/bindings/Imgui.inl +++ b/Source/pymodules/gpu/bindings/Imgui.inl @@ -721,6 +721,19 @@ COALPY_FN(set_color_edit_options, setColorEditOptions, R"( flags : see coalpy.gpu.ImGuiColorEditFlags )") +COALPY_FN(open_dialog, openDialog, R"( + Open a file dialog + + Parameters: + key (str): key of dialog + title (str): title of dialog + filter (str): file filter, i.e ".cpp.h.hpp" + path (str): path of dialog + + Returns (tuple): + (filePathName, filePath, response(bool)) +)") + //Imgui focus flags enums COALPY_ENUM_BEGIN(ImGuiFocusedFlags, "ImGUI Focused flags")