blob: 2c2b81b61e1123f9490d6648ae4821d1e76e3417 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
#include "interactioncanvas.h"
InteractionCanvas::InteractionCanvas()
{
setFocusPolicy(Qt::StrongFocus);
setMouseTracking(true);
m_Line = NULL;
}
InteractionCanvas::~InteractionCanvas()
{
delete tempPainter;
tempPainter = NULL;
delete normalPainter;
normalPainter = NULL;
}
void InteractionCanvas::mouseMoveEvent(QMouseEvent *mouseEvent)
{
qDebug() << "InteractionCanvas:" << mouseEvent->pos();
m_LastMousePosition = mouseEvent->pos();
if (m_Line)
{
m_Line->setP2(m_LastMousePosition);
update();
}
}
void InteractionCanvas::mousePressEvent(QMouseEvent *mouseEvent)
{
qDebug() << "InteractionCanvas: Mouse: pressed:" << mouseEvent->button();
if (mouseEvent->button() == Qt::LeftButton)
{
if (m_Line)
{
delete m_Line;
m_Line = NULL;
}
m_Line = new Line();
m_MousePressPoint = mouseEvent->pos();
m_LastMousePosition = m_MousePressPoint;
m_Line->setP1(m_MousePressPoint);
m_Line->setP2(m_LastMousePosition);
}
if (mouseEvent->button() == Qt::RightButton)
{
for(int i = 0; i < m_Lines.size(); i++)
{
m_Lines[i].setSelected(m_Lines[i].isHit(mouseEvent->pos()));
}
}
}
void InteractionCanvas::mouseReleaseEvent(QMouseEvent *mouseEvent)
{
qDebug() << "InteractionCanvas: Mouse: released:" << mouseEvent->button();
if (mouseEvent->button() == Qt::LeftButton)
{
m_MouseReleasePoint = mouseEvent->pos();
m_Line->setP2(m_MouseReleasePoint);
m_Line->setSelected(false);
m_Lines.append(*m_Line);
m_Line = NULL;
}
update();
}
void InteractionCanvas::keyPressEvent(QKeyEvent *keyEvent)
{
qDebug() << "InteractionCanvas: Key: pressed:" << keyEvent->key() << "(" <<
keyEvent->text() << ")" << (keyEvent->isAutoRepeat() ? "druck" : "");
if(!m_Lines.isEmpty() && keyEvent->key() == Qt::Key_Z && keyEvent->modifiers() == Qt::ControlModifier)
{
m_Lines.removeLast();
update();
}
}
void InteractionCanvas::keyReleaseEvent(QKeyEvent *keyEvent)
{
qDebug() << "InteractionCanvas: Key: released:" << keyEvent->key() << "(" <<
keyEvent->text() << ")" << (keyEvent->isAutoRepeat() ? "druck" : "");
}
void InteractionCanvas::paintEvent(QPaintEvent *paintEvent)
{
// Setup the Painters
QPainter painter(this);
if (m_Line)
{
m_Line->draw(&painter);
}
foreach (Line line, m_Lines)
{
line.draw(&painter);
}
}
|