[QGIS Commit] r9940 - trunk/qgis/src/plugins/coordinate_capture
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Wed Jan 7 15:44:04 EST 2009
Author: timlinux
Date: 2009-01-07 15:44:04 -0500 (Wed, 07 Jan 2009)
New Revision: 9940
Modified:
trunk/qgis/src/plugins/coordinate_capture/coordinatecapture.cpp
trunk/qgis/src/plugins/coordinate_capture/coordinatecapture.h
Log:
Applied patch from ticket #1478 to trunk
Modified: trunk/qgis/src/plugins/coordinate_capture/coordinatecapture.cpp
===================================================================
--- trunk/qgis/src/plugins/coordinate_capture/coordinatecapture.cpp 2009-01-07 14:44:18 UTC (rev 9939)
+++ trunk/qgis/src/plugins/coordinate_capture/coordinatecapture.cpp 2009-01-07 20:44:04 UTC (rev 9940)
@@ -80,7 +80,14 @@
*/
void CoordinateCapture::initGui()
{
- mEpsgId = GEO_EPSG_CRS_ID;
+ mCrs.createFromSrsId( GEOCRS_ID ); // initialize the CRS object
+
+ connect( mQGisIface->mapCanvas()->mapRenderer(), SIGNAL( destinationSrsChanged() ), this, SLOT( setSourceCrs() ) );
+
+ setSourceCrs(); //set up the source CRS
+ mTransform.setDestCRS( mCrs ); // set the CRS in the transform
+ mUserCrsDisplayPrecision = ( mCrs.mapUnits() == QGis::Degrees ) ? 8 : 3; // precision depends on CRS units
+
// Create the action for tool
mQActionPointer = new QAction( QIcon( ":/coordinatecapture/coordinate_capture.png" ), tr( "Coordinate Capture" ), this );
// Set the what's this text
@@ -158,14 +165,21 @@
void CoordinateCapture::setCRS()
{
QgsGenericProjectionSelector mySelector( mQGisIface->mainWindow() );
- mySelector.setSelectedEpsg( mEpsgId );
+ mySelector.setSelectedCrsId( mCrs.srsid() );
if ( mySelector.exec() )
{
- mEpsgId = mySelector.selectedEpsg();
- mProj4Str = mySelector.selectedProj4String();
+ mCrs.createFromSrsId( mySelector.selectedCrsId() );
+ mTransform.setDestCRS( mCrs );
+ mUserCrsDisplayPrecision = ( mCrs.mapUnits() == QGis::Degrees ) ? 8 : 3; //precision depends on CRS units
}
}
+void CoordinateCapture::setSourceCrs()
+{
+ mTransform.setSourceCrs( mQGisIface->mapCanvas()->mapRenderer()->destinationSrs() );
+ mCanvasDisplayPrecision = ( mQGisIface->mapCanvas()->mapRenderer()->destinationSrs().mapUnits() == QGis::Degrees ) ? 8 : 3; // for the map canvas coordinate display
+}
+
void CoordinateCapture::mouseClicked( QgsPoint thePoint )
{
//clicking on the canvas will update the widgets and then disable
@@ -185,15 +199,12 @@
void CoordinateCapture::update( QgsPoint thePoint )
{
//this is the coordinate resolved back to lat / lon
- QgsCoordinateReferenceSystem mySrs;
- mySrs.createFromProj4( mProj4Str );
- QgsCoordinateTransform myTransform( mQGisIface->mapCanvas()->mapRenderer()->destinationSrs(), mySrs );
- QgsPoint myUserCrsPoint = myTransform.transform( thePoint );
- mpUserCrsEdit->setText( QString::number( myUserCrsPoint.x(), 'f', 3 ) + "," +
- QString::number( myUserCrsPoint.y(), 'f', 3 ) );
+ QgsPoint myUserCrsPoint = mTransform.transform( thePoint );
+ mpUserCrsEdit->setText( QString::number( myUserCrsPoint.x(), 'f', mUserCrsDisplayPrecision ) + "," +
+ QString::number( myUserCrsPoint.y(), 'f', mUserCrsDisplayPrecision ) );
// This is the coordinate space of the map canvas
- mpCanvasEdit->setText( QString::number( thePoint.x(), 'f', 3 ) + "," +
- QString::number( thePoint.y(), 'f', 3 ) );
+ mpCanvasEdit->setText( QString::number( thePoint.x(), 'f', mCanvasDisplayPrecision ) + "," +
+ QString::number( thePoint.y(), 'f', mCanvasDisplayPrecision ) );
}
void CoordinateCapture::copy()
{
Modified: trunk/qgis/src/plugins/coordinate_capture/coordinatecapture.h
===================================================================
--- trunk/qgis/src/plugins/coordinate_capture/coordinatecapture.h 2009-01-07 14:44:18 UTC (rev 9939)
+++ trunk/qgis/src/plugins/coordinate_capture/coordinatecapture.h 2009-01-07 20:44:04 UTC (rev 9940)
@@ -43,6 +43,8 @@
//QGIS includes
#include "../qgisplugin.h"
#include "coordinatecapturemaptool.h"
+#include <qgscoordinatereferencesystem.h>
+#include <qgscoordinatetransform.h>
//forward declarations
class QAction;
@@ -99,8 +101,9 @@
void update( QgsPoint thePoint );
//! Called when user clicks the copy button
void copy();
+ //! called when the project's CRS is changed
+ void setSourceCrs();
-
private:
//! Container for the coordinate info
QPointer<QDockWidget> mpDockWidget;
@@ -117,11 +120,18 @@
//!A toolbutton to keep track whether mouse tracking is enabled
QToolButton * mpTrackMouseButton;
- //!epsg id for showin in geoedit box
- long mEpsgId;
- //!proj4 string for coordinate translation
- QString mProj4Str;
+ //! transform object
+ QgsCoordinateTransform mTransform;
+ //! map coordinate display precision
+ int mCanvasDisplayPrecision;
+
+ //! user CRS object
+ QgsCoordinateReferenceSystem mCrs;
+
+ //! user coordinate display precision
+ int mUserCrsDisplayPrecision;
+
////////////////////////////////////////////////////////////////////
//
// MANDATORY PLUGIN PROPERTY DECLARATIONS .....
More information about the QGIS-commit
mailing list