Пример #1
0
void QgsComposerMouseHandles::paint( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle, QWidget* pWidget )
{
  Q_UNUSED( itemStyle );
  Q_UNUSED( pWidget );

  if ( mComposition->plotStyle() != QgsComposition::Preview )
  {
    //don't draw selection handles in composition outputs
    return;
  }

  //draw resize handles around bounds of entire selection
  double rectHandlerSize = rectHandlerBorderTolerance();
  drawHandles( painter, rectHandlerSize );

  //draw dotted boxes around selected items
  drawSelectedItemBounds( painter );
}
Пример #2
0
void QgsComposerItem::drawSelectionBoxes( QPainter* p )
{
    if ( !mComposition )
    {
        return;
    }

    if ( mComposition->plotStyle() == QgsComposition::Preview )
    {
        //size of symbol boxes depends on zoom level in composer view
        double rectHandlerSize = rectHandlerBorderTolerance();
        double sizeLockSymbol = lockSymbolSize();

        if ( mItemPositionLocked )
        {
            //draw lock symbol at upper left edge. Use QImage to be independent of the graphic system
            QString lockIconPath = QgsApplication::activeThemePath() + "/mIconLock.png";
            if ( !QFile::exists( lockIconPath ) )
            {
                lockIconPath = QgsApplication::defaultThemePath() + "/mIconLock.png";
            }

            QImage lockImage( lockIconPath );
            if ( !lockImage.isNull() )
            {
                p->drawImage( QRectF( 0, 0, sizeLockSymbol, sizeLockSymbol ), lockImage, QRectF( 0, 0, lockImage.width(), lockImage.height() ) );
            }
        }
        else //draw blue squares
        {
            p->setPen( QColor( 50, 100, 120, 200 ) );
            p->setBrush( QColor( 200, 200, 210, 120 ) );
            p->drawRect( QRectF( 0, 0, rectHandlerSize, rectHandlerSize ) );
            p->drawRect( QRectF( rect().width() - rectHandlerSize, 0, rectHandlerSize, rectHandlerSize ) );
            p->drawRect( QRectF( rect().width() - rectHandlerSize, rect().height() - rectHandlerSize, rectHandlerSize, rectHandlerSize ) );
            p->drawRect( QRectF( 0, rect().height() - rectHandlerSize, rectHandlerSize, rectHandlerSize ) );
        }
    }
}
Пример #3
0
QgsComposerItem::MouseMoveAction QgsComposerItem::mouseMoveActionForPosition( const QPointF& itemCoordPos )
{

    //no action at all if item position is locked for mouse
    if ( mItemPositionLocked )
    {
        return QgsComposerItem::NoAction;
    }

    bool nearLeftBorder = false;
    bool nearRightBorder = false;
    bool nearLowerBorder = false;
    bool nearUpperBorder = false;

    double borderTolerance = rectHandlerBorderTolerance();

    if ( itemCoordPos.x() < borderTolerance )
    {
        nearLeftBorder = true;
    }
    if ( itemCoordPos.y() < borderTolerance )
    {
        nearUpperBorder = true;
    }
    if ( itemCoordPos.x() > ( rect().width() - borderTolerance ) )
    {
        nearRightBorder = true;
    }
    if ( itemCoordPos.y() > ( rect().height() - borderTolerance ) )
    {
        nearLowerBorder = true;
    }

    if ( nearLeftBorder && nearUpperBorder )
    {
        return QgsComposerItem::ResizeLeftUp;
    }
    else if ( nearLeftBorder && nearLowerBorder )
    {
        return QgsComposerItem::ResizeLeftDown;
    }
    else if ( nearRightBorder && nearUpperBorder )
    {
        return QgsComposerItem::ResizeRightUp;
    }
    else if ( nearRightBorder && nearLowerBorder )
    {
        return QgsComposerItem::ResizeRightDown;
    }
    else if ( nearLeftBorder )
    {
        return QgsComposerItem::ResizeLeft;
    }
    else if ( nearRightBorder )
    {
        return QgsComposerItem::ResizeRight;
    }
    else if ( nearUpperBorder )
    {
        return QgsComposerItem::ResizeUp;
    }
    else if ( nearLowerBorder )
    {
        return QgsComposerItem::ResizeDown;
    }

    return QgsComposerItem::MoveItem; //default
}