| SourceCode/Bond/Servo/CCjPage2.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/CCjPage2.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/CControlJobManagerDlg.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/CControlJobManagerDlg.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
SourceCode/Bond/Servo/CCjPage2.cpp
@@ -47,9 +47,9 @@ UpdatePjData(); } void CCjPage2::SetExclusionNames(std::vector<std::string>& names) void CCjPage2::SetPjWarps(std::vector<PJWarp>& pjs) { m_exclusionNames = names; m_pjWarps = pjs; } BOOL CCjPage2::OnInitDialog() @@ -108,16 +108,20 @@ { //SERVO::CProcessJob* if (m_pContext == nullptr) return; SERVO::CProcessJob* pProcessJob = (SERVO::CProcessJob*)m_pContext; PJWarp* pPjWarp = (PJWarp*)m_pContext; SERVO::CProcessJob* pProcessJob = (SERVO::CProcessJob*)pPjWarp->pj; // 更新名称 BOOL bOkName = TRUE; char szBuffer[256]; GetDlgItemText(IDC_EDIT_PJ_ID, szBuffer, 256); for (auto item : m_exclusionNames) { if (item.compare(std::string(szBuffer)) == 0) { bOkName = FALSE; break; for (auto item : m_pjWarps) { if (item.pj != m_pContext) { SERVO::CProcessJob* temp = (SERVO::CProcessJob*)item.pj; if (temp->id().compare(std::string(szBuffer)) == 0) { bOkName = FALSE; break; } } } if (!bOkName) { @@ -160,7 +164,8 @@ } if (m_pContext) { SERVO::CProcessJob* pProcessJob = (SERVO::CProcessJob*)m_pContext; PJWarp* pPjWarp = (PJWarp*)m_pContext; SERVO::CProcessJob* pProcessJob = (SERVO::CProcessJob*)pPjWarp->pj; SetDlgItemText(IDC_EDIT_PJ_ID, pProcessJob->id().c_str()); int idx = pComboBox->FindStringExact(-1, pProcessJob->recipeSpec().c_str()); if (idx != CB_ERR) pComboBox->SetCurSel(idx); SourceCode/Bond/Servo/CCjPage2.h
@@ -4,6 +4,13 @@ #include "CCarrierSlotGrid.h" struct PJWarp { void* pj; int port; bool checkSlot[8]; }; // CPjPage1 对话框 class CCjPage2 : public CCjPageBase @@ -15,7 +22,7 @@ virtual ~CCjPage2(); public: void SetExclusionNames(std::vector<std::string>& names); void SetPjWarps(std::vector<PJWarp>& pjs); protected: void Resize(); @@ -27,7 +34,7 @@ private: CCarrierSlotGrid m_grid; std::vector<std::string> m_exclusionNames; std::vector<PJWarp> m_pjWarps; // 对话框数据 #ifdef AFX_DESIGN_TIME SourceCode/Bond/Servo/CControlJobManagerDlg.cpp
@@ -20,10 +20,10 @@ CControlJobManagerDlg::~CControlJobManagerDlg() { for (auto pj : m_processJobs) { delete pj; for (auto item : m_pjWarps) { delete (SERVO::CProcessJob*)item.pj; } m_processJobs.clear(); m_pjWarps.clear(); if (m_pControlJob != nullptr) { delete m_pControlJob; @@ -60,7 +60,7 @@ } else if (1 == code) { if (contextType == 1) { UpProcessJobId((SERVO::CProcessJob*)pContext); UpProcessJobId((PJWarp*)pContext); } } }; @@ -186,9 +186,9 @@ HTREEITEM hRoot = m_tree.InsertItem(m_pControlJob->id().c_str(), 0, 0); m_tree.SetItemData(hRoot, (DWORD_PTR)m_pControlJob); m_tree.SetItemState(hRoot, 0, TVIS_STATEIMAGEMASK); for (auto pj : m_processJobs) { HTREEITEM hItem = m_tree.InsertItem(pj->id().c_str(), 0, 0, hRoot); m_tree.SetItemData(hItem, (DWORD_PTR)pj); for (auto& item : m_pjWarps) { HTREEITEM hItem = m_tree.InsertItem(((SERVO::CProcessJob*)item.pj)->id().c_str(), 0, 0, hRoot); m_tree.SetItemData(hItem, (DWORD_PTR)&item); m_tree.SetItemState(hItem, INDEXTOSTATEIMAGEMASK(false ? 2 : 1), TVIS_STATEIMAGEMASK); } m_tree.Expand(hRoot, TVE_EXPAND); @@ -221,19 +221,13 @@ m_pages[2]->ShowWindow(SW_SHOW); } else if (m_tree.GetParentItem(hParent) == nullptr) { SERVO::CProcessJob* pj = (SERVO::CProcessJob*)m_tree.GetItemData(hSel); PJWarp* pjWarp = (PJWarp*)m_tree.GetItemData(hSel); m_pages[0]->ShowWindow(SW_HIDE); m_pages[1]->ShowWindow(SW_SHOW); m_pages[2]->ShowWindow(SW_HIDE); m_pages[1]->SetContext(pj, 1); m_pages[1]->SetContext(pjWarp, 1); std::vector<std::string> names; for (auto item : m_processJobs) { if (item != pj) { names.push_back(item->id()); } } ((CCjPage2*)m_pages[1])->SetExclusionNames(names); ((CCjPage2*)m_pages[1])->SetPjWarps(m_pjWarps); } else { // 有祖先 → 第三层及以下 → Glass @@ -262,7 +256,10 @@ for (int i = 0; i < 4; i++) { sprintf_s(szBuffer, 256, "PJ%03d", i + 1); SERVO::CProcessJob* pj = new SERVO::CProcessJob(std::string(szBuffer)); m_processJobs.push_back(pj); PJWarp pjWarp; pjWarp.pj = pj; pjWarp.port = -1; m_pjWarps.push_back(pjWarp); } } @@ -274,7 +271,7 @@ GetDlgItem(IDC_BUTTON_APPLY)->EnableWindow(FALSE); } void CControlJobManagerDlg::UpProcessJobId(SERVO::CProcessJob* pJob) void CControlJobManagerDlg::UpProcessJobId(PJWarp* pjWarp) { // 更新树控件 // 遍历根节点 @@ -284,8 +281,9 @@ HTREEITEM hChild = m_tree.GetChildItem(hRoot); while (hChild) { DWORD_PTR data = m_tree.GetItemData(hChild); if ((void*)data == pJob) { m_tree.SetItemText(hChild, pJob->id().c_str()); if ((void*)data == pjWarp) { SERVO::CProcessJob* pj = (SERVO::CProcessJob*)pjWarp->pj; m_tree.SetItemText(hChild, pj->id().c_str()); return; // 找到就返回 } hChild = m_tree.GetNextSiblingItem(hChild); SourceCode/Bond/Servo/CControlJobManagerDlg.h
@@ -21,13 +21,13 @@ void UpdateControlJob(); bool AddPorcessJob(SERVO::CProcessJob* pj); bool RemovePorcessJob(SERVO::CProcessJob* pj); void UpProcessJobId(SERVO::CProcessJob* pJob); void UpProcessJobId(PJWarp* pjWarp); void InitData(); private: std::vector<CCjPageBase*> m_pages; SERVO::CControlJob* m_pControlJob; std::vector<SERVO::CProcessJob*> m_processJobs; std::vector<PJWarp> m_pjWarps; CApredTreeCtrl2 m_tree;