QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsadvanceddigitizingfloater.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsadvanceddigitizingfloater.cpp - floater for CAD tools
3 ----------------------
4 begin : May 2019
5 copyright : (C) Olivier Dalang
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSADVANCEDDIGITIZINGFLOATER
17#define QGSADVANCEDDIGITIZINGFLOATER
18
19#include <QWidget>
20#include <QString>
21
22#include "ui_qgsadvanceddigitizingfloaterbase.h"
24#include "qgis_gui.h"
25#include "qgis_sip.h"
26
27#include <QPointer>
28
29class QgsMapCanvas;
31
40class GUI_EXPORT QgsAdvancedDigitizingFloater : public QWidget, private Ui::QgsAdvancedDigitizingFloaterBase
41{
42 Q_OBJECT
43
44 public:
45
47 enum class FloaterItem : int SIP_ENUM_BASETYPE( IntFlag )
48 {
49 XCoordinate = 1 << 1,
50 YCoordinate = 1 << 2,
51 MCoordinate = 1 << 3,
52 ZCoordinate = 1 << 4,
53 Angle = 1 << 5,
54 CommonAngleSnapping = 1 << 6,
55 Distance = 1 << 7,
56 Bearing = 1 << 8,
57 };
58 Q_DECLARE_FLAGS( FloaterItems, FloaterItem )
59 Q_FLAG( FloaterItem )
60
61
62
69
75 bool active();
76
83 bool itemVisibility( const QgsAdvancedDigitizingFloater::FloaterItem &item ) const;
84
85 public slots:
86
94 void setActive( bool active );
95
103 void setItemVisibility( const QgsAdvancedDigitizingFloater::FloaterItem &item, bool visible );
104
105 private slots:
106
107 void changeX( const QString &text );
108 void changeY( const QString &text );
109 void changeZ( const QString &text );
110 void changeM( const QString &text );
111 void changeCommonAngleSnapping( double angle );
112 void changeDistance( const QString &text );
113 void changeAngle( const QString &text );
114 void changeBearing( const QString &text );
115 void changeLockX( bool locked );
116 void changeLockY( bool locked );
117 void changeLockZ( bool locked );
118 void changeLockM( bool locked );
119 void changeLockDistance( bool locked );
120 void changeLockAngle( bool locked );
121 void changeRelativeX( bool relative );
122 void changeRelativeY( bool relative );
123 void changeRelativeZ( bool relative );
124 void changeRelativeM( bool relative );
125 // void changeRelativeDistance( bool relative ); // doesn't happen
126 void changeRelativeAngle( bool relative );
127 void focusOnX();
128 void focusOnY();
129 void focusOnZ();
130 void focusOnM();
131 void focusOnAngle();
132 void focusOnDistance();
133 void enabledChangedX( bool enabled );
134 void enabledChangedY( bool enabled );
135 void enabledChangedZ( bool enabled );
136 void enabledChangedM( bool enabled );
137 void enabledChangedAngle( bool enabled );
138 void enabledChangedDistance( bool enabled );
139 void enabledCommonAngleSnapping( bool enabled );
140 void enabledChangedBearing( bool enabled );
141
142 private:
143
145 QgsMapCanvas *mMapCanvas = nullptr;
146
148 QPointer< QgsAdvancedDigitizingDockWidget > mCadDockWidget;
149
154 bool eventFilter( QObject *obj, QEvent *event ) override SIP_FORCE;
155
160 void updatePos( const QPoint &pos );
161
165 void hideIfDisabled();
166
168 bool mActive = false;
169
170 FloaterItems mItemsVisibility;
171};
172
173#endif // QGSADVANCEDDIGITIZINGFLOATER_H
The QgsAdvancedDigitizingDockWidget class is a dockable widget used to handle the CAD tools on top of...
The QgsAdvancedDigitizingFloater class is widget that floats next to the mouse pointer,...
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:93
double ANALYSIS_EXPORT angle(QgsPoint *p1, QgsPoint *p2, QgsPoint *p3, QgsPoint *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored)
Definition: MathUtils.cpp:716
#define SIP_FORCE
Definition: qgis_sip.h:131
#define SIP_ENUM_BASETYPE(type)
Definition: qgis_sip.h:278