#include "Tool.h"
ToolImpl* m_pDllTool = nullptr;
///////////////////////////////////////////////////////////////////
// 返回工具新实例的指针
extern "C" CST_VISIONPLUS_TOOL_EXPORT DllTool * GetTool()
{
m_pDllTool = new ToolImpl();
return m_pDllTool;
}
///////////////////////////////////////////////////////////////////
// 释放工具实例的指针
extern "C" CST_VISIONPLUS_TOOL_EXPORT void ReleaseTool()
{
if (m_pDllTool != nullptr)
{
delete m_pDllTool;
m_pDllTool = nullptr;
}
}
ToolImpl::ToolImpl()
{
m_pDlgTool = nullptr;
}
////////////////////////////////////////////////////////////////////
// 不带参数初始化
int ToolImpl::InitTool()
{
// 生成工具描述
Description();
// 生成接口默认描述
InitDefaultInterfaces(false);
return 0;
}
////////////////////////////////////////////////////////////////////
// 初始化
int ToolImpl::InitTool(QWidget* pParent, QString strPouName, QString strInstanceName, QObject* pEventTarget)
{
m_pDlgTool = new ToolDialogImpl(pParent, this);
m_pDlgTool->setParent(pParent);
m_pDlgTool->hide();
this->m_strInstanceName = strInstanceName;
this->m_strPouName = strPouName;
Q_ASSERT(pEventTarget != nullptr);
m_pDlgTool->setEventTarget(pEventTarget);
// 将pou名字和实例名字传入工具
m_pDlgTool->SetToolInfo(strPouName, strInstanceName);
// 生成工具描述
Description();
// 生成接口默认描述,并且给参数赋值
InitDefaultInterfaces(true);
return 0;
}
ToolImpl::~ToolImpl()
{
if (m_pDlgTool != nullptr)
{
delete m_pDlgTool;
m_pDlgTool = nullptr;
}
//if (m_Even.hEvenHandle != NULL)
//{
// CloseHandle(m_Even.hEvenHandle);
// m_Even.hEvenHandle = NULL;
//}
}
///
/// 序列化至文件
///
///
///
bool ToolImpl::SerializedToDoc(QDataStream& out)
{
ToolDialogImpl* pDlg = (ToolDialogImpl*)m_pDlgTool;
return pDlg->Serialized(out, true);
}
///
/// 从文件反序列化
///
///
///
bool ToolImpl::SerializedFromDoc(QDataStream& in)
{
ToolDialogImpl* pDlg = (ToolDialogImpl*)m_pDlgTool;
return pDlg->Serialized(in, false);
}
///
/// 动态添加端口的变量绑定
///
///
///
bool ToolImpl::bindValuePtrByName(const QString strName, const int nIndex)
{
ToolDialogImpl* pDlg = (ToolDialogImpl*)m_pDlgTool;
if (pDlg)
{
return pDlg->bindValuePtrByName(strName, nIndex);
}
return false;
}