16#ifndef QGSMODELCOMPONENTGRAPHICITEM_H 
   17#define QGSMODELCOMPONENTGRAPHICITEM_H 
   21#include <QGraphicsObject> 
   26class QgsProcessingModelComponent;
 
   27class QgsProcessingModelParameter;
 
   28class QgsProcessingModelChildAlgorithm;
 
   29class QgsProcessingModelOutput;
 
   30class QgsProcessingModelComment;
 
   31class QgsProcessingModelAlgorithm;
 
   32class QgsModelDesignerFlatButtonGraphicItem;
 
   33class QgsModelDesignerFoldButtonGraphicItem;
 
   34class QgsModelGraphicsView;
 
   36class QgsProcessingModelGroupBox;
 
   46class GUI_EXPORT QgsModelComponentGraphicItem : 
public QGraphicsObject
 
   66    Q_DECLARE_FLAGS( Flags, Flag )
 
   76    QgsModelComponentGraphicItem( QgsProcessingModelComponent *component 
SIP_TRANSFER,
 
   77                                  QgsProcessingModelAlgorithm *model,
 
   80    ~QgsModelComponentGraphicItem() 
override;
 
   85    virtual Flags flags() 
const;
 
   90    QgsProcessingModelComponent *component();
 
   95    const QgsProcessingModelComponent *component() const 
SIP_SKIP;
 
  100    QgsProcessingModelAlgorithm *model();
 
  105    QgsModelGraphicsView *view();
 
  117    void setFont( const QFont &font );
 
  124    void moveComponentBy( qreal dx, qreal dy );
 
  129    void previewItemMove( qreal dx, qreal dy );
 
  134    void setItemRect( QRectF rect );
 
  141    QRectF previewItemRectChange( QRectF rect );
 
  146    void finalizePreviewedItemRectChange( QRectF rect );
 
  168    void mouseDoubleClickEvent( QGraphicsSceneMouseEvent *event ) 
override;
 
  169    void hoverEnterEvent( QGraphicsSceneHoverEvent *event ) 
override;
 
  170    void hoverMoveEvent( QGraphicsSceneHoverEvent *event ) 
override;
 
  171    void hoverLeaveEvent( QGraphicsSceneHoverEvent *event ) 
override;
 
  172    QVariant itemChange( GraphicsItemChange change, 
const QVariant &value ) 
override;
 
  173    QRectF boundingRect() 
const override;
 
  174    bool contains( 
const QPointF &point ) 
const override;
 
  175    void paint( QPainter *painter, 
const QStyleOptionGraphicsItem *option, QWidget *widget = 
nullptr ) 
override;
 
  180    QRectF itemRect( 
bool storedRect = 
false ) 
const;
 
  187    QString label() 
const;
 
  194    void setLabel( 
const QString &label );
 
  204    virtual int linkPointCount( Qt::Edge edge ) 
const;
 
  209    virtual QString linkPointText( Qt::Edge edge, 
int index ) 
const;
 
  214    QPointF linkPoint( Qt::Edge edge, 
int index, 
bool incoming ) 
const;
 
  223    QPointF calculateAutomaticLinkPoint( QgsModelComponentGraphicItem *other, Qt::Edge &edge 
SIP_OUT ) 
const;
 
  232    QPointF calculateAutomaticLinkPoint( 
const QPointF &point, Qt::Edge &edge 
SIP_OUT ) 
const;
 
  239    virtual void editComment() {}
 
  244    virtual bool canDeleteComponent() { 
return false; }
 
  251    virtual void deleteComponent() {}
 
  260    void requestModelRepaint();
 
  269    void aboutToChange( 
const QString &text, 
int id = 0 );
 
  280    void repaintArrows();
 
  285    void updateArrowPaths();
 
  290    void sizePositionChanged();
 
  299    virtual void editComponent() {}
 
  307    QString truncatedTextForItem( 
const QString &text ) 
const;
 
  312    virtual QColor fillColor( State state ) 
const = 0;
 
  317    virtual QColor strokeColor( State state ) 
const = 0;
 
  322    virtual QColor textColor( State state ) 
const = 0;
 
  327    virtual Qt::PenStyle strokeStyle( State state ) 
const;
 
  332    virtual Qt::Alignment titleAlignment() 
const;
 
  337    virtual QPicture iconPicture() 
const;
 
  342    virtual QPixmap iconPixmap() 
const;
 
  347    virtual void updateStoredComponentPosition( 
const QPointF &pos, 
const QSizeF &size ) = 0;
 
  352    void updateButtonPositions();
 
  356    QSizeF itemSize() 
const;
 
  358    void updateToolTip( 
const QPointF &pos );
 
  360    void fold( Qt::Edge edge, 
bool folded );
 
  362    std::unique_ptr< QgsProcessingModelComponent > mComponent;
 
  363    QgsProcessingModelAlgorithm *mModel = 
nullptr;
 
  365    bool mInitialized = 
false;
 
  366    QgsModelDesignerFoldButtonGraphicItem *mExpandTopButton = 
nullptr;
 
  367    QgsModelDesignerFoldButtonGraphicItem *mExpandBottomButton = 
nullptr;
 
  371    QgsModelDesignerFlatButtonGraphicItem *mEditButton = 
nullptr;
 
  372    QgsModelDesignerFlatButtonGraphicItem *mDeleteButton = 
nullptr;
 
  374    static constexpr double MIN_COMPONENT_WIDTH = 70;
 
  375    static constexpr double MIN_COMPONENT_HEIGHT = 30;
 
  377    static constexpr double DEFAULT_BUTTON_WIDTH = 16;
 
  378    static constexpr double DEFAULT_BUTTON_HEIGHT = 16;
 
  379    static constexpr double BUTTON_MARGIN = 2;
 
  380    static constexpr double TEXT_MARGIN = 4;
 
  381    static constexpr double RECT_PEN_SIZE = 2;
 
  382    QSizeF mButtonSize { DEFAULT_BUTTON_WIDTH, DEFAULT_BUTTON_HEIGHT };
 
  386    bool mIsHovering = 
false;
 
  387    bool mIsMoving = 
false;
 
  399class GUI_EXPORT QgsModelParameterGraphicItem : 
public QgsModelComponentGraphicItem
 
  413    QgsModelParameterGraphicItem( QgsProcessingModelParameter *parameter 
SIP_TRANSFER,
 
  414                                  QgsProcessingModelAlgorithm *model,
 
  417    void contextMenuEvent( QGraphicsSceneContextMenuEvent *event ) 
override;
 
  418    bool canDeleteComponent() 
override;
 
  422    QColor fillColor( State state ) 
const override;
 
  423    QColor strokeColor( State state ) 
const override;
 
  424    QColor textColor( State state ) 
const override;
 
  425    QPicture iconPicture() 
const override;
 
  426    void updateStoredComponentPosition( 
const QPointF &pos, 
const QSizeF &size ) 
override;
 
  430    void deleteComponent() 
override;
 
  443class GUI_EXPORT QgsModelChildAlgorithmGraphicItem : 
public QgsModelComponentGraphicItem
 
  457    QgsModelChildAlgorithmGraphicItem( QgsProcessingModelChildAlgorithm *child 
SIP_TRANSFER,
 
  458                                       QgsProcessingModelAlgorithm *model,
 
  460    void contextMenuEvent( QGraphicsSceneContextMenuEvent *event ) 
override;
 
  461    bool canDeleteComponent() 
override;
 
  466    void setResults( 
const QVariantMap &results );
 
  471    void setInputs( 
const QVariantMap &inputs );
 
  475    QColor fillColor( State state ) 
const override;
 
  476    QColor strokeColor( State state ) 
const override;
 
  477    QColor textColor( State state ) 
const override;
 
  478    QPixmap iconPixmap() 
const override;
 
  479    QPicture iconPicture() 
const override;
 
  481    int linkPointCount( Qt::Edge edge ) 
const override;
 
  482    QString linkPointText( Qt::Edge edge, 
int index ) 
const override;
 
  483    void updateStoredComponentPosition( 
const QPointF &pos, 
const QSizeF &size ) 
override;
 
  487    void deleteComponent() 
override;
 
  490    void deactivateAlgorithm();
 
  491    void activateAlgorithm();
 
  496    QVariantMap mResults;
 
  498    bool mIsValid = 
true;
 
  508class GUI_EXPORT QgsModelOutputGraphicItem : 
public QgsModelComponentGraphicItem
 
  522    QgsModelOutputGraphicItem( QgsProcessingModelOutput *output 
SIP_TRANSFER,
 
  523                               QgsProcessingModelAlgorithm *model,
 
  526    bool canDeleteComponent() 
override;
 
  530    QColor fillColor( State state ) 
const override;
 
  531    QColor strokeColor( State state ) 
const override;
 
  532    QColor textColor( State state ) 
const override;
 
  533    QPicture iconPicture() 
const override;
 
  534    void updateStoredComponentPosition( 
const QPointF &pos, 
const QSizeF &size ) 
override;
 
  538    void deleteComponent() 
override;
 
  553class GUI_EXPORT QgsModelCommentGraphicItem : 
public QgsModelComponentGraphicItem
 
  567    QgsModelCommentGraphicItem( QgsProcessingModelComment *comment 
SIP_TRANSFER,
 
  568                                QgsModelComponentGraphicItem *parentItem,
 
  569                                QgsProcessingModelAlgorithm *model,
 
  571    ~QgsModelCommentGraphicItem() 
override;
 
  572    void contextMenuEvent( QGraphicsSceneContextMenuEvent *event ) 
override;
 
  573    bool canDeleteComponent() 
override;
 
  578    QgsModelComponentGraphicItem *parentComponentItem() 
const;
 
  582    QColor fillColor( State state ) 
const override;
 
  583    QColor strokeColor( State state ) 
const override;
 
  584    QColor textColor( State state ) 
const override;
 
  585    Qt::PenStyle strokeStyle( State state ) 
const override;
 
  586    void updateStoredComponentPosition( 
const QPointF &pos, 
const QSizeF &size ) 
override;
 
  590    void deleteComponent() 
override;
 
  591    void editComponent() 
override;
 
  594    QgsProcessingModelComment *modelComponent();
 
  596    std::unique_ptr< QgsProcessingModelComponent > mParentComponent;
 
  597    QPointer< QgsModelComponentGraphicItem > mParentItem;
 
  609class GUI_EXPORT QgsModelGroupBoxGraphicItem : 
public QgsModelComponentGraphicItem
 
  623    QgsModelGroupBoxGraphicItem( QgsProcessingModelGroupBox *box 
SIP_TRANSFER,
 
  624                                 QgsProcessingModelAlgorithm *model,
 
  626    ~QgsModelGroupBoxGraphicItem() 
override;
 
  627    void contextMenuEvent( QGraphicsSceneContextMenuEvent *event ) 
override;
 
  628    bool canDeleteComponent() 
override;
 
  631    QColor fillColor( State state ) 
const override;
 
  632    QColor strokeColor( State state ) 
const override;
 
  633    QColor textColor( State state ) 
const override;
 
  634    Qt::PenStyle strokeStyle( State state ) 
const override;
 
  635    Qt::Alignment titleAlignment() 
const override;
 
  636    void updateStoredComponentPosition( 
const QPointF &pos, 
const QSizeF &size ) 
override;
 
  640    void deleteComponent() 
override;
 
  641    void editComponent() 
override;
 
A QgsModelViewMouseEvent is the result of a user interaction with the mouse on a QgsModelGraphicsView...
 
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsField::ConfigurationFlags) CORE_EXPORT QDataStream &operator<<(QDataStream &out
Writes the field to stream out. QGIS version compatibility is not guaranteed.