Loading...
Searching...
No Matches
score-lib-process/Process/Commands/Properties.hpp
1#pragma once
2#include <Process/Commands/ProcessCommandFactory.hpp>
3#include <Process/Process.hpp>
4#include <Process/TimeValueSerialization.hpp>
5
6#include <score/command/AggregateCommand.hpp>
7#include <score/command/PropertyCommand.hpp>
8#include <score/model/path/PathSerialization.hpp>
9#include <score/tools/Unused.hpp>
10
11PROPERTY_COMMAND_T(Process, SetLoop, ProcessModel::p_loops, "Set process looping")
12SCORE_COMMAND_DECL_T(Process::SetLoop)
13PROPERTY_COMMAND_T(
14 Process, SetProcessScriptable, ProcessModel::p_scriptable, "Set process scriptable")
15SCORE_COMMAND_DECL_T(Process::SetProcessScriptable)
16PROPERTY_COMMAND_T(
17 Process, SetStartOffset, ProcessModel::p_startOffset, "Set start offset")
18SCORE_COMMAND_DECL_T(Process::SetStartOffset)
19PROPERTY_COMMAND_T(
20 Process, SetLoopDuration, ProcessModel::p_loopDuration, "Set loop duration")
21SCORE_COMMAND_DECL_T(Process::SetLoopDuration)
22
23PROPERTY_COMMAND_T(Process, MoveNode, ProcessModel::p_position, "Move node")
24SCORE_COMMAND_DECL_T(Process::MoveNode)
25PROPERTY_COMMAND_T(Process, ResizeNode, ProcessModel::p_size, "Resize node")
26SCORE_COMMAND_DECL_T(Process::ResizeNode)
27PROPERTY_COMMAND_T(Process, SetNodeFoldMode, ProcessModel::p_foldMode, "Fold node")
28SCORE_COMMAND_DECL_T(Process::SetNodeFoldMode)
29
30namespace Process
31{
36class SCORE_LIB_PROCESS_EXPORT SetDuration final : public score::Command
37{
38 SCORE_COMMAND_DECL(Process::CommandFactoryName(), SetDuration, "Set process duration")
39public:
40 SetDuration(const ProcessModel& proc, TimeVal newDuration, ExpandMode mode);
41
42 void undo(const score::DocumentContext& ctx) const override;
43 void redo(const score::DocumentContext& ctx) const override;
44
45 void update(unused_t, TimeVal newDuration, ExpandMode mode);
46
47protected:
48 void serializeImpl(DataStreamInput& s) const override;
49 void deserializeImpl(DataStreamOutput& s) override;
50
51private:
52 Path<ProcessModel> m_model;
53 TimeVal m_old{}, m_new{};
54 ExpandMode m_mode{};
55};
56
57class MoveNodes final : public score::Command
58{
59 SCORE_COMMAND_DECL(Process::CommandFactoryName(), MoveNodes, "Move nodes")
60public:
61 MoveNodes(std::vector<const ProcessModel*> processes, QPointF delta);
62
63 void undo(const score::DocumentContext& ctx) const override;
64 void redo(const score::DocumentContext& ctx) const override;
65
66 void update(unused_t, QPointF delta);
67
68protected:
69 void serializeImpl(DataStreamInput& s) const override;
70 void deserializeImpl(DataStreamOutput& s) override;
71
72private:
73 std::vector<std::pair<Path<ProcessModel>, QPointF>> m_models;
74 QPointF m_delta;
75};
76
77class MoveNodesMacro final : public score::AggregateCommand
78{
79 SCORE_COMMAND_DECL(CommandFactoryName(), MoveNodesMacro, "Move nodes")
80};
81
83class SCORE_LIB_PROCESS_EXPORT RecordPlayback final : public score::AggregateCommand
84{
85 SCORE_COMMAND_DECL(CommandFactoryName(), RecordPlayback, "Record playback")
86};
87
89class SCORE_LIB_PROCESS_EXPORT KeepPlayedValues final : public score::AggregateCommand
90{
91 SCORE_COMMAND_DECL(CommandFactoryName(), KeepPlayedValues, "Keep played values")
92};
93
95class SCORE_LIB_PROCESS_EXPORT RecallState final : public score::AggregateCommand
96{
97 SCORE_COMMAND_DECL(CommandFactoryName(), RecallState, "Play state")
98};
99
100class SCORE_LIB_PROCESS_TEST_EXPORT RenameProcess final : public score::Command
101{
102 SCORE_COMMAND_DECL(Process::CommandFactoryName(), RenameProcess, "Rename process")
103public:
104 RenameProcess(const ProcessModel& process, QString name);
105
106 void undo(const score::DocumentContext& ctx) const override;
107 void redo(const score::DocumentContext& ctx) const override;
108
109protected:
110 void serializeImpl(DataStreamInput& s) const override;
111 void deserializeImpl(DataStreamOutput& s) override;
112
113private:
114 Path<ProcessModel> m_path;
115 QString m_old, m_new;
116};
117}
The Path class is a typesafe wrapper around ObjectPath.
Definition Path.hpp:52
Allows for grouping of multiple commands in a single one.
Definition AggregateCommand.hpp:15
The Command class.
Definition Command.hpp:34
Base classes and tools to implement processes and layers.
Definition JSONVisitor.hpp:1115
Base toolkit upon which the software is built.
Definition Application.cpp:83
STL namespace.
Definition DataStreamHelpers.hpp:99
Definition DataStreamHelpers.hpp:103
Definition TimeValue.hpp:21
Definition Unused.hpp:3