30#include <QGraphicsSceneHoverEvent>
34#include "moc_qgsmodelviewmousehandles.cpp"
39QgsModelViewMouseHandles::QgsModelViewMouseHandles( QgsModelGraphicsView *view )
40 : QgsGraphicsViewMouseHandles( view )
44 connect( modelScene(), &QGraphicsScene::selectionChanged,
this, &QgsModelViewMouseHandles::selectionChanged );
48QgsModelGraphicsScene *QgsModelViewMouseHandles::modelScene()
const
50 return qobject_cast<QgsModelGraphicsScene *>( mView->scene() );
53void QgsModelViewMouseHandles::paint( QPainter *painter,
const QStyleOptionGraphicsItem *option, QWidget *widget )
55 paintInternal( painter, !( modelScene()->flags() & QgsModelGraphicsScene::FlagHideControls ),
true,
false, option, widget );
58void QgsModelViewMouseHandles::selectionChanged()
61 const QList<QGraphicsItem *> itemList = mView->items();
62 for ( QGraphicsItem *graphicsItem : itemList )
64 QgsModelComponentGraphicItem *item =
dynamic_cast<QgsModelComponentGraphicItem *
>( graphicsItem );
68 if ( item->isSelected() )
70 connect( item, &QgsModelComponentGraphicItem::sizePositionChanged,
this, &QgsModelViewMouseHandles::selectedItemSizeChanged );
74 disconnect( item, &QgsModelComponentGraphicItem::sizePositionChanged,
this, &QgsModelViewMouseHandles::selectedItemSizeChanged );
82void QgsModelViewMouseHandles::setViewportCursor( Qt::CursorShape cursor )
87 if ( qobject_cast<QgsModelViewTool *>( mView->tool() ) )
89 mView->viewport()->setCursor( cursor );
93QList<QGraphicsItem *> QgsModelViewMouseHandles::sceneItemsAtPoint( QPointF scenePoint )
95 return modelScene()->items( scenePoint );
98QList<QGraphicsItem *> QgsModelViewMouseHandles::selectedSceneItems(
bool )
const
100 QList<QGraphicsItem *> res;
101 const QList<QgsModelComponentGraphicItem *> componentItems = modelScene()->selectedComponentItems();
102 res.reserve( componentItems.size() );
103 for ( QgsModelComponentGraphicItem *item : componentItems )
108QRectF QgsModelViewMouseHandles::itemRect( QGraphicsItem *item )
const
110 if ( QgsModelComponentGraphicItem *componentItem =
dynamic_cast<QgsModelComponentGraphicItem *
>( item ) )
111 return componentItem->itemRect();
116QRectF QgsModelViewMouseHandles::storedItemRect( QGraphicsItem *item )
const
118 if ( QgsModelComponentGraphicItem *componentItem =
dynamic_cast<QgsModelComponentGraphicItem *
>( item ) )
119 return componentItem->itemRect(
true );
124void QgsModelViewMouseHandles::moveItem( QGraphicsItem *item,
double deltaX,
double deltaY )
126 if ( QgsModelComponentGraphicItem *componentItem =
dynamic_cast<QgsModelComponentGraphicItem *
>( item ) )
128 componentItem->moveComponentBy( deltaX, deltaY );
132void QgsModelViewMouseHandles::previewItemMove( QGraphicsItem *item,
double deltaX,
double deltaY )
134 if ( QgsModelComponentGraphicItem *componentItem =
dynamic_cast<QgsModelComponentGraphicItem *
>( item ) )
136 componentItem->previewItemMove( deltaX, deltaY );
140void QgsModelViewMouseHandles::setItemRect( QGraphicsItem *item, QRectF rect )
142 if ( QgsModelComponentGraphicItem *componentItem =
dynamic_cast<QgsModelComponentGraphicItem *
>( item ) )
144 componentItem->finalizePreviewedItemRectChange( rect );
148QRectF QgsModelViewMouseHandles::previewSetItemRect( QGraphicsItem *item, QRectF rect )
150 if ( QgsModelComponentGraphicItem *componentItem =
dynamic_cast<QgsModelComponentGraphicItem *
>( item ) )
152 return componentItem->previewItemRectChange( rect );
157void QgsModelViewMouseHandles::startMacroCommand(
const QString &text )
159 mView->startMacroCommand( text );
162void QgsModelViewMouseHandles::endMacroCommand()
164 mView->endMacroCommand();
167QPointF QgsModelViewMouseHandles::snapPoint( QPointF originalPoint, QgsGraphicsViewMouseHandles::SnapGuideMode mode,
bool snapHorizontal,
bool snapVertical )
169 bool snapped =
false;
171 QPointF snappedPoint;
176 snappedPoint = mView->snapper()->snapPoint( originalPoint, mView->transform().m11(), snapped, snapHorizontal, snapVertical );
180 return snapped ? snappedPoint : originalPoint;