Loading...
Searching...
No Matches
NodalIntervalView.hpp
1#pragma once
2#include <Process/Dataflow/NodeItem.hpp>
3
4#include <Scenario/Document/ScenarioDocument/ScenarioDocumentViewConstants.hpp>
5
6#include <score/graphics/RectItem.hpp>
7
8#include <QRectF>
9
10class QGraphicsRectItem;
11
12#include <nano_observer.hpp>
13
14namespace Scenario
15{
16class IntervalModel;
19 , public Nano::Observer
20{
21 W_OBJECT(NodalIntervalView)
22public:
23 enum ItemsToShow
24 {
25 AllItems,
26 OnlyEffects
27 };
29 ItemsToShow sh, const IntervalModel& model, const Process::Context& ctx,
30 QGraphicsItem* parent);
31
33
34 void on_drop(QPointF pos, const QMimeData* data);
35 void on_playPercentageChanged(double t, TimeVal parent_dur);
36
37 void recenter();
38 void recenterRelativeToView();
39 void rescale();
40 void zoomPlus();
41 void zoomMinus();
42 void zoomTo(double newZoomLevel);
43 QRectF enclosingRect() const noexcept;
44
45 QGraphicsItem& nodeContainer() const noexcept { return *m_container; }
46 int type() const override { return ItemType::Type::NodalIntervalView; }
47
48private:
49 void on_processAdded(const Process::ProcessModel& proc);
50 void on_processRemoving(const Process::ProcessModel& model);
51 void on_zoomRatioChanged(ZoomRatio ratio);
52 void on_dropOnNode(const QPointF& pt, const QMimeData& mime);
53
54 void dragEnterEvent(QGraphicsSceneDragDropEvent* event) override;
55 void dragLeaveEvent(QGraphicsSceneDragDropEvent* event) override;
56 void dragMoveEvent(QGraphicsSceneDragDropEvent* event) override;
57 void dropEvent(QGraphicsSceneDragDropEvent* event) override;
58
59 void mousePressEvent(QGraphicsSceneMouseEvent* event) override;
60 void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override;
61 void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override;
62 void contextMenuEvent(QGraphicsSceneContextMenuEvent* event) override;
63 void wheelEvent(QGraphicsSceneWheelEvent* event) override;
64
65 const IntervalModel& m_model;
66 const Process::Context& m_context;
67 ItemsToShow m_itemsToShow{};
68 std::vector<Process::NodeItem*> m_nodeItems;
69 QGraphicsItem* m_container{};
70 QGraphicsRectItem* m_selectionRect{};
71 QPointF m_pressedPos{};
72 double m_zoomLevel = 0;
73
74 QPointF m_rubberBandOrigin{};
75 QRectF m_rubberBandRect{};
76 bool m_rubberBanding{false};
77};
78
79}
The Process class.
Definition score-lib-process/Process/Process.hpp:62
Definition IntervalModel.hpp:50
Definition NodalIntervalView.hpp:20
Definition RectItem.hpp:78
Main plug-in of score.
Definition score-plugin-dataflow/Dataflow/PortItem.hpp:13
Definition ProcessContext.hpp:12
Definition TimeValue.hpp:21