145
145
// Map tools
146
146
//
147
147
#include " qgsmaptooladdfeature.h"
148
+ #include " qgsmaptooladdisland.h"
148
149
#include " qgsmaptooladdring.h"
149
150
#include " qgsmaptoolidentify.h"
150
151
#include " qgsmaptoolpan.h"
@@ -754,6 +755,11 @@ void QgisApp::createActions()
754
755
connect (mActionAddRing , SIGNAL (triggered ()), this , SLOT (addRing ()));
755
756
mActionAddRing ->setEnabled (false );
756
757
758
+ mActionAddIsland = new QAction (QIcon (myIconPath+" /mActionAddIsland.png" ), tr (" Add Island" ), this );
759
+ mActionAddIsland ->setStatusTip (tr (" Add Island to multipolygon" ));
760
+ connect (mActionAddIsland , SIGNAL (triggered ()), this , SLOT (addIsland ()));
761
+ mActionAddIsland ->setEnabled (false );
762
+
757
763
mActionEditCut = new QAction (QIcon (myIconPath+" /mActionEditCut.png" ), tr (" Cut Features" ), this );
758
764
mActionEditCut ->setStatusTip (tr (" Cut selected features" ));
759
765
connect (mActionEditCut , SIGNAL (triggered ()), this , SLOT (editCut ()));
@@ -819,6 +825,8 @@ void QgisApp::createActionGroups()
819
825
mMapToolGroup ->addAction (mActionMoveVertex );
820
826
mActionAddRing ->setCheckable (true );
821
827
mMapToolGroup ->addAction (mActionAddRing );
828
+ mActionAddIsland ->setCheckable (true );
829
+ mMapToolGroup ->addAction (mActionAddIsland );
822
830
}
823
831
824
832
void QgisApp::createMenus ()
@@ -974,6 +982,7 @@ void QgisApp::createToolBars()
974
982
mDigitizeToolBar ->addAction (mActionDeleteVertex );
975
983
mDigitizeToolBar ->addAction (mActionMoveVertex );
976
984
mDigitizeToolBar ->addAction (mActionAddRing );
985
+ mDigitizeToolBar ->addAction (mActionAddIsland );
977
986
mDigitizeToolBar ->addAction (mActionEditCut );
978
987
mDigitizeToolBar ->addAction (mActionEditCopy );
979
988
mDigitizeToolBar ->addAction (mActionEditPaste );
@@ -1231,7 +1240,8 @@ void QgisApp::createCanvas()
1231
1240
mMapTools .mVertexDelete = new QgsMapToolVertexEdit (mMapCanvas , QgsMapToolVertexEdit::DeleteVertex);
1232
1241
mMapTools .mVertexDelete ->setAction (mActionDeleteVertex );
1233
1242
mMapTools .mAddRing = new QgsMapToolAddRing (mMapCanvas );
1234
- // mMapTools.mAddRing->setAction(mActionAddRing);
1243
+ mMapTools .mAddRing ->setAction (mActionAddRing );
1244
+ mMapTools .mAddIsland = new QgsMapToolAddIsland (mMapCanvas );
1235
1245
}
1236
1246
1237
1247
void QgisApp::createOverview ()
@@ -2612,6 +2622,7 @@ void QgisApp::newVectorLayer()
2612
2622
createEmptyDataSourceProc createEmptyDataSource=(createEmptyDataSourceProc)myLib->resolve (" createEmptyDataSource" );
2613
2623
if (createEmptyDataSource)
2614
2624
{
2625
+ #if 0
2615
2626
if(geometrytype == QGis::WKBPoint)
2616
2627
{
2617
2628
createEmptyDataSource(filename,fileformat, enc, QGis::WKBPoint, attributes);
@@ -2624,13 +2635,18 @@ void QgisApp::newVectorLayer()
2624
2635
{
2625
2636
createEmptyDataSource(filename,fileformat, enc, QGis::WKBPolygon, attributes);
2626
2637
}
2638
+ #endif
2639
+ if (geometrytype != QGis::WKBUnknown)
2640
+ {
2641
+ createEmptyDataSource (filename,fileformat, enc, geometrytype, attributes);
2642
+ }
2627
2643
else
2628
- {
2644
+ {
2629
2645
#ifdef QGISDEBUG
2630
- qWarning (" QgisApp.cpp: geometry type not recognised" );
2646
+ qWarning (" QgisApp.cpp: geometry type not recognised" );
2631
2647
#endif
2632
- return ;
2633
- }
2648
+ return ;
2649
+ }
2634
2650
}
2635
2651
else
2636
2652
{
@@ -3433,6 +3449,11 @@ void QgisApp::addRing()
3433
3449
mMapCanvas ->setMapTool (mMapTools .mAddRing );
3434
3450
}
3435
3451
3452
+ void QgisApp::addIsland ()
3453
+ {
3454
+ mMapCanvas ->setMapTool (mMapTools .mAddIsland );
3455
+ }
3456
+
3436
3457
3437
3458
void QgisApp::deleteVertex ()
3438
3459
{
@@ -4783,6 +4804,7 @@ void QgisApp::activateDeactivateLayerRelatedActions(QgsMapLayer* layer)
4783
4804
mActionAddVertex ->setEnabled (false );
4784
4805
mActionDeleteVertex ->setEnabled (false );
4785
4806
mActionAddRing ->setEnabled (false );
4807
+ mActionAddIsland ->setEnabled (false );
4786
4808
if (dprovider->capabilities () & QgsVectorDataProvider::ChangeGeometries)
4787
4809
{
4788
4810
mActionMoveVertex ->setEnabled (true );
@@ -4802,6 +4824,7 @@ void QgisApp::activateDeactivateLayerRelatedActions(QgsMapLayer* layer)
4802
4824
mActionCapturePoint ->setEnabled (false );
4803
4825
mActionCapturePolygon ->setEnabled (false );
4804
4826
mActionAddRing ->setEnabled (false );
4827
+ mActionAddIsland ->setEnabled (false );
4805
4828
}
4806
4829
else if (vlayer->vectorType () == QGis::Polygon)
4807
4830
{
@@ -4826,6 +4849,9 @@ void QgisApp::activateDeactivateLayerRelatedActions(QgsMapLayer* layer)
4826
4849
if (vlayer->vectorType () == QGis::Polygon)
4827
4850
{
4828
4851
mActionAddRing ->setEnabled (true );
4852
+ // some polygon layers contain also multipolygon features.
4853
+ // Therefore, the test for multipolygon is done in QgsGeometry
4854
+ mActionAddIsland ->setEnabled (true );
4829
4855
}
4830
4856
}
4831
4857
else
@@ -4849,6 +4875,7 @@ void QgisApp::activateDeactivateLayerRelatedActions(QgsMapLayer* layer)
4849
4875
mActionCapturePolygon ->setEnabled (false );
4850
4876
mActionDeleteSelected ->setEnabled (false );
4851
4877
mActionAddRing ->setEnabled (false );
4878
+ mActionAddIsland ->setEnabled (false );
4852
4879
mActionAddVertex ->setEnabled (false );
4853
4880
mActionDeleteVertex ->setEnabled (false );
4854
4881
mActionMoveVertex ->setEnabled (false );
0 commit comments