/* * @file CPaiWorkflowTemplateTree.h * @brief 工作流模板树 * @author: liujunxia * @date: 2012-12-06 */ #ifndef PAI_FRAME_WORKFLOWVIEW_PAIWORKFLOWTEMPLATETREE_H_ #define PAI_FRAME_WORKFLOWVIEW_PAIWORKFLOWTEMPLATETREE_H_ #include #include #include // #include "WorkflowPlugin.h" const QString LAST_IMPORT_TEMPLATES_PATH = "Import templates path"; const QString LAST_EXPORT_TEMPLATES_PATH = "Export templates path"; namespace pai { namespace objectmodel { class PaiObject; } /** * @class CPaiWorkflowTemplateTree * @brief 工作流模板页签 */ class CPaiWorkflowTemplateTree : public QTreeWidget { Q_OBJECT public: CPaiWorkflowTemplateTree(QUuid id,QWidget *parent = 0); virtual ~CPaiWorkflowTemplateTree(); void MonkeyClickedModule(QString CompositeModuleID); public: /** * @brief获取CPaiWorkflowTemplateTree的对象指针 */ static CPaiWorkflowTemplateTree* GetInstance(); /** * @brief drag a template to apply it to workflow. */ virtual void startDrag(Qt::DropActions /*supportedActions*/); /** * @brief鼠标双击事件 */ virtual void mouseDoubleClickEvent(QMouseEvent *event); /** * @brief Add a child object in general way. * @param pChild the child object handle */ bool AddChild(pai::objectmodel::PaiObject* pChild); /** * @brief Remove a child object in general way. * @param pChild the child object handle */ bool RemoveChild(pai::objectmodel::PaiObject* pChild); /** * @brief Get all of the children. */ QList< pai::objectmodel::PaiObject* > GetChildren(); /** * @brief Get child. * @param strChildName child name. */ pai::objectmodel::PaiObject* GetChildByName(QString strChildName); /** * @brief Get the new added child's appear rect. */ QRect GetNewAddedItemRect(); /** * @brief Get item rect. * @param strItemName item name. */ QRect GetItemRect(QString strItemName); /** *@brief 设置激活属性 *@param[in] bActive活动标志 */ void SetActive(bool bActive); /** *@brief判断是否激活状态 */ bool isActive(); /** * @brief make item selected * @param item name */ void ActiveItem(const QString name); /** * @brief get selected template objects */ QList< pai::objectmodel::PaiObject* > GetSelectedChildren(); signals: /** * @brief 双击节点时发送 */ void itemDoubleClicked(pai::objectmodel::PaiObject*); /** * @brief 点击右键菜单编辑节点事发送 */ void itemEdit(QList< pai::objectmodel::PaiObject* > ); /** * @brief 点击右键菜单删除节点事发送 */ void itemDelete(QList< pai::objectmodel::PaiObject* > ); /** * @brief 导入模板时发送的信号 */ // void importTemplates(ImportType); /** * @brief 导出模板时发送的信号 */ // void exportTemplates(ImportType); private slots: /** * @brief 右击节点时接收槽 * @param[in] point 右击的坐标 */ void RightMenuRequest(const QPoint &point); /** * @brief 删除工作流模板 */ void slotDeleteItem(); /** * @brief 编辑工作流模板 */ void slotEditItem(); /** * @brief 导出工作流模板 */ void slotExportTemplates(); /** * @brief 导入工作流模板 */ void slotImportTemplates(); /** * @brief 关闭气泡 */ void slotHideBalloon(); private: QList< pai::objectmodel::PaiObject* > m_lstChildren;//the children of the object. static CPaiWorkflowTemplateTree *instance; QTreeWidgetItem* m_pNewAddedItem; //最新添加的模板节点 QTreeWidgetItem* m_pCommonTemplateItem; //模板树根节点 bool m_bActive; //TemplateTree Widget active or not. }; } #endif /* CPAIWORKFLOWTEMPLATETREE_H_ */