DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DAAbstractNodeFactory.h
1#ifndef DAABSTRACTNODEFACTORY_H
2#define DAABSTRACTNODEFACTORY_H
3#include "DAWorkFlowAPI.h"
4#include <QtCore/qglobal.h>
5#include <QObject>
6#include "DAAbstractNode.h"
7class QDomDocument;
8class QDomElement;
9
10namespace DA
11{
12
13class DAWorkFlow;
14class DANodeGraphicsScene;
22class DAWORKFLOW_API DAAbstractNodeFactory : public QObject, public std::enable_shared_from_this< DAAbstractNodeFactory >
23{
24 Q_OBJECT
25 DA_DECLARE_PRIVATE(DAAbstractNodeFactory)
26public:
27 using SharedPointer = std::shared_ptr< DAAbstractNodeFactory >;
28 using WeakPointer = std::weak_ptr< DAAbstractNodeFactory >;
29
30public:
32 virtual ~DAAbstractNodeFactory();
33
38 virtual void registWorkflow(DAWorkFlow* wf);
39
44 DAWorkFlow* getWorkFlow() const;
45
50 SharedPointer pointer();
57 virtual QString factoryPrototypes() const = 0;
63 virtual QString factoryName() const = 0;
64
70 virtual QString factoryDescribe() const = 0;
71
79 virtual DAAbstractNode::SharedPointer create(const DANodeMetaData& meta) = 0;
80
102 virtual void initializNode(const DAAbstractNode::SharedPointer& node);
107 virtual QStringList getPrototypes() const = 0;
108
113 virtual QList< DANodeMetaData > getNodesMetaData() const = 0;
114
119 virtual void nodeAddedToWorkflow(DAAbstractNode::SharedPointer node);
120
126 virtual void nodeStartRemove(DAAbstractNode::SharedPointer node);
127
135 virtual void nodeLinkDetached(DAAbstractNode::SharedPointer outNode,
136 const QString& outKey,
137 DAAbstractNode::SharedPointer inNode,
138 const QString& inkey);
152 virtual void saveExternInfoToXml(QDomDocument* doc, QDomElement* factoryExternElement) const;
165 virtual void loadExternInfoFromXml(const QDomElement* factoryExternElement);
171 virtual void uiInitialization(DANodeGraphicsScene* scene);
176 virtual void workflowReady();
177};
178
179} // end DA
180
181#endif // DAABSTRACTNODEFACTORY_H
FCAbstractNode的工厂基类,所有自定义的node集合最后都需要提供一个工厂
Definition DAAbstractNodeFactory.h:23
virtual QString factoryDescribe() const =0
工厂具体描述
virtual QStringList getPrototypes() const =0
获取所有注册的Prototypes
virtual QString factoryName() const =0
工厂名称
virtual QString factoryPrototypes() const =0
工厂的唯一标识
virtual QList< DANodeMetaData > getNodesMetaData() const =0
获取所有类型的元数据
virtual DAAbstractNode::SharedPointer create(const DANodeMetaData &meta)=0
工厂函数,创建一个DAAbstractNode,工厂不持有FCAbstractNode的管理权
DAAbstractNodeGraphicsItem对应的QGraphicsScene,通过此scene,管理DAWorkFlow内容
Definition DANodeGraphicsScene.h:25
保存节点元数据 节点元数据由工厂进行管理
Definition DANodeMetaData.h:16
基本的工作流,这个也是总工厂,汇总了所有插件的工厂
Definition DAWorkFlow.h:21
序列化类都是带异常的,使用中需要处理异常
Definition AppMainWindow.cpp:44