Loading...
Searching...
No Matches
FileDialog.h
Go to the documentation of this file.
1//
2// Created by denzel on 11/04/2025.
3//
4#pragma once
5#include <filesystem>
6#include <string>
7#include <vector>
8
9namespace hellfire::Utility {
10
11 struct FileFilter {
12 std::string name;
13 std::string extensions;
14 };
15
16 class FileDialog {
17 public:
18 static std::string open_file(const std::vector<FileFilter>& filters = {}, const std::filesystem::path& default_path = "");
19
20 static std::string select_folder(const std::string &title);
21
22 static std::string save_file(std::string &save_name_to, const std::string &default_filename,
23 const std::vector<FileFilter> &filters, const std::filesystem::path &default_path = "");
24
25 private:
26 // Platform-specific implementations
27 static std::string win32_open_file(const std::vector<FileFilter>& filters, const std::filesystem::path &default_path);
28 static std::string win32_save_file(const std::string &default_filename,
29 const std::vector<FileFilter> &filters, std::string &save_name_to, const std::filesystem::path &default_path);
30 static std::string imgui_open_file(const std::vector<FileFilter>& filters);
31
32 static std::string win32_select_folder(const std::string &title);
33
34 static std::string imgui_save_file(const std::string& default_filename,
35 const std::vector<FileFilter>& filters);
36 };
37
38} // namespace hellfire::Utility
static std::string imgui_open_file(const std::vector< FileFilter > &filters)
static std::string select_folder(const std::string &title)
static std::string open_file(const std::vector< FileFilter > &filters={}, const std::filesystem::path &default_path="")
static std::string imgui_save_file(const std::string &default_filename, const std::vector< FileFilter > &filters)
static std::string win32_open_file(const std::vector< FileFilter > &filters, const std::filesystem::path &default_path)
static std::string win32_select_folder(const std::string &title)
static std::string win32_save_file(const std::string &default_filename, const std::vector< FileFilter > &filters, std::string &save_name_to, const std::filesystem::path &default_path)
static std::string save_file(std::string &save_name_to, const std::string &default_filename, const std::vector< FileFilter > &filters, const std::filesystem::path &default_path="")