/
mapcoordsdialog.cpp
59 lines (43 loc) · 1.37 KB
/
mapcoordsdialog.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
#include <QValidator>
#include <mapcoordsdialog.h>
#include <qgsmapcanvas.h>
#include <qgsmaptoolemitpoint.h>
MapCoordsDialog::MapCoordsDialog() {
}
MapCoordsDialog::MapCoordsDialog(const QgsPoint& pixelCoords, QgsMapCanvas* qgisCanvas,
QWidget* parent, Qt::WFlags fl)
: QDialog(parent, fl) {
setupUi(this);
mPixelCoords = pixelCoords;
mQgisCanvas = qgisCanvas;
leXCoord->setValidator(new QDoubleValidator(this));
leYCoord->setValidator(new QDoubleValidator(this));
mToolEmitPoint = new QgsMapToolEmitPoint(qgisCanvas);
mToolEmitPoint->setButton(btnPointFromCanvas);
connect(mToolEmitPoint, SIGNAL(gotPoint(QgsPoint&,Qt::MouseButton)), this, SLOT(setXY(QgsPoint&)));
}
MapCoordsDialog::~MapCoordsDialog() {
delete mToolEmitPoint;
}
void MapCoordsDialog::on_buttonOk_clicked() {
QgsPoint mapCoords(leXCoord->text().toDouble(), leYCoord->text().toDouble());
emit pointAdded(mPixelCoords, mapCoords);
accept();
}
void MapCoordsDialog::on_buttonCancel_clicked()
{
reject();
}
void MapCoordsDialog::setXY(QgsPoint & xy)
{
leXCoord->clear();
leYCoord->clear();
leXCoord->insert(QString::number(xy.x(),'f',7));
leYCoord->insert(QString::number(xy.y(),'f',7));
mQgisCanvas->setMapTool(mPrevMapTool);
}
void MapCoordsDialog::on_btnPointFromCanvas_clicked()
{
mPrevMapTool = mQgisCanvas->mapTool();
mQgisCanvas->setMapTool(mToolEmitPoint);
}