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.