| | |
| | | |
| | | 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; |
| | |
| | | } |
| | | else if (1 == code) { |
| | | if (contextType == 1) { |
| | | UpProcessJobId((SERVO::CProcessJob*)pContext); |
| | | UpProcessJobId((PJWarp*)pContext); |
| | | } |
| | | } |
| | | }; |
| | |
| | | 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); |
| | |
| | | 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 |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | |
| | | GetDlgItem(IDC_BUTTON_APPLY)->EnableWindow(FALSE); |
| | | } |
| | | |
| | | void CControlJobManagerDlg::UpProcessJobId(SERVO::CProcessJob* pJob) |
| | | void CControlJobManagerDlg::UpProcessJobId(PJWarp* pjWarp) |
| | | { |
| | | // 更新树控件 |
| | | // 遍历根节点 |
| | |
| | | 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); |