18#include "moc_qgsmodelgraphicitem.cpp"
24#include <QGraphicsSceneMouseEvent>
26#include <QSvgRenderer>
30QgsModelDesignerFlatButtonGraphicItem::QgsModelDesignerFlatButtonGraphicItem( QGraphicsItem *parent,
const QPicture &picture,
const QPointF &position,
const QSizeF &size )
31 : QGraphicsObject( parent )
33 , mPosition( position )
36 setAcceptHoverEvents(
true );
37 setFlag( QGraphicsItem::ItemIsMovable,
false );
38 setCacheMode( QGraphicsItem::DeviceCoordinateCache );
41void QgsModelDesignerFlatButtonGraphicItem::paint( QPainter *painter,
const QStyleOptionGraphicsItem *, QWidget * )
43 if ( QgsModelGraphicsScene *modelScene = qobject_cast<QgsModelGraphicsScene *>( scene() ) )
45 if ( modelScene->flags() & QgsModelGraphicsScene::FlagHideControls )
51 painter->setPen( QPen( Qt::transparent, 1.0 ) );
52 painter->setBrush( QBrush( QColor( 55, 55, 55, 33 ), Qt::SolidPattern ) );
56 painter->setPen( QPen( Qt::transparent, 1.0 ) );
57 painter->setBrush( QBrush( Qt::transparent, Qt::SolidPattern ) );
59 const QPointF topLeft = mPosition - QPointF( std::floor( mSize.width() / 2 ), std::floor( mSize.height() / 2 ) );
60 const QRectF rect = QRectF( topLeft.x(), topLeft.y(), mSize.width(), mSize.height() );
61 painter->drawRect( rect );
62 painter->drawPicture( topLeft.x(), topLeft.y(), mPicture );
65QRectF QgsModelDesignerFlatButtonGraphicItem::boundingRect()
const
67 return QRectF( mPosition.x() - std::floor( mSize.width() / 2 ), mPosition.y() - std::floor( mSize.height() / 2 ), mSize.width(), mSize.height() );
70void QgsModelDesignerFlatButtonGraphicItem::hoverEnterEvent( QGraphicsSceneHoverEvent * )
72 if ( view()->tool() && !view()->tool()->allowItemInteraction() )
79void QgsModelDesignerFlatButtonGraphicItem::hoverLeaveEvent( QGraphicsSceneHoverEvent * )
85void QgsModelDesignerFlatButtonGraphicItem::mousePressEvent( QGraphicsSceneMouseEvent * )
87 if ( view()->tool() && view()->tool()->allowItemInteraction() )
93 if ( view()->tool() && !view()->tool()->allowItemInteraction() )
108 if ( view()->tool() && view()->tool()->allowItemInteraction() && event->button() == Qt::LeftButton )
110 QMetaObject::invokeMethod(
this,
"clicked", Qt::QueuedConnection );
116void QgsModelDesignerFlatButtonGraphicItem::setPosition(
const QPointF &position )
118 mPosition = position;
119 prepareGeometryChange();
123QgsModelGraphicsView *QgsModelDesignerFlatButtonGraphicItem::view()
125 return qobject_cast<QgsModelGraphicsView *>( scene()->views().first() );
128void QgsModelDesignerFlatButtonGraphicItem::setPicture(
const QPicture &picture )
138QgsModelDesignerFoldButtonGraphicItem::QgsModelDesignerFoldButtonGraphicItem( QGraphicsItem *parent,
bool folded,
const QPointF &position,
const QSizeF &size )
139 : QgsModelDesignerFlatButtonGraphicItem( parent, QPicture(), position, size )
143 QPainter painter( &mPlusPicture );
144 svg.render( &painter );
148 painter.begin( &mMinusPicture );
149 svg2.render( &painter );
152 setPicture( mFolded ? mPlusPicture : mMinusPicture );
155void QgsModelDesignerFoldButtonGraphicItem::mousePressEvent( QGraphicsSceneMouseEvent *event )
158 setPicture( mFolded ? mPlusPicture : mMinusPicture );
159 emit folded( mFolded );
160 QgsModelDesignerFlatButtonGraphicItem::mousePressEvent( event );
166 setPicture( mFolded ? mPlusPicture : mMinusPicture );
167 emit folded( mFolded );
168 QgsModelDesignerFlatButtonGraphicItem::modelPressEvent( event );
172QgsModelDesignerSocketGraphicItem::QgsModelDesignerSocketGraphicItem( QgsModelComponentGraphicItem *parent, QgsProcessingModelComponent *component,
int index,
const QPointF &position, Qt::Edge edge,
const QSizeF &size )
173 : QgsModelDesignerFlatButtonGraphicItem( parent, QPicture(), position, size )
174 , mComponentItem( parent )
175 , mComponent( component )
181void QgsModelDesignerSocketGraphicItem::paint( QPainter *painter,
const QStyleOptionGraphicsItem *, QWidget * )
183 painter->setPen( QPen() );
184 painter->setBrush( QBrush( QColor( 0, 0, 0, mHoverState ? 200 : 33 ), Qt::SolidPattern ) );
186 painter->setRenderHint( QPainter::Antialiasing );
188 constexpr float DISPLAY_SIZE = 3.2;
189 painter->drawEllipse( position(), DISPLAY_SIZE, DISPLAY_SIZE );
193 painter->setPen( QPen() );
194 painter->setBrush( QBrush() );
195 painter->drawRect( boundingRect() );
static QString iconPath(const QString &iconFile)
Returns path to the desired icon file.
A mouse event which is the result of a user interaction with a QgsModelGraphicsView.