Loading...
Searching...
No Matches
ScenarioDropHandler.hpp
1#pragma once
2#include <Scenario/Palette/ScenarioPoint.hpp>
3
4#include <score/model/Identifier.hpp>
5#include <score/plugins/Interface.hpp>
6#include <score/plugins/InterfaceList.hpp>
7
8#include <QMimeData>
9#include <QPointF>
10
11#include <score_plugin_scenario_export.h>
12
13namespace score
14{
15struct DocumentContext;
16}
17namespace Scenario
18{
19class StateModel;
20class ProcessModel;
21class ScenarioPresenter;
22class TimeSyncModel;
23namespace Command
24{
25class Macro;
26}
27
29SCORE_PLUGIN_SCENARIO_EXPORT bool dropStartsOnPlay() noexcept;
30
32SCORE_PLUGIN_SCENARIO_EXPORT void
33addStartOnPlayTrigger(Command::Macro& m, const TimeSyncModel& ts);
34
36{
37 Scenario::StateModel* horizontal{};
38 Scenario::StateModel* vertical{};
39 bool magnetic{};
40};
41
42MagneticStates magneticStates(
44
46class SCORE_PLUGIN_SCENARIO_EXPORT DropHandler : public score::InterfaceBase
47{
48 SCORE_INTERFACE(DropHandler, "ce1c5b6c-fe4c-416f-877c-eae642a1413a")
49public:
50 ~DropHandler() override;
51
52 // Returns false if not handled.
53 virtual bool
54 dragEnter(const Scenario::ScenarioPresenter&, QPointF pos, const QMimeData& mime);
55
56 virtual bool
57 dragMove(const Scenario::ScenarioPresenter&, QPointF pos, const QMimeData& mime);
58
59 virtual bool
60 dragLeave(const Scenario::ScenarioPresenter&, QPointF pos, const QMimeData& mime);
61
62 virtual bool canDrop(const QMimeData& mime) const noexcept;
63
64 virtual bool
65 drop(const Scenario::ScenarioPresenter&, QPointF pos, const QMimeData& mime)
66 = 0;
67};
68
69class SCORE_PLUGIN_SCENARIO_EXPORT GhostIntervalDropHandler : public DropHandler
70{
71public:
73
74protected:
75 std::vector<QString> m_acceptableMimeTypes;
76 std::vector<QString> m_acceptableSuffixes;
77
78 MagneticStates m_magnetic{};
79
80private:
81 bool dragEnter(const Scenario::ScenarioPresenter&, QPointF pos, const QMimeData& mime)
82 final override;
83 bool dragMove(const Scenario::ScenarioPresenter&, QPointF pos, const QMimeData& mime)
84 final override;
85 bool dragLeave(const Scenario::ScenarioPresenter&, QPointF pos, const QMimeData& mime)
86 final override;
87};
88
89class SCORE_PLUGIN_SCENARIO_TEST_EXPORT DropHandlerList final
90 : public score::InterfaceList<DropHandler>
91{
92public:
93 ~DropHandlerList() override;
94
95 bool
96 dragEnter(const ScenarioPresenter& scen, QPointF pos, const QMimeData& mime) const;
97 bool dragMove(const ScenarioPresenter& scen, QPointF pos, const QMimeData& mime) const;
98 bool dragLeave(const ScenarioPresenter&, QPointF pos, const QMimeData& mime) const;
99 bool drop(const ScenarioPresenter& scen, QPointF pos, const QMimeData& mime) const;
100};
101
102class IntervalModel;
103class SCORE_PLUGIN_SCENARIO_EXPORT IntervalDropHandler : public score::InterfaceBase
104{
105 SCORE_INTERFACE(IntervalDropHandler, "b9f3efc0-b906-487a-ac49-87924edd2cff")
106public:
107 ~IntervalDropHandler() override;
108
109 // Returns false if not handled.
110 virtual bool drop(
111 const score::DocumentContext& ctx, const Scenario::IntervalModel&, QPointF pos,
112 const QMimeData& mime)
113 = 0;
114};
115
116class SCORE_PLUGIN_SCENARIO_TEST_EXPORT IntervalDropHandlerList final
117 : public score::InterfaceList<IntervalDropHandler>
118{
119public:
120 ~IntervalDropHandlerList() override;
121
122 bool drop(
123 const score::DocumentContext& ctx, const Scenario::IntervalModel&, QPointF pos,
124 const QMimeData& mime) const;
125};
126}
Definition ScenarioDropHandler.hpp:47
Definition ScenarioDropHandler.hpp:91
Definition ScenarioDropHandler.hpp:70
Definition ScenarioDropHandler.hpp:104
Definition ScenarioDropHandler.hpp:118
Definition IntervalModel.hpp:50
Definition ScenarioPresenter.hpp:29
Definition StateModel.hpp:62
Base class for plug-in interfaces.
Definition Interface.hpp:52
InterfaceList Default implementation of InterfaceListBase.
Definition InterfaceList.hpp:97
Main plug-in of score.
Definition score-plugin-dataflow/Dataflow/PortItem.hpp:13
bool dropStartsOnPlay() noexcept
Whether the modifiers held during a drop ask for a start-on-play trigger.
Definition ScenarioDropHandler.cpp:17
void addStartOnPlayTrigger(Command::Macro &m, const TimeSyncModel &ts)
Enable the trigger and start-on-play, like a double-click in a scenario does.
Definition ScenarioDropHandler.cpp:22
Base toolkit upon which the software is built.
Definition Application.cpp:83
Definition ScenarioDropHandler.hpp:36
Definition ScenarioPoint.hpp:13
Definition DocumentContext.hpp:18