void QgsMapToolMoveLabel::canvasPressEvent( QgsMapMouseEvent* e ) { deleteRubberBands(); if ( !labelAtPosition( e, mCurrentLabelPos ) ) { return; } QgsMapLayer* layer = QgsMapLayerRegistry::instance()->mapLayer( mCurrentLabelPos.layerID ); if ( !layer || !layer->isEditable() ) { return; } int xCol, yCol; if ( labelMoveable( layer, xCol, yCol ) || diagramMoveable( layer, xCol, yCol ) ) { mStartPointMapCoords = toMapCoordinates( e->pos() ); QgsPoint referencePoint; if ( !rotationPoint( referencePoint, !preserveRotation(), false ) ) { referencePoint.setX( mCurrentLabelPos.labelRect.xMinimum() ); referencePoint.setY( mCurrentLabelPos.labelRect.yMinimum() ); } mClickOffsetX = mStartPointMapCoords.x() - referencePoint.x(); mClickOffsetY = mStartPointMapCoords.y() - referencePoint.y(); createRubberBands(); } }
void QgsMapToolMoveLabel::canvasPressEvent( QgsMapMouseEvent* e ) { deleteRubberBands(); QgsLabelPosition labelPos; if ( !labelAtPosition( e, labelPos ) ) { mCurrentLabel = LabelDetails(); return; } mCurrentLabel = LabelDetails( labelPos ); QgsVectorLayer* vlayer = mCurrentLabel.layer; if ( !vlayer || !vlayer->isEditable() ) { return; } int xCol, yCol; if ( labelMoveable( vlayer, mCurrentLabel.settings, xCol, yCol ) || diagramMoveable( vlayer, xCol, yCol ) ) { mStartPointMapCoords = toMapCoordinates( e->pos() ); QgsPoint referencePoint; if ( !currentLabelRotationPoint( referencePoint, !currentLabelPreserveRotation(), false ) ) { referencePoint.setX( mCurrentLabel.pos.labelRect.xMinimum() ); referencePoint.setY( mCurrentLabel.pos.labelRect.yMinimum() ); } mClickOffsetX = mStartPointMapCoords.x() - referencePoint.x(); mClickOffsetY = mStartPointMapCoords.y() - referencePoint.y(); createRubberBands(); } }
void QgsMapToolRotateLabel::canvasPressEvent( QgsMapMouseEvent* e ) { deleteRubberBands(); QgsLabelPosition labelPos; if ( !labelAtPosition( e, labelPos ) ) { mCurrentLabel = LabelDetails(); return; } mCurrentLabel = LabelDetails( labelPos ); if ( !mCurrentLabel.valid ) return; // only rotate non-pinned OverPoint placements until other placements are supported in pal::Feature if ( !mCurrentLabel.pos.isPinned && mCurrentLabel.settings.placement != QgsPalLayerSettings::OverPoint ) { return; } // rotate unpinned labels (i.e. no hali/vali settings) as if hali/vali was Center/Half if ( !currentLabelRotationPoint( mRotationPoint, false, !mCurrentLabel.pos.isPinned ) ) { return; } if ( true ) { mCurrentMouseAzimuth = azimuthToCCW( mRotationPoint.azimuth( toMapCoordinates( e->pos() ) ) ); bool hasRotationValue; int rotationCol; if ( currentLabelDataDefinedRotation( mCurrentRotation, hasRotationValue, rotationCol, true ) ) { if ( !hasRotationValue ) { mCurrentRotation = 0; } mStartRotation = mCurrentRotation; createRubberBands(); mRotationPreviewBox = createRotationPreviewBox(); mRotationItem = new QgsPointRotationItem( mCanvas ); mRotationItem->setOrientation( QgsPointRotationItem::Counterclockwise ); mRotationItem->setSymbol( QgsApplication::getThemePixmap( "mActionRotatePointSymbols.svg" ).toImage() ); mRotationItem->setPointLocation( mRotationPoint ); mRotationItem->setSymbolRotation( mCurrentRotation ); } } }
void QgsMapToolChangeLabelProperties::canvasPressEvent( QMouseEvent * e ) { deleteRubberBands(); if ( !labelAtPosition( e, mCurrentLabelPos ) ) { return; } QgsVectorLayer* vlayer = currentLayer(); if ( !vlayer || !vlayer->isEditable() ) { return; } createRubberBands(); }
void QgsMapToolChangeLabelProperties::canvasPressEvent( QgsMapMouseEvent* e ) { deleteRubberBands(); QgsLabelPosition labelPos; if ( !labelAtPosition( e, labelPos ) || labelPos.isDiagram ) { mCurrentLabel = LabelDetails(); return; } mCurrentLabel = LabelDetails( labelPos ); if ( !mCurrentLabel.valid || !mCurrentLabel.layer || !mCurrentLabel.layer->isEditable() ) { return; } createRubberBands(); }
void QgsMapToolMoveLabel::canvasPressEvent( QgsMapMouseEvent *e ) { deleteRubberBands(); QgsLabelPosition labelPos; if ( !labelAtPosition( e, labelPos ) ) { mCurrentLabel = LabelDetails(); return; } mCurrentLabel = LabelDetails( labelPos ); QgsVectorLayer *vlayer = mCurrentLabel.layer; if ( !vlayer ) { return; } int xCol = -1, yCol = -1; if ( !mCurrentLabel.pos.isDiagram && !labelMoveable( vlayer, mCurrentLabel.settings, xCol, yCol ) ) { QgsPalIndexes indexes; if ( createAuxiliaryFields( indexes ) ) return; if ( !labelMoveable( vlayer, mCurrentLabel.settings, xCol, yCol ) ) return; xCol = indexes[ QgsPalLayerSettings::PositionX ]; yCol = indexes[ QgsPalLayerSettings::PositionY ]; } else if ( mCurrentLabel.pos.isDiagram && !diagramMoveable( vlayer, xCol, yCol ) ) { QgsDiagramIndexes indexes; if ( createAuxiliaryFields( indexes ) ) return; if ( !diagramMoveable( vlayer, xCol, yCol ) ) return; xCol = indexes[ QgsDiagramLayerSettings::PositionX ]; yCol = indexes[ QgsDiagramLayerSettings::PositionY ]; } if ( xCol >= 0 && yCol >= 0 ) { mStartPointMapCoords = toMapCoordinates( e->pos() ); QgsPointXY referencePoint; if ( !currentLabelRotationPoint( referencePoint, !currentLabelPreserveRotation(), false ) ) { referencePoint.setX( mCurrentLabel.pos.labelRect.xMinimum() ); referencePoint.setY( mCurrentLabel.pos.labelRect.yMinimum() ); } mClickOffsetX = mStartPointMapCoords.x() - referencePoint.x(); mClickOffsetY = mStartPointMapCoords.y() - referencePoint.y(); createRubberBands(); } }