DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DAWorkFlowOperateWidget.h
1#ifndef DAWORKFLOWOPERATEWIDGET_H
2#define DAWORKFLOWOPERATEWIDGET_H
3#include <QWidget>
4#include <functional>
5#include "DAGuiAPI.h"
6#include "DAAbstractOperateWidget.h"
7#include "DAGraphicsStandardTextItem.h"
8#include "DAWorkFlowGraphicsScene.h"
9#include "DAWorkFlowEditWidget.h"
10namespace Ui
11{
12class DAWorkFlowOperateWidget;
13}
14class QUndoStack;
15class QActionGroup;
16
17namespace DA
18{
19class DADataWorkFlow;
20class DAWorkFlowGraphicsView;
21class DAAbstractNodeGraphicsItem;
26{
27 Q_OBJECT
28 DA_DECLARE_PRIVATE(DAWorkFlowOperateWidget)
29public:
33 using FpScenesOpt = std::function< bool(DAWorkFlowGraphicsScene*) >;
34
38 using FpEditWidgetOpt = std::function< bool(DAWorkFlowEditWidget*) >;
39
40public:
45 {
46 ActionCopy = 0,
47 ActionCut,
48 ActionPaste,
49 ActionDelete,
50 ActionCancel,
51 ActionSelectAll,
52 ActionZoomIn,
53 ActionZoomOut,
54 ActionZoomFit,
59 };
60
61public:
62 DAWorkFlowOperateWidget(QWidget* parent = nullptr);
64 // 创建工作流,创建完后通过getWorkflow获取
65 // 如果对DAWorkFlow如果有继承,那么重载此函数创建自己的workflow就行
66 virtual DAWorkFlow* createWorkflow();
67 // 创建工作流页面,会触发workflowCreated信号
68 DAWorkFlowEditWidget* appendWorkflow(const QString& name);
69 // 创建一个新的工作流窗口,此函数带有交互
70 DAWorkFlowEditWidget* appendWorkflowWithDialog();
71 // 获取当前工作流的索引
72 int getCurrentWorkflowIndex() const;
73 void setCurrentWorkflow(int index);
74 DAWorkFlow* getCurrentWorkflow() const;
75 // 设置当前的工作流
76 void setCurrentWorkflowWidget(DAWorkFlowEditWidget* wf);
77 DAWorkFlowEditWidget* getCurrentWorkFlowWidget() const;
78 void setCurrentWorkflowName(const QString& name);
79 //
80 // 获取所有的工作流编辑窗口
81 QList< DAWorkFlowEditWidget* > getAllWorkFlowWidgets() const;
82 // 获取当前场景
83 DAWorkFlowGraphicsScene* getCurrentWorkFlowScene() const;
84 QList< DAWorkFlowGraphicsScene* > getAllWorkFlowScene() const;
85 // 获取当前视图
86 DAWorkFlowGraphicsView* getCurrentWorkFlowView() const;
87 // 获取工作流窗口
88 DAWorkFlowEditWidget* getWorkFlowWidget(int index) const;
89
90 // 获取工作流窗口的名称
91 QString getWorkFlowWidgetName(int index) const;
92 // 给工作流重命名
93 void renameWorkFlowWidget(int index, const QString& name);
94 // 获取编辑窗口数量
95 int count() const;
96 // 移除工作流,会进行销毁操作
97 void removeWorkflow(int index);
98
99 // 激活UndoStack
100 void setUndoStackActive();
101 // 设置显示grid
102 bool isCurrentWorkflowShowGrid() const;
103 // 获取QUndoStack
104 QUndoStack* getUndoStack() override;
105 // 设置鼠标动作
106 bool setPreDefineSceneAction(DAWorkFlowGraphicsScene::SceneActionFlag mf);
107 // 清空所有工程
108 void clear();
109 // 获取所有工作流的名字
110 QList< QString > getAllWorkflowNames() const;
111 // 设置文本字体 -- 此参数设置决定创建文本框时的字体和颜色
112 QFont getDefaultTextFont() const;
113 void setDefaultTextFont(const QFont& f);
114 // 设置文本颜色 -- 此参数设置决定创建文本框时的字体和颜色
115 QColor getDefaultTextColor() const;
116 void setDefaultTextColor(const QColor& c);
117 // 设置只允许一个工作流
118 bool isOnlyOneWorkflow() const;
119 void setOnlyOneWorkflow(bool v);
120 // 获取窗口内置的action,一般这个函数用来把action设置到工具栏或者菜单中
121 QAction* getInnerAction(InnerActions act);
122 // 迭代场景操作
123 void iteratorScene(FpScenesOpt fp);
124 // 设置当前视图的标记线
125 void setCurrentViewLineMarker(DAGraphicsViewOverlayMouseMarker::MarkerStyle s);
126 // 获取LineMarker的ActionGroup
127 QActionGroup* getLineMarkerActionGroup() const;
128public Q_SLOTS:
129 // 添加一个背景图
130 void addBackgroundPixmap(const QString& pixmapPath);
131 // 锁定背景图
132 void setBackgroundPixmapLock(bool on);
133 // 设置字体
134 void setSelectTextFont(const QFont& f);
135 // 设置文字颜色
136 void setSelectTextColor(const QColor& color);
137 // 设置当前选中的图元的背景
138 void setSelectShapeBackgroundBrush(const QBrush& b);
139 // 设置当前选中的图元的背景
140 void setSelectShapeBorderPen(const QPen& v);
141 // 设置当前工作流的网格显示与否
142 void setCurrentWorkflowShowGrid(bool on);
143 // 设置当前工作流锁定
144 void setCurrentWorkflowReadOnly(bool on);
145 // 设置当前工作流全部显示
146 void setCurrentWorkflowWholeView();
147 // 设置当前工作流全部显示
148 void setCurrentWorkflowZoomIn();
149 // 设置当前工作流全部显示
150 void setCurrentWorkflowZoomOut();
151 // 全选
152 void setCurrentWorkflowSelectAll();
153 // 运行工作流
154 void runCurrentWorkFlow();
155 // 终止工作流
156 void terminateCurrentWorkFlow();
157 // 复制当前选中的items
158 void copyCurrentSelectItems();
159 // 剪切当前选中的items
160 void cutCurrentSelectItems();
161 // 重剪切板粘贴
162 void pasteFromClipBoard();
163 // 删除当前的item
164 void removeCurrentSelectItems();
165 // 当前的wf执行取消动作
166 void cancelCurrent();
167 // 设置是否允许连接
168 void setEnableWorkflowLink(bool on);
169 bool isEnableWorkflowLink() const;
170Q_SIGNALS:
171
177
183
191
201
207
213
218 void selectionItemChanged(QGraphicsItem* lastSelectItem);
227 void nodeExecuteFinished(DA::DAWorkFlowEditWidget* wfw, DA::DAAbstractNode::SharedPointer n, bool state);
228
234
243 void itemsAdded(DA::DAGraphicsScene* sc, const QList< QGraphicsItem* >& its);
244
253 void itemsRemoved(DA::DAGraphicsScene* sc, const QList< QGraphicsItem* >& its);
254private Q_SLOTS:
255 // 当前tab发生了改变
256 void onTabWidgetCurrentChanged(int index);
257 // 请求关闭
258 void onTabWidgetTabCloseRequested(int index);
259 // 选中改变
260 void onSelectionChanged();
261 //
262 void onSceneItemsAdded(const QList< QGraphicsItem* >& its);
263 void onSceneItemsRemoved(const QList< QGraphicsItem* >& its);
264 //
265 void onActionGroupViewLineMarkersTriggered(QAction* act);
266
267private:
268 QList< DAGraphicsStandardTextItem* > getSelectTextItems();
269 // 初始化actions
270 void initActions();
271 //
272 void retranslateUi();
273
274private:
275 Ui::DAWorkFlowOperateWidget* ui;
276};
277} // namespace DA
278#endif // DAWORKFLOWOPERATEWIDGET_H
这是一个scene的动作,DAGraphicsScene支持持有一个动作,这个动作可以捕获scene的所有界面事件
Definition DAAbstractGraphicsSceneAction.h:22
这是节点的基类,workflow所有节点都继承此类 作为一个节点的QGraphicsItem,此item应该由DAAbstractNode创建
Definition DAAbstractNodeGraphicsItem.h:47
操作窗口的基类
Definition DAAbstractOperateWidget.h:12
这是带着undostack的GraphicsScene 此QGraphicsScene支持:
Definition DAGraphicsScene.h:30
MarkerStyle
标记样式
Definition DAGraphicsViewOverlayMouseMarker.h:25
工作流绘图窗口
Definition DAWorkFlowEditWidget.h:29
The DAWorkFlowGraphicsScene class
Definition DAWorkFlowGraphicsScene.h:18
SceneActionFlag
鼠标动作标记
Definition DAWorkFlowGraphicsScene.h:25
用于节点显示的GraphicsView
Definition DAWorkFlowGraphicsView.h:24
工作流绘图建模窗口
Definition DAWorkFlowOperateWidget.h:26
void nodeExecuteFinished(DA::DAWorkFlowEditWidget *wfw, DA::DAAbstractNode::SharedPointer n, bool state)
执行到某个节点发射的信号
std::function< bool(DAWorkFlowEditWidget *) > FpEditWidgetOpt
DAWorkFlowEditWidget操作的迭代函数指针,传入DAWorkFlowEditWidget指针,返回false代表迭代中断,返回true代表迭代继续
Definition DAWorkFlowOperateWidget.h:38
void selectNodeItemChanged(DA::DAAbstractNodeGraphicsItem *i)
选中了某个节点的设置窗口
void workflowCreated(DA::DAWorkFlowEditWidget *wfw)
有新的工作流创建
void itemsAdded(DA::DAGraphicsScene *sc, const QList< QGraphicsItem * > &its)
item添加的信号
void selectionItemChanged(QGraphicsItem *lastSelectItem)
选中的item改变发送的信号
void currentWorkFlowWidgetChanged(DA::DAWorkFlowEditWidget *w)
当前的工作流窗口发生了改变
void itemsRemoved(DA::DAGraphicsScene *sc, const QList< QGraphicsItem * > &its)
item移除的信号
void workflowClearing()
工作流在清空,不会发射workflowRemoving信号,而是发射workflowClearing信号
void sceneActionDeactived(DA::DAAbstractGraphicsSceneAction *scAction)
场景动作取消
void sceneActionActived(DA::DAAbstractGraphicsSceneAction *scAction)
场景动作激活
InnerActions
DAWorkFlowOperateWidget窗口内部的action
Definition DAWorkFlowOperateWidget.h:45
@ ActionNoneMarker
无标记线
Definition DAWorkFlowOperateWidget.h:58
@ ActionHLineMarker
水平线
Definition DAWorkFlowOperateWidget.h:56
@ ActionCrossLineMarker
十字线
Definition DAWorkFlowOperateWidget.h:55
@ ActionVLineMarker
垂直线
Definition DAWorkFlowOperateWidget.h:57
void workflowStartExecute(DA::DAWorkFlowEditWidget *wfw)
开始执行,exec函数调用后会触发此信号
void workflowFinished(DA::DAWorkFlowEditWidget *wfw, bool success)
工作流执行完毕信号
std::function< bool(DAWorkFlowGraphicsScene *) > FpScenesOpt
场景操作的迭代函数指针,传入场景指针,返回false代表迭代中断,返回true代表迭代继续
Definition DAWorkFlowOperateWidget.h:33
void workflowRemoving(DA::DAWorkFlowEditWidget *wfw)
工作流窗口正在移除,此时DA::DAWorkFlowEditWidget*指针还可正常操作
基本的工作流,这个也是总工厂,汇总了所有插件的工厂
Definition DAWorkFlow.h:21
序列化类都是带异常的,使用中需要处理异常
Definition AppMainWindow.cpp:44