From ae96e9b0489b3a9a8b02dd7ee157ec2547942589 Mon Sep 17 00:00:00 2001 From: GhostofCookie Date: Mon, 17 Feb 2025 12:19:12 -0500 Subject: [PATCH] Added std::filesystem input field. --- src/Editor.cpp | 1 + src/utilities/Widgets.hpp | 14 ++++++++++++++ src/views/PortView.cpp | 2 +- src/widgets/InputField.cpp | 3 +++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Editor.cpp b/src/Editor.cpp index 489f315..0667a05 100644 --- a/src/Editor.cpp +++ b/src/Editor.cpp @@ -147,6 +147,7 @@ void Editor::Init(const std::string& initial_file) _factory->RegisterInputType(std::chrono::days::zero()); _factory->RegisterInputType(std::chrono::months::zero()); _factory->RegisterInputType(std::chrono::years::zero()); + _factory->RegisterInputType(std::filesystem::path("")); auto node_explorer = std::make_shared(_env); OnActiveGraphChanged.Bind("NodeExplorer", [window = node_explorer](const auto& g) { window->SetActiveGraph(g); }); diff --git a/src/utilities/Widgets.hpp b/src/utilities/Widgets.hpp index 4111e38..e674c61 100644 --- a/src/utilities/Widgets.hpp +++ b/src/utilities/Widgets.hpp @@ -4,6 +4,7 @@ #pragma once #include "Core.hpp" +#include "FileExplorer.hpp" #include "Style.hpp" #include @@ -16,6 +17,7 @@ #include #include +#include #include FLOW_UI_SUBNAMESPACE_START(widgets) @@ -210,4 +212,16 @@ inline bool InputField(std::string_view name, std::chrono::y return InputChrono(name, value, flags); } +template<> +inline bool InputField(std::string_view, std::filesystem::path& value, ImGuiInputTextFlags) +{ + if (ImGui::Button("Select File")) + { + value = FileExplorer::Load(FileExplorer::GetDocumentsPath(), "", "*"); + return true; + } + + return false; +} + FLOW_UI_SUBNAMESPACE_END diff --git a/src/views/PortView.cpp b/src/views/PortView.cpp index f1e68b4..ad12ce2 100644 --- a/src/views/PortView.cpp +++ b/src/views/PortView.cpp @@ -136,7 +136,7 @@ void PortView::DrawLabel() if (!_show_label) return; ImGui::AlignTextToFramePadding(); - ImGui::TextUnformatted(std::string{Name()}.c_str()); + ImGui::TextUnformatted(std::string{Name().substr(0, Name().find("##"))}.c_str()); } void PortView::DrawIcon(float alpha) { ::flow::ui::DrawPinIcon(*this, IsConnected(), static_cast(alpha * 255)); } diff --git a/src/widgets/InputField.cpp b/src/widgets/InputField.cpp index e541841..ba8c103 100644 --- a/src/widgets/InputField.cpp +++ b/src/widgets/InputField.cpp @@ -3,6 +3,8 @@ #include +#include + FLOW_UI_SUBNAMESPACE_START(widgets) template @@ -44,5 +46,6 @@ template class Input; template class Input; template class Input; template class Input; +template class Input; FLOW_UI_SUBNAMESPACE_END