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
10namespace Dataflow
11{
12class SCORE_PLUGIN_SCENARIO_EXPORT CreateCable final : public score::Command
13{
14 SCORE_COMMAND_DECL(
15 Scenario::Command::CommandFactoryName(), CreateCable, "Create cable")
16
17public:
20 Process::CableType type, const Process::Port& source, const Process::Port& sink);
21
22 void undo(const score::DocumentContext& ctx) const override;
23 void redo(const score::DocumentContext& ctx) const override;
24
25protected:
26 void serializeImpl(DataStreamInput& s) const override;
27 void deserializeImpl(DataStreamOutput& s) override;
28
29private:
31 Id<Process::Cable> m_cable;
33 std::optional<bool> m_previousPropagate{};
34};
35
36class SCORE_PLUGIN_SCENARIO_EXPORT UpdateCable final : public score::Command
37{
38 SCORE_COMMAND_DECL(
39 Scenario::Command::CommandFactoryName(), UpdateCable, "Update cable")
40
41public:
42 UpdateCable(const Process::Cable& theCable, Process::CableType newDat);
43
44 void undo(const score::DocumentContext& ctx) const override;
45 void redo(const score::DocumentContext& ctx) const override;
46
47protected:
48 void serializeImpl(DataStreamInput& s) const override;
49 void deserializeImpl(DataStreamOutput& s) override;
50
51private:
53 Process::CableType m_old{}, m_new{};
54};
55
56class SCORE_PLUGIN_SCENARIO_EXPORT RemoveCable final : public score::Command
57{
58 SCORE_COMMAND_DECL(
59 Scenario::Command::CommandFactoryName(), RemoveCable, "Remove cable")
60
61public:
63
64 void undo(const score::DocumentContext& ctx) const override;
65 void redo(const score::DocumentContext& ctx) const override;
66
67protected:
68 void serializeImpl(DataStreamInput& s) const override;
69 void deserializeImpl(DataStreamOutput& s) override;
70
71private:
73 Id<Process::Cable> m_cable;
74 Process::CableData m_data;
75 std::optional<bool> m_previousPropagate{};
76};
77
78class SCORE_PLUGIN_SCENARIO_EXPORT ReplaceCable final : public score::AggregateCommand
79{
80 SCORE_COMMAND_DECL(
81 Scenario::Command::CommandFactoryName(), ReplaceCable, "Replace Cable")
82public:
83};
84
85SCORE_PLUGIN_SCENARIO_EXPORT
86void onCreateCable(
87 const score::DocumentContext& ctx, const Process::Port& port1,
88 const Process::Port& port2);
89
90SCORE_PLUGIN_SCENARIO_EXPORT
91void replaceCable(
92 const score::DocumentContext& ctx, const Process::Cable& currentCable,
93 const Process::Port& newPort);
94}
Definition EditConnection.hpp:13
Definition EditConnection.hpp:57
Definition EditConnection.hpp:79
Definition EditConnection.hpp:37
The Path class is a typesafe wrapper around ObjectPath.
Definition Path.hpp:52
Definition Cable.hpp:38
Definition Port.hpp:103
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