16#ifndef QGSMODELGRAPHICSCENE_H
17#define QGSMODELGRAPHICSCENE_H
23#include <QGraphicsScene>
25class QgsProcessingModelAlgorithm;
26class QgsModelComponentGraphicItem;
27class QgsProcessingModelParameter;
28class QgsProcessingModelChildAlgorithm;
29class QgsProcessingModelOutput;
30class QgsProcessingModelComponent;
31class QgsProcessingModelComment;
32class QgsModelChildAlgorithmGraphicItem;
33class QgsProcessingModelGroupBox;
35class QgsModelArrowItem;
46class GUI_EXPORT QgsModelGraphicsScene :
public QGraphicsScene
67 FlagHideControls = 1 << 1,
68 FlagHideComments = 1 << 2,
69 FlagHideFeatureCount = 1 << 3,
71 Q_DECLARE_FLAGS( Flags, Flag )
78 QgsProcessingModelAlgorithm *model();
80 void setModel( QgsProcessingModelAlgorithm *model );
87 void setFlags( QgsModelGraphicsScene::Flags flags ) { mFlags = flags; }
95 void setFlag( QgsModelGraphicsScene::Flag flag,
bool on =
true );
102 QgsModelGraphicsScene::Flags flags()
const {
return mFlags; }
104 void mousePressEvent( QGraphicsSceneMouseEvent *event )
override;
109 void createItems( QgsProcessingModelAlgorithm *model, QgsProcessingContext &context );
114 QList<QgsModelComponentGraphicItem *> selectedComponentItems();
119 QgsModelComponentGraphicItem *componentItemAt( QPointF position )
const;
124 QgsModelComponentGraphicItem *groupBoxItem(
const QString &uuid );
131 QgsModelChildAlgorithmGraphicItem *childAlgorithmItem(
const QString &childId );
141 void resetChildAlgorithmItems(
const QSet<QString> &childAlgorithmSubset = QSet<QString>() );
148 QgsModelComponentGraphicItem *parameterItem(
const QString &name );
155 QgsModelComponentGraphicItem *outputItem(
const QString &childId,
const QString &childOutputName );
173 void setSelectedItem( QgsModelComponentGraphicItem *item );
178 void setLastRunResult(
const QgsProcessingModelResult &result, QgsProcessingContext &context );
185 QgsMessageBar *messageBar()
const;
192 void setMessageBar( QgsMessageBar *bar );
204 void requestRebuildRequired();
223 void setupFeedbackConnections( QgsProcessingModelFeedback *feedback )
SIP_SKIP;
230 void rebuildRequired();
238 void componentAboutToChange(
const QString &text,
const QString &
id = QString() );
243 void componentChanged();
249 void selectedItemChanged( QgsModelComponentGraphicItem *selected );
263 void runFromChild(
const QString &childId );
270 void showChildAlgorithmOutputs(
const QString &childId );
277 void showChildAlgorithmLog(
const QString &childId );
283 virtual QgsModelComponentGraphicItem *createParameterGraphicItem( QgsProcessingModelAlgorithm *model, QgsProcessingModelParameter *param )
const SIP_FACTORY;
288 virtual QgsModelChildAlgorithmGraphicItem *createChildAlgGraphicItem( QgsProcessingModelAlgorithm *model, QgsProcessingModelChildAlgorithm *child )
const SIP_FACTORY;
293 virtual QgsModelComponentGraphicItem *createOutputGraphicItem( QgsProcessingModelAlgorithm *model, QgsProcessingModelOutput *output )
const SIP_FACTORY;
298 virtual QgsModelComponentGraphicItem *createCommentGraphicItem( QgsProcessingModelAlgorithm *model, QgsProcessingModelComment *comment, QgsModelComponentGraphicItem *parentItem )
const SIP_FACTORY;
303 QgsModelComponentGraphicItem *createGroupBoxGraphicItem( QgsProcessingModelAlgorithm *model, QgsProcessingModelGroupBox *box )
const SIP_FACTORY;
308 QgsModelComponentGraphicItem *item =
nullptr;
309 Qt::Edge edge = Qt::LeftEdge;
312 QList<LinkSource> linkSourcesForParameterValue( QgsProcessingModelAlgorithm *model,
const QVariant &value,
const QString &childId, QgsProcessingContext &context )
const;
314 void addCommentItemForComponent( QgsProcessingModelAlgorithm *model,
const QgsProcessingModelComponent &component, QgsModelComponentGraphicItem *parentItem );
315 void addFeatureCountItemForArrow( QgsModelArrowItem *arrow,
const QString &layerId );
317 Flags mFlags = Flags();
319 QgsProcessingModelAlgorithm *mModel =
nullptr;
321 QMap<QString, QgsModelComponentGraphicItem *> mParameterItems;
322 QMap<QString, QgsModelChildAlgorithmGraphicItem *> mChildAlgorithmItems;
323 QMap<QString, QMap<QString, QgsModelComponentGraphicItem *>> mOutputItems;
324 QMap<QString, QgsModelComponentGraphicItem *> mGroupBoxItems;
325 QgsProcessingModelResult mLastResult;
326 QMap<QString, long long> mLastResultCount;
328 static constexpr int SCENE_COMPONENT_MARGIN = 500;
330 QgsMessageBar *mMessageBar =
nullptr;
MessageLevel
Level for messages This will be used both for message log and message bar in application.
@ Warning
Warning message.
A bar for displaying non-blocking messages to the user.
A Processing feedback class with extra signals and properties specific to feedback from Processing mo...
#define SIP_ENUM_BASETYPE(type)
Q_DECLARE_METATYPE(QgsDatabaseQueryLogEntry)