1
#ifndef VBSEQUENCEVIEW_H
2
#define VBSEQUENCEVIEW_H
5
#include <QGraphicsItem>
6
#include <QGraphicsScene>
7
#include <QGraphicsView>
16
#include "vbsequence.h"
17
#include "vbsequencescene.h"
29
class QExecItemAction : public QAction
34
QExecItemAction(const QString & text, QObject * parent)
35
: QAction(text, parent), exec_item(0) {}
40
class SequenceView : public QGraphicsView
45
SequenceView(QWidget* parent = 0);
47
SequenceScene* scene() const;
50
void jobAdded(shared_ptr<VB::Job>);
51
void jobSelected(shared_ptr<VB::Job>);
52
void jobDeselected(shared_ptr<VB::Job>);
54
void blockAdded(shared_ptr<VB::Block>);
55
void blockSelected(shared_ptr<VB::Block>);
56
void blockDeselected(shared_ptr<VB::Block>);
58
void execMoved(shared_ptr<VB::Exec>, QRect const& oldr, QRect const& newr);
59
void execMovedBy(shared_ptr<VB::Exec>, QPoint const& moved_by);
61
void jobClicked(shared_ptr<VB::Job>, QMouseEvent*);
62
void blockClicked(shared_ptr<VB::Block>, QMouseEvent*);
65
void disconnectClickedExecExec();
66
void deleteClickedExec();
67
void toggleClickedBlockDetail(bool);
68
void beginFromClickedExec();
69
void endAtClickedExec();
70
void noPointAtClickedExec();
71
void makeBlockFromSelectedExecs();
72
void updateSceneRect(const QRectF & rect);
77
virtual void dragEnterEvent(QDragEnterEvent* event);
78
virtual void dragLeaveEvent(QDragLeaveEvent* event);
79
virtual void dragMoveEvent(QDragMoveEvent *event);
80
virtual void dropEvent(QDropEvent* event);
82
virtual void mousePressEvent(QMouseEvent* event);
83
virtual void mouseMoveEvent(QMouseEvent* event);
84
virtual void mouseReleaseEvent(QMouseEvent* event);
86
virtual void contextMenuEvent(QContextMenuEvent* e);
87
void singleExecContextMenu(QMenu* m, ExecItem* ei);
88
void singleJobContextMenu(QMenu* m, JobItem* ji);
89
void singleBlockContextMenu(QMenu* m, BlockItem* bi);
91
void makeDisconnectExecActions(QMenu* disconnect_menu, const std::list<shared_ptr<VB::Exec> >& connected_jobs);
94
void showDataText(bool vis = true);
95
bool isDataTextVisible();
101
QList<QExecItemAction*> disconnectExecActs;
102
QExecItemAction* deleteExecAct;
103
QExecItemAction* toggleDetailAct;
104
QExecItemAction* beginPointAct;
105
QExecItemAction* endPointAct;
106
QExecItemAction* noPointAct;
108
QAction* makeBlockFromSelectedAct;
110
ExecItem* beginPointExec;
111
ExecItem* endPointExec;
113
TempWaitforDragItem* wdi;
117
inline uint qHash(QPair<int,int> &key)
119
return qHash(key.first)*100 + qHash(key.second);
122
inline uint qHash(const void* &key)
124
return qHash(reinterpret_cast<long>(key));
127
/*template <typename T>
128
inline uint qHash(const smart_pointer<T> &key)
130
return qHash(reinterpret_cast<void*>(key->c_pointer()));