16 #ifndef QGSMODELDESIGNERDIALOG_H
17 #define QGSMODELDESIGNERDIALOG_H
21 #include "ui_qgsmodeldesignerdialogbase.h"
27 class QgsProcessingModelAlgorithm;
28 class QgsModelUndoCommand;
41 explicit QgsModelerToolboxModel( QObject *parent =
nullptr );
42 Qt::ItemFlags flags(
const QModelIndex &index )
const override;
43 Qt::DropActions supportedDragActions()
const override;
55 class GUI_EXPORT QgsModelDesignerDialog :
public QMainWindow,
public Ui::QgsModelDesignerDialogBase
60 QgsModelDesignerDialog( QWidget *parent
SIP_TRANSFERTHIS =
nullptr, Qt::WindowFlags flags = Qt::WindowFlags() );
61 ~QgsModelDesignerDialog()
override;
63 void closeEvent( QCloseEvent *event )
override;
68 void beginUndoCommand(
const QString &text,
int id = 0 );
73 void endUndoCommand();
78 QgsProcessingModelAlgorithm *model();
85 void setModel( QgsProcessingModelAlgorithm *model
SIP_TRANSFER );
90 void loadModel(
const QString &path );
95 void setModelScene( QgsModelGraphicsScene *scene
SIP_TRANSFER );
102 enum class SaveAction
120 virtual void repaintModel(
bool showControls =
true ) = 0;
121 virtual void addAlgorithm(
const QString &algorithmId,
const QPointF &pos ) = 0;
122 virtual void addInput(
const QString &inputId,
const QPointF &pos ) = 0;
123 virtual void exportAsScriptAlgorithm() = 0;
125 virtual bool saveModel(
bool saveAs =
false ) = 0;
127 QToolBar *toolbar() {
return mToolbar; }
128 QAction *actionOpen() {
return mActionOpen; }
129 QAction *actionSaveInProject() {
return mActionSaveInProject; }
130 QAction *actionRun() {
return mActionRun; }
132 QGraphicsView *view() {
return mView; }
134 void setDirty(
bool dirty );
139 bool validateSave( SaveAction action );
146 bool checkForUnsavedChanges();
151 void setLastRunChildAlgorithmResults(
const QVariantMap &results );
156 void setLastRunChildAlgorithmInputs(
const QVariantMap &inputs );
165 void setModelName(
const QString &name );
173 void exportToImage();
176 void exportAsPython();
177 void toggleComments(
bool show );
178 void updateWindowTitle();
179 void deleteSelected();
180 void populateZoomToMenu();
182 void reorderInputs();
183 void setPanelVisibility(
bool hidden );
194 std::unique_ptr< QgsProcessingModelAlgorithm > mModel;
197 QgsModelerToolboxModel *mAlgorithmsModel =
nullptr;
199 QActionGroup *mToolsActionGroup =
nullptr;
203 QgsModelGraphicsScene *mScene =
nullptr;
205 bool mHasChanged =
false;
206 QUndoStack *mUndoStack =
nullptr;
207 std::unique_ptr< QgsModelUndoCommand > mActiveCommand;
209 QAction *mUndoAction =
nullptr;
210 QAction *mRedoAction =
nullptr;
211 QUndoView *mUndoView =
nullptr;
214 QMenu *mGroupMenu =
nullptr;
216 QAction *mActionCut =
nullptr;
217 QAction *mActionCopy =
nullptr;
218 QAction *mActionPaste =
nullptr;
219 int mBlockUndoCommands = 0;
220 int mIgnoreUndoStackChanges = 0;
224 int mBlockRepaints = 0;
226 QVariantMap mChildResults;
227 QVariantMap mChildInputs;
229 bool isDirty()
const;
231 void fillInputsTree();
232 void updateVariablesGui();
236 PanelStatus(
bool visible =
true,
bool active =
false )
237 : isVisible( visible )
243 QMap< QString, PanelStatus > mPanelStatus;
248 class GUI_EXPORT QgsModelChildDependenciesWidget :
public QWidget
254 QgsModelChildDependenciesWidget( QWidget *parent, QgsProcessingModelAlgorithm *model,
const QString &childId );
255 QList< QgsProcessingModelChildDependency > value()
const {
return mValue; }
256 void setValue(
const QList< QgsProcessingModelChildDependency > &value );
263 void updateSummaryText();
265 QLineEdit *mLineEdit =
nullptr;
266 QToolButton *mToolButton =
nullptr;
268 QgsProcessingModelAlgorithm *mModel =
nullptr;
271 QList< QgsProcessingModelChildDependency > mValue;
273 friend class TestProcessingGui;
277 #endif // QGSMODELDESIGNERDIALOG_H