@@ -62,17 +62,18 @@ QMenu* QgsAppLayerTreeViewMenuProvider::createContextMenu()
62
62
}
63
63
else if ( QgsLayerTree::isLayer ( node ) )
64
64
{
65
- QgsMapLayer* layer = QgsLayerTree::toLayer ( node )->layer ();
65
+ QgsMapLayer *layer = QgsLayerTree::toLayer ( node )->layer ();
66
+ QgsRasterLayer *rlayer = qobject_cast<QgsRasterLayer *>( layer );
67
+ QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( layer );
66
68
67
69
menu->addAction ( actions->actionZoomToLayer ( mCanvas , menu ) );
68
70
menu->addAction ( actions->actionShowInOverview ( menu ) );
69
71
70
- if ( layer && layer-> type () == QgsMapLayer::RasterLayer )
72
+ if ( rlayer )
71
73
{
72
74
menu->addAction ( tr ( " &Zoom to Best Scale (100%)" ), QgisApp::instance (), SLOT ( legendLayerZoomNative () ) );
73
75
74
- QgsRasterLayer* rasterLayer = qobject_cast<QgsRasterLayer *>( layer );
75
- if ( rasterLayer && rasterLayer->rasterType () != QgsRasterLayer::Palette )
76
+ if ( rlayer->rasterType () != QgsRasterLayer::Palette )
76
77
menu->addAction ( tr ( " &Stretch Using Current Extent" ), QgisApp::instance (), SLOT ( legendLayerStretchUsingCurrentExtent () ) );
77
78
}
78
79
@@ -81,21 +82,24 @@ QMenu* QgsAppLayerTreeViewMenuProvider::createContextMenu()
81
82
// duplicate layer
82
83
QAction* duplicateLayersAction = menu->addAction ( QgsApplication::getThemeIcon ( " /mActionDuplicateLayer.svg" ), tr ( " &Duplicate" ), QgisApp::instance (), SLOT ( duplicateLayers () ) );
83
84
84
- // set layer scale visibility
85
- menu->addAction ( tr ( " &Set Layer Scale Visibility" ), QgisApp::instance (), SLOT ( setLayerScaleVisibility () ) );
85
+ if ( !vlayer || vlayer->geometryType () != QGis::NoGeometry )
86
+ {
87
+ // set layer scale visibility
88
+ menu->addAction ( tr ( " &Set Layer Scale Visibility" ), QgisApp::instance (), SLOT ( setLayerScaleVisibility () ) );
86
89
87
- // set layer crs
88
- menu->addAction ( QgsApplication::getThemeIcon ( " /mActionSetCRS.png" ), tr ( " &Set Layer CRS" ), QgisApp::instance (), SLOT ( setLayerCRS () ) );
90
+ // set layer crs
91
+ menu->addAction ( QgsApplication::getThemeIcon ( " /mActionSetCRS.png" ), tr ( " &Set Layer CRS" ), QgisApp::instance (), SLOT ( setLayerCRS () ) );
89
92
90
- // assign layer crs to project
91
- menu->addAction ( QgsApplication::getThemeIcon ( " /mActionSetProjectCRS.png" ), tr ( " Set &Project CRS from Layer" ), QgisApp::instance (), SLOT ( setProjectCRSFromLayer () ) );
93
+ // assign layer crs to project
94
+ menu->addAction ( QgsApplication::getThemeIcon ( " /mActionSetProjectCRS.png" ), tr ( " Set &Project CRS from Layer" ), QgisApp::instance (), SLOT ( setProjectCRSFromLayer () ) );
95
+ }
92
96
93
97
// style-related actions
94
98
if ( layer && mView ->selectedLayerNodes ().count () == 1 )
95
99
{
96
- QMenu* menuStyleManager = new QMenu ( tr ( " Styles" ) );
100
+ QMenu * menuStyleManager = new QMenu ( tr ( " Styles" ) );
97
101
98
- QgisApp* app = QgisApp::instance ();
102
+ QgisApp * app = QgisApp::instance ();
99
103
menuStyleManager->addAction ( tr ( " Copy Style" ), app, SLOT ( copyStyle () ) );
100
104
if ( app->clipboard ()->hasFormat ( QGSCLIPBOARD_STYLE_MIME ) )
101
105
{
@@ -110,10 +114,8 @@ QMenu* QgsAppLayerTreeViewMenuProvider::createContextMenu()
110
114
111
115
menu->addSeparator ();
112
116
113
- if ( layer && layer-> type () == QgsMapLayer::VectorLayer )
117
+ if ( vlayer )
114
118
{
115
- QgsVectorLayer* vlayer = qobject_cast<QgsVectorLayer *>( layer );
116
-
117
119
QAction *toggleEditingAction = QgisApp::instance ()->actionToggleEditing ();
118
120
QAction *saveLayerEditsAction = QgisApp::instance ()->actionSaveActiveLayerEdits ();
119
121
QAction *allEditsAction = QgisApp::instance ()->actionAllEdits ();
@@ -155,7 +157,7 @@ QMenu* QgsAppLayerTreeViewMenuProvider::createContextMenu()
155
157
156
158
menu->addSeparator ();
157
159
}
158
- else if ( layer && layer-> type () == QgsMapLayer::RasterLayer )
160
+ else if ( rlayer )
159
161
{
160
162
menu->addAction ( tr ( " Save As..." ), QgisApp::instance (), SLOT ( saveAsRasterFile () ) );
161
163
menu->addAction ( tr ( " Save As Layer Definition File..." ), QgisApp::instance (), SLOT ( saveAsLayerDefinition () ) );
0 commit comments