Loading...
Searching...
No Matches
ScenarioActions.hpp
1#pragma once
2#include <Process/Actions/ProcessActions.hpp>
3#include <Process/Layer/LayerContextMenu.hpp>
4
5#include <Scenario/Document/ScenarioDocument/ScenarioDocumentModel.hpp>
6#include <Scenario/Process/ScenarioModel.hpp>
7
9#include <score/selection/SelectionStack.hpp>
10
11namespace Scenario
12{
13class ScenarioInterface;
14class ScenarioDocumentModel;
15class ProcessModel;
16SCORE_PLUGIN_SCENARIO_EXPORT const Scenario::ScenarioInterface*
17focusedScenarioInterface(const score::DocumentContext& ctx);
18SCORE_PLUGIN_SCENARIO_EXPORT const Scenario::ProcessModel*
19focusedScenarioModel(const score::DocumentContext& ctx);
20
22class SCORE_PLUGIN_SCENARIO_EXPORT EnableWhenScenarioModelObject final
24{
25public:
27
28 static score::ActionConditionKey static_key();
29
30private:
31 void action(score::ActionManager& mgr, score::MaybeDocument doc) override;
32};
33
36{
37public:
39
40 static score::ActionConditionKey static_key();
41
42private:
43 void action(score::ActionManager& mgr, score::MaybeDocument doc) override;
44};
45
48{
49public:
51
52 static score::ActionConditionKey static_key();
53
54private:
55 void action(score::ActionManager& mgr, score::MaybeDocument doc) override;
56};
57}
58
61
62SCORE_DECLARE_FOCUSED_PROCESS_CONDITION(Scenario::ProcessModel)
63SCORE_DECLARE_FOCUSED_PROCESS_CONDITION(Scenario::ScenarioInterface)
64
69
70
71// View
72SCORE_DECLARE_ACTION(SelectAll, "&Select All", Scenario, QKeySequence::SelectAll)
73SCORE_DECLARE_ACTION(DeselectAll, "&Deselect All", Scenario, QKeySequence::Deselect)
74SCORE_DECLARE_ACTION(
75 SelectTop, "Select &Top", Scenario, QKeySequence{QObject::tr("Ctrl+Shift+T")})
76
77// Transport
78SCORE_DECLARE_ACTION(Play, "&Play", Scenario, Qt::Key_Space)
79SCORE_DECLARE_ACTION(PlayGlobal, "&Play Root", Scenario, QKeySequence("Shift+Space"))
80SCORE_DECLARE_ACTION(Stop, "&Stop", Scenario, Qt::Key_Return)
81SCORE_DECLARE_ACTION(GoToStart, "&Go to Start", Scenario, Qt::Key_Back)
82SCORE_DECLARE_ACTION(GoToEnd, "Go to &End", Scenario, Qt::Key_Forward)
83SCORE_DECLARE_ACTION(
84 Reinitialize, "&Reinitialize", Scenario, QKeySequence(QObject::tr("Ctrl+Return")))
85SCORE_DECLARE_ACTION(Record, "&Record", Scenario, QKeySequence::UnknownKey)
86
87// Edit
88SCORE_DECLARE_ACTION(SelectTool, "Tool &Select", Scenario, Qt::Key_S)
89SCORE_DECLARE_ACTION_2S(
90 CreateTool, "Tool &Create", Scenario, QKeySequence{QObject::tr("A")},
91 QKeySequence{QObject::tr("Shift+A")})
92SCORE_DECLARE_ACTION(PlayTool, "Tool &Play", Scenario, Qt::Key_P)
93
94// For those two the "shortcuts" are just shift and alt, but this is not supported
95// by QKeySequence. See ToolMenuActions.cpp
96SCORE_DECLARE_ACTION(LockMode, "&Lock", Scenario, QKeySequence{})
97SCORE_DECLARE_ACTION(Scale, "&Scale mode", Scenario, QKeySequence{})
98
99// Object: Delete and Backspace both remove, on every platform. A process
100// removed from a chain leaves what it linked connected; with Shift, its cables
101// go with it.
102SCORE_DECLARE_ACTION_2S(
103 RemoveElements, "&Remove elements", Scenario, QKeySequence{Qt::Key_Delete},
104 QKeySequence{Qt::Key_Backspace})
105// Its key is "RemoveElementsKeepLinked" so that the shortcuts users saved for
106// it keep applying.
107namespace Actions
108{
109struct RemoveElementsAndCables;
110}
111namespace score
112{
113template <>
114struct MetaAction<Actions::RemoveElementsAndCables>
115{
116 static score::Action make(QAction* ptr)
117 {
118 return score::Action{
119 ptr,
120 QObject::tr("Remove elements and their &cables"),
121 key(),
122 score::ActionGroupKey{"Scenario"},
123 QKeySequence(QObject::tr("Shift+Delete")),
124 QKeySequence(QObject::tr("Shift+Backspace"))};
125 }
126
127 static score::ActionKey key() { return score::ActionKey{"RemoveElementsKeepLinked"}; }
128};
129}
130SCORE_DECLARE_ACTION(CopyContent, "C&opy", Scenario, QKeySequence::Copy)
131SCORE_DECLARE_ACTION(CutContent, "C&ut", Scenario, QKeySequence::Cut)
132SCORE_DECLARE_ACTION(PasteElements, "&Paste (elements)", Scenario, QKeySequence::Paste)
133SCORE_DECLARE_ACTION(
134 PasteElementsAfter, "&Paste (after)", Scenario, QKeySequence::UnknownKey)
135SCORE_DECLARE_ACTION(
136 ElementsToJson, "Convert to &JSON", Scenario, QKeySequence::UnknownKey)
137
138// Event
139SCORE_DECLARE_ACTION(MergeEvents, "Merge events", Scenario, QKeySequence::UnknownKey)
140SCORE_DECLARE_ACTION(AddTrigger, "&Enable Trigger", Scenario, Qt::Key_T)
141SCORE_DECLARE_ACTION(
142 RemoveTrigger, "&Disable Trigger", Scenario, QKeySequence(QObject::tr("Shift+T")))
143
144SCORE_DECLARE_ACTION(AddCondition, "&Add Condition", Scenario, Qt::Key_C)
145SCORE_DECLARE_ACTION(
146 RemoveCondition, "&Remove Condition", Scenario, QKeySequence(QObject::tr("Shift+C")))
147
148// Interval
149SCORE_DECLARE_ACTION(AddProcess, "&Add a process", Scenario, QKeySequence::UnknownKey)
150SCORE_DECLARE_ACTION(
151 MergeTimeSyncs, "&Synchronize", Scenario, QKeySequence(QObject::tr("Shift+M")))
152SCORE_DECLARE_ACTION(ShowRacks, "&Show processes", Scenario, QKeySequence::UnknownKey)
153SCORE_DECLARE_ACTION(HideRacks, "&Hide processes", Scenario, QKeySequence::UnknownKey)
154
155SCORE_DECLARE_ACTION(
156 Encapsulate, "&Encapsulate", Scenario, QKeySequence(QObject::tr("Ctrl+Alt+E")))
157SCORE_DECLARE_ACTION(
158 Decapsulate, "&Decapsulate", Scenario, QKeySequence(QObject::tr("Ctrl+Alt+D")))
159SCORE_DECLARE_ACTION(
160 FoldIntervals, "Fold intervals", Scenario, QKeySequence(QObject::tr("Ctrl+Alt+F")))
161SCORE_DECLARE_ACTION(
162 UnfoldIntervals, "Unfold intervals", Scenario,
163 QKeySequence(QObject::tr("Ctrl+Alt+U")))
164SCORE_DECLARE_ACTION(
165 LevelUp, "Go to parent interval", Scenario, QKeySequence(QObject::tr("Ctrl+Alt+Up")))
166
167SCORE_DECLARE_ACTION(
168 Duplicate, "&Duplicate", Scenario, QKeySequence(QObject::tr("Alt+D")))
169
170SCORE_DECLARE_ACTION(
171 ShowCables, "&Show cables", Dataflow, QKeySequence(QObject::tr("Alt+Shift+G")))
172
173SCORE_DECLARE_ACTION(
174 AutoScroll, "&Auto-scroll", Dataflow, QKeySequence(QObject::tr("Alt+Shift+A")))
175
176// Navigation
177SCORE_DECLARE_ACTION(MoveUp, "&Move up", Scenario, Qt::UpArrow)
178SCORE_DECLARE_ACTION(MoveDown, "&Move down", Scenario, Qt::DownArrow)
179SCORE_DECLARE_ACTION(MoveLeft, "&Move left", Scenario, Qt::LeftArrow)
180SCORE_DECLARE_ACTION(MoveRight, "&Move right", Scenario, Qt::RightArrow)
181SCORE_DECLARE_ACTION(
182 GoToParent, "&Go to parent", Scenario, QKeySequence(QObject::tr("Ctrl+Up")))
183
185SCORE_PROCESS_DECLARE_CONTEXT_MENU(
186 SCORE_PLUGIN_SCENARIO_EXPORT, ScenarioObjectContextMenu)
187SCORE_PROCESS_DECLARE_CONTEXT_MENU(
188 SCORE_PLUGIN_SCENARIO_EXPORT, ScenarioModelContextMenu)
189SCORE_PROCESS_DECLARE_CONTEXT_MENU(SCORE_PLUGIN_SCENARIO_EXPORT, IntervalContextMenu)
190SCORE_PROCESS_DECLARE_CONTEXT_MENU(SCORE_PLUGIN_SCENARIO_EXPORT, EventContextMenu)
191SCORE_PROCESS_DECLARE_CONTEXT_MENU(SCORE_PLUGIN_SCENARIO_EXPORT, StateContextMenu)
#define SCORE_DECLARE_DOCUMENT_CONDITION(Type)
Definition Action.hpp:415
#define SCORE_DECLARE_SELECTED_OBJECT_CONDITION(Type)
Definition Action.hpp:312
Only events, nodes, states.
Definition ScenarioActions.hpp:36
Anything in a scenario interface.
Definition ScenarioActions.hpp:48
Anything in a scenario model.
Definition ScenarioActions.hpp:24
Definition EventModel.hpp:36
Definition IntervalModel.hpp:50
The core hierarchical and temporal process of score.
Definition ScenarioModel.hpp:37
Definition ScenarioDocumentModel.hpp:29
Definition ScenarioInterface.hpp:20
Definition StateModel.hpp:62
Definition TimeSyncModel.hpp:34
The Action class.
Definition Action.hpp:79
The ActionManager class.
Definition ActionManager.hpp:19
Main plug-in of score.
Definition ConnectionsList.hpp:22
Base toolkit upon which the software is built.
Definition Application.cpp:83
The ActionCondition struct.
Definition Action.hpp:166
Definition DocumentContext.hpp:18