#pragma once
#include "Common.h"
#include "ui_DialogPortValue.h"
///
/// 双击Port功能块显示的界面,用于绑定接口变量
///
class POU;
class DialogPortValue : public QDialog
{
Q_OBJECT
public:
DialogPortValue(const TOOL* port, POU* localPou, QWidget *parent = nullptr);
~DialogPortValue();
// 获取用户选择的工具信息
const _INTERFACE* GetSelectedInf()
{
return selInf;
};
private:
Ui::DialogPortValue ui;
private:
// 当前选定的分组
typedef enum class _tagComboSelGroup
{
SEL_GROUP_GVL, // 选择的是全局变量页面
SEL_GROUP_POU, // 选择的是POU页面
SEL_GROUP_HDW, // 选择的是硬件组态页面
SEL_GROUP_COUNT
} SEL_GROUP;
Q_ENUM(SEL_GROUP);
// 对话框初始化
void initUI();
// 添加兼容的Pou工具到树形结构中
void AddPouToolsToTree(const POU* pPou);
// 添加兼容的Pou变量到树形结构中
bool AddPouVariablesToTree(const QString& strGroup);
// 添加兼容的硬件工具
void AddHdwToolsToTree();
// 添加兼容的硬件局部变量
void AddHdwVariablesToTree();
// 添加Tool子节点
QTreeWidgetItem* AddToolTreeItem(const QString& toolName);
// 添加接口子节点
void AddInterfaceTreeItem(QTreeWidgetItem* pToolItem, const _INTERFACE* pInf);
// 添加变量分组子节点
QTreeWidgetItem* AddVariableGroupTreeItem(TOOL_TYPE varType);
// 添加变量子节点
void AddVariableTreeItem(QTreeWidgetItem* pToolItem, const VARIABLE* var);
private slots:
// select按钮
void onButtonSelectClicked();
// Combo框选择变更时,需要切换对应的变量列表
void onComboGroupChanged(int nIndex);
// 鼠标双击,直接选定接口
// void mouseDoubleClickEvent(QMouseEvent* event) override;
//// 事件过滤器,拦截发往treeTool的双击事件
//bool eventFilter(QObject* target, QEvent* event);
private:
const TOOL* portInfo; // 本对话框绑定的port工具信息
const _INTERFACE* selInf; // 用户最终选择的接口信息
const GVLS* m_pAllVariables; // 获取全部变量信息
const POU* m_pLocalPou; // 本Port窗口对应的Pou数据
QHash m_ItemInfs; // 每个树节点携带的接口信息
};