aboutsummaryrefslogtreecommitdiff
path: root/core/src/UI/UI_Workflows.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/UI/UI_Workflows.cpp')
-rw-r--r--core/src/UI/UI_Workflows.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/core/src/UI/UI_Workflows.cpp b/core/src/UI/UI_Workflows.cpp
index 0adfdc2..fe504e2 100644
--- a/core/src/UI/UI_Workflows.cpp
+++ b/core/src/UI/UI_Workflows.cpp
@@ -9,10 +9,13 @@
#include "Utils/Macros.hpp"
#include <imgui.h>
+#include <imgui_node_editor.h>
#include <memory>
#include <span>
#include <vector>
+namespace ImNodes = ax::NodeEditor;
+
namespace {
class WorkflowCreationMenu {
private:
@@ -127,13 +130,41 @@ private:
class WorkflowUI {
private:
Workflow* mWorkflow;
+ ImNodes::EditorContext* mContext;
public:
+ WorkflowUI() {
+ mContext = ImNodes::CreateEditor();
+ }
+
+ ~WorkflowUI() {
+ ImNodes::DestroyEditor(mContext);
+ }
+
void Draw() {
+ ImNodes::SetCurrentEditor(mContext);
+ ImNodes::Begin("");
+
+ for (auto& node : mWorkflow->GetNodes()) {
+ if (!node) continue;
+
+ ImNodes::BeginNode(node->GetId());
+ node->Draw();
+ ImNodes::EndNode();
+ }
+
+ for (auto& conn : mWorkflow->GetConnections()) {
+ if (!conn.IsValid()) continue;
+
+ // TODO create link
+ }
+
+ ImNodes::End();
}
};
} // namespace
void UI::WorkflowsTab() {
+ static std::unique_ptr<WorkflowUI> openWorkflow;
// TODO
}