/
coordinatecapture.h
168 lines (143 loc) · 5.49 KB
/
coordinatecapture.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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
/***************************************************************************
coordinatecapture.h
-------------------
begin : Jan 21, 2004
copyright : (C) 2004 by Tim Sutton
email : tim@linfiniti.com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
/* $Id: plugin.h 7796 2007-12-16 22:11:38Z homann $ */
/***************************************************************************
* QGIS Programming conventions:
*
* mVariableName - a class level member variable
* sVariableName - a static class level member variable
* variableName() - accessor for a class member (no 'get' in front of name)
* setVariableName() - mutator for a class member (prefix with 'set')
*
* Additional useful conventions:
*
* theVariableName - a method parameter (prefix with 'the')
* myVariableName - a locally declared variable within a method ('my' prefix)
*
* DO: Use mixed case variable names - myVariableName
* DON'T: separate variable names using underscores: my_variable_name (NO!)
*
* **************************************************************************/
#ifndef COORDINATECAPTURE_H
#define COORDINATECAPTURE_H
//QT4 includes
#include <QObject>
#include <QPointer>
//QGIS includes
#include "../qgisplugin.h"
#include "coordinatecapturemaptool.h"
#include <qgscoordinatereferencesystem.h>
#include <qgscoordinatetransform.h>
//forward declarations
class QAction;
class QToolBar;
class QToolButton;
class QPushButton;
class QDockWidget;
class QLineEdit;
class QIcon;
class QLabel;
class QgisInterface;
class QgsPoint;
/**
* \class Plugin
* \brief [name] plugin for QGIS
* [description]
*/
class CoordinateCapture: public QObject, public QgisPlugin
{
Q_OBJECT
public:
//////////////////////////////////////////////////////////////////////
//
// MANDATORY PLUGIN METHODS FOLLOW
//
//////////////////////////////////////////////////////////////////////
/**
* Constructor for a plugin. The QgisInterface pointer is passed by
* QGIS when it attempts to instantiate the plugin.
* @param theInterface Pointer to the QgisInterface object.
*/
CoordinateCapture( QgisInterface * theInterface );
//! Destructor
virtual ~CoordinateCapture();
public slots:
//! init the gui
virtual void initGui();
//! Show the dialog box
void run();
//! unload the plugin
void unload();
//! show the help document
void help();
//! Set the Coordinate Reference System used for displaying non canvas CRS coord
void setCRS();
//! Called when mouse clicks on the canvas. Will populate text box with coords.
void mouseClicked( QgsPoint thePoint );
/** Called when mouse moved over the canvas. If the tracking button is toggled,
* the text box coords will be updated. */
void mouseMoved( QgsPoint thePoint );
//! Called when mouse is clicked on the canvas
void update( QgsPoint thePoint );
//! Called when user clicks the copy button
void copy();
//! called when the project's CRS is changed
void setSourceCrs();
//! update the plugins theme when the app tells us its theme is changed
void setCurrentTheme ( QString theThemeName );
private:
//! Container for the coordinate info
QPointer<QDockWidget> mpDockWidget;
//!output display for user defined Coordinate Reference System
QPointer<QLineEdit> mpUserCrsEdit;
//!output display for CRS coord
QPointer<QLineEdit> mpCanvasEdit;
//!Our custom map tool to capture clicks
CoordinateCaptureMapTool * mpMapTool;
//!A two buttons to track and capture coordinates
QToolButton * mpTrackMouseButton;
QPushButton * mpCaptureButton;
//! A toolbutton to select crs to display the coordinates
QToolButton * mypUserCrsToolButton;
//! A label for coordinates in the project crs
QLabel * mypCRSLabel;
//! transform object
QgsCoordinateTransform mTransform;
//! map coordinate display precision
int mCanvasDisplayPrecision;
//! user CRS object
QgsCoordinateReferenceSystem mCrs;
//! user coordinate display precision
int mUserCrsDisplayPrecision;
//! Get the path to the icon from the best available theme
QString getIconPath( const QString theName );
////////////////////////////////////////////////////////////////////
//
// MANDATORY PLUGIN PROPERTY DECLARATIONS .....
//
////////////////////////////////////////////////////////////////////
int mPluginType;
//! Pointer to the QGIS interface object
QgisInterface *mQGisIface;
//!pointer to the qaction for this plugin
QAction * mQActionPointer;
////////////////////////////////////////////////////////////////////
//
// ADD YOUR OWN PROPERTY DECLARATIONS AFTER THIS POINT.....
//
////////////////////////////////////////////////////////////////////
};
#endif //CoordinateCapture_H