@@ -4842,6 +4842,91 @@ QgsClipboard * QgisApp::clipboard()
48424842 return &mInternalClipboard ;
48434843}
48444844
4845+ void QgisApp::activateDeactivateLayerRelatedActions (const QgsMapLayer* layer)
4846+ {
4847+ if (!layer)
4848+ {
4849+ return ;
4850+ }
4851+ if (layer->type () == QgsMapLayer::VECTOR || layer->type () == QgsMapLayer::DATABASE)
4852+ {
4853+ mActionSelect ->setEnabled (true );
4854+ mActionOpenTable ->setEnabled (true );
4855+ const QgsVectorLayer* vlayer = dynamic_cast <const QgsVectorLayer*>(layer);
4856+ const QgsVectorDataProvider* dprovider = vlayer->getDataProvider ();
4857+ if (vlayer)
4858+ {
4859+ // does provider allow deleting of features?
4860+ if (dprovider->capabilities () | QgsVectorDataProvider::DeleteFeatures)
4861+ {
4862+ mActionDeleteSelected ->setEnabled (true );
4863+ }
4864+ else
4865+ {
4866+ mActionDeleteSelected ->setEnabled (false );
4867+ }
4868+
4869+
4870+ if (vlayer->vectorType () == QGis::Point)
4871+ {
4872+ if (dprovider->capabilities () | QgsVectorDataProvider::AddFeatures)
4873+ {
4874+ mActionCapturePoint ->setEnabled (true );
4875+ }
4876+ else
4877+ {
4878+ mActionCapturePoint ->setEnabled (false );
4879+ }
4880+ mActionCaptureLine ->setEnabled (false );
4881+ mActionCapturePolygon ->setEnabled (false );
4882+ mActionAddVertex ->setEnabled (false );
4883+ mActionDeleteVertex ->setEnabled (false );
4884+ mActionMoveVertex ->setEnabled (false );
4885+ return ;
4886+ }
4887+ else if (vlayer->vectorType () == QGis::Line)
4888+ {
4889+ mActionCaptureLine ->setEnabled (true );
4890+ mActionCapturePoint ->setEnabled (false );
4891+ mActionCapturePolygon ->setEnabled (false );
4892+ }
4893+ else if (vlayer->vectorType () == QGis::Polygon)
4894+ {
4895+ mActionCapturePolygon ->setEnabled (true );
4896+ mActionCapturePoint ->setEnabled (false );
4897+ mActionCaptureLine ->setEnabled (false );
4898+ }
4899+
4900+ // are add/delete/move vertex supported?
4901+ if (dprovider->capabilities () | QgsVectorDataProvider::ChangeGeometries)
4902+ {
4903+ mActionAddVertex ->setEnabled (true );
4904+ mActionMoveVertex ->setEnabled (true );
4905+ mActionDeleteVertex ->setEnabled (true );
4906+ }
4907+ else
4908+ {
4909+ mActionAddVertex ->setEnabled (false );
4910+ mActionMoveVertex ->setEnabled (false );
4911+ mActionDeleteVertex ->setEnabled (false );
4912+ }
4913+ return ;
4914+ }
4915+ }
4916+ else if (layer->type () == QgsMapLayer::RASTER)
4917+ {
4918+ mActionSelect ->setEnabled (false );
4919+ mActionOpenTable ->setEnabled (false );
4920+ mActionCapturePoint ->setEnabled (false );
4921+ mActionCaptureLine ->setEnabled (false );
4922+ mActionCapturePolygon ->setEnabled (false );
4923+ mActionDeleteSelected ->setEnabled (false );
4924+ mActionAddVertex ->setEnabled (false );
4925+ mActionDeleteVertex ->setEnabled (false );
4926+ mActionMoveVertex ->setEnabled (false );
4927+ }
4928+ }
4929+
48454930
48464931// copy the click coord to clipboard and let the user know its there
48474932void QgisApp::showCapturePointCoordinate (QgsPoint & theQgsPoint)
0 commit comments