#include <content/global_actions.hpp> #include <hex/ui/view.hpp> #include <hex/api/project_file_manager.hpp> #include <hex/helpers/logger.hpp> #include <toasts/toast_notification.hpp> #include <wolv/utils/string.hpp> namespace hex::plugin::builtin { void openProject() { fs::openFileBrowser(fs::DialogMode::Open, { {"Project File", "hexproj"} }, [](const auto &path) { if (!ProjectFile::load(path)) { ui::ToastError::open(hex::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path))); } }); } bool saveProject() { if (!ImHexApi::Provider::isValid()) return false; if (ProjectFile::hasPath()) { if (!ProjectFile::store()) { ui::ToastError::open("hex.builtin.popup.error.project.save"_lang); return false; } else { log::debug("Project saved"); return true; } } else { return saveProjectAs(); } } bool saveProjectAs() { return fs::openFileBrowser(fs::DialogMode::Save, { {"Project File", "hexproj"} }, [](std::fs::path path) { if (path.extension() != ".hexproj") { path.replace_extension(".hexproj"); } if (!ProjectFile::store(path)) { ui::ToastError::open("hex.builtin.popup.error.project.save"_lang); } }); } }