-
Notifications
You must be signed in to change notification settings - Fork 0
/
canvasscene.cpp
75 lines (67 loc) · 2.23 KB
/
canvasscene.cpp
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
#include "canvasscene.h"
CanvasScene::CanvasScene(QObject* parent) : QGraphicsScene(parent) {
qDebug() << __FUNCTION__;
}
void CanvasScene::init() {
qDebug() << __FUNCTION__;
}
void CanvasScene::setDrawingTool(DrawingTool* tool) {
qDebug() << __FUNCTION__ << " " << tool->tool_name;
if (used_tool != nullptr) {
used_tool->release();
}
this->used_tool = tool;
used_tool->use();
}
void CanvasScene::mouseMoveEvent(QGraphicsSceneMouseEvent* event) {
// qDebug() << __FUNCTION__;
QPointF pos = event->scenePos();
QString pos_text = QString("(%1, %2)").arg(pos.rx()).arg(pos.ry());
MainWindow::mouse_position_label->setText(pos_text);
if (mouse_pressed) {
if (!mouse_pressed) return;
QPointF p = event->scenePos();
QPointF dp = p - press_pos;
press_pos = p;
center += dp;
for (QGraphicsItem* item : MainWindow::drawing_scene->items()) {
item->setPos(item->pos() + dp);
}
std_cursor = MainWindow::drawing_area->cursor();
MainWindow::drawing_area->setCursor(QCursor(Qt::CursorShape::ClosedHandCursor));
return;
}
if (used_tool == nullptr) return;
used_tool->MouseMoved(event);
}
void CanvasScene::mousePressEvent(QGraphicsSceneMouseEvent* event) {
qDebug() << __FUNCTION__;
if (event->button() == Qt::MouseButton::MidButton) {
QPointF p = event->scenePos();
press_pos = p;
mouse_pressed = true;
return;
}
if (used_tool == nullptr) return;
used_tool->MousePressed(event);
}
void CanvasScene::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) {
qDebug() << __FUNCTION__;
if (event->button() == Qt::MouseButton::MidButton) {
qDebug() << "Release";
mouse_pressed = false;
MainWindow::drawing_area->setCursor(QCursor(Qt::CursorShape::ArrowCursor));
return;
}
if (used_tool == nullptr) return;
used_tool->MouseReleased(event);
}
void CanvasScene::keyPressEvent(QKeyEvent *event) {
qDebug() << __FUNCTION__;
if (event->key() == Qt::Key::Key_A) {
qDebug() << TopologyManager::getManager()->getSelectedEntity();
}
if (event->key() == Qt::Key_0) {
MainWindow::window->switchDrawingTool();
}
}