From 6fc65c5cf54432d1044fbe9799aca76f7273798c Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 23 五月 2025 18:02:27 +0800
Subject: [PATCH] Merge branch 'clh'

---
 SourceCode/Bond/Servo/CPagePortStatus.cpp |  148 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 148 insertions(+), 0 deletions(-)

diff --git a/SourceCode/Bond/Servo/CPagePortStatus.cpp b/SourceCode/Bond/Servo/CPagePortStatus.cpp
new file mode 100644
index 0000000..ff38c73
--- /dev/null
+++ b/SourceCode/Bond/Servo/CPagePortStatus.cpp
@@ -0,0 +1,148 @@
+锘�// CPagePortStatus.cpp: 瀹炵幇鏂囦欢
+//
+
+#include "stdafx.h"
+#include "Servo.h"
+#include "CPagePortStatus.h"
+#include "afxdialogex.h"
+
+
+// CPagePortStatus 瀵硅瘽妗�
+
+IMPLEMENT_DYNAMIC(CPagePortStatus, CHMPropertyPage)
+
+CPagePortStatus::CPagePortStatus(CWnd* pParent /*=nullptr*/)
+	: CHMPropertyPage(IDD_PAGE_PORT_STATUS, pParent)
+{
+	m_pPort = nullptr;
+}
+
+CPagePortStatus::~CPagePortStatus()
+{
+}
+
+void CPagePortStatus::DoDataExchange(CDataExchange* pDX)
+{
+	CHMPropertyPage::DoDataExchange(pDX);
+}
+
+
+BEGIN_MESSAGE_MAP(CPagePortStatus, CHMPropertyPage)
+	ON_WM_CTLCOLOR()
+	ON_WM_DESTROY()
+	ON_WM_SIZE()
+END_MESSAGE_MAP()
+
+
+// CPagePortStatus 娑堟伅澶勭悊绋嬪簭
+void CPagePortStatus::setLoadPort(SERVO::CLoadPort* pPort)
+{
+	m_pPort = pPort;
+}
+
+BOOL CPagePortStatus::OnInitDialog()
+{
+	CHMPropertyPage::OnInitDialog();
+
+
+	ASSERT(m_pPort);
+	CComboBox* pComboBox;
+	std::string strTemp;
+
+	pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_PORT_STATUS);
+	for (int i = 1; i <= 6; i++) {
+		pComboBox->InsertString(i - 1, SERVO::CLoadPort::getPortStatusDescription(i, strTemp).c_str());
+	}
+	int portStatus = m_pPort->getPortStatus();
+	if (1 <= portStatus && portStatus <= 6) {
+		pComboBox->SetCurSel(portStatus - 1);
+	}
+
+	SetDlgItemInt(IDC_EDIT_CASSETTE_NO, m_pPort->getCassetteSequenceNo());
+	SetDlgItemText(IDC_EDIT_CASSETTE_ID, m_pPort->getCassetteId().c_str());
+
+	pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_LOADING_CASSETTE_TYPE);
+	for (int i = 1; i <= 4; i++) {
+		pComboBox->InsertString(i - 1, SERVO::CLoadPort::getLoadingCassetteTypeDescription(i, strTemp).c_str());
+	}
+	int loadingCassetteType = m_pPort->getLoadingCassetteType();
+	if (1 <= loadingCassetteType && loadingCassetteType <= 4) {
+		pComboBox->SetCurSel(loadingCassetteType - 1);
+	}
+
+	pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_QTIME_FLAG);
+	for (int i = 1; i <= 2; i++) {
+		pComboBox->InsertString(i - 1, SERVO::CLoadPort::getQTimeFlagDescription(i, strTemp).c_str());
+	}
+	int qTimeFlag = m_pPort->getQTimeFlag();
+	if (1 <= qTimeFlag && qTimeFlag <= 2) {
+		pComboBox->SetCurSel(qTimeFlag - 1);
+	}
+	
+	pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_CASSETTE_MAPPING_STATE);
+	for (int i = 1; i <= 2; i++) {
+		pComboBox->InsertString(i - 1, SERVO::CLoadPort::getCassetteMappingStateDescription(i, strTemp).c_str());
+	}
+	int mappingState = m_pPort->getCassetteMappingState();
+	if (1 <= mappingState && mappingState <= 2) {
+		pComboBox->SetCurSel(mappingState - 1);
+	}
+	
+	pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_CASSETTE_STATUS);
+	for (int i = 1; i <= 7; i++) {
+		pComboBox->InsertString(i - 1, SERVO::CLoadPort::getCassetteStatusDescription(i, strTemp).c_str());
+	}
+	int cassetteStatus = m_pPort->getCassetteStatus();
+	if (1 <= cassetteStatus && cassetteStatus <= 7) {
+		pComboBox->SetCurSel(cassetteStatus - 1);
+	}
+
+	// 鍒涘缓Job Existence Slots鎺т欢
+	m_ctrlJobSlotGrid.Create(AfxRegisterWndClass(0), _T("JobSlotGrid"),
+		WS_CHILD | WS_VISIBLE, CRect(0, 0, 100, 100), this, 1001);
+	m_ctrlJobSlotGrid.SetGridSize(12, 16);
+	m_ctrlJobSlotGrid.SetColors(RGB(34, 177, 76), RGB(200, 200, 200));
+
+	m_ctrlJobSlotGrid.SetSlotStatus(0, 1, true);
+	m_ctrlJobSlotGrid.SetSlotStatus(1, 9, true);
+	m_ctrlJobSlotGrid.SetSlotStatus(4, 9, false);
+	m_ctrlJobSlotGrid.SetSlotStatus(4, 10, true, TRUE);
+
+	return TRUE;  // return TRUE unless you set the focus to a control
+				  // 寮傚父: OCX 灞炴�ч〉搴旇繑鍥� FALSE
+}
+
+HBRUSH CPagePortStatus::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
+{
+	HBRUSH hbr = CHMPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
+
+	// TODO:  鍦ㄦ鏇存敼 DC 鐨勪换浣曠壒鎬�
+
+	// TODO:  濡傛灉榛樿鐨勪笉鏄墍闇�鐢荤瑪锛屽垯杩斿洖鍙︿竴涓敾绗�
+	return hbr;
+}
+
+void CPagePortStatus::OnDestroy()
+{
+	CHMPropertyPage::OnDestroy();
+
+	// TODO: 鍦ㄦ澶勬坊鍔犳秷鎭鐞嗙▼搴忎唬鐮�
+}
+
+void CPagePortStatus::OnSize(UINT nType, int cx, int cy)
+{
+	CHMPropertyPage::OnSize(nType, cx, cy);
+	if (GetDlgItem(IDC_COMBO_PORT_STATUS) == nullptr) return;
+
+
+	// 鍒涘缓Job Existence Slots鎺т欢
+	CRect rcLabel, rcComboBox, rcClient;
+	GetDlgItem(IDC_LABEL_JOB_EXISTENCE_SLOTS)->GetWindowRect(&rcLabel);
+	ScreenToClient(rcLabel);
+	GetDlgItem(IDC_COMBO_CASSETTE_STATUS)->GetWindowRect(&rcComboBox);
+	ScreenToClient(rcComboBox);
+	GetClientRect(rcClient);
+
+	m_ctrlJobSlotGrid.MoveWindow(rcComboBox.left, rcLabel.top, 
+		rcClient.right - 22 - rcComboBox.left, rcClient.bottom - 12 - rcLabel.top);
+}
\ No newline at end of file

--
Gitblit v1.9.3