logplus/ModuleConsole/include/PaiModuleTree.h
2026-01-16 17:18:41 +08:00

107 lines
2.9 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file PaiModuleTree.h
* @brief 模块树
* @author: shiyuerong
* @date: 2011-8-17
*/
#ifndef PAI_FRAME_WORKFLOWVIEW_PAIMODULETREE_H
#define PAI_FRAME_WORKFLOWVIEW_PAIMODULETREE_H
#include <QWidget>
#include "PaiTreeWidget.h"
#include "ControlExtension.h"
#include "ModuleInformation.h"
namespace pai
{
/**
* 模块树的逻辑,封装了初始化模块节点和拖动树上节点等逻辑
*/
class PAI_WORKFLOWVIEW_EXPORT CPaiModuleTreeControl:public QObject,public ControlExtension
{
public:
/**
* @brief 构造函数
* @param bUnitTest 是否处于单元测试的场景
* @param pParent 父对象句柄
*/
CPaiModuleTreeControl(QObject* pParent=NULL);
/**
* @brief 从全局模块管理器初始化模块树的所有节点,并返回第一级节点的列表
* @param[out] toplevelTreeItems 返回的第一级节点的列表
*/
void BuildTreeItemsFromModuleManager(QList<QTreeWidgetItem*>& toplevelTreeItems);
/**
* @brief 拖动树上节点的逻辑产生一个QDrag对象
* @param pCurrentItem 当前拖拽的树节点
*/
void DragItem(QTreeWidgetItem* pCurrentItem);
private:
/**
* 基类IExtension的接口必须实现
*/
virtual std::string GetStringID() const;
};
/**
* 工作流编辑所用的模块树
*/
class CPaiModuleTree : public pai::gui::PaiTreeWidget
{
Q_OBJECT
public:
CPaiModuleTree(QWidget*);
virtual ~CPaiModuleTree();
/**
* @brief 在场景中选中module右边相应的节点会高亮
* @param strModuleName 选中module的名字
*/
void selectModules(const QString& strModuleName);
void MonkeyClickedModule(const QString& strModuleName);
protected:
/**
* @brief 重写该虚函数来支持从模块树拖拽一个模块
*/
virtual void startDrag(Qt::DropActions /*supportedActions*/);
virtual void mouseDoubleClickEvent(QMouseEvent *event);
signals:
/**
* @brief 将模块提交到工作流区域
*/
void DeliverModule(const QString&);
void menuClicked(const QString&,const QString&); // 第一个变量为菜单名,第二个变量是模块名
public slots:
void moduleSelectedSlot(bool); // slot for setting scenes module selected flag
/**
* @brief 请求将当前选中模块提交到工作流区域
*/
void RequireDeliverSelectedModules();
/**
*@brief 选中场景中的模块时关联选中模块树上的模块
*/
void slotSelectModule(pai::workflow::CModuleInformation* pModule);
private slots:
void changeFolderToOpen(QTreeWidgetItem*);
void changeFolderToClose(QTreeWidgetItem*);
void menuSelectedSlot();
/**
* @brief 右击节点时接收槽
* @param[in] point 右击的坐标
*/
void RightMenuRequest(const QPoint &point);
private:
CPaiModuleTreeControl m_control;
bool scenseModuleSelected; // scense module selected flag
};
}
#endif