DlgProgMgrInfo.cpp 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000
  1. // DlgProgMgrInfo.cpp : implementation
  2. //
  3. #pragma once
  4. #include "stdafx.h"
  5. #include "OTSModel.h"
  6. #include "DlgProgMgrInfo.h"
  7. #include "OTSProgMgr.h"
  8. #include "afxdialogex.h"
  9. #include "DlgStageMgr.h"
  10. namespace OTSMODEL {
  11. const int STAGE_LIST_NEED_FOUCS_NUM = 1;
  12. COTSProjMgrFilePtr ShowProgMgrEditDialog(OTS_SOFT_PACKAGE_ID a_nPackId, BOOL a_bInUse)
  13. {
  14. AFX_MANAGE_STATE(AfxGetStaticModuleState());
  15. LogInfoTrace(__FILE__, __LINE__, _T("ShowProgMgrEditDialog: load information form program manger file."));
  16. // load program manager file data
  17. COTSProgMgrParamFilePtr pMgrParamFile = COTSProgMgrParamFilePtr(new COTSProgMgrParamFile());
  18. pMgrParamFile = COTSProgMgr::LoadInfoFromProgMgrFile(a_nPackId);
  19. ASSERT(pMgrParamFile);
  20. if (pMgrParamFile == nullptr)
  21. {
  22. LogErrorTrace(__FILE__, __LINE__, _T("ShowProgMgrEditDialog: load information form program manger failded."));
  23. return nullptr;
  24. }
  25. // set program manager dialog data
  26. CDlgProgMgrInfo dlg;
  27. dlg.SetStageData(pMgrParamFile->GetStageData());
  28. dlg.SetGenParam(pMgrParamFile->GetGenParam());
  29. dlg.SetImageScanParam(pMgrParamFile->GetImageScanParam());
  30. dlg.SetImageProcParam(pMgrParamFile->GetImageProcParam());
  31. dlg.SetXRayParam(pMgrParamFile->GetXRayParam());
  32. dlg.SetPackId(a_nPackId);
  33. dlg.SetInUse(a_bInUse);
  34. // load stage data
  35. dlg.m_pStageFile->SetStageData(pMgrParamFile->GetStageData());
  36. dlg.m_pStageFile->SetInUse(a_bInUse);
  37. LogInfoTrace(__FILE__, __LINE__, _T("ShowProgMgrEditDialog: load working stage form stage file."));
  38. if (dlg.m_pStageFile->Load(a_nPackId))
  39. {
  40. dlg.m_pStageFile->SetModify();
  41. }
  42. else
  43. {
  44. LogErrorTrace(__FILE__, __LINE__, _T("ShowProgMgrEditDialog: load stage failded."));
  45. return nullptr;
  46. }
  47. //return the project manger file
  48. if (dlg.DoModal() == IDOK)
  49. {
  50. // there is stage
  51. if (dlg.m_pStageFile->GetStagesList().size() > 0)
  52. {
  53. LogInfoTrace(__FILE__, __LINE__, _T("ShowProgMgrEditDialog: create a new measure working file."));
  54. COTSProjMgrFilePtr pProjMgrFile = COTSProjMgrFilePtr(new COTSProjMgrFile());
  55. // system should have program manager file
  56. //pProjMgrFile->GetSystemValidationState(a_nPackId);
  57. if (pProjMgrFile->IsValid())
  58. {
  59. // return a valid new file
  60. CStagePtr pStage = CStagePtr(new CStage());
  61. pStage = dlg.m_pStageFile->GetWorkingStage();
  62. ASSERT(pStage);
  63. if (!pStage)
  64. {
  65. LogErrorTrace(__FILE__, __LINE__, _T("ShowProgMgrEditDialog: get working stage failed."));
  66. return nullptr;
  67. }
  68. LogInfoTrace(__FILE__, __LINE__, _T("ShowProgMgrEditDialog: set measure working file information with system file information."));
  69. pProjMgrFile->SetStage(pStage);
  70. pProjMgrFile->SetSEMStageData(pMgrParamFile->GetStageData());
  71. pProjMgrFile->SetGenParam(pMgrParamFile->GetGenParam());
  72. pProjMgrFile->SetImageScanParam(pMgrParamFile->GetImageScanParam());
  73. pProjMgrFile->SetImageProcParam(pMgrParamFile->GetImageProcParam());
  74. pProjMgrFile->SetXRayParam(pMgrParamFile->GetXRayParam());
  75. return pProjMgrFile;
  76. }
  77. else
  78. {
  79. LogErrorTrace(__FILE__, __LINE__, _T("ShowProgMgrEditDialog: there is no invalid system file"));
  80. return nullptr;
  81. }
  82. }
  83. else
  84. {
  85. LogErrorTrace(__FILE__, __LINE__, _T("ShowProgMgrEditDialog: there is no invalid stage file"));
  86. return nullptr;
  87. }
  88. }
  89. return nullptr;
  90. }
  91. // CDlgProgMgrInfo dialog
  92. IMPLEMENT_DYNAMIC(CDlgProgMgrInfo, CDialog)
  93. CDlgProgMgrInfo::CDlgProgMgrInfo(CWnd* pParent /*=NULL*/)
  94. : CDialog(IDD_PROG_MGR_INFO, pParent)
  95. , m_nComboXAxisDirection(0)
  96. , m_lEditXAxisStart(0)
  97. , m_lEditXAxisEnd(0)
  98. , m_nComboYAxisDirection(0)
  99. , m_lEditYAxisStart(0)
  100. , m_lEditYAxisEnd(0)
  101. , m_nEditScreenWidth(0)
  102. , m_sEditSampleAutoName(_T(""))
  103. , m_bCheckMeasSwitch(FALSE)
  104. , m_sEditParamFilePath(_T(""))
  105. , m_sEditParamFileName(_T(""))
  106. , m_sEditSTDLibPath(_T(""))
  107. , m_sEditSTDLibName(_T(""))
  108. , m_dEditAreaMax(0)
  109. , m_dEditAreaMin(0)
  110. , m_cEditBackMin(0)
  111. , m_cEditBackMax(0)
  112. , m_cEditPartMin(0)
  113. , m_cEditPartMax(0)
  114. , m_nComboSearchSpeed(0)
  115. , m_lEditSearchCount(0)
  116. , m_nComboSearchMode(0)
  117. , m_nComboAnalySpeed(0)
  118. , m_lEditAnalyCount(0)
  119. , m_nComboStopMode(0)
  120. , m_lEditStopTime(0)
  121. , m_lEditFieldNum(0)
  122. , m_lEditIncANum(0)
  123. , m_nComboFetchMode(0)
  124. , m_nComboScanSpeed(0)
  125. , m_nComboImageSize(0)
  126. , m_nComboStage(0)
  127. {
  128. // SEM stage data
  129. m_pStageData = CSEMStageDataPtr(new CSEMStageData());
  130. // soft pack id
  131. m_nPackId = OTS_SOFT_PACKAGE_ID::OTSIncA;
  132. // measure parameter file path
  133. m_sParamFileName = _T("");
  134. // general parameter
  135. m_pGenParam = COTSGeneralParametersPtr(new COTSGeneralParameters()) ;
  136. // image scan parameter
  137. m_pImageScanParam = COTSImageScanParamPtr(new COTSImageScanParam()) ;
  138. // image process parameter
  139. m_pImageProcParam = COTSImageProcessParamPtr(new COTSImageProcessParam()) ;
  140. // X-Ray parameter
  141. m_pXRayParam = COTSXRayParamPtr(new COTSXRayParam());
  142. // stage
  143. m_pStageFile = CStageFilePtr(new CStageFile());
  144. // flag if there is sample on the stage
  145. m_bInUse = FALSE;
  146. }
  147. CDlgProgMgrInfo::~CDlgProgMgrInfo()
  148. {
  149. }
  150. void CDlgProgMgrInfo::DoDataExchange(CDataExchange* pDX)
  151. {
  152. CDialog::DoDataExchange(pDX);
  153. DDX_Control(pDX, IDC_COMBO_XDIREC, m_ctrlComboXAxisDirection);
  154. DDX_CBIndex(pDX, IDC_COMBO_XDIREC, m_nComboXAxisDirection);
  155. DDV_MinMaxInt(pDX, m_nComboXAxisDirection, 0, 1);
  156. DDX_Control(pDX, IDC_EDIT_XSTART, m_ctrlEditXAxisStart);
  157. DDX_Text(pDX, IDC_EDIT_XSTART, m_lEditXAxisStart);
  158. DDX_Control(pDX, IDC_EDIT_XEND, m_ctrlEditXAxisEnd);
  159. DDX_Text(pDX, IDC_EDIT_XEND, m_lEditXAxisEnd);
  160. DDX_Control(pDX, IDC_COMBO_YDIRECT, m_ctrlComboYAxisDirection);
  161. DDX_CBIndex(pDX, IDC_COMBO_YDIRECT, m_nComboYAxisDirection);
  162. DDV_MinMaxInt(pDX, m_nComboYAxisDirection, 0, 1);
  163. DDX_Control(pDX, IDC_EDIT_YSTART, m_ctrlEditYAxisStart);
  164. DDX_Text(pDX, IDC_EDIT_YSTART, m_lEditYAxisStart);
  165. DDX_Control(pDX, IDC_EDIT_YEND, m_ctrlEditYAxiaEnd);
  166. DDX_Text(pDX, IDC_EDIT_YEND, m_lEditYAxisEnd);
  167. DDX_Control(pDX, IDC_EDIT_SCREENWIDTH, m_ctrlEditScreenWidth);
  168. DDX_Text(pDX, IDC_EDIT_SCREENWIDTH, m_nEditScreenWidth);
  169. DDV_MinMaxInt(pDX, m_nEditScreenWidth, 0, 10000);
  170. DDX_Control(pDX, IDC_EDIT_SAMPLENAME, m_ctrlEditSampleAutoName);
  171. DDX_Text(pDX, IDC_EDIT_SAMPLENAME, m_sEditSampleAutoName);
  172. DDV_MaxChars(pDX, m_sEditSampleAutoName, 20);
  173. DDX_Control(pDX, IDC_MEAS_SWITCH, m_ctrlCheckMeasSwitch);
  174. DDX_Check(pDX, IDC_MEAS_SWITCH, m_bCheckMeasSwitch);
  175. DDX_Control(pDX, IDC_EDIT_MEASUREPARAMPATH, m_ctrlEditParamFilePath);
  176. DDX_Text(pDX, IDC_EDIT_MEASUREPARAMPATH, m_sEditParamFilePath);
  177. DDX_Control(pDX, IDC_EDIT_MESA_PARAM_FILE, m_ctrlEditParamFileName);
  178. DDX_Text(pDX, IDC_EDIT_MESA_PARAM_FILE, m_sEditParamFileName);
  179. DDX_Control(pDX, IDC_EDIT_ANALYSESTDLIBPATH, m_ctrlEditSTDLibPath);
  180. DDX_Text(pDX, IDC_EDIT_ANALYSESTDLIBPATH, m_sEditSTDLibPath);
  181. DDX_Control(pDX, IDC_EDIT_STDLIBNAME, m_ctrlEditSTDLibName);
  182. DDX_Text(pDX, IDC_EDIT_STDLIBNAME, m_sEditSTDLibName);
  183. DDX_Control(pDX, IDC_EDIT_PARTAREAMIN, m_ctrlEditAreaMin);
  184. DDX_Control(pDX, IDC_EDIT_PARTAREAMAX, m_ctrlEditAreaMax);
  185. DDX_Text(pDX, IDC_EDIT_PARTAREAMAX, m_dEditAreaMax);
  186. DDX_Text(pDX, IDC_EDIT_PARTAREAMIN, m_dEditAreaMin);
  187. DDX_Control(pDX, IDC_EDIT_BACKMIN, m_ctrlEditBackMin);
  188. DDX_Text(pDX, IDC_EDIT_BACKMIN, m_cEditBackMin);
  189. DDX_Control(pDX, IDC_EDIT_BACKMAX, m_ctrlEditBackMax);
  190. DDX_Text(pDX, IDC_EDIT_BACKMAX, m_cEditBackMax);
  191. DDX_Text(pDX, IDC_EDIT_PARTMIN, m_cEditPartMin);
  192. DDX_Control(pDX, IDC_EDIT_PARTMIN, m_ctrlEditPatrMin);
  193. DDX_Control(pDX, IDC_EDIT_PARTMAX, m_ctrlEditPartMax);
  194. DDX_Text(pDX, IDC_EDIT_PARTMAX, m_cEditPartMax);
  195. DDX_Control(pDX, IDC_COMBO_SEARCHXRAYSPEED, m_ctrlComboSearchSpeed);
  196. DDX_CBIndex(pDX, IDC_COMBO_SEARCHXRAYSPEED, m_nComboSearchSpeed);
  197. DDX_Control(pDX, IDC_EDIT_SEARCHXRAYCOUNTLIMIT, m_ctrlEditSearchCount);
  198. DDX_Text(pDX, IDC_EDIT_SEARCHXRAYCOUNTLIMIT, m_lEditSearchCount);
  199. DDX_Control(pDX, IDC_COMBO_XRAYSCANMODE, m_ctrlComboSearchMode);
  200. DDX_CBIndex(pDX, IDC_COMBO_XRAYSCANMODE, m_nComboSearchMode);
  201. DDX_Control(pDX, IDC_COMBO_ANALYXRAYSPEED, m_ctrlComboAnalySpeed);
  202. DDX_CBIndex(pDX, IDC_COMBO_ANALYXRAYSPEED, m_nComboAnalySpeed);
  203. DDX_Control(pDX, IDC_EDIT_ANALYXRAYAIMVALUE, m_ctrlEditAnalyCount);
  204. DDX_Text(pDX, IDC_EDIT_ANALYXRAYAIMVALUE, m_lEditAnalyCount);
  205. DDX_Control(pDX, IDC_COMBO_STOPMODE, m_ctrlComboStopMode);
  206. DDX_CBIndex(pDX, IDC_COMBO_STOPMODE, m_nComboStopMode);
  207. DDX_Control(pDX, IDC_EDIT_STOP_TIME, m_ctrlEditStopTime);
  208. DDX_Text(pDX, IDC_EDIT_STOP_TIME, m_lEditStopTime);
  209. DDX_Control(pDX, IDC_EDIT_STOP_FIELD_NUM, m_ctrlEditFieldNum);
  210. DDX_Text(pDX, IDC_EDIT_STOP_FIELD_NUM, m_lEditFieldNum);
  211. DDX_Control(pDX, IDC_EDIT_STOP_INCA_NUM, m_ctrlEditIncANum);
  212. DDX_Text(pDX, IDC_EDIT_STOP_INCA_NUM, m_lEditIncANum);
  213. DDX_Control(pDX, IDC_COMBO_FETCHIMGMODE, m_ctrlComboFetchMode);
  214. DDX_CBIndex(pDX, IDC_COMBO_FETCHIMGMODE, m_nComboFetchMode);
  215. DDX_Control(pDX, IDC_COMBO_IMGSCANSPEED, m_ctrlComboScanSpeed);
  216. DDX_CBIndex(pDX, IDC_COMBO_IMGSCANSPEED, m_nComboScanSpeed);
  217. DDX_Control(pDX, IDC_COMBO_IMGSIZE, m_ctrlComboImageSize);
  218. DDX_CBIndex(pDX, IDC_COMBO_IMGSIZE, m_nComboImageSize);
  219. DDX_Control(pDX, IDC_COMBO_STAGE, m_ctrlComboStage);
  220. DDX_CBIndex(pDX, IDC_COMBO_STAGE, m_nComboStage);
  221. }
  222. BEGIN_MESSAGE_MAP(CDlgProgMgrInfo, CDialog)
  223. ON_EN_CHANGE(IDC_EDIT_SCREENWIDTH, &CDlgProgMgrInfo::OnChangeEditScreenwidth)
  224. ON_CBN_SELCHANGE(IDC_COMBO_XDIREC, &CDlgProgMgrInfo::OnSelchangeComboXdirec)
  225. ON_EN_CHANGE(IDC_EDIT_XSTART, &CDlgProgMgrInfo::OnChangeEditXstart)
  226. ON_EN_CHANGE(IDC_EDIT_XEND, &CDlgProgMgrInfo::OnChangeEditXend)
  227. ON_CBN_SELCHANGE(IDC_COMBO_YDIRECT, &CDlgProgMgrInfo::OnSelchangeComboYdirect)
  228. ON_EN_CHANGE(IDC_EDIT_YSTART, &CDlgProgMgrInfo::OnChangeEditYstart)
  229. ON_EN_CHANGE(IDC_EDIT_YEND, &CDlgProgMgrInfo::OnChangeEditYend)
  230. ON_BN_CLICKED(IDOK, &CDlgProgMgrInfo::OnBnClickedOk)
  231. ON_CBN_SELCHANGE(IDC_COMBO_STOPMODE, &CDlgProgMgrInfo::OnSelchangeComboStopmode)
  232. ON_EN_CHANGE(IDC_EDIT_STOP_TIME, &CDlgProgMgrInfo::OnChangeEditStopTime)
  233. ON_EN_CHANGE(IDC_EDIT_STOP_FIELD_NUM, &CDlgProgMgrInfo::OnChangeEditStopFieldNum)
  234. ON_EN_CHANGE(IDC_EDIT_STOP_INCA_NUM, &CDlgProgMgrInfo::OnChangeEditStopIncaNum)
  235. ON_CBN_SELCHANGE(IDC_COMBO_FETCHIMGMODE, &CDlgProgMgrInfo::OnSelchangeComboFetchimgmode)
  236. ON_CBN_SELCHANGE(IDC_COMBO_IMGSCANSPEED, &CDlgProgMgrInfo::OnSelchangeComboImgscanspeed)
  237. ON_CBN_SELCHANGE(IDC_COMBO_IMGSIZE, &CDlgProgMgrInfo::OnSelchangeComboImgsize)
  238. ON_EN_CHANGE(IDC_EDIT_SAMPLENAME, &CDlgProgMgrInfo::OnChangeEditSamplename)
  239. ON_BN_CLICKED(IDC_MEAS_SWITCH, &CDlgProgMgrInfo::OnClickedMeasSwitch)
  240. ON_EN_CHANGE(IDC_EDIT_MESA_PARAM_FILE, &CDlgProgMgrInfo::OnChangeEditMesaParamFile)
  241. ON_EN_CHANGE(IDC_EDIT_STDLIBNAME, &CDlgProgMgrInfo::OnChangeEditStdlibname)
  242. ON_EN_CHANGE(IDC_EDIT_PARTAREAMIN, &CDlgProgMgrInfo::OnChangeEditPartareamin)
  243. ON_EN_CHANGE(IDC_EDIT_PARTAREAMAX, &CDlgProgMgrInfo::OnChangeEditPartareamax)
  244. ON_EN_CHANGE(IDC_EDIT_BACKMIN, &CDlgProgMgrInfo::OnChangeEditBackmin)
  245. ON_EN_CHANGE(IDC_EDIT_BACKMAX, &CDlgProgMgrInfo::OnChangeEditBackmax)
  246. ON_EN_CHANGE(IDC_EDIT_PARTMIN, &CDlgProgMgrInfo::OnChangeEditPartmin)
  247. ON_EN_CHANGE(IDC_EDIT_PARTMAX, &CDlgProgMgrInfo::OnChangeEditPartmax)
  248. ON_CBN_SELCHANGE(IDC_COMBO_SEARCHXRAYSPEED, &CDlgProgMgrInfo::OnSelchangeComboSearchxrayspeed)
  249. ON_EN_CHANGE(IDC_EDIT_SEARCHXRAYCOUNTLIMIT, &CDlgProgMgrInfo::OnChangeEditSearchxraycountlimit)
  250. ON_CBN_SELCHANGE(IDC_COMBO_XRAYSCANMODE, &CDlgProgMgrInfo::OnSelchangeComboXrayscanmode)
  251. ON_CBN_SELCHANGE(IDC_COMBO_ANALYXRAYSPEED, &CDlgProgMgrInfo::OnSelchangeComboAnalyxrayspeed)
  252. ON_EN_CHANGE(IDC_EDIT_ANALYXRAYAIMVALUE, &CDlgProgMgrInfo::OnChangeEditAnalyxrayaimvalue)
  253. ON_BN_CLICKED(IDC_BUTTON_MEASPRAMPATHSET, &CDlgProgMgrInfo::OnClickedButtonMeasprampathset)
  254. ON_BN_CLICKED(IDC_BUTTON_PARTSTDLIBPATHSET, &CDlgProgMgrInfo::OnClickedButtonPartstdlibpathset)
  255. ON_BN_CLICKED(IDC_BUTTON_STAGE, &CDlgProgMgrInfo::OnBnClickedButtonStage)
  256. ON_CBN_SELCHANGE(IDC_COMBO_STAGE, &CDlgProgMgrInfo::OnSelchangeComboStage)
  257. END_MESSAGE_MAP()
  258. // CDlgProgMgrInfo message process
  259. BOOL CDlgProgMgrInfo::OnInitDialog()
  260. {
  261. CDialog::OnInitDialog();
  262. LogInfoTrace(__FILE__, __LINE__, _T("OnInitDialog: program dlg init."));
  263. // set control data
  264. SetStageControlData(m_pStageFile);
  265. SetStageDataControlData(m_pStageData);
  266. SetGenParamControlData(m_pGenParam, m_sParamFileName);
  267. SetImageScanParamControlData(m_pImageScanParam);
  268. SetImageProcParamControlData(m_pImageProcParam);
  269. SetXRayParamControlData(m_pXRayParam);
  270. return TRUE; // return TRUE unless you set the focus to a control
  271. }
  272. void CDlgProgMgrInfo::OnClickedButtonMeasprampathset()
  273. {
  274. LogInfoTrace(__FILE__, __LINE__, _T("OnClickedButtonMeasprampathset: get the measure file path."));
  275. // set the parameter file path
  276. CFolderPickerDialog dlg(NULL, NULL, this, NULL);
  277. if (dlg.DoModal() == IDOK)
  278. {
  279. CString sPath = dlg.GetPathName();
  280. if (sPath.IsEmpty())
  281. {
  282. LogErrorTrace(__FILE__, __LINE__, _T("OnClickedButtonMeasprampathset: empty path."));
  283. return;
  284. }
  285. LogInfoTrace(__FILE__, __LINE__, _T("OnClickedButtonMeasprampathset: user have choose %s."), sPath);
  286. m_sEditParamFilePath = sPath;
  287. UpdateData(FALSE);
  288. }
  289. else
  290. {
  291. LogInfoTrace(__FILE__, __LINE__, _T("OnClickedButtonMeasprampathset: user cancled."));
  292. return;
  293. }
  294. UpdateGenParam();
  295. }
  296. void CDlgProgMgrInfo::OnClickedButtonPartstdlibpathset()
  297. {
  298. LogInfoTrace(__FILE__, __LINE__, _T("OnClickedButtonPartstdlibpathset: get the STD lib file path."));
  299. // set STD lib file path name
  300. CFolderPickerDialog dlg(NULL, NULL, this, NULL);
  301. if (dlg.DoModal() == IDOK)
  302. {
  303. CString sPath = dlg.GetPathName();
  304. if (sPath.IsEmpty())
  305. {
  306. LogErrorTrace(__FILE__, __LINE__, _T("OnClickedButtonPartstdlibpathset: empty path."));
  307. return;
  308. }
  309. LogInfoTrace(__FILE__, __LINE__, _T("OnClickedButtonPartstdlibpathset: user have choose %s."), sPath);
  310. m_sEditSTDLibPath = dlg.GetPathName();
  311. UpdateData(FALSE);
  312. }
  313. else
  314. {
  315. LogInfoTrace(__FILE__, __LINE__, _T("OnClickedButtonPartstdlibpathset: user cancled."));
  316. return;
  317. }
  318. UpdateGenParam();
  319. }
  320. void CDlgProgMgrInfo::OnBnClickedButtonStage()
  321. {
  322. UpdateData();
  323. CSEMStageDataPtr pStageData = CSEMStageDataPtr(new CSEMStageData());
  324. m_pStageFile->SetStageData(pStageData);
  325. m_pStageFile->SetStageData(m_pStageData);
  326. // if it is the first time to add a stage, it is need to load from stage file.
  327. if (m_pStageFile->GetStagesList().size() == 0)
  328. {
  329. LogInfoTrace(__FILE__, __LINE__, _T("OnBnClickedButtonStage: there is no stage now."));
  330. if (!m_pStageFile->Load(m_nPackId))
  331. {
  332. LogErrorTrace(__FILE__, __LINE__, _T("OnBnClickedButtonStage: Load stage file failed."));
  333. return;
  334. }
  335. LogInfoTrace(__FILE__, __LINE__, _T("OnBnClickedButtonStage: load stage from stage file."));
  336. if (m_pStageFile->GetStagesList().size()> STAGE_LIST_NEED_FOUCS_NUM)
  337. {
  338. // there is more than one stage , need to set a working stage, the combo selected one is working stage.
  339. m_pStageFile->SetWorkingStageId(m_nComboStage);
  340. m_pStageFile->SetModify();
  341. }
  342. else
  343. {
  344. LogInfoTrace(__FILE__, __LINE__, _T("OnBnClickedButtonStage: stage list size is no bigger than 1, don't need set working stage."));
  345. }
  346. }
  347. LogInfoTrace(__FILE__, __LINE__, _T("OnBnClickedButtonStage: show stage manager dlg."));
  348. CDlgStageMgr dlg;
  349. dlg.SetStageFile(m_pStageFile);
  350. dlg.SetPackId(m_nPackId);
  351. dlg.DoModal();
  352. CStageFilePtr pStageFile = dlg.GetStageFile();
  353. ASSERT(pStageFile);
  354. if (!pStageFile)
  355. {
  356. LogErrorTrace(__FILE__, __LINE__, _T("OnBnClickedButtonStage: Load stage from stage manager dlg failed."));
  357. return;
  358. }
  359. SetStageControlData(m_pStageFile);
  360. }
  361. void CDlgProgMgrInfo::OnChangeEditScreenwidth()
  362. {
  363. UpdateStageData();
  364. }
  365. void CDlgProgMgrInfo::OnSelchangeComboXdirec()
  366. {
  367. UpdateStageData();
  368. }
  369. void CDlgProgMgrInfo::OnChangeEditXstart()
  370. {
  371. UpdateStageData();
  372. }
  373. void CDlgProgMgrInfo::OnChangeEditXend()
  374. {
  375. UpdateStageData();
  376. }
  377. void CDlgProgMgrInfo::OnSelchangeComboYdirect()
  378. {
  379. UpdateStageData();
  380. }
  381. void CDlgProgMgrInfo::OnChangeEditYstart()
  382. {
  383. UpdateStageData();
  384. }
  385. void CDlgProgMgrInfo::OnChangeEditYend()
  386. {
  387. UpdateStageData();
  388. }
  389. void CDlgProgMgrInfo::OnBnClickedOk()
  390. {
  391. // get control data from dialog
  392. UpdateStageData();
  393. UpdateGenParam();
  394. UpdateImageScanParam();
  395. UpdateImageProcParam();
  396. UpdateXRayParam();
  397. LogInfoTrace(__FILE__, __LINE__, _T("OnBnClickedOk: save program manager file and stage file."));
  398. //save program manager file
  399. if(!COTSProgMgr::SaveInfoToProgMgrFile(m_nPackId,
  400. m_pStageData,
  401. m_pGenParam,
  402. m_pImageScanParam,
  403. m_pImageProcParam,
  404. m_pXRayParam))
  405. {
  406. LogErrorTrace(__FILE__, __LINE__, _T("OnBnClickedOk: save program manager file failed."));
  407. return;
  408. }
  409. LogInfoTrace(__FILE__, __LINE__, _T("OnBnClickedOk: save program manager file."));
  410. if (m_pStageFile->IsModified())
  411. {
  412. if (!m_pStageFile->Save(m_nPackId))
  413. {
  414. LogErrorTrace(__FILE__, __LINE__, _T("OnBnClickedOk: save stage file failed."));
  415. return;
  416. }
  417. LogInfoTrace(__FILE__, __LINE__, _T("OnBnClickedOk: save stage file."));
  418. }
  419. CDialog::OnOK();
  420. }
  421. void CDlgProgMgrInfo::OnSelchangeComboStopmode()
  422. {
  423. UpdateImageScanParam();
  424. }
  425. void CDlgProgMgrInfo::OnChangeEditStopTime()
  426. {
  427. UpdateImageScanParam();
  428. }
  429. void CDlgProgMgrInfo::OnChangeEditStopFieldNum()
  430. {
  431. UpdateImageScanParam();
  432. }
  433. void CDlgProgMgrInfo::OnChangeEditStopIncaNum()
  434. {
  435. UpdateImageScanParam();
  436. }
  437. void CDlgProgMgrInfo::OnSelchangeComboFetchimgmode()
  438. {
  439. UpdateImageScanParam();
  440. }
  441. void CDlgProgMgrInfo::OnSelchangeComboImgscanspeed()
  442. {
  443. UpdateImageScanParam();
  444. }
  445. void CDlgProgMgrInfo::OnSelchangeComboImgsize()
  446. {
  447. UpdateImageScanParam();
  448. }
  449. void CDlgProgMgrInfo::OnChangeEditSamplename()
  450. {
  451. UpdateGenParam();
  452. }
  453. void CDlgProgMgrInfo::OnClickedMeasSwitch()
  454. {
  455. UpdateGenParam();
  456. }
  457. void CDlgProgMgrInfo::OnChangeEditMesaParamFile()
  458. {
  459. UpdateGenParam();
  460. }
  461. void CDlgProgMgrInfo::OnChangeEditStdlibname()
  462. {
  463. UpdateGenParam();
  464. }
  465. void CDlgProgMgrInfo::OnChangeEditPartareamin()
  466. {
  467. UpdateImageProcParam();
  468. }
  469. void CDlgProgMgrInfo::OnChangeEditPartareamax()
  470. {
  471. UpdateImageProcParam();
  472. }
  473. void CDlgProgMgrInfo::OnChangeEditBackmin()
  474. {
  475. UpdateImageProcParam();
  476. }
  477. void CDlgProgMgrInfo::OnChangeEditBackmax()
  478. {
  479. UpdateImageProcParam();
  480. }
  481. void CDlgProgMgrInfo::OnChangeEditPartmin()
  482. {
  483. UpdateImageProcParam();
  484. }
  485. void CDlgProgMgrInfo::OnChangeEditPartmax()
  486. {
  487. UpdateImageProcParam();
  488. }
  489. void CDlgProgMgrInfo::OnSelchangeComboSearchxrayspeed()
  490. {
  491. UpdateXRayParam();
  492. }
  493. void CDlgProgMgrInfo::OnChangeEditSearchxraycountlimit()
  494. {
  495. UpdateXRayParam();
  496. }
  497. void CDlgProgMgrInfo::OnSelchangeComboXrayscanmode()
  498. {
  499. UpdateXRayParam();
  500. }
  501. void CDlgProgMgrInfo::OnSelchangeComboAnalyxrayspeed()
  502. {
  503. UpdateXRayParam();
  504. }
  505. void CDlgProgMgrInfo::OnChangeEditAnalyxrayaimvalue()
  506. {
  507. UpdateXRayParam();
  508. }
  509. void CDlgProgMgrInfo::OnSelchangeComboStage()
  510. {
  511. UpdateStage();
  512. }
  513. void CDlgProgMgrInfo::SetStageControlData(CStageFilePtr a_pStageFile)
  514. {
  515. m_ctrlComboStage.ResetContent();
  516. // send control data to dialog
  517. // the first stage should be the working stage, the list should be the same with the combo string list
  518. CStagePtr pWorkingStage = m_pStageFile->GetWorkingStage();
  519. LogInfoTrace(__FILE__, __LINE__, _T("SetStageControlData: create a new stage list to set the working stage at the first place."));
  520. // Update the stage list
  521. CStagesList listNewStage;
  522. listNewStage.clear();
  523. listNewStage.push_back(pWorkingStage);
  524. m_ctrlComboStage.AddString(pWorkingStage->GetName());
  525. int nWorkingStageId = m_pStageFile->GetWorkingStageId();
  526. // add other stage expcept working stage
  527. int nNum = 0;
  528. for (auto pStage : m_pStageFile->GetStagesList())
  529. {
  530. if(nNum != nWorkingStageId)
  531. {
  532. CString sCurrentName = pStage->GetName();
  533. m_ctrlComboStage.AddString(sCurrentName);
  534. listNewStage.push_back(pStage);
  535. }
  536. nNum++;
  537. }
  538. // if there is a sample on the stage , the stage can't change
  539. m_ctrlComboStage.EnableWindow(!m_bInUse);
  540. if(listNewStage.size() == m_pStageFile->GetStagesList().size())
  541. {
  542. m_pStageFile->SetStagesList(listNewStage);
  543. m_pStageFile->SetWorkingStageId(0);
  544. m_pStageFile->SetModify();
  545. }
  546. else
  547. {
  548. LogErrorTrace(__FILE__, __LINE__, _T("SetStageControlData: stage lost, put the working stage at the first place failed."));
  549. return;
  550. }
  551. UpdateData(FALSE);
  552. return;
  553. }
  554. void CDlgProgMgrInfo::SetStageDataControlData(CSEMStageDataPtr a_pStageData)
  555. {
  556. // safety check
  557. ASSERT(a_pStageData);
  558. if (!a_pStageData)
  559. {
  560. LogErrorTrace(__FILE__, __LINE__, _T("SetStageDataControlData: invalid stage data pointer"));
  561. return;
  562. }
  563. LogInfoTrace(__FILE__, __LINE__, _T("SetStageDataControlData: set SEM stage data param to dlg control."));
  564. // set combo boxes
  565. for (int i = (int)OTS_X_AXIS_DIRECTION::MIN; i <= (int)OTS_X_AXIS_DIRECTION::MAX; ++i)
  566. {
  567. CString strItem = COTSProgMgr::GetXAxisDirectionIdString((OTS_X_AXIS_DIRECTION)i);
  568. m_ctrlComboXAxisDirection.AddString(strItem);
  569. }
  570. for (int i = (int)OTS_Y_AXIS_DIRECTION::MIN; i <= (int)OTS_Y_AXIS_DIRECTION::MAX; ++i)
  571. {
  572. CString strItem = COTSProgMgr::GetYAxisDirectionIdString((OTS_Y_AXIS_DIRECTION)i);
  573. m_ctrlComboYAxisDirection.AddString(strItem);
  574. }
  575. // set control data with the stage info
  576. m_nEditScreenWidth = a_pStageData->GetScanFieldSize100();
  577. m_nComboXAxisDirection = (int)a_pStageData->GetXAxisDir();
  578. m_lEditXAxisStart = a_pStageData->GetXAxis()->GetStart();
  579. m_lEditXAxisEnd = a_pStageData->GetXAxis()->GetEnd();
  580. m_nComboYAxisDirection = (int)a_pStageData->GetYAxisDir();
  581. m_lEditYAxisStart = a_pStageData->GetYAxis()->GetStart();
  582. m_lEditYAxisEnd = a_pStageData->GetYAxis()->GetEnd();
  583. // send control data to dialog
  584. UpdateData(FALSE);
  585. }
  586. void CDlgProgMgrInfo::SetGenParamControlData(COTSGeneralParametersPtr a_pGenParam, CString a_sParamFileName)
  587. {
  588. // safety check
  589. ASSERT(a_pGenParam);
  590. if (!a_pGenParam)
  591. {
  592. LogErrorTrace(__FILE__, __LINE__, _T("SetGenParamControlData: invalid pGenParam pointer"));
  593. return;
  594. }
  595. m_sEditSampleAutoName = a_pGenParam->GetSampleName();
  596. m_sEditParamFilePath = a_pGenParam->GetMsrParamFileFolderName();
  597. m_sEditSTDLibPath = a_pGenParam->GetPartSTDLibFolderName();
  598. m_bCheckMeasSwitch = a_pGenParam->GetMeasurementSwitch();
  599. m_sEditParamFileName = a_sParamFileName;
  600. m_sEditSTDLibName = a_pGenParam->GetPartSTDLibName();
  601. LogInfoTrace(__FILE__, __LINE__, _T("SetGenParamControlData: set general param to dlg control."));
  602. // send control data to dialog
  603. UpdateData(FALSE);
  604. }
  605. void CDlgProgMgrInfo::SetImageScanParamControlData(COTSImageScanParamPtr a_pImageScanParam)
  606. {
  607. // safety check
  608. ASSERT(a_pImageScanParam);
  609. if (!a_pImageScanParam)
  610. {
  611. LogErrorTrace(__FILE__, __LINE__, _T("SetImageScanParamControlData: invalid stage data pointer"));
  612. return;
  613. }
  614. // set combo boxes
  615. for (int i = (int)OTS_MEASURE_STOP_MODE::MIN; i <= (int)OTS_MEASURE_STOP_MODE::MAX; ++i)
  616. {
  617. CString strItem = COTSProgMgr::GetStopModeIdString((OTS_MEASURE_STOP_MODE)i);
  618. m_ctrlComboStopMode.AddString(strItem);
  619. }
  620. for (int i = (int)OTS_GET_IMAGE_MODE::MIN; i <= (int)OTS_GET_IMAGE_MODE::MAX; ++i)
  621. {
  622. CString strItem = COTSProgMgr::GetGetImageIdString((OTS_GET_IMAGE_MODE)i);
  623. m_ctrlComboFetchMode.AddString(strItem);
  624. }
  625. for (int i = (int)OTS_THREE_TIES_OPTIONS::MIN; i <= (int)OTS_THREE_TIES_OPTIONS::MAX; ++i)
  626. {
  627. CString strItem = COTSProgMgr::GetScanSpeedString((OTS_THREE_TIES_OPTIONS)i);
  628. m_ctrlComboScanSpeed.AddString(strItem);
  629. }
  630. for (int i = (int)OTS_FIVE_TIES_OPTIONS::MIN; i <= (int)OTS_FIVE_TIES_OPTIONS::MAX; ++i)
  631. {
  632. CString strItem = COTSProgMgr::GetImageSizeIdString((OTS_FIVE_TIES_OPTIONS)i);
  633. m_ctrlComboImageSize.AddString(strItem);
  634. }
  635. // set control data with the stage info
  636. m_nComboStopMode = (int)a_pImageScanParam->GetStopMode();
  637. m_lEditStopTime = a_pImageScanParam->GetStopParamMeasTime();
  638. m_lEditFieldNum = a_pImageScanParam->GetStopParamFields();
  639. m_lEditIncANum = a_pImageScanParam->GetStopParamParticles();
  640. m_nComboFetchMode = (int)a_pImageScanParam->GetStartImageMode();
  641. m_nComboScanSpeed = (int)a_pImageScanParam->GetScanImageSpeed();
  642. m_nComboImageSize = (int)a_pImageScanParam->GetImagePixelSize();
  643. LogInfoTrace(__FILE__, __LINE__, _T("SetImageScanParamControlData: set image scan param to dlg control."));
  644. // send control data to dialog
  645. UpdateData(FALSE);
  646. }
  647. void CDlgProgMgrInfo::SetImageProcParamControlData(COTSImageProcessParamPtr a_pImageProcParam)
  648. {
  649. // safety check
  650. ASSERT(a_pImageProcParam);
  651. if (!a_pImageProcParam)
  652. {
  653. LogErrorTrace(__FILE__, __LINE__, _T("SetImageProcParamControlData: invalid ImageProcParam pointer"));
  654. return;
  655. }
  656. m_dEditAreaMin = a_pImageProcParam->GetIncArea().GetStart();
  657. m_dEditAreaMax = a_pImageProcParam->GetIncArea().GetEnd();
  658. m_cEditBackMin = (BYTE)a_pImageProcParam->GetBGGray().GetStart();
  659. m_cEditBackMax = (BYTE)a_pImageProcParam->GetBGGray().GetEnd();
  660. m_cEditPartMin = (BYTE)a_pImageProcParam->GetParticleGray().GetStart();
  661. m_cEditPartMax = (BYTE)a_pImageProcParam->GetParticleGray().GetEnd();
  662. LogInfoTrace(__FILE__, __LINE__, _T("SetImageProcParamControlData: set image process param to dlg control."));
  663. // send control data to dialog
  664. UpdateData(FALSE);
  665. }
  666. void CDlgProgMgrInfo::SetXRayParamControlData(COTSXRayParamPtr a_pXRayParam)
  667. {
  668. // safety check
  669. ASSERT(a_pXRayParam);
  670. if (!a_pXRayParam)
  671. {
  672. LogErrorTrace(__FILE__, __LINE__, _T("SetXRayParamControlData: invalid XRayParam pointer"));
  673. return;
  674. }
  675. for (int i = (int)OTS_X_RAY_SCAN_MODE::MIN; i <= (int)OTS_X_RAY_SCAN_MODE::MAX; ++i)
  676. {
  677. CString strItem = COTSProgMgr::GetXRayScanModeIdString((OTS_X_RAY_SCAN_MODE)i);
  678. m_ctrlComboSearchMode.AddString(strItem);
  679. }
  680. for (int i = (int)OTS_THREE_TIES_OPTIONS::MIN; i <= (int)OTS_THREE_TIES_OPTIONS::MAX; ++i)
  681. {
  682. CString strItem = COTSProgMgr::GetXRaySearchSpeedIdString((OTS_THREE_TIES_OPTIONS)i);
  683. m_ctrlComboSearchSpeed.AddString(strItem);
  684. }
  685. for (int i = (int)OTS_THREE_TIES_OPTIONS::MIN; i <= (int)OTS_THREE_TIES_OPTIONS::MAX; ++i)
  686. {
  687. CString strItem = COTSProgMgr::GetXRayAnalySpeedIdString((OTS_THREE_TIES_OPTIONS)i);
  688. m_ctrlComboAnalySpeed.AddString(strItem);
  689. }
  690. // set control data with the stage info
  691. m_nComboScanSpeed = (int)a_pXRayParam->GetScanMode();
  692. m_lEditSearchCount = a_pXRayParam->GetXRaySearchCount();
  693. m_nComboSearchMode = (int)a_pXRayParam->GetSearchSpeed();
  694. m_nComboAnalySpeed = (int)a_pXRayParam->GetAnalySpeed();
  695. m_lEditAnalyCount = (int)a_pXRayParam->GetAnalyExpCount();
  696. LogInfoTrace(__FILE__, __LINE__, _T("SetXRayParamControlData: set x ray param to dlg control."));
  697. // send control data to dialog
  698. UpdateData(FALSE);
  699. }
  700. void CDlgProgMgrInfo::UpdateStageData(BOOL a_bUpdateData /*= TRUE*/)
  701. {
  702. // get control data from dialog
  703. if (a_bUpdateData)
  704. {
  705. UpdateData();
  706. }
  707. // create a stage data with dialog parameters
  708. CSEMStageDataPtr pOTSStageData(new CSEMStageData());
  709. pOTSStageData->SetScanFieldSize100(m_nEditScreenWidth);
  710. pOTSStageData->SetXAxisDir((OTS_X_AXIS_DIRECTION)m_nComboXAxisDirection);
  711. CIntRangePtr pTemp = CIntRangePtr(new CIntRange(m_lEditXAxisStart, m_lEditXAxisEnd));
  712. pOTSStageData->SetXAxis(pTemp);
  713. pOTSStageData->SetYAxisDir((OTS_Y_AXIS_DIRECTION)m_nComboYAxisDirection);
  714. pTemp->SetStart(m_lEditYAxisStart);
  715. pTemp->SetEnd(m_lEditYAxisEnd);
  716. pOTSStageData->SetYAxis(pTemp);
  717. m_pStageData = pOTSStageData;
  718. LogInfoTrace(__FILE__, __LINE__, _T("UpdateStageData: get SEM stage data from dlg control."));
  719. }
  720. void CDlgProgMgrInfo::UpdateGenParam(BOOL a_bUpdateData /*= TRUE*/)
  721. {
  722. // get control data from dialog
  723. if (a_bUpdateData)
  724. {
  725. UpdateData();
  726. }
  727. // create a stage data with dialog parameters
  728. COTSGeneralParametersPtr pGenParam(new COTSGeneralParameters());
  729. pGenParam->SetMeasurementSwitch(m_bCheckMeasSwitch);
  730. pGenParam->SetMsrParamFileFolderName(m_sEditParamFilePath);
  731. pGenParam->SetPartSTDLibFolderName(m_sEditSTDLibPath);
  732. pGenParam->SetSampleName(m_sEditSampleAutoName);
  733. //pGenParam->SetPartSTDLibName(m_sEditSTDLibName);
  734. m_pGenParam = pGenParam;
  735. m_sParamFileName = m_sEditParamFileName;
  736. LogInfoTrace(__FILE__, __LINE__, _T("UpdateStageData: get SEM stage data from dlg control."));
  737. }
  738. void CDlgProgMgrInfo::UpdateImageScanParam(BOOL a_bUpdateData /*= TRUE*/)
  739. {
  740. // get control data from dialog
  741. if (a_bUpdateData)
  742. {
  743. UpdateData();
  744. }
  745. // create a stage data with dialog parameters
  746. COTSImageScanParamPtr pImageScanParam(new COTSImageScanParam());
  747. pImageScanParam->SetStopMode((OTS_MEASURE_STOP_MODE)m_nComboStopMode);
  748. pImageScanParam->SetStopParamMeasTime(m_lEditStopTime);
  749. pImageScanParam->SetStopParamFields(m_lEditFieldNum);
  750. pImageScanParam->SetStopParamParticles(m_lEditIncANum);
  751. pImageScanParam->SetStartImageMode((OTS_GET_IMAGE_MODE)m_nComboFetchMode);
  752. pImageScanParam->SetScanImageSpeed((OTS_THREE_TIES_OPTIONS)m_nComboScanSpeed);
  753. pImageScanParam->SetImagePixelSize((OTS_FIVE_TIES_OPTIONS)m_nComboImageSize);
  754. m_pImageScanParam = pImageScanParam;
  755. LogInfoTrace(__FILE__, __LINE__, _T("UpdateImageScanParam: get image scan param from dlg control."));
  756. }
  757. void CDlgProgMgrInfo::UpdateImageProcParam(BOOL a_bUpdateData /*= TRUE*/)
  758. {
  759. // get control data from dialog
  760. if (a_bUpdateData)
  761. {
  762. UpdateData();
  763. }
  764. COTSImageProcessParamPtr pImageProcParam(new COTSImageProcessParam());
  765. CDoubleRange odTemp(m_dEditAreaMin, m_dEditAreaMax);
  766. pImageProcParam->SetIncArea(odTemp);
  767. odTemp.SetStart(m_cEditBackMin);
  768. odTemp.SetEnd(m_cEditBackMax);
  769. CIntRange onTemp(m_cEditPartMin, m_cEditPartMax);
  770. pImageProcParam->SetBGGray(onTemp);
  771. onTemp.SetStart(m_cEditPartMin);
  772. onTemp.SetEnd(m_cEditPartMax);
  773. pImageProcParam->SetParticleGray(onTemp);
  774. m_pImageProcParam = pImageProcParam;
  775. LogInfoTrace(__FILE__, __LINE__, _T("UpdateImageProcParam: get image proc param from dlg control."));
  776. }
  777. void CDlgProgMgrInfo::UpdateXRayParam(BOOL a_bUpdateData /*= TRUE*/)
  778. {
  779. // get control data from dialog
  780. if (a_bUpdateData)
  781. {
  782. UpdateData();
  783. }
  784. COTSXRayParamPtr pXRayParam(new COTSXRayParam());
  785. pXRayParam->SetSearchSpeed((OTS_THREE_TIES_OPTIONS)m_nComboSearchSpeed);
  786. pXRayParam->SetXRaySearchCount(m_lEditSearchCount);
  787. pXRayParam->SetScanMode((OTS_X_RAY_SCAN_MODE)m_nComboSearchMode);
  788. pXRayParam->SetAnalySpeed((OTS_THREE_TIES_OPTIONS)m_nComboAnalySpeed);
  789. pXRayParam->SetAnalyExpCount(m_lEditAnalyCount);
  790. m_pXRayParam = pXRayParam;
  791. LogInfoTrace(__FILE__, __LINE__, _T("UpdateImageProcParam: get x ray param from dlg control."));
  792. }
  793. void CDlgProgMgrInfo::UpdateStage(BOOL a_bUpdateData /*= TRUE*/)
  794. {
  795. // get control data from dialog
  796. if (a_bUpdateData)
  797. {
  798. UpdateData();
  799. }
  800. //set control data to stageCombo
  801. m_pStageFile->SetWorkingStageId(m_nComboStage);
  802. m_pStageFile->SetModify();
  803. LogInfoTrace(__FILE__, __LINE__, _T("UpdateImageProcParam: get x ray param from dlg control."));
  804. }
  805. // set stage data
  806. void CDlgProgMgrInfo::SetStageData(CSEMStageDataPtr a_pCSEMStageData)
  807. {
  808. // safety check
  809. ASSERT(a_pCSEMStageData);
  810. if (!a_pCSEMStageData)
  811. {
  812. LogErrorTrace(__FILE__, __LINE__, _T("SetStageData: invalid stage data pointer"));
  813. return;
  814. }
  815. m_pStageData = a_pCSEMStageData;
  816. LogInfoTrace(__FILE__, __LINE__, _T("SetStageData: set SEM stage data."));
  817. }
  818. void CDlgProgMgrInfo::SetParamFileName(CString a_sParamFileName)
  819. {
  820. m_sParamFileName = a_sParamFileName;
  821. LogInfoTrace(__FILE__, __LINE__, _T("SetParamFilePath: set param file path is %s."), m_sParamFileName);
  822. }
  823. void CDlgProgMgrInfo::SetGenParam(COTSGeneralParametersPtr a_pGenParam)
  824. {
  825. // safety check
  826. ASSERT(a_pGenParam);
  827. if (!a_pGenParam)
  828. {
  829. LogErrorTrace(__FILE__, __LINE__, _T("SetGenParam: invalid GenParam pointer"));
  830. return;
  831. }
  832. m_pGenParam = a_pGenParam;
  833. LogInfoTrace(__FILE__, __LINE__, _T("SetGenParam: set general param data."));
  834. }
  835. void CDlgProgMgrInfo::SetImageScanParam(COTSImageScanParamPtr a_pImageScanParam)
  836. {
  837. // safety check
  838. ASSERT(a_pImageScanParam);
  839. if (!a_pImageScanParam)
  840. {
  841. LogErrorTrace(__FILE__, __LINE__, _T("SetImageScanParam: invalid ImageScanParam pointer"));
  842. return;
  843. }
  844. m_pImageScanParam = a_pImageScanParam;
  845. LogInfoTrace(__FILE__, __LINE__, _T("SetImageScanParam: set image scan param data."));
  846. }
  847. void CDlgProgMgrInfo::SetImageProcParam(COTSImageProcessParamPtr a_pImageProcParam)
  848. {
  849. // safety check
  850. ASSERT(a_pImageProcParam);
  851. if (!a_pImageProcParam)
  852. {
  853. LogErrorTrace(__FILE__, __LINE__, _T("SetImageProcParam: invalid ImageProcParam pointer"));
  854. return;
  855. }
  856. m_pImageProcParam = a_pImageProcParam;
  857. LogInfoTrace(__FILE__, __LINE__, _T("SetImageScanParam: set image scan param data."));
  858. }
  859. void CDlgProgMgrInfo::SetXRayParam(COTSXRayParamPtr a_pXRayParam)
  860. {
  861. // safety check
  862. ASSERT(a_pXRayParam);
  863. if (!a_pXRayParam)
  864. {
  865. LogErrorTrace(__FILE__, __LINE__, _T("SetXRayParam: invalid XRayParam pointer"));
  866. return;
  867. }
  868. m_pXRayParam = a_pXRayParam;
  869. LogInfoTrace(__FILE__, __LINE__, _T("SetXRayParam: set x ray param data."));
  870. }
  871. }