From 43c7dc211f10851480352b12bd01f3443079bb01 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期二, 26 八月 2025 09:09:21 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang
---
SourceCode/Bond/Servo/CControlJobDlg.cpp | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 169 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/CControlJobDlg.cpp b/SourceCode/Bond/Servo/CControlJobDlg.cpp
new file mode 100644
index 0000000..7365c3d
--- /dev/null
+++ b/SourceCode/Bond/Servo/CControlJobDlg.cpp
@@ -0,0 +1,169 @@
+锘�// CControlJobDlg.cpp: 瀹炵幇鏂囦欢
+//
+
+#include "stdafx.h"
+#include "Servo.h"
+#include "CControlJobDlg.h"
+#include "afxdialogex.h"
+
+
+// CControlJobDlg 瀵硅瘽妗�
+
+IMPLEMENT_DYNAMIC(CControlJobDlg, CDialogEx)
+
+CControlJobDlg::CControlJobDlg(CWnd* pParent /*=nullptr*/)
+ : CDialogEx(IDD_DIALOG_CONTROL_JOB, pParent)
+{
+ m_pControlJob = nullptr;
+}
+
+CControlJobDlg::~CControlJobDlg()
+{
+}
+
+void CControlJobDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialogEx::DoDataExchange(pDX);
+ DDX_Control(pDX, IDC_LIST1, m_listCtrl);
+}
+
+
+BEGIN_MESSAGE_MAP(CControlJobDlg, CDialogEx)
+ ON_WM_SIZE()
+END_MESSAGE_MAP()
+
+
+void CControlJobDlg::SetControlJob(SERVO::CControlJob* pControlJob)
+{
+ m_pControlJob = pControlJob;
+}
+
+// CControlJobDlg 娑堟伅澶勭悊绋嬪簭
+BOOL CControlJobDlg::OnInitDialog()
+{
+ CDialogEx::OnInitDialog();
+
+
+ // label瀛椾綋
+ LOGFONT lf{};
+ GetFont()->GetLogFont(&lf);
+ lf.lfHeight = -20;
+ lf.lfWeight = FW_BOLD;
+ _tcscpy_s(lf.lfFaceName, _T("Arial"));
+ m_fontNoJob.CreateFontIndirect(&lf);
+ GetDlgItem(IDC_LABEL_NO_JOB)->SetFont(&m_fontNoJob);
+
+
+ // 鍒楄〃鎺т欢
+ HIMAGELIST imageList = ImageList_Create(24, 24, ILC_COLOR24, 1, 1);
+ ListView_SetImageList(m_listCtrl.GetSafeHwnd(), imageList, LVSIL_SMALL);
+ m_listCtrl.ModifyStyle(0, LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS);
+ m_listCtrl.InsertColumn(0, _T("ID"), LVCFMT_LEFT, 180);
+ m_listCtrl.InsertColumn(1, _T("绫诲瀷"), LVCFMT_LEFT, 120);
+ m_listCtrl.InsertColumn(2, _T("鐘舵��"), LVCFMT_LEFT, 120);
+ m_listCtrl.InsertColumn(3, _T("閰嶆柟"), LVCFMT_LEFT, 120);
+ m_listCtrl.InsertColumn(4, _T("Port / Carrier / Slot"), LVCFMT_LEFT, 180);
+ m_listCtrl.InsertColumn(5, _T("鎻忚堪"), LVCFMT_LEFT, 220);
+
+
+ // 鎺т欢鐘舵��
+ Resize();
+ ShowGroup1(m_pControlJob == nullptr);
+ ShowGroup2(m_pControlJob != nullptr);
+ LoadData();
+
+ return TRUE; // return TRUE unless you set the focus to a control
+ // 寮傚父: OCX 灞炴�ч〉搴旇繑鍥� FALSE
+}
+
+void CControlJobDlg::OnSize(UINT nType, int cx, int cy)
+{
+ CDialogEx::OnSize(nType, cx, cy);
+ if (GetDlgItem(IDC_LIST1) == nullptr) return;
+ Resize();
+}
+
+void CControlJobDlg::Resize()
+{
+ CRect rcClient, rcItem;
+ CWnd* pItem;
+
+ GetClientRect(rcClient);
+
+
+ // 鍏抽棴鎸夐挳
+ int y = rcClient.bottom - 12;
+ pItem = GetDlgItem(IDCANCEL);
+ pItem->GetClientRect(&rcItem);
+ pItem->MoveWindow(rcClient.right - 12 - rcItem.Width(),
+ y - rcItem.Height(),
+ rcItem.Width(), rcItem.Height());
+ y -= rcItem.Height();
+ y -= 12;
+
+
+ // 绾�
+ pItem = GetDlgItem(IDC_LINE1);
+ pItem->MoveWindow(12, y, rcClient.Width() - 24, 2);
+ y -= 2;
+
+
+ // Label
+ pItem = GetDlgItem(IDC_LABEL_NO_JOB);
+ pItem->GetClientRect(&rcItem);
+ pItem->MoveWindow((rcClient.Width() - rcItem.Width()) / 2,
+ (y - rcItem.Height()) / 2,
+ rcItem.Width(), rcItem.Height());
+
+
+ // ListCtrl
+ pItem = GetDlgItem(IDC_LIST1);
+ pItem->MoveWindow(12, 12, rcClient.Width() - 24, y - 12);
+}
+
+void CControlJobDlg::ShowGroup1(BOOL bShow)
+{
+ GetDlgItem(IDC_LABEL_NO_JOB)->ShowWindow(bShow ? SW_SHOW : SW_HIDE);
+ GetDlgItem(IDC_LINE1)->ShowWindow(bShow ? SW_SHOW : SW_HIDE);
+}
+
+void CControlJobDlg::ShowGroup2(BOOL bShow)
+{
+ GetDlgItem(IDC_LIST1)->ShowWindow(bShow ? SW_SHOW : SW_HIDE);
+}
+
+void CControlJobDlg::LoadData()
+{
+ m_listCtrl.DeleteAllItems();
+
+ if (m_pControlJob != nullptr) {
+ auto* root1 = m_listCtrl.InsertRoot({ m_pControlJob->id().c_str(), _T("ControlJob"),
+ m_pControlJob->getStateText().c_str(), _T("") });
+ auto pjs = m_pControlJob->getPjs();
+ for (auto pj : pjs) {
+ auto* root2 = m_listCtrl.InsertChild(root1, {pj->id().c_str(), _T("ProcessJob"),
+ pj->getStateText().c_str(), pj->recipeSpec().c_str(), _T(""), _T(""), _T("") });
+ auto cs = pj->carriers();
+ for (auto c : cs) {
+ for (auto g : c.contexts) {
+ SERVO::CGlass* pGlass = (SERVO::CGlass*)g;
+ if (pGlass != nullptr) {
+ int port, slot;
+ pGlass->getOrginPort(port, slot);
+ std::string carrier = c.carrierId + " / Port" + std::to_string(port + 1) + " / Slot" + std::to_string(slot + 1);
+ m_listCtrl.InsertChild(root2, { pGlass->getID().c_str(), _T("Glass"),
+ pGlass->getStateText().c_str(), _T(""), carrier.c_str(), _T("") });
+ }
+ else {
+ m_listCtrl.InsertChild(root2, { "Null", _T("Glass"), _T(""), _T(""), c.carrierId.c_str(), _T("") });
+ }
+ }
+ }
+ root2->expanded = true;
+ }
+ root1->expanded = true;
+
+
+ m_listCtrl.RebuildVisible();
+ }
+}
--
Gitblit v1.9.3