Skip to content

Instantly share code, notes, and snippets.

@NathanW2
Created April 11, 2016 11:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NathanW2/5a3d4c27e0e95e8739b254faecbc148e to your computer and use it in GitHub Desktop.
Save NathanW2/5a3d4c27e0e95e8739b254faecbc148e to your computer and use it in GitHub Desktop.
bool enableMove = false, enableRotate = false, enablePin = false, enableShowHide = false, enableChange = false;
QMap<QString, QgsMapLayer*> layers = QgsMapLayerRegistry::instance()->mapLayers();
for ( QMap<QString, QgsMapLayer*>::iterator it = layers.begin(); it != layers.end(); ++it )
{
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( it.value() );
if ( !vlayer || !vlayer->isEditable() ||
( !vlayer->diagramsEnabled() && !vlayer->labelsEnabled() ) )
continue;
int colX, colY, colShow, colAng;
enablePin =
enablePin ||
( qobject_cast<QgsMapToolPinLabels*>( mMapTools.mPinLabels ) &&
qobject_cast<QgsMapToolPinLabels*>( mMapTools.mPinLabels )->layerCanPin( vlayer, colX, colY ) );
enableShowHide =
enableShowHide ||
( qobject_cast<QgsMapToolShowHideLabels*>( mMapTools.mShowHideLabels ) &&
qobject_cast<QgsMapToolShowHideLabels*>( mMapTools.mShowHideLabels )->layerCanShowHide( vlayer, colShow ) );
enableMove =
enableMove ||
( qobject_cast<QgsMapToolMoveLabel*>( mMapTools.mMoveLabel ) &&
( qobject_cast<QgsMapToolMoveLabel*>( mMapTools.mMoveLabel )->labelMoveable( vlayer, colX, colY )
|| qobject_cast<QgsMapToolMoveLabel*>( mMapTools.mMoveLabel )->diagramMoveable( vlayer, colX, colY ) )
);
enableRotate =
enableRotate ||
( qobject_cast<QgsMapToolRotateLabel*>( mMapTools.mRotateLabel ) &&
qobject_cast<QgsMapToolRotateLabel*>( mMapTools.mRotateLabel )->layerIsRotatable( vlayer, colAng ) );
enableChange = true;
if ( enablePin && enableShowHide && enableMove && enableRotate && enableChange )
break;
}
mActionPinLabels->setEnabled( enablePin );
mActionShowHideLabels->setEnabled( enableShowHide );
mActionMoveLabel->setEnabled( enableMove );
mActionRotateLabel->setEnabled( enableRotate );
mActionChangeLabelProperties->setEnabled( enableChange );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment