feat: Added workspaces

This commit is contained in:
WerWolv
2023-12-11 15:54:22 +01:00
parent cc4d61f8f5
commit 91230ba438
30 changed files with 273 additions and 67 deletions

View File

@@ -292,7 +292,7 @@ namespace hex {
void setCategoryDescription(const std::string &unlocalizedCategory, const std::string &unlocalizedDescription);
nlohmann::json read(const std::string &unlocalizedCategory, const std::string &unlocalizedName, const nlohmann::json &defaultValue);
[[nodiscard]] nlohmann::json read(const std::string &unlocalizedCategory, const std::string &unlocalizedName, const nlohmann::json &defaultValue);
void write(const std::string &unlocalizedCategory, const std::string &unlocalizedName, const nlohmann::json &value);
}

View File

@@ -25,11 +25,17 @@ namespace hex {
*/
static void load(const std::fs::path &path);
/**
* @brief Saves the current layout to a string
* @return String containing the layout
*/
static std::string saveToString();
/**
* @brief Load a layout from a string
* @param content Layout string
*/
static void loadString(const std::string &content);
static void loadFromString(const std::string &content);
/**
* @brief Get a list of all layouts

View File

@@ -0,0 +1,35 @@
#pragma once
#include <wolv/io/fs.hpp>
#include <map>
#include <string>
namespace hex {
class WorkspaceManager {
public:
struct Workspace {
std::string layout;
std::fs::path path;
};
static void createWorkspace(const std::string &name, const std::string &layout = "");
static void switchWorkspace(const std::string &name);
static void importFromFile(const std::fs::path &path);
static bool exportToFile(std::fs::path path = {});
static const auto& getWorkspaces() { return s_workspaces; }
static const auto& getCurrentWorkspace() { return s_currentWorkspace; }
static void reset();
private:
WorkspaceManager() = default;
static std::map<std::string, WorkspaceManager::Workspace> s_workspaces;
static decltype(s_workspaces)::iterator s_currentWorkspace;
};
}

View File

@@ -50,6 +50,7 @@ namespace hex::fs {
Libraries,
Nodes,
Layouts,
Workspaces,
END
};