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;
47class GUI_EXPORT QgsModelGraphicsScene :
public QGraphicsScene
68 FlagHideControls = 1 << 1,
69 FlagHideComments = 1 << 2,
70 FlagHideFeatureCount = 1 << 3,
72 Q_DECLARE_FLAGS( Flags, Flag )
79 QgsProcessingModelAlgorithm *model();
81 void setModel( QgsProcessingModelAlgorithm *model );
88 void setFlags( QgsModelGraphicsScene::Flags flags ) { mFlags = flags; }
96 void setFlag( QgsModelGraphicsScene::Flag flag,
bool on =
true );
103 QgsModelGraphicsScene::Flags flags()
const {
return mFlags; }
105 void mousePressEvent( QGraphicsSceneMouseEvent *event )
override;
110 void createItems( QgsProcessingModelAlgorithm *model, QgsProcessingContext &context );
115 QList<QgsModelComponentGraphicItem *> selectedComponentItems();
120 SIP_SKIP QgsModelComponentGraphicItem *componentItemAt( QPointF position )
const;
125 SIP_SKIP QgsModelComponentGraphicItem *groupBoxItem(
const QString &uuid );
132 SIP_SKIP QgsModelChildAlgorithmGraphicItem *childAlgorithmItem(
const QString &childId );
142 void resetChildAlgorithmItems(
const QSet<QString> &childAlgorithmSubset = QSet<QString>() );
149 QgsModelComponentGraphicItem *parameterItem(
const QString &name );
156 QgsModelComponentGraphicItem *outputItem(
const QString &childId,
const QString &childOutputName );
174 void setSelectedItem( QgsModelComponentGraphicItem *item );
179 void setLastRunResult(
const QgsProcessingModelResult &result, QgsProcessingContext &context );
186 QgsMessageBar *messageBar()
const;
193 void setMessageBar( QgsMessageBar *bar );
205 void requestRebuildRequired();
224 void setupFeedbackConnections( QgsProcessingModelFeedback *feedback )
SIP_SKIP;
231 void flagChildrenAsOutdated(
const QSet< QString > &children );
238 void registerWidgetContextGenerator( QgsProcessingWidgetContextGenerator *generator );
245 void rebuildRequired();
253 void componentAboutToChange(
const QString &text,
const QString &
id = QString() );
258 void componentChanged();
264 void selectedItemChanged( QgsModelComponentGraphicItem *selected );
278 void runFromChild(
const QString &childId );
285 void showChildAlgorithmOutputs(
const QString &childId );
292 void showChildAlgorithmLog(
const QString &childId );
298 SIP_SKIP virtual QgsModelComponentGraphicItem *createParameterGraphicItem( QgsProcessingModelAlgorithm *model, QgsProcessingModelParameter *param )
const;
303 SIP_SKIP QgsModelChildAlgorithmGraphicItem *createChildAlgGraphicItem( QgsProcessingModelAlgorithm *model, QgsProcessingModelChildAlgorithm *child )
const;
308 virtual QgsModelComponentGraphicItem *createOutputGraphicItem( QgsProcessingModelAlgorithm *model, QgsProcessingModelOutput *output )
const SIP_FACTORY;
313 SIP_SKIP QgsModelComponentGraphicItem *createCommentGraphicItem( QgsProcessingModelAlgorithm *model, QgsProcessingModelComment *comment, QgsModelComponentGraphicItem *parentItem )
const;
318 SIP_SKIP QgsModelComponentGraphicItem *createGroupBoxGraphicItem( QgsProcessingModelAlgorithm *model, QgsProcessingModelGroupBox *box )
const;
323 QgsModelComponentGraphicItem *item =
nullptr;
324 Qt::Edge edge = Qt::LeftEdge;
327 QList<LinkSource> linkSourcesForParameterValue( QgsProcessingModelAlgorithm *model,
const QVariant &value,
const QString &childId, QgsProcessingContext &context )
const;
329 void addCommentItemForComponent( QgsProcessingModelAlgorithm *model,
const QgsProcessingModelComponent &component, QgsModelComponentGraphicItem *parentItem );
330 void addFeatureCountItemForArrow( QgsModelArrowItem *arrow,
const QString &layerId );
332 Flags mFlags = Flags();
334 QgsProcessingModelAlgorithm *mModel =
nullptr;
336 QMap<QString, QgsModelComponentGraphicItem *> mParameterItems;
337 QMap<QString, QgsModelChildAlgorithmGraphicItem *> mChildAlgorithmItems;
338 QMap<QString, QMap<QString, QgsModelComponentGraphicItem *>> mOutputItems;
339 QMap<QString, QgsModelComponentGraphicItem *> mGroupBoxItems;
340 QgsProcessingModelResult mLastResult;
341 QMap<QString, long long> mLastResultCount;
343 static constexpr int SCENE_COMPONENT_MARGIN = 500;
345 QgsProcessingWidgetContextGenerator *mWidgetContextGenerator =
nullptr;
347 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...
An interface for objects which can create Processing widget contexts.
#define SIP_ENUM_BASETYPE(type)
Q_DECLARE_METATYPE(QgsDatabaseQueryLogEntry)