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
89class SCORE_PLUGIN_SCENARIO_EXPORT RemoveCables final : public score::AggregateCommand
90{
91 SCORE_COMMAND_DECL(
92 Scenario::Command::CommandFactoryName(), RemoveCables, "Remove cables")
93public:
94};
95
97class SCORE_PLUGIN_SCENARIO_EXPORT RemoveConnections final
99{
100 SCORE_COMMAND_DECL(
101 Scenario::Command::CommandFactoryName(), RemoveConnections, "Remove connections")
102public:
103};
104
106class SCORE_PLUGIN_SCENARIO_EXPORT UpdateCables final : public score::AggregateCommand
107{
108 SCORE_COMMAND_DECL(
109 Scenario::Command::CommandFactoryName(), UpdateCables, "Update cables")
110public:
111};
112
115SCORE_PLUGIN_SCENARIO_EXPORT
116std::pair<const Process::Outlet*, const Process::Inlet*>
117getPortsForConnection(const Process::Port& port1, const Process::Port& port2);
118
119SCORE_PLUGIN_SCENARIO_EXPORT
120void onCreateCable(
121 const score::DocumentContext& ctx, const Process::Port& port1,
122 const Process::Port& port2);
123
124SCORE_PLUGIN_SCENARIO_EXPORT
125void replaceCable(
126 const score::DocumentContext& ctx, const Process::Cable& currentCable,
127 const Process::Port& newPort);
128
131SCORE_PLUGIN_SCENARIO_EXPORT
132void moveCableEndpoints(
133 const score::DocumentContext& ctx, std::span<Process::Cable* const> cables,
134 const Process::Port& newPort);
135
137SCORE_PLUGIN_SCENARIO_EXPORT
138void removeCablesInOneStep(
139 const score::DocumentContext& ctx, std::span<Process::Cable* const> cables);
140}
Definition EditConnection.hpp:17
Definition EditConnection.hpp:61
Definition EditConnection.hpp:90
Removes cables and unbinds port addresses in one undo step.
Definition EditConnection.hpp:99
Definition EditConnection.hpp:83
Definition EditConnection.hpp:41
Changes the mode of several cables in one undo step.
Definition EditConnection.hpp:107
The Path class is a typesafe wrapper around ObjectPath.
Definition Path.hpp:52
Definition Cable.hpp:38
Definition Port.hpp:106
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