Loading...
Searching...
No Matches
EditConnection.hpp
1#pragma once
2#include <Process/Dataflow/Port.hpp>
3
4#include <Scenario/Commands/ScenarioCommandFactory.hpp>
5#include <Scenario/Document/ScenarioDocument/ScenarioDocumentModel.hpp>
6#include <score/command/AggregateCommand.hpp>
7
8#include <score/model/path/Path.hpp>
9
10#include <span>
11
12#include <utility>
13
14namespace Dataflow
15{
16class SCORE_PLUGIN_SCENARIO_EXPORT CreateCable final : public score::Command
17{
18 SCORE_COMMAND_DECL(
19 Scenario::Command::CommandFactoryName(), CreateCable, "Create cable")
20
21public:
24 Process::CableType type, const Process::Port& source, const Process::Port& sink);
25
26 void undo(const score::DocumentContext& ctx) const override;
27 void redo(const score::DocumentContext& ctx) const override;
28
29protected:
30 void serializeImpl(DataStreamInput& s) const override;
31 void deserializeImpl(DataStreamOutput& s) override;
32
33private:
35 Id<Process::Cable> m_cable;
37 std::optional<bool> m_previousPropagate{};
38};
39
40class SCORE_PLUGIN_SCENARIO_EXPORT UpdateCable final : public score::Command
41{
42 SCORE_COMMAND_DECL(
43 Scenario::Command::CommandFactoryName(), UpdateCable, "Update cable")
44
45public:
46 UpdateCable(const Process::Cable& theCable, Process::CableType newDat);
47
48 void undo(const score::DocumentContext& ctx) const override;
49 void redo(const score::DocumentContext& ctx) const override;
50
51protected:
52 void serializeImpl(DataStreamInput& s) const override;
53 void deserializeImpl(DataStreamOutput& s) override;
54
55private:
57 Process::CableType m_old{}, m_new{};
58};
59
60class SCORE_PLUGIN_SCENARIO_EXPORT RemoveCable final : public score::Command
61{
62 SCORE_COMMAND_DECL(
63 Scenario::Command::CommandFactoryName(), RemoveCable, "Remove cable")
64
65public:
67
68 void undo(const score::DocumentContext& ctx) const override;
69 void redo(const score::DocumentContext& ctx) const override;
70
71protected:
72 void serializeImpl(DataStreamInput& s) const override;
73 void deserializeImpl(DataStreamOutput& s) override;
74
75private:
77 Id<Process::Cable> m_cable;
78 Process::CableData m_data;
79 std::optional<bool> m_previousPropagate{};
80};
81
82class SCORE_PLUGIN_SCENARIO_EXPORT ReplaceCable final : public score::AggregateCommand
83{
84 SCORE_COMMAND_DECL(
85 Scenario::Command::CommandFactoryName(), ReplaceCable, "Replace Cable")
86public:
87};
88
91SCORE_PLUGIN_SCENARIO_EXPORT
92std::pair<const Process::Outlet*, const Process::Inlet*>
93getPortsForConnection(const Process::Port& port1, const Process::Port& port2);
94
95SCORE_PLUGIN_SCENARIO_EXPORT
96void onCreateCable(
97 const score::DocumentContext& ctx, const Process::Port& port1,
98 const Process::Port& port2);
99
100SCORE_PLUGIN_SCENARIO_EXPORT
101void replaceCable(
102 const score::DocumentContext& ctx, const Process::Cable& currentCable,
103 const Process::Port& newPort);
104
107SCORE_PLUGIN_SCENARIO_EXPORT
108void moveCableEndpoints(
109 const score::DocumentContext& ctx, std::span<Process::Cable* const> cables,
110 const Process::Port& newPort);
111}
Definition EditConnection.hpp:17
Definition EditConnection.hpp:61
Definition EditConnection.hpp:83
Definition EditConnection.hpp:41
The Path class is a typesafe wrapper around ObjectPath.
Definition Path.hpp:52
Definition Cable.hpp:38
Definition Port.hpp:104
Definition ScenarioDocumentModel.hpp:29
The id_base_t class.
Definition Identifier.hpp:59
Allows for grouping of multiple commands in a single one.
Definition AggregateCommand.hpp:15
The Command class.
Definition Command.hpp:34
Definition DataStreamHelpers.hpp:99
Definition DataStreamHelpers.hpp:103
Definition CableData.hpp:18
Definition DocumentContext.hpp:18