[QGIS Commit] r12279 - in trunk/qgis: python/gui src/app
src/app/legend src/gui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sat Nov 28 16:20:17 EST 2009
Author: mhugent
Date: 2009-11-28 16:20:16 -0500 (Sat, 28 Nov 2009)
New Revision: 12279
Modified:
trunk/qgis/python/gui/qgsmapcanvas.sip
trunk/qgis/src/app/legend/qgslegend.cpp
trunk/qgis/src/app/qgisapp.cpp
trunk/qgis/src/gui/qgsmapcanvas.cpp
trunk/qgis/src/gui/qgsmapcanvas.h
Log:
Apply patch #1716 (improvements to ZoomLast, ZoomNext tools) from Smizuno
Modified: trunk/qgis/python/gui/qgsmapcanvas.sip
===================================================================
--- trunk/qgis/python/gui/qgsmapcanvas.sip 2009-11-28 20:51:36 UTC (rev 12278)
+++ trunk/qgis/python/gui/qgsmapcanvas.sip 2009-11-28 21:20:16 UTC (rev 12279)
@@ -93,6 +93,9 @@
//! Zoom to the next extent (view)
void zoomToNextExtent();
+ // ! Clears the list of extents and sets current extent as first item
+ void clearExtentHistory();
+
/** Zoom to the extent of the selected features of current (vector) layer.
Added in version 1.2: optionally specify different than current layer */
void zoomToSelected(QgsVectorLayer* layer = NULL);
@@ -257,6 +260,14 @@
//! Emit map tool changed event
void mapToolSet(QgsMapTool *tool);
+ //! Emitted when zoom last status changed
+ //! @note: this signal was added in version 1.4
+ void zoomLastStatusChanged( bool );
+
+ //! Emitted when zoom next status changed
+ //! @note: this signal was added in version 1.4
+ void zoomNextStatusChanged( bool );
+
protected:
//! Overridden key press event
Modified: trunk/qgis/src/app/legend/qgslegend.cpp
===================================================================
--- trunk/qgis/src/app/legend/qgslegend.cpp 2009-11-28 20:51:36 UTC (rev 12278)
+++ trunk/qgis/src/app/legend/qgslegend.cpp 2009-11-28 21:20:16 UTC (rev 12279)
@@ -516,7 +516,10 @@
// first layer?
if ( mMapCanvas->layerCount() == 1 )
+ {
mMapCanvas->zoomToFullExtent();
+ mMapCanvas->clearExtentHistory();
+ }
setCurrentItem( llayer );
//make the QTreeWidget item up-to-date
doItemsLayout();
Modified: trunk/qgis/src/app/qgisapp.cpp
===================================================================
--- trunk/qgis/src/app/qgisapp.cpp 2009-11-28 20:51:36 UTC (rev 12278)
+++ trunk/qgis/src/app/qgisapp.cpp 2009-11-28 21:20:16 UTC (rev 12279)
@@ -466,6 +466,7 @@
QgsDebugMsg( QgsApplication::showSettings() );
QgsDebugMsg( "\n--------------------------\n\n\n" );
mMapCanvas->freeze( false );
+ mMapCanvas->clearExtentHistory(); // reset zoomnext/zoomlast
mLastComposerId = 0;
} // QgisApp ctor
@@ -1802,6 +1803,10 @@
connect( mActionRedo, SIGNAL( triggered() ), mUndoWidget, SLOT( redo() ) );
connect( mUndoWidget, SIGNAL( undoStackChanged() ), this, SLOT( updateUndoActions() ) );
+ // Connect status from ZoomLast/ZoomNext to corresponding action
+ connect( mMapCanvas, SIGNAL( zoomLastStatusChanged( bool ) ), mActionZoomLast, SLOT( setEnabled( bool ) ) );
+ connect( mMapCanvas, SIGNAL( zoomNextStatusChanged( bool ) ), mActionZoomNext, SLOT( setEnabled( bool ) ) );
+
// Monitor change of project path
connect( QgsProject::instance(), SIGNAL( readProject( const QDomDocument & ) ),
this, SLOT( projectChanged( const QDomDocument & ) ) );
@@ -3193,6 +3198,7 @@
mMapCanvas->freeze( false );
mMapCanvas->refresh();
+ mMapCanvas->clearExtentHistory();
mMapCanvas->mapRenderer()->setProjectionsEnabled( FALSE );
Modified: trunk/qgis/src/gui/qgsmapcanvas.cpp
===================================================================
--- trunk/qgis/src/gui/qgsmapcanvas.cpp 2009-11-28 20:51:36 UTC (rev 12278)
+++ trunk/qgis/src/gui/qgsmapcanvas.cpp 2009-11-28 21:20:16 UTC (rev 12279)
@@ -504,9 +504,20 @@
mLastExtent.removeAt( i );
}
+ mLastExtent.append( extent() ) ;
- mLastExtent.append( extent() ) ;
+ // adjust history to no more than 20
+ if ( mLastExtent.size() > 20 )
+ {
+ mLastExtent.removeAt( 0 );
+ }
+
+ // the last item is the current extent
mLastExtentIndex = mLastExtent.size() - 1;
+
+ // update controls' enabled state
+ emit zoomLastStatusChanged( mLastExtentIndex > 0 );
+ emit zoomNextStatusChanged( mLastExtentIndex < mLastExtent.size() - 1 );
// notify canvas items of change
updateCanvasItemPositions();
@@ -558,7 +569,7 @@
return;
}
- if ( mLastExtentIndex > 1 )
+ if ( mLastExtentIndex > 0 )
{
mLastExtentIndex--;
mMapRenderer->setExtent( mLastExtent[mLastExtentIndex] );
@@ -566,9 +577,12 @@
updateScale();
if ( mMapOverview )
mMapOverview->drawExtentRect();
+ refresh();
+ // update controls' enabled state
+ emit zoomLastStatusChanged( mLastExtentIndex > 0 );
+ emit zoomNextStatusChanged( mLastExtentIndex < mLastExtent.size() - 1 );
}
- refresh();
} // zoomToPreviousExtent
void QgsMapCanvas::zoomToNextExtent()
@@ -585,10 +599,22 @@
updateScale();
if ( mMapOverview )
mMapOverview->drawExtentRect();
+ refresh();
+ // update controls' enabled state
+ emit zoomLastStatusChanged( mLastExtentIndex > 0 );
+ emit zoomNextStatusChanged( mLastExtentIndex < mLastExtent.size() - 1 );
}
- refresh();
}// zoomToNextExtent
+void QgsMapCanvas::clearExtentHistory()
+{
+ mLastExtent.clear(); // clear the zoom history list
+ mLastExtent.append( extent() ) ; // set the current extent in the list
+ mLastExtentIndex = mLastExtent.size() - 1;
+ // update controls' enabled state
+ emit zoomLastStatusChanged( mLastExtentIndex > 0 );
+ emit zoomNextStatusChanged( mLastExtentIndex < mLastExtent.size() - 1 );
+}// clearExtentHistory
bool QgsMapCanvas::hasCrsTransformEnabled()
@@ -1340,6 +1366,7 @@
{
QDomNode node = nodes.item( 0 );
mMapRenderer->readXML( node );
+ clearExtentHistory(); // clear the extent history on project load
}
else
{
Modified: trunk/qgis/src/gui/qgsmapcanvas.h
===================================================================
--- trunk/qgis/src/gui/qgsmapcanvas.h 2009-11-28 20:51:36 UTC (rev 12278)
+++ trunk/qgis/src/gui/qgsmapcanvas.h 2009-11-28 21:20:16 UTC (rev 12279)
@@ -147,6 +147,9 @@
//! Zoom to the Next extent (view)
void zoomToNextExtent();
+ // ! Clears the list of extents and sets current extent as first item
+ void clearExtentHistory();
+
/** Zoom to the extent of the selected features of current (vector) layer.
Added in version 1.2: optionally specify different than current layer */
void zoomToSelected( QgsVectorLayer* layer = NULL );
@@ -321,6 +324,14 @@
//! Emitted when selection in any layer gets changed
void selectionChanged( QgsMapLayer * layer );
+ //! Emitted when zoom last status changed
+ //! @note: this signal was added in version 1.4
+ void zoomLastStatusChanged( bool );
+
+ //! Emitted when zoom next status changed
+ //! @note: this signal was added in version 1.4
+ void zoomNextStatusChanged( bool );
+
protected:
//! Overridden key press event
void keyPressEvent( QKeyEvent * e );
More information about the QGIS-commit
mailing list