Loading...
Searching...
No Matches
ScenarioDocumentView.hpp
1#pragma once
2#include <Scenario/Document/Minimap/Minimap.hpp>
3#include <Scenario/Document/ScenarioDocument/ScenarioScene.hpp>
4#include <Scenario/Document/TimeRuler/TimeRuler.hpp>
5#include <Scenario/Document/TimeRuler/TimeRulerGraphicsView.hpp>
6
7#include <score/graphics/ArrowDialog.hpp>
8#include <score/graphics/GraphicsProxyObject.hpp>
9#include <score/plugins/documentdelegate/DocumentDelegateView.hpp>
10#include <score/widgets/MimeData.hpp>
11
12#include <QGraphicsView>
13#include <QMimeData>
14#include <QPoint>
15#include <QPointer>
16
17#include <score_plugin_scenario_export.h>
18
19#include <verdigris>
20
21class QGraphicsView;
22class QObject;
23class QWidget;
24class ProcessGraphicsView;
25class QFocusEvent;
26class QGraphicsScene;
27class QKeyEvent;
28class QPainterPath;
29class QResizeEvent;
30class QSize;
31class QWheelEvent;
32class SceneGraduations;
33
34namespace score
35{
36struct DocumentContext;
37struct GUIApplicationContext;
38}
39
40namespace Scenario
41{
42class Minimap;
43class ScenarioScene;
44class IntervalDurations;
45class IntervalView;
46class TimeRuler;
47class SCORE_PLUGIN_SCENARIO_EXPORT ProcessGraphicsView final : public QGraphicsView
48{
49 W_OBJECT(ProcessGraphicsView)
50public:
52 const score::GUIApplicationContext& ctx, QGraphicsScene* scene, QWidget* parent);
53 ~ProcessGraphicsView() override;
54
55 void scrollHorizontal(double dx);
56 QRectF visibleRect() const noexcept;
57
58 QPointer<score::ArrowDialog> currentPopup{};
59
60 IntervalDurations* currentTimebar{};
61 IntervalView* currentView{};
62 bool timebarPlaying{};
63 bool timebarVisible{};
64
65public:
66 void drawForeground(QPainter* painter, const QRectF& rect) override;
67 void sizeChanged(const QSize& arg_1)
68 E_SIGNAL(SCORE_PLUGIN_SCENARIO_EXPORT, sizeChanged, arg_1)
69 void scrolled(int arg_1) E_SIGNAL(SCORE_PLUGIN_SCENARIO_EXPORT, scrolled, arg_1)
70 void focusedOut() E_SIGNAL(SCORE_PLUGIN_SCENARIO_EXPORT, focusedOut)
71 void horizontalZoom(QPointF pixDelta, QPointF pos)
72 E_SIGNAL(SCORE_PLUGIN_SCENARIO_EXPORT, horizontalZoom, pixDelta, pos)
73 void verticalZoom(QPointF pixDelta, QPointF pos)
74 E_SIGNAL(SCORE_PLUGIN_SCENARIO_EXPORT, verticalZoom, pixDelta, pos)
75
76 void visibleRectChanged(QRectF r)
77 E_SIGNAL(SCORE_PLUGIN_SCENARIO_EXPORT, visibleRectChanged, r)
78 void dropRequested(QPoint pos, const QMimeData* mime)
79 E_SIGNAL(SCORE_PLUGIN_SCENARIO_EXPORT, dropRequested, pos, mime)
80 void emptyContextMenuRequested(QPoint pos)
81 E_SIGNAL(SCORE_PLUGIN_SCENARIO_EXPORT, emptyContextMenuRequested, pos)
82
83 void dropFinished() W_SIGNAL(dropFinished);
84
85private:
86 void resizeEvent(QResizeEvent* ev) override;
87 void scrollContentsBy(int dx, int dy) override;
88 void wheelEvent(QWheelEvent* event) override;
89 void keyPressEvent(QKeyEvent* event) override;
90 void keyReleaseEvent(QKeyEvent* event) override;
91 void focusOutEvent(QFocusEvent* event) override;
92 void leaveEvent(QEvent* event) override;
93 void mousePressEvent(QMouseEvent* event) override;
94 void mouseMoveEvent(QMouseEvent* event) override;
95 void mouseReleaseEvent(QMouseEvent* event) override;
96 void dragEnterEvent(QDragEnterEvent* event) override;
97 void dragMoveEvent(QDragMoveEvent* event) override;
98 void dragLeaveEvent(QDragLeaveEvent* event) override;
99 void dropEvent(QDropEvent* event) override;
100 void contextMenuEvent(QContextMenuEvent* event) override;
101 bool event(QEvent*) override;
102
103 void hoverEnterEvent(QHoverEvent* event);
104 void hoverMoveEvent(QHoverEvent* event);
105 void hoverLeaveEvent(QHoverEvent* event);
106
107 void checkAndRemoveCurrentDialog(QPoint pos);
108 // void drawBackground(QPainter* painter, const QRectF& rect) override;
109
110 const score::GUIApplicationContext& m_app;
111
112 std::chrono::steady_clock::time_point m_lastwheel;
113 bool m_opengl{false};
114};
115
116class SCORE_PLUGIN_SCENARIO_EXPORT ScenarioDocumentView final
118{
119 W_OBJECT(ScenarioDocumentView)
120
121public:
122 ScenarioDocumentView(const score::DocumentContext& ctx, QObject* parent);
123 ~ScenarioDocumentView() override;
124
125 QWidget* getWidget() override;
126
127 BaseGraphicsObject& baseItem() { return m_baseObject; }
128
129 ScenarioScene& scene() { return m_scene; }
130
131 ProcessGraphicsView& view() { return m_view; }
132
133 qreal viewWidth() const;
134
135 QGraphicsView& rulerView() { return m_timeRulerView; }
136
137 TimeRulerBase& timeRuler() { return *m_timeRuler; }
138
139 Minimap& minimap() { return m_minimap; }
140
141 QRectF viewportRect() const;
142 QRectF visibleSceneRect() const;
143
144 void showRulers(bool);
145 void ready() override;
146
147 void zoom(double zx, double zy);
148 void scroll(double dx, double dy);
149
150public:
151 void elementsScaleChanged(double arg_1) W_SIGNAL(elementsScaleChanged, arg_1);
152 void setLargeView() W_SIGNAL(setLargeView);
153 void timeRulerChanged() W_SIGNAL(timeRulerChanged);
154
155private:
156 void timerEvent(QTimerEvent* event) override;
157 QWidget* m_widget{};
158 const score::DocumentContext& m_context;
159 ScenarioScene m_scene;
160 ProcessGraphicsView m_view;
161 BaseGraphicsObject m_baseObject;
162
163 QGraphicsScene m_timeRulerScene;
164 TimeRulerGraphicsView m_timeRulerView;
165 TimeRulerBase* m_timeRuler{};
166 QGraphicsScene m_minimapScene;
167 MinimapGraphicsView m_minimapView;
168 Minimap m_minimap;
169
170 int m_timer{};
171};
172}
Definition GraphicsProxyObject.hpp:8
Definition IntervalDurations.hpp:23
Definition IntervalView.hpp:34
Definition TimeRulerGraphicsView.hpp:11
Definition Minimap.hpp:16
Definition ScenarioDocumentView.hpp:48
Definition ScenarioDocumentView.hpp:118
Definition ScenarioScene.hpp:9
Definition TimeRuler.hpp:36
Definition TimeRulerGraphicsView.hpp:6
Definition DocumentDelegateView.hpp:10
Main plug-in of score.
Definition score-plugin-dataflow/Dataflow/PortItem.hpp:13
Base toolkit upon which the software is built.
Definition Application.cpp:97
Definition DocumentContext.hpp:18
Specializes ApplicationContext with the QMainWindow.
Definition GUIApplicationContext.hpp:15