Skip to content

Commit 595e12c

Browse files
committed
enable/disable layer dependant actions:
- select by expression requires active layer - labeling requires and active vector layer
1 parent 6b46364 commit 595e12c

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

src/app/qgisapp.cpp

+20-18
Original file line numberDiff line numberDiff line change
@@ -412,14 +412,14 @@ void QgisApp::validateSrs( QgsCoordinateReferenceSystem &srs )
412412
// XXX TODO: Change project to store selected CS as 'projectCRS' not 'selectedWkt'
413413
authid = QgisApp::instance()->mapCanvas()->mapRenderer()->destinationCrs().authid();
414414
QgsDebugMsg( "Layer srs set from project: " + authid );
415-
QgisApp::instance()->statusBar()->showMessage( QObject::tr( "CRS undefined - defaulting to project CRS" ) );
415+
QgisApp::instance()->statusBar()->showMessage( tr( "CRS undefined - defaulting to project CRS" ) );
416416
srs.createFromOgcWmsCrs( authid );
417417
}
418418
else ///Projections/defaultBehaviour==useGlobal
419419
{
420420
authid = mySettings.value( "/Projections/layerDefaultCrs", GEO_EPSG_CRS_AUTHID ).toString();
421421
srs.createFromOgcWmsCrs( authid );
422-
QgisApp::instance()->statusBar()->showMessage( QObject::tr( "CRS undefined - defaulting to default CRS: %1" ).arg( authid ) );
422+
QgisApp::instance()->statusBar()->showMessage( tr( "CRS undefined - defaulting to default CRS: %1" ).arg( authid ) );
423423
}
424424
}
425425

@@ -4225,8 +4225,8 @@ void QgisApp::modifyAnnotation()
42254225

42264226
void QgisApp::labeling()
42274227
{
4228-
QgsMapLayer* layer = activeLayer();
4229-
if ( layer == NULL || layer->type() != QgsMapLayer::VectorLayer )
4228+
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer*>( activeLayer() );
4229+
if ( !vlayer )
42304230
{
42314231
messageBar()->pushMessage( tr( "Labeling Options" ),
42324232
tr( "Please select a vector layer first" ),
@@ -4235,7 +4235,6 @@ void QgisApp::labeling()
42354235
return;
42364236
}
42374237

4238-
QgsVectorLayer* vlayer = dynamic_cast<QgsVectorLayer*>( layer );
42394238

42404239
QDialog *dlg = new QDialog( this );
42414240
dlg->setWindowTitle( tr( "Layer labeling settings" ) );
@@ -4274,7 +4273,7 @@ void QgisApp::labeling()
42744273

42754274
delete dlg;
42764275

4277-
activateDeactivateLayerRelatedActions( layer );
4276+
activateDeactivateLayerRelatedActions( vlayer );
42784277
}
42794278

42804279
void QgisApp::fieldCalculator()
@@ -4339,7 +4338,7 @@ void QgisApp::saveAsRasterFile()
43394338

43404339
QProgressDialog pd( 0, tr( "Abort..." ), 0, 0 );
43414340
// Show the dialo immediately because cloning pipe can take some time (WCS)
4342-
pd.setLabelText( QObject::tr( "Reading raster" ) );
4341+
pd.setLabelText( tr( "Reading raster" ) );
43434342
pd.show();
43444343
pd.setWindowModality( Qt::WindowModal );
43454344

@@ -5281,22 +5280,20 @@ void QgisApp::deselectAll()
52815280

52825281
void QgisApp::selectByExpression()
52835282
{
5284-
QgsVectorLayer* vlayer = NULL;
5285-
if ( !mMapCanvas->currentLayer()
5286-
|| NULL == ( vlayer = qobject_cast<QgsVectorLayer *>( mMapCanvas->currentLayer() ) ) )
5283+
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( mMapCanvas->currentLayer() );
5284+
if( !vlayer )
52875285
{
52885286
messageBar()->pushMessage(
5289-
QObject::tr( "No active vector layer" ),
5290-
QObject::tr( "To select features, choose a vector layer in the legend" ),
5287+
tr( "No active vector layer" ),
5288+
tr( "To select features, choose a vector layer in the legend" ),
52915289
QgsMessageBar::INFO,
52925290
messageTimeout() );
5291+
return;
52935292
}
5294-
else
5295-
{
5296-
QgsExpressionSelectionDialog* dlg = new QgsExpressionSelectionDialog( vlayer );
5297-
dlg->setAttribute( Qt::WA_DeleteOnClose );
5298-
dlg->show();
5299-
}
5293+
5294+
QgsExpressionSelectionDialog* dlg = new QgsExpressionSelectionDialog( vlayer );
5295+
dlg->setAttribute( Qt::WA_DeleteOnClose );
5296+
dlg->show();
53005297
}
53015298

53025299
void QgisApp::addRing()
@@ -7880,6 +7877,8 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
78807877
mActionSelectFreehand->setEnabled( false );
78817878
mActionSelectRadius->setEnabled( false );
78827879
mActionIdentify->setEnabled( QSettings().value( "/Map/identifyMode", 0 ).toInt() != 0 );
7880+
mActionSelectByExpression->setEnabled( false );
7881+
mActionLabeling->setEnabled( false );
78837882
mActionOpenTable->setEnabled( false );
78847883
mActionOpenFieldCalc->setEnabled( false );
78857884
mActionToggleEditing->setEnabled( false );
@@ -7957,13 +7956,15 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
79577956
mActionLocalHistogramStretch->setEnabled( false );
79587957
mActionFullHistogramStretch->setEnabled( false );
79597958
mActionZoomActualSize->setEnabled( false );
7959+
mActionLabeling->setEnabled( true );
79607960

79617961
mActionSelect->setEnabled( true );
79627962
mActionSelectRectangle->setEnabled( true );
79637963
mActionSelectPolygon->setEnabled( true );
79647964
mActionSelectFreehand->setEnabled( true );
79657965
mActionSelectRadius->setEnabled( true );
79667966
mActionIdentify->setEnabled( true );
7967+
mActionSelectByExpression->setEnabled( true );
79677968
mActionOpenTable->setEnabled( true );
79687969
mActionLayerSaveAs->setEnabled( true );
79697970
mActionLayerSelectionSaveAs->setEnabled( true );
@@ -8140,6 +8141,7 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
81408141
mActionSimplifyFeature->setEnabled( false );
81418142
mActionReshapeFeatures->setEnabled( false );
81428143
mActionSplitFeatures->setEnabled( false );
8144+
mActionLabeling->setEnabled( false );
81438145

81448146
//NOTE: This check does not really add any protection, as it is called on load not on layer select/activate
81458147
//If you load a layer with a provider and idenitfy ability then load another without, the tool would be disabled for both

0 commit comments

Comments
 (0)