[QGIS Commit] r10705 - in trunk/qgis: images/themes/default
python/core src/app src/core
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sat May 2 15:38:46 EDT 2009
Author: wonder
Date: 2009-05-02 15:38:46 -0400 (Sat, 02 May 2009)
New Revision: 10705
Added:
trunk/qgis/images/themes/default/mActionDeleteRing.png
trunk/qgis/src/app/qgsmaptooldeletering.cpp
trunk/qgis/src/app/qgsmaptooldeletering.h
Removed:
trunk/qgis/images/themes/default/mActionDeleteHole.png
trunk/qgis/src/app/qgsmaptooldeletehole.cpp
trunk/qgis/src/app/qgsmaptooldeletehole.h
Modified:
trunk/qgis/python/core/qgsgeometry.sip
trunk/qgis/src/app/CMakeLists.txt
trunk/qgis/src/app/qgisapp.cpp
trunk/qgis/src/app/qgisapp.h
trunk/qgis/src/core/qgsgeometry.cpp
trunk/qgis/src/core/qgsgeometry.h
Log:
Renamed delete hole tool to delete ring per suggestion by Borys.
Deleted: trunk/qgis/images/themes/default/mActionDeleteHole.png
===================================================================
(Binary files differ)
Copied: trunk/qgis/images/themes/default/mActionDeleteRing.png (from rev 10700, trunk/qgis/images/themes/default/mActionDeleteHole.png)
===================================================================
(Binary files differ)
Property changes on: trunk/qgis/images/themes/default/mActionDeleteRing.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Name: svn:mergeinfo
+
Modified: trunk/qgis/python/core/qgsgeometry.sip
===================================================================
--- trunk/qgis/python/core/qgsgeometry.sip 2009-05-02 19:08:21 UTC (rev 10704)
+++ trunk/qgis/python/core/qgsgeometry.sip 2009-05-02 19:38:46 UTC (rev 10705)
@@ -289,11 +289,11 @@
// TODO: destruction of created geometries??
QList<QgsGeometry*> asGeometryCollection() /Factory/;
- /** delete a hole in polygon or multipolygon.
+ /** delete a ring in polygon or multipolygon.
Ring 0 is outer ring and can't be deleted.
@return TRUE on success
@note added in version 1.2 */
- bool deleteHole( int ringNum, int partNum = 0 );
+ bool deleteRing( int ringNum, int partNum = 0 );
/** delete part identified by the part number
@return TRUE on success
Modified: trunk/qgis/src/app/CMakeLists.txt
===================================================================
--- trunk/qgis/src/app/CMakeLists.txt 2009-05-02 19:08:21 UTC (rev 10704)
+++ trunk/qgis/src/app/CMakeLists.txt 2009-05-02 19:38:46 UTC (rev 10705)
@@ -27,7 +27,7 @@
qgsmaptooladdisland.cpp
qgsmaptooladdring.cpp
qgsmaptoolcapture.cpp
- qgsmaptooldeletehole.cpp
+ qgsmaptooldeletering.cpp
qgsmaptooldeletepart.cpp
qgsmaptooldeletevertex.cpp
qgsmaptooledit.cpp
Modified: trunk/qgis/src/app/qgisapp.cpp
===================================================================
--- trunk/qgis/src/app/qgisapp.cpp 2009-05-02 19:08:21 UTC (rev 10704)
+++ trunk/qgis/src/app/qgisapp.cpp 2009-05-02 19:38:46 UTC (rev 10705)
@@ -157,7 +157,7 @@
#include "qgsmaptooladdisland.h"
#include "qgsmaptooladdring.h"
#include "qgsmaptooladdvertex.h"
-#include "qgsmaptooldeletehole.h"
+#include "qgsmaptooldeletering.h"
#include "qgsmaptooldeletepart.h"
#include "qgsmaptooldeletevertex.h"
#include "qgsmaptoolidentify.h"
@@ -469,7 +469,7 @@
delete mMapTools.mVertexDelete;
delete mMapTools.mAddRing;
delete mMapTools.mSimplifyFeature;
- delete mMapTools.mDeleteHole;
+ delete mMapTools.mDeleteRing;
delete mMapTools.mDeletePart;
delete mMapTools.mAddIsland;
@@ -678,10 +678,10 @@
connect( mActionSimplifyFeature, SIGNAL( triggered() ), this, SLOT( simplifyFeature() ) );
mActionSimplifyFeature->setEnabled( false );
- mActionDeleteHole = new QAction( getThemeIcon( "mActionDeleteHole.png" ), tr( "Delete Hole" ), this );
- mActionDeleteHole->setStatusTip( tr( "Delete Hole" ) );
- connect( mActionDeleteHole, SIGNAL( triggered() ), this, SLOT( deleteHole() ) );
- mActionDeleteHole->setEnabled( false );
+ mActionDeleteRing = new QAction( getThemeIcon( "mActionDeleteRing.png" ), tr( "Delete Ring" ), this );
+ mActionDeleteRing->setStatusTip( tr( "Delete Ring" ) );
+ connect( mActionDeleteRing, SIGNAL( triggered() ), this, SLOT( deleteRing() ) );
+ mActionDeleteRing->setEnabled( false );
mActionDeletePart = new QAction( getThemeIcon( "mActionDeletePart.png" ), tr( "Delete Part" ), this );
mActionDeletePart->setStatusTip( tr( "Delete Part" ) );
@@ -1014,8 +1014,8 @@
mMapToolGroup->addAction( mActionAddIsland );
mActionSimplifyFeature->setCheckable( true );
mMapToolGroup->addAction( mActionSimplifyFeature );
- mActionDeleteHole->setCheckable( true );
- mMapToolGroup->addAction( mActionDeleteHole );
+ mActionDeleteRing->setCheckable( true );
+ mMapToolGroup->addAction( mActionDeleteRing );
mActionDeletePart->setCheckable( true );
mMapToolGroup->addAction( mActionDeletePart );
}
@@ -1104,7 +1104,7 @@
mEditMenu->addAction( mActionSimplifyFeature );
mEditMenu->addAction( mActionAddRing );
mEditMenu->addAction( mActionAddIsland );
- mEditMenu->addAction( mActionDeleteHole );
+ mEditMenu->addAction( mActionDeleteRing );
mEditMenu->addAction( mActionDeletePart );
if ( layout == QDialogButtonBox::GnomeLayout || layout == QDialogButtonBox::MacLayout )
@@ -1306,7 +1306,7 @@
mAdvancedDigitizeToolBar->addAction( mActionSimplifyFeature );
mAdvancedDigitizeToolBar->addAction( mActionAddRing );
mAdvancedDigitizeToolBar->addAction( mActionAddIsland );
- mAdvancedDigitizeToolBar->addAction( mActionDeleteHole );
+ mAdvancedDigitizeToolBar->addAction( mActionDeleteRing );
mAdvancedDigitizeToolBar->addAction( mActionDeletePart );
mToolbarMenu->addAction( mAdvancedDigitizeToolBar->toggleViewAction() );
@@ -1534,7 +1534,7 @@
mActionSimplifyFeature->setIcon( getThemeIcon( "/mActionSimplify.png" ) );
mActionAddRing->setIcon( getThemeIcon( "/mActionAddRing.png" ) );
mActionAddIsland->setIcon( getThemeIcon( "/mActionAddIsland.png" ) );
- mActionDeleteHole->setIcon( getThemeIcon( "/mActionDeleteHole.png" ) );
+ mActionDeleteRing->setIcon( getThemeIcon( "/mActionDeleteRing.png" ) );
mActionDeletePart->setIcon( getThemeIcon( "/mActionDeletePart.png" ) );
mActionZoomIn->setIcon( getThemeIcon( "/mActionZoomIn.png" ) );
mActionZoomOut->setIcon( getThemeIcon( "/mActionZoomOut.png" ) );
@@ -1655,8 +1655,8 @@
mMapTools.mAddIsland = new QgsMapToolAddIsland( mMapCanvas );
mMapTools.mSimplifyFeature = new QgsMapToolSimplify( mMapCanvas );
mMapTools.mSimplifyFeature->setAction( mActionSimplifyFeature );
- mMapTools.mDeleteHole = new QgsMapToolDeleteHole( mMapCanvas );
- mMapTools.mDeleteHole->setAction( mActionDeleteHole );
+ mMapTools.mDeleteRing = new QgsMapToolDeleteRing( mMapCanvas );
+ mMapTools.mDeleteRing->setAction( mActionDeleteRing );
mMapTools.mDeletePart = new QgsMapToolDeletePart( mMapCanvas );
mMapTools.mDeletePart->setAction( mActionDeletePart );
//ensure that non edit tool is initialised or we will get crashes in some situations
@@ -4037,9 +4037,9 @@
mMapCanvas->setMapTool( mMapTools.mSimplifyFeature );
}
-void QgisApp::deleteHole()
+void QgisApp::deleteRing()
{
- mMapCanvas->setMapTool( mMapTools.mDeleteHole );
+ mMapCanvas->setMapTool( mMapTools.mDeleteRing );
}
void QgisApp::deletePart()
@@ -5302,7 +5302,7 @@
mActionAddIsland->setEnabled( false );
mActionSplitFeatures->setEnabled( false );
mActionSimplifyFeature->setEnabled( false );
- mActionDeleteHole->setEnabled( false );
+ mActionDeleteRing->setEnabled( false );
if ( vlayer->isEditable() && dprovider->capabilities() & QgsVectorDataProvider::ChangeGeometries )
{
@@ -5334,7 +5334,7 @@
mActionCapturePolygon->setVisible( false );
mActionAddRing->setEnabled( false );
mActionAddIsland->setEnabled( false );
- mActionDeleteHole->setEnabled( false );
+ mActionDeleteRing->setEnabled( false );
}
else if ( vlayer->geometryType() == QGis::Polygon )
{
@@ -5346,7 +5346,7 @@
mActionAddIsland->setEnabled( true );
mActionSplitFeatures->setEnabled( true );
mActionSimplifyFeature->setEnabled( true );
- mActionDeleteHole->setEnabled( true );
+ mActionDeleteRing->setEnabled( true );
mActionDeletePart->setEnabled( true );
}
else
@@ -5357,7 +5357,7 @@
mActionAddIsland->setEnabled( false );
mActionSplitFeatures->setEnabled( false );
mActionSimplifyFeature->setEnabled( false );
- mActionDeleteHole->setEnabled( false );
+ mActionDeleteRing->setEnabled( false );
mActionDeletePart->setEnabled( false );
}
mActionCapturePoint->setEnabled( false );
Modified: trunk/qgis/src/app/qgisapp.h
===================================================================
--- trunk/qgis/src/app/qgisapp.h 2009-05-02 19:08:21 UTC (rev 10704)
+++ trunk/qgis/src/app/qgisapp.h 2009-05-02 19:38:46 UTC (rev 10705)
@@ -223,7 +223,7 @@
QAction *actionAddRing() { return mActionAddRing; }
QAction *actionAddIsland() { return mActionAddIsland; }
QAction *actionSimplifyFeature() { return mActionSimplifyFeature; }
- QAction *actionDeleteHole() { return mActionDeleteHole; }
+ QAction *actionDeleteRing() { return mActionDeleteRing; }
QAction *actionDeletePart() { return mActionDeletePart; }
QAction *actionEditSeparator2() { return mActionEditSeparator2; }
@@ -502,8 +502,8 @@
void addIsland();
//! simplifies feature
void simplifyFeature();
- //! deletes hole in polygon
- void deleteHole();
+ //! deletes ring in polygon
+ void deleteRing();
//! deletes part of polygon
void deletePart();
@@ -714,7 +714,7 @@
QAction *mActionAddIsland;
QAction *mActionEditSeparator2;
QAction *mActionSimplifyFeature;
- QAction *mActionDeleteHole;
+ QAction *mActionDeleteRing;
QAction *mActionDeletePart;
QAction *mActionEditSeparator3;
@@ -833,7 +833,7 @@
QgsMapTool* mAddRing;
QgsMapTool* mAddIsland;
QgsMapTool* mSimplifyFeature;
- QgsMapTool* mDeleteHole;
+ QgsMapTool* mDeleteRing;
QgsMapTool* mDeletePart;
} mMapTools;
Deleted: trunk/qgis/src/app/qgsmaptooldeletehole.cpp
===================================================================
--- trunk/qgis/src/app/qgsmaptooldeletehole.cpp 2009-05-02 19:08:21 UTC (rev 10704)
+++ trunk/qgis/src/app/qgsmaptooldeletehole.cpp 2009-05-02 19:38:46 UTC (rev 10705)
@@ -1,160 +0,0 @@
-/***************************************************************************
- qgsmaptooldeletehole.h - delete a hole from polygon
- ---------------------
- begin : April 2009
- copyright : (C) 2009 by Richard Kostecky
- email : csf dot kostej at mail dot 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. *
- * *
- ***************************************************************************/
-
-#include "qgsmaptooldeletehole.h"
-
-#include "qgsmapcanvas.h"
-#include "qgsvertexmarker.h"
-#include "qgsvectorlayer.h"
-
-#include <QMouseEvent>
-#include <QMessageBox>
-
-QgsMapToolDeleteHole::QgsMapToolDeleteHole( QgsMapCanvas* canvas )
- : QgsMapToolVertexEdit( canvas ), mCross( 0 )
-{
-}
-
-QgsMapToolDeleteHole::~QgsMapToolDeleteHole()
-{
- delete mCross;
-}
-
-void QgsMapToolDeleteHole::canvasMoveEvent( QMouseEvent * e )
-{
- //nothing to do
-}
-
-void QgsMapToolDeleteHole::canvasPressEvent( QMouseEvent * e )
-{
- delete mCross;
- mCross = 0;
-
- mRecentSnappingResults.clear();
- //do snap -> new recent snapping results
- if ( mSnapper.snapToCurrentLayer( e->pos(), mRecentSnappingResults, QgsSnapper::SnapToVertex ) != 0 )
- {
- //error
- }
-
- if ( mRecentSnappingResults.size() > 0 )
- {
- QgsPoint markerPoint = mRecentSnappingResults.begin()->snappedVertex;
-
- //show vertex marker
- mCross = new QgsVertexMarker( mCanvas );
- mCross->setIconType( QgsVertexMarker::ICON_X );
- mCross->setCenter( markerPoint );
- }
- else
- {
- displaySnapToleranceWarning();
- }
-}
-
-void QgsMapToolDeleteHole::canvasReleaseEvent( QMouseEvent * e )
-{
- delete mCross;
- mCross = 0;
-
- QgsMapLayer* currentLayer = mCanvas->currentLayer();
- if ( !currentLayer )
- return;
-
- QgsVectorLayer* vlayer = dynamic_cast<QgsVectorLayer*>( currentLayer );
- if ( !vlayer )
- return;
-
-
- if ( mRecentSnappingResults.size() > 0 )
- {
- QList<QgsSnappingResult>::iterator sr_it = mRecentSnappingResults.begin();
- for ( ; sr_it != mRecentSnappingResults.end(); ++sr_it )
- {
- deleteHole( sr_it->snappedAtGeometry, sr_it->snappedVertexNr, vlayer);
- }
- }
-}
-
-
-void QgsMapToolDeleteHole::deleteHole( int fId, int beforeVertexNr, QgsVectorLayer* vlayer)
-{
- QgsFeature f;
- vlayer->featureAtId( fId, f );
-
- QgsGeometry* g = f.geometry();
- QGis::WkbType wkbtype = g->wkbType();
- int ringNum, partNum = 0;
-
- if (wkbtype == QGis::WKBPolygon || wkbtype == QGis::WKBPolygon25D)
- {
- ringNum = ringNumInPolygon( g, beforeVertexNr );
- }
- else if (wkbtype == QGis::WKBMultiPolygon || wkbtype == QGis::WKBMultiPolygon25D)
- {
- ringNum = ringNumInMultiPolygon( g, beforeVertexNr, partNum );
- }
- else
- return;
-
- if (g->deleteHole( ringNum, partNum ))
- {
- vlayer->changeGeometry( fId, g );
- mCanvas->refresh();
- }
-
-}
-
-int QgsMapToolDeleteHole::ringNumInPolygon( QgsGeometry* g, int vertexNr )
-{
- QgsPolygon polygon = g->asPolygon();
- for (int ring = 0; ring < polygon.count(); ring++)
- {
- if (vertexNr < polygon[ring].count())
- return ring;
-
- vertexNr -= polygon[ring].count();
- }
- return -1;
-}
-
-int QgsMapToolDeleteHole::ringNumInMultiPolygon( QgsGeometry* g, int vertexNr, int& partNum )
-{
- QgsMultiPolygon mpolygon = g->asMultiPolygon();
- for (int part = 0; part < mpolygon.count(); part++)
- {
- const QgsPolygon& polygon = mpolygon[part];
- for (int ring = 0; ring < polygon.count(); ring++)
- {
- if (vertexNr < polygon[ring].count())
- {
- partNum = part;
- return ring;
- }
-
- vertexNr -= polygon[ring].count();
- }
- }
- return -1;
-}
-
-
-void QgsMapToolDeleteHole::deactivate()
-{
- delete mCross;
- mCross = 0;
-
- QgsMapTool::deactivate();
-}
Deleted: trunk/qgis/src/app/qgsmaptooldeletehole.h
===================================================================
--- trunk/qgis/src/app/qgsmaptooldeletehole.h 2009-05-02 19:08:21 UTC (rev 10704)
+++ trunk/qgis/src/app/qgsmaptooldeletehole.h 2009-05-02 19:38:46 UTC (rev 10705)
@@ -1,53 +0,0 @@
-/***************************************************************************
- qgsmaptooldeletehole.h - delete a hole from polygon
- ---------------------
- begin : April 2009
- copyright : (C) 2009 by Richard Kostecky
- email : csf dot kostej at mail dot 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. *
- * *
- ***************************************************************************/
-
-#ifndef QGSMAPTOOLDELETEHOLE_H
-#define QGSMAPTOOLDELETEHOLE_H
-
-#include "qgsmaptoolvertexedit.h"
-#include <QUndoCommand>
-
-class QgsVertexMarker;
-/**Map tool to delete vertices from line/polygon features*/
-
-class QgsMapToolDeleteHole: public QgsMapToolVertexEdit
-{
- public:
- QgsMapToolDeleteHole( QgsMapCanvas* canvas );
- virtual ~QgsMapToolDeleteHole();
-
- void canvasMoveEvent( QMouseEvent * e );
-
- void canvasPressEvent( QMouseEvent * e );
-
- void canvasReleaseEvent( QMouseEvent * e );
-
- //! called when map tool is being deactivated
- void deactivate();
-
- private:
- QgsVertexMarker* mCross;
-
- //! delete hole from the geometry
- void deleteHole( int fId, int beforeVertexNr, QgsVectorLayer* vlayer);
-
- //! return ring number in polygon
- int ringNumInPolygon( QgsGeometry* g, int vertexNr );
-
- //! return ring number in multipolygon and set parNum to index of the part
- int ringNumInMultiPolygon( QgsGeometry* g, int vertexNr, int& partNum );
-};
-
-#endif
Copied: trunk/qgis/src/app/qgsmaptooldeletering.cpp (from rev 10701, trunk/qgis/src/app/qgsmaptooldeletehole.cpp)
===================================================================
--- trunk/qgis/src/app/qgsmaptooldeletering.cpp (rev 0)
+++ trunk/qgis/src/app/qgsmaptooldeletering.cpp 2009-05-02 19:38:46 UTC (rev 10705)
@@ -0,0 +1,160 @@
+/***************************************************************************
+ qgsmaptooldeletering.cpp - delete a ring from polygon
+ ---------------------
+ begin : April 2009
+ copyright : (C) 2009 by Richard Kostecky
+ email : csf dot kostej at mail dot 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. *
+ * *
+ ***************************************************************************/
+
+#include "qgsmaptooldeletering.h"
+
+#include "qgsmapcanvas.h"
+#include "qgsvertexmarker.h"
+#include "qgsvectorlayer.h"
+
+#include <QMouseEvent>
+#include <QMessageBox>
+
+QgsMapToolDeleteRing::QgsMapToolDeleteRing( QgsMapCanvas* canvas )
+ : QgsMapToolVertexEdit( canvas ), mCross( 0 )
+{
+}
+
+QgsMapToolDeleteRing::~QgsMapToolDeleteRing()
+{
+ delete mCross;
+}
+
+void QgsMapToolDeleteRing::canvasMoveEvent( QMouseEvent * e )
+{
+ //nothing to do
+}
+
+void QgsMapToolDeleteRing::canvasPressEvent( QMouseEvent * e )
+{
+ delete mCross;
+ mCross = 0;
+
+ mRecentSnappingResults.clear();
+ //do snap -> new recent snapping results
+ if ( mSnapper.snapToCurrentLayer( e->pos(), mRecentSnappingResults, QgsSnapper::SnapToVertex ) != 0 )
+ {
+ //error
+ }
+
+ if ( mRecentSnappingResults.size() > 0 )
+ {
+ QgsPoint markerPoint = mRecentSnappingResults.begin()->snappedVertex;
+
+ //show vertex marker
+ mCross = new QgsVertexMarker( mCanvas );
+ mCross->setIconType( QgsVertexMarker::ICON_X );
+ mCross->setCenter( markerPoint );
+ }
+ else
+ {
+ displaySnapToleranceWarning();
+ }
+}
+
+void QgsMapToolDeleteRing::canvasReleaseEvent( QMouseEvent * e )
+{
+ delete mCross;
+ mCross = 0;
+
+ QgsMapLayer* currentLayer = mCanvas->currentLayer();
+ if ( !currentLayer )
+ return;
+
+ QgsVectorLayer* vlayer = dynamic_cast<QgsVectorLayer*>( currentLayer );
+ if ( !vlayer )
+ return;
+
+
+ if ( mRecentSnappingResults.size() > 0 )
+ {
+ QList<QgsSnappingResult>::iterator sr_it = mRecentSnappingResults.begin();
+ for ( ; sr_it != mRecentSnappingResults.end(); ++sr_it )
+ {
+ deleteRing( sr_it->snappedAtGeometry, sr_it->snappedVertexNr, vlayer);
+ }
+ }
+}
+
+
+void QgsMapToolDeleteRing::deleteRing( int fId, int beforeVertexNr, QgsVectorLayer* vlayer)
+{
+ QgsFeature f;
+ vlayer->featureAtId( fId, f );
+
+ QgsGeometry* g = f.geometry();
+ QGis::WkbType wkbtype = g->wkbType();
+ int ringNum, partNum = 0;
+
+ if (wkbtype == QGis::WKBPolygon || wkbtype == QGis::WKBPolygon25D)
+ {
+ ringNum = ringNumInPolygon( g, beforeVertexNr );
+ }
+ else if (wkbtype == QGis::WKBMultiPolygon || wkbtype == QGis::WKBMultiPolygon25D)
+ {
+ ringNum = ringNumInMultiPolygon( g, beforeVertexNr, partNum );
+ }
+ else
+ return;
+
+ if (g->deleteRing( ringNum, partNum ))
+ {
+ vlayer->changeGeometry( fId, g );
+ mCanvas->refresh();
+ }
+
+}
+
+int QgsMapToolDeleteRing::ringNumInPolygon( QgsGeometry* g, int vertexNr )
+{
+ QgsPolygon polygon = g->asPolygon();
+ for (int ring = 0; ring < polygon.count(); ring++)
+ {
+ if (vertexNr < polygon[ring].count())
+ return ring;
+
+ vertexNr -= polygon[ring].count();
+ }
+ return -1;
+}
+
+int QgsMapToolDeleteRing::ringNumInMultiPolygon( QgsGeometry* g, int vertexNr, int& partNum )
+{
+ QgsMultiPolygon mpolygon = g->asMultiPolygon();
+ for (int part = 0; part < mpolygon.count(); part++)
+ {
+ const QgsPolygon& polygon = mpolygon[part];
+ for (int ring = 0; ring < polygon.count(); ring++)
+ {
+ if (vertexNr < polygon[ring].count())
+ {
+ partNum = part;
+ return ring;
+ }
+
+ vertexNr -= polygon[ring].count();
+ }
+ }
+ return -1;
+}
+
+
+void QgsMapToolDeleteRing::deactivate()
+{
+ delete mCross;
+ mCross = 0;
+
+ QgsMapTool::deactivate();
+}
Property changes on: trunk/qgis/src/app/qgsmaptooldeletering.cpp
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: trunk/qgis/src/app/qgsmaptooldeletering.h (from rev 10700, trunk/qgis/src/app/qgsmaptooldeletehole.h)
===================================================================
--- trunk/qgis/src/app/qgsmaptooldeletering.h (rev 0)
+++ trunk/qgis/src/app/qgsmaptooldeletering.h 2009-05-02 19:38:46 UTC (rev 10705)
@@ -0,0 +1,52 @@
+/***************************************************************************
+ qgsmaptooldeletering.h - delete a ring from polygon
+ ---------------------
+ begin : April 2009
+ copyright : (C) 2009 by Richard Kostecky
+ email : csf dot kostej at mail dot 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef QGSMAPTOOLDELETERING_H
+#define QGSMAPTOOLDELETERING_H
+
+#include "qgsmaptoolvertexedit.h"
+
+class QgsVertexMarker;
+/**Map tool to delete vertices from line/polygon features*/
+
+class QgsMapToolDeleteRing : public QgsMapToolVertexEdit
+{
+ public:
+ QgsMapToolDeleteRing( QgsMapCanvas* canvas );
+ virtual ~QgsMapToolDeleteRing();
+
+ void canvasMoveEvent( QMouseEvent * e );
+
+ void canvasPressEvent( QMouseEvent * e );
+
+ void canvasReleaseEvent( QMouseEvent * e );
+
+ //! called when map tool is being deactivated
+ void deactivate();
+
+ private:
+ QgsVertexMarker* mCross;
+
+ //! delete inner ring from the geometry
+ void deleteRing( int fId, int beforeVertexNr, QgsVectorLayer* vlayer);
+
+ //! return ring number in polygon
+ int ringNumInPolygon( QgsGeometry* g, int vertexNr );
+
+ //! return ring number in multipolygon and set parNum to index of the part
+ int ringNumInMultiPolygon( QgsGeometry* g, int vertexNr, int& partNum );
+};
+
+#endif
Property changes on: trunk/qgis/src/app/qgsmaptooldeletering.h
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: trunk/qgis/src/core/qgsgeometry.cpp
===================================================================
--- trunk/qgis/src/core/qgsgeometry.cpp 2009-05-02 19:08:21 UTC (rev 10704)
+++ trunk/qgis/src/core/qgsgeometry.cpp 2009-05-02 19:38:46 UTC (rev 10705)
@@ -5542,7 +5542,7 @@
}
-bool QgsGeometry::deleteHole( int ringNum, int partNum )
+bool QgsGeometry::deleteRing( int ringNum, int partNum )
{
if (ringNum <= 0 || partNum < 0)
return FALSE;
Modified: trunk/qgis/src/core/qgsgeometry.h
===================================================================
--- trunk/qgis/src/core/qgsgeometry.h 2009-05-02 19:08:21 UTC (rev 10704)
+++ trunk/qgis/src/core/qgsgeometry.h 2009-05-02 19:38:46 UTC (rev 10705)
@@ -332,11 +332,11 @@
@note added in version 1.1 */
QList<QgsGeometry*> asGeometryCollection();
- /** delete a hole in polygon or multipolygon.
+ /** delete a ring in polygon or multipolygon.
Ring 0 is outer ring and can't be deleted.
@return TRUE on success
@note added in version 1.2 */
- bool deleteHole( int ringNum, int partNum = 0 );
+ bool deleteRing( int ringNum, int partNum = 0 );
/** delete part identified by the part number
@return TRUE on success
More information about the QGIS-commit
mailing list