|
166 | 166 | #include "qgsmaptoolidentify.h"
|
167 | 167 | #include "qgsmaptoolmovefeature.h"
|
168 | 168 | #include "qgsmaptoolmovevertex.h"
|
| 169 | +#include "qgsmaptoolnodetool.h" |
169 | 170 | #include "qgsmaptoolpan.h"
|
170 | 171 | #include "qgsmaptoolselect.h"
|
171 | 172 | #include "qgsmaptoolsplitfeatures.h"
|
@@ -475,6 +476,7 @@ QgisApp::~QgisApp()
|
475 | 476 | delete mMapTools.mDeleteRing;
|
476 | 477 | delete mMapTools.mDeletePart;
|
477 | 478 | delete mMapTools.mAddIsland;
|
| 479 | + delete mMapTools.mNodeTool; |
478 | 480 |
|
479 | 481 | delete mPythonConsole;
|
480 | 482 | delete mPythonUtils;
|
@@ -710,6 +712,11 @@ void QgisApp::createActions()
|
710 | 712 | connect( mActionMergeFeatures, SIGNAL(triggered()), this, SLOT(mergeSelectedFeatures()));
|
711 | 713 | mActionMergeFeatures->setEnabled(false);
|
712 | 714 |
|
| 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 ); |
713 | 720 |
|
714 | 721 | // View Menu Items
|
715 | 722 |
|
@@ -1061,6 +1068,9 @@ void QgisApp::createActionGroups()
|
1061 | 1068 | mActionDeletePart->setCheckable( true );
|
1062 | 1069 | mMapToolGroup->addAction( mActionDeletePart );
|
1063 | 1070 | mMapToolGroup->addAction( mActionMergeFeatures);
|
| 1071 | + mActionNodeTool->setCheckable( true ); |
| 1072 | + mMapToolGroup->addAction( mActionNodeTool ); |
| 1073 | + |
1064 | 1074 | }
|
1065 | 1075 |
|
1066 | 1076 | void QgisApp::createMenus()
|
@@ -1150,7 +1160,8 @@ void QgisApp::createMenus()
|
1150 | 1160 | mEditMenu->addAction( mActionDeleteRing );
|
1151 | 1161 | mEditMenu->addAction( mActionDeletePart );
|
1152 | 1162 | mEditMenu->addAction( mActionMergeFeatures );
|
1153 |
| - |
| 1163 | + mEditMenu->addAction( mActionNodeTool ); |
| 1164 | + |
1154 | 1165 | if ( layout == QDialogButtonBox::GnomeLayout || layout == QDialogButtonBox::MacLayout )
|
1155 | 1166 | {
|
1156 | 1167 | mActionEditSeparator3 = mEditMenu->addSeparator();
|
@@ -1355,6 +1366,7 @@ void QgisApp::createToolBars()
|
1355 | 1366 | mAdvancedDigitizeToolBar->addAction( mActionDeleteRing );
|
1356 | 1367 | mAdvancedDigitizeToolBar->addAction( mActionDeletePart );
|
1357 | 1368 | mAdvancedDigitizeToolBar->addAction( mActionMergeFeatures );
|
| 1369 | + mAdvancedDigitizeToolBar->addAction( mActionNodeTool ); |
1358 | 1370 | mToolbarMenu->addAction( mAdvancedDigitizeToolBar->toggleViewAction() );
|
1359 | 1371 |
|
1360 | 1372 |
|
@@ -1707,6 +1719,8 @@ void QgisApp::createCanvas()
|
1707 | 1719 | mMapTools.mDeleteRing->setAction( mActionDeleteRing );
|
1708 | 1720 | mMapTools.mDeletePart = new QgsMapToolDeletePart( mMapCanvas );
|
1709 | 1721 | mMapTools.mDeletePart->setAction( mActionDeletePart );
|
| 1722 | + mMapTools.mNodeTool = new QgsMapToolNodeTool( mMapCanvas ); |
| 1723 | + mMapTools.mNodeTool->setAction( mActionNodeTool ); |
1710 | 1724 | //ensure that non edit tool is initialised or we will get crashes in some situations
|
1711 | 1725 | mNonEditMapTool = mMapTools.mPan;
|
1712 | 1726 | }
|
@@ -4228,6 +4242,11 @@ void QgisApp::mergeSelectedFeatures()
|
4228 | 4242 | }
|
4229 | 4243 | }
|
4230 | 4244 |
|
| 4245 | +void QgisApp::nodeTool() |
| 4246 | +{ |
| 4247 | + mMapCanvas->setMapTool( mMapTools.mNodeTool ); |
| 4248 | +} |
| 4249 | + |
4231 | 4250 | void QgisApp::splitFeatures()
|
4232 | 4251 | {
|
4233 | 4252 | mMapCanvas->setMapTool( mMapTools.mSplitFeatures );
|
@@ -5472,10 +5491,12 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
|
5472 | 5491 | if ( vlayer->isEditable() && dprovider->capabilities() & QgsVectorDataProvider::ChangeGeometries )
|
5473 | 5492 | {
|
5474 | 5493 | mActionMoveFeature->setEnabled( true );
|
| 5494 | + mActionNodeTool->setEnabled( true ); |
5475 | 5495 | }
|
5476 | 5496 | else
|
5477 | 5497 | {
|
5478 | 5498 | mActionMoveFeature->setEnabled( false );
|
| 5499 | + mActionNodeTool->setEnabled( false ); |
5479 | 5500 | }
|
5480 | 5501 |
|
5481 | 5502 | if ( vlayer->geometryType() == QGis::Point )
|
|
0 commit comments