-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbasespace.h
129 lines (88 loc) · 3.28 KB
/
basespace.h
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#ifndef BASEGRAPHICSVIEW_H
#define BASEGRAPHICSVIEW_H
#include <QGraphicsView>
#include <QGraphicsScene>
#include "elementfactory.h"
#include "preferences.h"
#include "utilities.h"
#include "commondef.h"
class BaseSpace;
class BaseElement;
class GroupPickerElement;
class BaseSpaceScene : public QGraphicsScene
{
Q_OBJECT
bool m_drawing;
bool m_picking;
ElementFactoryMethod m_elementFactoryMethod;
BaseElement * m_drawingElement;
BaseElement * m_activeElement;
BaseSpace * m_space;
Q_PROPERTY(PhysicalSize physicalSize READ physicalSize WRITE setPhysicalSize NOTIFY physicalSizeChanged)
PhysicalSize m_physicalSize;
QSize m_actualPxSize;
GroupPickerElement * m_groupPicker;
public:
explicit BaseSpaceScene(BaseSpace *parent);
void setDrawing(bool arg1,ElementFactoryMethod method = 0);
QSize actualPxSize();
inline PhysicalSize physicalSize() const
{
return m_physicalSize;
}
qreal scaleFactor();
void setPicking(bool);
bool picking() const { return m_picking ;}
inline BaseElement * activeElement() const {return m_activeElement;}
void pickElements(QList<BaseElement *> & elements);
public slots:
void setPhysicalSize(PhysicalSize physicalSize);
signals:
void physicalSizeChanged(PhysicalSize physicalSize);
void elementUnpicked();
void elementPicked(BaseElement * element);
protected:
void drawBackground(QPainter *painter, const QRectF &rect) Q_DECL_OVERRIDE;
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) Q_DECL_OVERRIDE;
virtual void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) Q_DECL_OVERRIDE;
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) Q_DECL_OVERRIDE;
virtual void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE;
private:
friend class BaseSpace;
};
class BaseSpace : public QGraphicsView
{
Q_OBJECT
BaseSpaceScene * m_scene;
bool m_shiftLock;//shift key is pressed during resize or move
public:
explicit BaseSpace(QWidget *parent = Q_NULLPTR);
~BaseSpace();
//BaseElement * elementSelectd() const;
BaseElement * elementAt(const QPointF & scenePos) const;
void setDrawing(bool arg1,ElementFactoryMethod method = 0);
virtual void init();
void setPicking(bool);
bool picking() const;
inline BaseSpaceScene * baseScene() {return m_scene;}
BaseElement * activeElement() const { return m_scene->activeElement();}
void emitElementCreated(BaseElement * element);
//automatically set a element name
QString nameElementAuto(int graphicsType) const;
protected:
//Picker * m_picker;
void resizeEvent(QResizeEvent *event) override;
void scrollContentsBy(int dx, int dy) override;
public slots:
void zoom(qreal factor);
void zoomToFit();
void pickElements(QList<BaseElement *> & elements);
signals:
void scaled();
void elementCreated(BaseElement * element);
//void picked(BaseElement * value);
//void unpicked(BaseElement * value);
void originalSizeChanged(QSize originalSize);
};
#endif // BASEGRAPHICSVIEW_H