diff options
Diffstat (limited to 'core/src/Model/Workflow')
-rw-r--r-- | core/src/Model/Workflow/Workflow.hpp | 16 | ||||
-rw-r--r-- | core/src/Model/Workflow/Workflow_Main.cpp | 14 | ||||
-rw-r--r-- | core/src/Model/Workflow/fwd.hpp | 11 |
3 files changed, 36 insertions, 5 deletions
diff --git a/core/src/Model/Workflow/Workflow.hpp b/core/src/Model/Workflow/Workflow.hpp index 0aabcdc..99e4e90 100644 --- a/core/src/Model/Workflow/Workflow.hpp +++ b/core/src/Model/Workflow/Workflow.hpp @@ -7,6 +7,7 @@ #include <imgui_node_editor.h> #include <cstddef> #include <cstdint> +#include <filesystem> #include <iosfwd> #include <limits> #include <memory> @@ -135,14 +136,14 @@ public: void DisconnectInput(uint32_t pinId); void DrawInputPinDebugInfo(uint32_t pinId) const; - const InputPin& GetInputPin(uint32_t pinId)const ; + const InputPin& GetInputPin(uint32_t pinId) const; ImNodes::PinId GetInputPinUniqueId(uint32_t pinId) const; void ConnectOutput(uint32_t pinId, WorkflowNode& dstNode, uint32_t dstPinId); void DisconnectOutput(uint32_t pinId); - void DrawOutputPinDebugInfo(uint32_t pinId)const; - const OutputPin& GetOutputPin(uint32_t pinId)const ; + void DrawOutputPinDebugInfo(uint32_t pinId) const; + const OutputPin& GetOutputPin(uint32_t pinId) const; ImNodes::PinId GetOutputPinUniqueId(uint32_t pinId) const; virtual void Evaluate(WorkflowEvaluationContext& ctx) = 0; @@ -170,6 +171,15 @@ protected: void OnDetach(); }; +struct WorkflowInfo +{ + std::string Name; + std::string PathStringCache = Path.string(); + std::filesystem::path Path; + + std::unique_ptr<Workflow> LoadFromDisk() const; +}; + class Workflow { private: diff --git a/core/src/Model/Workflow/Workflow_Main.cpp b/core/src/Model/Workflow/Workflow_Main.cpp index c9ae328..bfe007c 100644 --- a/core/src/Model/Workflow/Workflow_Main.cpp +++ b/core/src/Model/Workflow/Workflow_Main.cpp @@ -4,6 +4,7 @@ #include <imgui_node_editor.h> #include <tsl/robin_set.h> #include <cassert> +#include <fstream> #include <iostream> #include <queue> #include <utility> @@ -319,6 +320,19 @@ void WorkflowNode::OnDetach() { } +std::unique_ptr<Workflow> WorkflowInfo::LoadFromDisk() const +{ + std::ifstream ifs(this->Path); + if (!ifs) return nullptr; + + auto workflow = std::make_unique<Workflow>(); + if (workflow->ReadFrom(ifs) == Workflow::RR_Success) { + return workflow; + } + + return nullptr; +} + const std::vector<WorkflowConnection>& Workflow::GetConnections() const { return mConnections; diff --git a/core/src/Model/Workflow/fwd.hpp b/core/src/Model/Workflow/fwd.hpp index 2323a91..b541e52 100644 --- a/core/src/Model/Workflow/fwd.hpp +++ b/core/src/Model/Workflow/fwd.hpp @@ -3,12 +3,19 @@ #include "Model/Workflow/Nodes/fwd.hpp" #include "Model/Workflow/Values/fwd.hpp" +// Evaluation.hpp +class WorkflowEvaluationError; +class WorkflowEvaluationContext; + +// SavedWorkflow.hpp +class SavedWorkflowCache; +class SavedWorkflow; + // Value.hpp class BaseValue; // Workflow.hpp class WorkflowConnection; class WorkflowNode; +struct WorkflowInfo; class Workflow; -class WorkflowEvaluationError; -class WorkflowEvaluationContext; |