|
@@ -144,6 +144,8 @@ void CTestWizardToolDlg::DoDataExchange(CDataExchange* pDX)
|
|
|
CDialog::DoDataExchange(pDX);
|
|
|
DDX_Control(pDX, COMBO_COM, m_cbCOM);
|
|
|
DDX_Control(pDX, COMBO_SINGALS, m_cbSignals);
|
|
|
+ DDX_Control(pDX, BTN_OPEN_COM, m_btnOpen);
|
|
|
+ DDX_Control(pDX, BTN_RELOAD_SIGNAL, m_btnReload);
|
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CTestWizardToolDlg, CDialog)
|
|
@@ -196,6 +198,8 @@ BOOL CTestWizardToolDlg::OnInitDialog()
|
|
|
SetIcon(m_hIcon, FALSE); // 设置小图标
|
|
|
|
|
|
// TODO: 在此添加额外的初始化代码
|
|
|
+ InitBtnStyle();
|
|
|
+
|
|
|
GetSysSerialPort(m_vtPorts);
|
|
|
InitSerialCombobox();
|
|
|
m_cbCOM.SelectString(0, Global::g_Config.twPort.c_str());
|
|
@@ -295,7 +299,7 @@ void CTestWizardToolDlg::AdjustLayout()
|
|
|
CRect rcCtrl;
|
|
|
CRect rectClient;
|
|
|
GetClientRect(rectClient);
|
|
|
- TRACE2(_T("更新后的大小:%d,%d"), rectClient.Width(), rectClient.Height());
|
|
|
+ TRACE2(_T("更新后的大小:%d,%d\n"), rectClient.Width(), rectClient.Height());
|
|
|
m_cbCOM.GetWindowRect(rcCtrl);
|
|
|
ScreenToClient(rcCtrl);
|
|
|
|
|
@@ -407,7 +411,7 @@ void CTestWizardToolDlg::LoadKeyInfo(std::vector<KeyInfo> &vtKeyInfo, std::strin
|
|
|
keyInfo.pbtnInfo = pbtnInfo;
|
|
|
}
|
|
|
SetBTNStatus(keyInfo.pbtnInfo, TRUE);
|
|
|
-
|
|
|
+
|
|
|
vtKeyInfo.push_back(keyInfo);
|
|
|
}
|
|
|
|
|
@@ -445,7 +449,7 @@ void CTestWizardToolDlg::LoadKeyInfo(std::vector<KeyInfo> &vtKeyInfo, std::strin
|
|
|
// 设置鼠标形状;
|
|
|
it->pbtnInfo->pBTN->SetMouseCursorHand();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 设置背景色;
|
|
|
it->pbtnInfo->pBTN->SetFaceColor(it->color, TRUE);
|
|
|
// 显示窗口;
|
|
@@ -469,6 +473,122 @@ void CTestWizardToolDlg::LoadKeyInfo(std::vector<KeyInfo> &vtKeyInfo, std::strin
|
|
|
AdjustLayout();
|
|
|
}
|
|
|
|
|
|
+void CTestWizardToolDlg::ConvertOldSignalsToNew(std::string strOldSignal, std::string strNewSignal)
|
|
|
+{
|
|
|
+ typedef struct
|
|
|
+ {
|
|
|
+ std::string name;
|
|
|
+ std::string protocol;
|
|
|
+ std::string key;
|
|
|
+ //std::string color;
|
|
|
+ }OldXML, *pOldXML;
|
|
|
+
|
|
|
+ std::vector<OldXML> vtOldXML;
|
|
|
+ tinyxml2::XMLDocument doc;
|
|
|
+ if (tinyxml2::XML_SUCCESS != doc.LoadFile(strOldSignal.c_str()))
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ tinyxml2::XMLElement* pXmlRoot = NULL;
|
|
|
+ if ((pXmlRoot = doc.RootElement()) != NULL)
|
|
|
+ {
|
|
|
+ if (_tcsicmp(pXmlRoot->Value(), "KeyList") == 0)
|
|
|
+ {
|
|
|
+ // 子项;
|
|
|
+ tinyxml2::XMLElement* pXmlElent = pXmlRoot->FirstChildElement();
|
|
|
+ while (pXmlElent)
|
|
|
+ {
|
|
|
+ if (_tcsicmp(pXmlElent->Value(), _T("ITEM")) == 0)
|
|
|
+ {
|
|
|
+ OldXML oldxml;
|
|
|
+ tinyxml2::XMLElement* pItem = pXmlElent->FirstChildElement();
|
|
|
+ while (pItem)
|
|
|
+ {
|
|
|
+ if (_tcsicmp(pItem->Value(), _T("KeyName")) == 0)
|
|
|
+ {
|
|
|
+ oldxml.name = pItem->GetText();
|
|
|
+ }
|
|
|
+ else if (_tcsicmp(pItem->Value(), _T("KeyType")) == 0)
|
|
|
+ {
|
|
|
+ oldxml.protocol = pItem->GetText();
|
|
|
+ }
|
|
|
+ else if (_tcsicmp(pItem->Value(), _T("KeyCode")) == 0)
|
|
|
+ {
|
|
|
+ oldxml.key = pItem->GetText();
|
|
|
+ }
|
|
|
+ else if (_tcsicmp(pItem->Value(), _T("KeyCode")) == 0)
|
|
|
+ {
|
|
|
+ oldxml.key = pItem->GetText();
|
|
|
+ }
|
|
|
+
|
|
|
+ pItem = pItem->NextSiblingElement();
|
|
|
+ }
|
|
|
+
|
|
|
+ vtOldXML.push_back(oldxml);
|
|
|
+ }
|
|
|
+
|
|
|
+ pXmlElent = pXmlElent->NextSiblingElement();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ( vtOldXML.size() == 0 )
|
|
|
+ return;
|
|
|
+
|
|
|
+ // 创建新的xml文件;
|
|
|
+ const char* declaration = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
|
|
|
+ doc.Parse(declaration); // 覆盖之前的xml;
|
|
|
+
|
|
|
+ pXmlRoot = doc.NewElement("KeyList");
|
|
|
+ if ( pXmlRoot )
|
|
|
+ {
|
|
|
+ pXmlRoot->SetAttribute(_T("cols"), _T("4"));
|
|
|
+ pXmlRoot->SetAttribute(_T("with"), _T("60"));
|
|
|
+ pXmlRoot->SetAttribute(_T("height"), _T("25"));
|
|
|
+ pXmlRoot->SetAttribute(_T("rowSpacing"), _T("5"));
|
|
|
+ pXmlRoot->SetAttribute(_T("colSpacing"), _T("3"));
|
|
|
+ pXmlRoot->SetAttribute(_T("leftMargin"), _T("8"));
|
|
|
+ pXmlRoot->SetAttribute(_T("topMargin"), _T("8"));
|
|
|
+ pXmlRoot->SetAttribute(_T("ver"), _T("1.0.0.1"));
|
|
|
+ pXmlRoot->SetAttribute(_T("desc"), _T("key info"));
|
|
|
+ doc.InsertEndChild(pXmlRoot);
|
|
|
+
|
|
|
+ for (std::vector<OldXML>::iterator it = vtOldXML.begin(); it != vtOldXML.end(); it++ )
|
|
|
+ {
|
|
|
+ tinyxml2::XMLElement* pXmlElent = doc.NewElement("ITEM");
|
|
|
+ if ( pXmlElent )
|
|
|
+ {
|
|
|
+ pXmlElent->SetAttribute(_T("color"), _T("87CEFA"));
|
|
|
+ // 赋值各元素节点;
|
|
|
+ tinyxml2::XMLElement *pUse = doc.NewElement("USE");
|
|
|
+ pUse->SetText(1);
|
|
|
+ pXmlElent->InsertEndChild(pUse);
|
|
|
+
|
|
|
+ tinyxml2::XMLElement *pName = doc.NewElement("NAME");
|
|
|
+ pName->SetText(it->name.c_str());
|
|
|
+ pXmlElent->InsertEndChild(pName);
|
|
|
+
|
|
|
+ tinyxml2::XMLElement *pDesc = doc.NewElement("DESC");
|
|
|
+ pDesc->SetText(_T(""));
|
|
|
+ pXmlElent->InsertEndChild(pDesc);
|
|
|
+
|
|
|
+ tinyxml2::XMLElement *pType = doc.NewElement("TYPE");
|
|
|
+ pType->SetText(it->protocol.c_str());
|
|
|
+ pXmlElent->InsertEndChild(pType);
|
|
|
+
|
|
|
+ tinyxml2::XMLElement *pValue = doc.NewElement("VALUE");
|
|
|
+ pValue->SetText(it->key.c_str());
|
|
|
+ pXmlElent->InsertEndChild(pValue);
|
|
|
+
|
|
|
+ pXmlRoot->InsertEndChild(pXmlElent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ doc.SaveFile(strNewSignal.c_str());
|
|
|
+}
|
|
|
+
|
|
|
BTNInfo *CTestWizardToolDlg::GetUnUseBTN()
|
|
|
{
|
|
|
for (std::vector<BTNInfo*>::iterator it = m_vtBTNInfo.begin(); it != m_vtBTNInfo.end(); it++ )
|
|
@@ -675,7 +795,7 @@ void CTestWizardToolDlg::OnBnClickedReloadSignal() //
|
|
|
void CTestWizardToolDlg::OnDestroy()
|
|
|
{
|
|
|
CDialog::OnDestroy();
|
|
|
-
|
|
|
+
|
|
|
// TODO: 在此处添加消息处理程序代码
|
|
|
ClearAllBTNInfo();
|
|
|
}
|
|
@@ -686,3 +806,63 @@ void CTestWizardToolDlg::OnOK()
|
|
|
|
|
|
//CDialog::OnOK();
|
|
|
}
|
|
|
+
|
|
|
+void CTestWizardToolDlg::InitBtnStyle()
|
|
|
+{
|
|
|
+ // 设置透明false以显示背景色
|
|
|
+ m_btnOpen.m_bTransparent = FALSE;
|
|
|
+ //m_btnOpen.m_bDontUseWinXPTheme = TRUE;
|
|
|
+ // 消除单击时黑色内圈;
|
|
|
+ m_btnOpen.m_bDrawFocus = FALSE;
|
|
|
+ // 设置按钮扁平样式;
|
|
|
+ //m_btnOpen.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
|
|
|
+ // 设置鼠标形状;
|
|
|
+ m_btnOpen.SetMouseCursorHand();
|
|
|
+ // 设置背景色;
|
|
|
+ m_btnOpen.SetFaceColor(RGB(250,80,80), TRUE);
|
|
|
+ // 显示窗口;
|
|
|
+ m_btnOpen.ShowWindow(SW_SHOW);
|
|
|
+ m_btnOpen.SetTooltip(_T("Open the serial port"));
|
|
|
+
|
|
|
+ // 设置透明false以显示背景色
|
|
|
+ m_btnReload.m_bTransparent = FALSE;
|
|
|
+ //m_btnReload.m_bDontUseWinXPTheme = TRUE;
|
|
|
+ // 消除单击时黑色内圈;
|
|
|
+ m_btnReload.m_bDrawFocus = FALSE;
|
|
|
+ // 设置按钮扁平样式;
|
|
|
+ //m_btnReload.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
|
|
|
+ // 设置鼠标形状;
|
|
|
+ m_btnReload.SetMouseCursorHand();
|
|
|
+ // 设置背景色;
|
|
|
+ m_btnReload.SetFaceColor(RGB(135,220,238), TRUE);
|
|
|
+ // 显示窗口;
|
|
|
+ m_btnReload.ShowWindow(SW_SHOW);
|
|
|
+ m_btnReload.SetTooltip(_T("Reload the signal file"));
|
|
|
+}
|
|
|
+
|
|
|
+BOOL CTestWizardToolDlg::PreTranslateMessage(MSG* pMsg)
|
|
|
+{
|
|
|
+ // TODO: 在此添加专用代码和/或调用基类
|
|
|
+ if (pMsg->message == WM_KEYDOWN)
|
|
|
+ {
|
|
|
+ if (pMsg->wParam == VK_F3)
|
|
|
+ {
|
|
|
+ // 查找目录文件;
|
|
|
+ filehelper fh;
|
|
|
+ std::vector<std::string> vtSignals;
|
|
|
+ fh.getfiles_findout_subfolder(Global::g_Config.twOldSignaldir.c_str(), _T("*.xml"), &vtSignals);
|
|
|
+ // 逐个文件转换;
|
|
|
+ for ( std::vector<std::string>::iterator it = vtSignals.begin(); it != vtSignals.end(); it++ )
|
|
|
+ {
|
|
|
+ std::string newfile = Global::g_Config.twSignaldir + _T("\\") + filehelper::getfilename(it->c_str()) + _T(".xml");
|
|
|
+ ConvertOldSignalsToNew(*it, newfile);
|
|
|
+ }
|
|
|
+
|
|
|
+ MessageBox(_T("Convert old signals ok!"), _T("Convert"), MB_OK);
|
|
|
+ OnBnClickedReloadSignal();
|
|
|
+
|
|
|
+ return TRUE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return CDialog::PreTranslateMessage(pMsg);
|
|
|
+}
|