Skip to content

Commit 98e7dd0

Browse files
author
wonder
committed
[FEATURE] Added a new "node" tool (in advanced digitizing toolbar).
Integrates add, move and delete vertex tools for faster editing. Contributed by Richard Kostecky, qgis-mapper team. git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@10890 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent b967172 commit 98e7dd0

File tree

7 files changed

+1196
-1
lines changed

7 files changed

+1196
-1
lines changed

CONTRIBUTORS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Markus Neteler
2323
Maurizio Napolitano
2424
Paul Ramsey
2525
Peter Ersts
26+
Richard Kostecky
2627
Stefanie Tellex
2728
Tom Russo
2829
Tyler Mitchell
1.39 KB
Loading

src/app/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ SET(QGIS_APP_SRCS
3535
qgsmaptoolidentify.cpp
3636
qgsmaptoolmovefeature.cpp
3737
qgsmaptoolmovevertex.cpp
38+
qgsmaptoolnodetool.cpp
3839
qgsmaptoolselect.cpp
3940
qgsmaptoolsimplify.cpp
4041
qgsmaptoolsplitfeatures.cpp

src/app/qgisapp.cpp

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@
166166
#include "qgsmaptoolidentify.h"
167167
#include "qgsmaptoolmovefeature.h"
168168
#include "qgsmaptoolmovevertex.h"
169+
#include "qgsmaptoolnodetool.h"
169170
#include "qgsmaptoolpan.h"
170171
#include "qgsmaptoolselect.h"
171172
#include "qgsmaptoolsplitfeatures.h"
@@ -475,6 +476,7 @@ QgisApp::~QgisApp()
475476
delete mMapTools.mDeleteRing;
476477
delete mMapTools.mDeletePart;
477478
delete mMapTools.mAddIsland;
479+
delete mMapTools.mNodeTool;
478480

479481
delete mPythonConsole;
480482
delete mPythonUtils;
@@ -710,6 +712,11 @@ void QgisApp::createActions()
710712
connect( mActionMergeFeatures, SIGNAL(triggered()), this, SLOT(mergeSelectedFeatures()));
711713
mActionMergeFeatures->setEnabled(false);
712714

715+
mActionNodeTool = new QAction( getThemeIcon( "mActionNodeTool.png" ), tr( "Node Tool" ), this );
716+
shortcuts->registerAction( mActionNodeTool );
717+
mActionNodeTool->setStatusTip( tr( "Node Tool" ) );
718+
connect( mActionNodeTool, SIGNAL( triggered() ), this, SLOT( nodeTool() ) );
719+
mActionNodeTool->setEnabled( false );
713720

714721
// View Menu Items
715722

@@ -1061,6 +1068,9 @@ void QgisApp::createActionGroups()
10611068
mActionDeletePart->setCheckable( true );
10621069
mMapToolGroup->addAction( mActionDeletePart );
10631070
mMapToolGroup->addAction( mActionMergeFeatures);
1071+
mActionNodeTool->setCheckable( true );
1072+
mMapToolGroup->addAction( mActionNodeTool );
1073+
10641074
}
10651075

10661076
void QgisApp::createMenus()
@@ -1150,7 +1160,8 @@ void QgisApp::createMenus()
11501160
mEditMenu->addAction( mActionDeleteRing );
11511161
mEditMenu->addAction( mActionDeletePart );
11521162
mEditMenu->addAction( mActionMergeFeatures );
1153-
1163+
mEditMenu->addAction( mActionNodeTool );
1164+
11541165
if ( layout == QDialogButtonBox::GnomeLayout || layout == QDialogButtonBox::MacLayout )
11551166
{
11561167
mActionEditSeparator3 = mEditMenu->addSeparator();
@@ -1355,6 +1366,7 @@ void QgisApp::createToolBars()
13551366
mAdvancedDigitizeToolBar->addAction( mActionDeleteRing );
13561367
mAdvancedDigitizeToolBar->addAction( mActionDeletePart );
13571368
mAdvancedDigitizeToolBar->addAction( mActionMergeFeatures );
1369+
mAdvancedDigitizeToolBar->addAction( mActionNodeTool );
13581370
mToolbarMenu->addAction( mAdvancedDigitizeToolBar->toggleViewAction() );
13591371

13601372

@@ -1707,6 +1719,8 @@ void QgisApp::createCanvas()
17071719
mMapTools.mDeleteRing->setAction( mActionDeleteRing );
17081720
mMapTools.mDeletePart = new QgsMapToolDeletePart( mMapCanvas );
17091721
mMapTools.mDeletePart->setAction( mActionDeletePart );
1722+
mMapTools.mNodeTool = new QgsMapToolNodeTool( mMapCanvas );
1723+
mMapTools.mNodeTool->setAction( mActionNodeTool );
17101724
//ensure that non edit tool is initialised or we will get crashes in some situations
17111725
mNonEditMapTool = mMapTools.mPan;
17121726
}
@@ -4228,6 +4242,11 @@ void QgisApp::mergeSelectedFeatures()
42284242
}
42294243
}
42304244

4245+
void QgisApp::nodeTool()
4246+
{
4247+
mMapCanvas->setMapTool( mMapTools.mNodeTool );
4248+
}
4249+
42314250
void QgisApp::splitFeatures()
42324251
{
42334252
mMapCanvas->setMapTool( mMapTools.mSplitFeatures );
@@ -5472,10 +5491,12 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
54725491
if ( vlayer->isEditable() && dprovider->capabilities() & QgsVectorDataProvider::ChangeGeometries )
54735492
{
54745493
mActionMoveFeature->setEnabled( true );
5494+
mActionNodeTool->setEnabled( true );
54755495
}
54765496
else
54775497
{
54785498
mActionMoveFeature->setEnabled( false );
5499+
mActionNodeTool->setEnabled( false );
54795500
}
54805501

54815502
if ( vlayer->geometryType() == QGis::Point )

src/app/qgisapp.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ class QgisApp : public QMainWindow
227227
QAction *actionSimplifyFeature() { return mActionSimplifyFeature; }
228228
QAction *actionDeleteRing() { return mActionDeleteRing; }
229229
QAction *actionDeletePart() { return mActionDeletePart; }
230+
QAction *actionNodeTool() { return mActionNodeTool; }
230231
QAction *actionEditSeparator2() { return mActionEditSeparator2; }
231232

232233
QAction *actionPan() { return mActionPan; }
@@ -513,6 +514,8 @@ class QgisApp : public QMainWindow
513514
void deletePart();
514515
//! merges the selected features together
515516
void mergeSelectedFeatures();
517+
//! provides operations with nodes
518+
void nodeTool();
516519

517520
//! activates the selection tool
518521
void select();
@@ -727,6 +730,7 @@ class QgisApp : public QMainWindow
727730
QAction *mActionDeleteRing;
728731
QAction *mActionDeletePart;
729732
QAction *mActionMergeFeatures;
733+
QAction *mActionNodeTool;
730734
QAction *mActionEditSeparator3;
731735

732736
QAction *mActionPan;
@@ -847,6 +851,7 @@ class QgisApp : public QMainWindow
847851
QgsMapTool* mSimplifyFeature;
848852
QgsMapTool* mDeleteRing;
849853
QgsMapTool* mDeletePart;
854+
QgsMapTool* mNodeTool;
850855
} mMapTools;
851856

852857
QgsMapTool *mNonEditMapTool;

0 commit comments

Comments
 (0)