logplus/ModuleConsole/command/include/PasteModuleCmd.h

132 lines
3.6 KiB
C
Raw Normal View History

2026-01-16 17:18:41 +08:00
/*
*@file PasteModuleCmd.h
*@brief
*@date: 2012-10-11
*@author: liujunxia
*/
#ifndef PAI_FRAME_WORKFLOWVIEW_PASTEMODULECMD_H_
#define PAI_FRAME_WORKFLOWVIEW_PASTEMODULECMD_H_
#include <QGraphicsItem>
#include <QUndoCommand>
#include "ModuleInformation.h"
#include "ModuleConnection.h"
namespace pai
{
class CModuleInfoAndStyle;
class BreakLineCmd;
namespace objectmodel
{
class PaiWorkflowDataModel;
}
namespace graphics2d
{
class WorkflowSceneManager;
class CModuleInfoAndStyle;
/**
* @class PasteModuleCmd
* @brief
*/
class PasteModuleCmd :public QUndoCommand
{
public:
/**
* @brief
* @param[in] pSceneManager
* @param[in] pWorkflow
* @param[in] list
* @param[in] point
* @param[in] boundingRect
* @param[in] pParent
*/
PasteModuleCmd(pai::graphics2d::WorkflowSceneManager *pSceneManager, pai::objectmodel::PaiWorkflowDataModel *pWorkflow,
QList<QGraphicsItem*> list, QPointF point, QRectF boundingRect, QUndoCommand *pParent = 0);
/**
* @brief
* @param[in] pSceneManager
* @param[in] pWorkflow
* @param[in] pWorkflowSrc
* @param[in] point
* @param[in] boundingRect
* @param[in] pParent
*/
PasteModuleCmd(pai::graphics2d::WorkflowSceneManager *pSceneManager, pai::objectmodel::PaiWorkflowDataModel *pWorkflowDest,
pai::objectmodel::PaiWorkflowDataModel *pWorkflowSrc, QPointF point, QRectF boundingRect, QUndoCommand *pParent = 0);
/**
* @brief
*/
virtual ~PasteModuleCmd();
/**
* @brief undo撤销粘贴
*/
void undo();
/**
* @brief redo粘贴
*/
void redo();
private:
/**
* @brief
*/
void pasteGraphicItems();
/**
* @brief 线
* @param point
*/
void PasteModuleAndUpdateConnectLineModule(QPointF point);
/**
* @brief
* @param[in] pInf
*/
bool ChangeModuleInformationIfNeeded(pai::workflow::CModuleInformation* pInf);
/**
* @brief
* @param[in] point
*/
void PasteModuleFromModuelInformation(QPointF point);
/**
* @brief 线
* @param[in] pWorkflowSrc
* @retun pWorkflowSrc中包含的连线信息
*/
QList<pai::workflow::CModuleConnection *> GetConnectLineList(pai::objectmodel::PaiWorkflowDataModel *pWorkflowSrc);
/**
*@brief Module Style
*@param[in] pWorkflowSrc
*@return pWorkflowSrc中的模块信息和模块style信息
*/
QList<pai::graphics2d::CModuleInfoAndStyle *> GetModuleInfoAndStyleList(pai::objectmodel::PaiWorkflowDataModel *pWorkflowSrc);
private:
QPointF m_point;
QRectF m_boundingRect;
QList<int> m_pastedStepIdList;
QList<workflow::CModuleConnection*> m_connectionList;
QList<pai::graphics2d::CModuleInfoAndStyle*> m_moduleInfoStyleList;
pai::objectmodel::PaiWorkflowDataModel* m_pWorkflow;
pai::graphics2d::WorkflowSceneManager *m_pSceneManager;
QList<workflow::CModuleConnection*> m_pasteLines;
bool m_bPasteFromWorkflow;
pai::BreakLineCmd *m_breakLine;//断开连线命令
};
}
}
#endif /* PASTEMODULECMD_H_ */