From d794c382f116929b16071d5591dedc7e6550ccc3 Mon Sep 17 00:00:00 2001 From: mhugent Date: Fri, 24 Mar 2006 17:58:19 +0000 Subject: [PATCH] Remove digitising rubberbands if the editing tools have been deactivated or are deleted git-svn-id: http://svn.osgeo.org/qgis/trunk@5097 c8812cc2-4d05-0410-92ff-de0c093fc19c --- src/gui/qgsmapcanvas.cpp | 2 -- src/gui/qgsmapcanvas.h | 1 - src/gui/qgsmaptoolcapture.cpp | 14 +++++++++++++- src/gui/qgsmaptoolcapture.h | 5 +++++ src/gui/qgsmaptoolvertexedit.cpp | 16 ++++++++++++++-- src/gui/qgsmaptoolvertexedit.h | 6 +++++- 6 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/gui/qgsmapcanvas.cpp b/src/gui/qgsmapcanvas.cpp index 58a04041cae2..aecc5eb8d510 100644 --- a/src/gui/qgsmapcanvas.cpp +++ b/src/gui/qgsmapcanvas.cpp @@ -174,7 +174,6 @@ QgsMapLayer* QgsMapCanvas::getZpos(int index) void QgsMapCanvas::setCurrentLayer(QgsMapLayer* layer) { mCurrentLayer = layer; - std::cout << "QgsMapCanvas::setCurrentLayer" << std::endl; } double QgsMapCanvas::getScale() @@ -1026,7 +1025,6 @@ void QgsMapCanvas::panAction(QMouseEvent * e) updateContents(); } - void QgsMapCanvas::moveCanvasContents(bool reset) { QPoint pnt(0,0); diff --git a/src/gui/qgsmapcanvas.h b/src/gui/qgsmapcanvas.h index e75cebb86928..4e769d48a5b4 100644 --- a/src/gui/qgsmapcanvas.h +++ b/src/gui/qgsmapcanvas.h @@ -194,7 +194,6 @@ class QgsMapCanvas : public Q3CanvasView void panActionEnd(QPoint releasePoint); //! Called when mouse is moving and pan is activated void panAction(QMouseEvent * event); - public slots: diff --git a/src/gui/qgsmaptoolcapture.cpp b/src/gui/qgsmaptoolcapture.cpp index a11781b35564..9ffb3ffcc11b 100644 --- a/src/gui/qgsmaptoolcapture.cpp +++ b/src/gui/qgsmaptoolcapture.cpp @@ -30,7 +30,7 @@ QgsMapToolCapture::QgsMapToolCapture(QgsMapCanvas* canvas, enum CaptureTool tool) - : QgsMapTool(canvas), mTool(tool) + : QgsMapTool(canvas), mTool(tool), mRubberBand(0) { mCapturing = FALSE; @@ -38,6 +38,12 @@ QgsMapToolCapture::QgsMapToolCapture(QgsMapCanvas* canvas, enum CaptureTool tool mCursor = QCursor(mySelectQPixmap, 8, 8); } +QgsMapToolCapture::~QgsMapToolCapture() +{ + delete mRubberBand; + mRubberBand = 0; +} + QgsPoint QgsMapToolCapture::maybeInversePoint(QgsPoint point, const char whenmsg[]) { @@ -280,3 +286,9 @@ void QgsMapToolCapture::canvasPressEvent(QMouseEvent * e) void QgsMapToolCapture::renderComplete() { } + +void QgsMapToolCapture::deactivate() +{ + delete mRubberBand; + mRubberBand = 0; +} diff --git a/src/gui/qgsmaptoolcapture.h b/src/gui/qgsmaptoolcapture.h index 293a343099b6..517cfa2df39c 100644 --- a/src/gui/qgsmaptoolcapture.h +++ b/src/gui/qgsmaptoolcapture.h @@ -41,6 +41,9 @@ class QgsMapToolCapture : public QgsMapTool //! constructor QgsMapToolCapture(QgsMapCanvas* canvas, enum CaptureTool tool); + //! destructor + virtual ~QgsMapToolCapture(); + //! Overridden mouse move event virtual void canvasMoveEvent(QMouseEvent * e); @@ -54,6 +57,8 @@ class QgsMapToolCapture : public QgsMapTool virtual void renderComplete(); virtual QString toolName() { return MapTool_Capture; } + + virtual void deactivate(); protected: diff --git a/src/gui/qgsmaptoolvertexedit.cpp b/src/gui/qgsmaptoolvertexedit.cpp index 562885331ed9..99fa18521b2d 100644 --- a/src/gui/qgsmaptoolvertexedit.cpp +++ b/src/gui/qgsmaptoolvertexedit.cpp @@ -29,13 +29,19 @@ QgsMapToolVertexEdit::QgsMapToolVertexEdit(QgsMapCanvas* canvas, enum Tool tool) - : QgsMapTool(canvas), mTool(tool) + : QgsMapTool(canvas), mTool(tool), mRubberBand(0) { // TODO - select a real cursor QPixmap mySelectQPixmap = QPixmap((const char **) capture_point_cursor); mCursor = QCursor(mySelectQPixmap, 8, 8); } +QgsMapToolVertexEdit::~QgsMapToolVertexEdit() +{ + delete mRubberBand; + mRubberBand = 0; +} + void QgsMapToolVertexEdit::canvasMoveEvent(QMouseEvent * e) { @@ -239,7 +245,7 @@ void QgsMapToolVertexEdit::canvasReleaseEvent(QMouseEvent * e) return; } - if (vlayer->getDataProvider()->capabilities() & QgsVectorDataProvider::ChangeGeometries) + if (!(vlayer->getDataProvider()->capabilities() & QgsVectorDataProvider::ChangeGeometries)) { QMessageBox::information(0,"Change geometry", "Data provider of the current layer doesn't allow changing geometries", @@ -311,3 +317,9 @@ void QgsMapToolVertexEdit::createRubberBand() mRubberBand->setWidth(project->readNumEntry("Digitizing", "/LineWidth", 1)); } +void QgsMapToolVertexEdit::deactivate() +{ + delete mRubberBand; + mRubberBand = 0; +} + diff --git a/src/gui/qgsmaptoolvertexedit.h b/src/gui/qgsmaptoolvertexedit.h index 3e2e3f9de626..21243cd07ddf 100644 --- a/src/gui/qgsmaptoolvertexedit.h +++ b/src/gui/qgsmaptoolvertexedit.h @@ -38,6 +38,8 @@ class QgsMapToolVertexEdit : public QgsMapTool //! constructor QgsMapToolVertexEdit(QgsMapCanvas* canvas, enum Tool tool); + + virtual ~QgsMapToolVertexEdit(); //! Overridden mouse move event virtual void canvasMoveEvent(QMouseEvent * e); @@ -49,7 +51,9 @@ class QgsMapToolVertexEdit : public QgsMapTool virtual void canvasReleaseEvent(QMouseEvent * e); virtual QString toolName() { return MapTool_VertexEdit; } - + + virtual void deactivate(); + private: //! create instance of rubber band