BondMatrixProgramPage.h 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. #pragma once
  2. #include <QWidget>
  3. #include "ui_BondMatrixProgramPage.h"
  4. #include "CViewInterface.h"
  5. #include "CModule.h"
  6. #include <QGroupBox>
  7. #include <QLineEdit>
  8. #include <QLabel>
  9. #include <QPushButton>
  10. #include <QHBoxLayout>
  11. #include <QVBoxLayout>
  12. #include <algorithm>
  13. class BondMatrixProgramPage : public QWidget
  14. {
  15. Q_OBJECT
  16. public:
  17. BondMatrixProgramPage(QWidget* parent = nullptr);
  18. ~BondMatrixProgramPage();
  19. private:
  20. void Init();
  21. void ConnectFun();
  22. //新增矩阵界面
  23. //void AddMatrixPage(int bondMatrixVectorIndex, int vectorIndex, PROGRAM_POINT_MATRIX_STRUCT matrixData);
  24. void AddOutMatrixPage(int vectorIndex, PROGRAM_BOND_MATRIX_STRUCT matrixData, std::vector<PROGRAM_POINT_MATRIX_STRUCT> vecSubMatrix);
  25. void AddMatrixPage(int vectorIndex, int subVectorIndex, PROGRAM_POINT_MATRIX_STRUCT matrixData, QGridLayout* layout);
  26. //void AddOutMatrixPage(int vectorIndex, PROGRAM_BOND_MATRIX_STRUCT matrixData);
  27. XY_DOUBLE_STRUCT BondGetAxisPosition(std::string ModuleType, XY_DOUBLE_STRUCT& pos);
  28. XY_DOUBLE_STRUCT BondMoveToXYAxisPosition(std::string ModuleType, XY_DOUBLE_STRUCT& pos);
  29. //往后端新增矩阵数据
  30. void AddMatrixParam();
  31. //更新参数,根据选择的点更新界面参数显示
  32. void UpdatePageParam();
  33. //更新取/固晶参数,根据选择的点更新界面参数显示
  34. void UpdatePagePickPlaceParam();
  35. //参数被修改后发送给后端
  36. void ParamChangeEvent();
  37. int BondInfoParamSaveAsEvent();
  38. int ParamSaveAsEvent(ns_db::PICKBOND_PARAM_STRUCT &m_curWaferPickParam);
  39. //参数被修改后发送给后端
  40. void MatrixChangeEvent();
  41. //更新取晶参数
  42. void UpdatePagePick1Param();
  43. void UpdatePagePick2Param();
  44. //更新固晶参数
  45. void UpdatePageBond1Param();
  46. void UpdatePageBond2Param();
  47. void initPage();
  48. // 同步相同 iId 的参数
  49. void syncParamWithSameId(ns_db::PICKBOND_PARAM_STRUCT& currentParam, ns_db::PICKBOND_PARAM_STRUCT& targetParam, QWidget* targetWidget);
  50. // 初始化取晶控件连接
  51. void connectWaferPickControls(); // 华夫盒取晶
  52. void connectCalibPickControls(); // 中转台取晶
  53. // 初始化放晶控件连接
  54. void connectCalibPlaceControls();
  55. void connectBondControls();
  56. void ShowCurrentMatrix(int bondMatrixId);
  57. bool canDeleteBondInfo(int selectedBondInfoId);
  58. void updateDeleteButtonStatus(bool canDelete, QPushButton* deleteButton);
  59. void updateFourParamDeleteButtonStatus();
  60. int canDeleteParameter(int selectedId);
  61. bool deleteParameter(QPushButton* deleteButton, int selectedId);
  62. void BondMatrixProgramPage::restoreDefaultStyles(QList<QWidget*> widgets);
  63. void restoreBondInfoDefaultStyles();
  64. void restorePick1DefaultStyles();
  65. void restorePick2DefaultStyles();
  66. void restorePlace1DefaultStyles();
  67. void restorePlccle2DefaultStyles();
  68. protected:
  69. bool eventFilter(QObject* watched, QEvent* event) override;
  70. private slots:
  71. void UpdateTemplateParamCombox(int DeleteOrAdd, UINT StrategyTempleteID);
  72. void onSaveClickedToRefreshStyle();
  73. void onNoBondPtsClicked(QLineEdit* lineEdit, int index, int parentIndex);
  74. void UpdateShowBondInfoData(UINT iInfoId);
  75. void onComboBoxCurrentMatrixChanged(int index); // 切换矩阵
  76. void onComboBoxIndexChangedForMatrixParam(int index);
  77. void onComboBoxIndexChangedForParam(int index);
  78. void onComboBoxPopupBondInfo(QComboBox* comboBox);
  79. //DeleteBondInfo
  80. void onPushButtonDeleteParamClicked();
  81. //DeleteParam
  82. void onPushButtonDeleteClicked(QPushButton* deleteButton, QComboBox* comboBox);//通用
  83. /*void on_pushButtonDeletePick1_clicked(QPushButton* deleteButton, QComboBox* comboBox);
  84. void on_pushButtonDeletePick2_clicked(QPushButton* deleteButton, QComboBox* comboBox);
  85. void on_pushButtonDeletePlace1_clicked(QPushButton* deleteButton, QComboBox* comboBox);
  86. void on_pushButtonDeletePlace2_clicked(QPushButton* deleteButton, QComboBox* comboBox);*/
  87. void handlePickPRCheckBox(bool isChecked);
  88. void handlePreBondPRCheckBox(bool isChecked);
  89. void handlePostBondPRCheckBox(bool isChecked);
  90. void handleAllBondAlnCheckBox(bool isChecked);
  91. void handlePcbAlnCheckBox(bool isChecked);
  92. void handleLookUpPRCheckBox(bool isChecked);
  93. void handleCalibPickCheckBox(bool isChecked);
  94. //ModifyParam
  95. void onSetParamPickTempClicked();
  96. void onSetParamPreBondClicked();
  97. void onSetParamPostBondClicked();
  98. void onSetParamBondClicked();
  99. void onSetParamLookUpClicked();
  100. void onSetParamCalibPickClicked();
  101. void onSetParamPcbAlnPRStrategyClicked();
  102. //CreateParam
  103. void onCreateParamPickTempClicked();
  104. void onCreateParamPreBondClicked();
  105. void onCreateParamPostBondClicked();
  106. void onCreateParamBondClicked();
  107. void onCreateParamLookUpClicked();
  108. void onCreateParamCalibPickClicked();
  109. void onCreatParamPcbAlnPRStrategyClicked();
  110. // ——— 取晶槽函数 ———
  111. // 取晶头取晶
  112. void onCheckBoxPickBlockCheckClicked(bool);
  113. void onCheckBoxPickLoseCheckClicked(bool);
  114. void onCheckBoxPickFindForceCheckClicked(bool);
  115. void onDoubleSpinBoxPrePickZEditingFinished();
  116. void onDoubleSpinBoxPickForceEditingFinished();
  117. void onDoubleSpinBoxPickPosZEditingFinished();
  118. void onSpinBoxPickGrabDelayEditingFinished();
  119. void onSpinBoxPickDelayEditingFinished();
  120. void onSpinBoxPickBlockCheckDelayEditingFinished();
  121. void onSpinBoxPickVacDelayEditingFinished();
  122. void onSpinBoxPickBlowDelayEditingFinished();
  123. // 中转台取晶
  124. void onCheckBoxPickBlockCheck_2Clicked(bool);
  125. void onCheckBoxPickLoseCheck_2Clicked(bool);
  126. void onCheckBoxPickFindForceCheck_2Clicked(bool);
  127. void onDoubleSpinBoxPrePickZ_2EditingFinished();
  128. void onDoubleSpinBoxPickForce_2EditingFinished();
  129. void onDoubleSpinBoxPickPosZ_2EditingFinished();
  130. void onSpinBoxPickGrabDelay_2EditingFinished();
  131. void onSpinBoxPickDelay_2EditingFinished();
  132. void onSpinBoxPickBlockCheckDelay_2EditingFinished();
  133. void onSpinBoxPickVacDelay_2EditingFinished();
  134. void onSpinBoxPickBlowDelay_2EditingFinished();
  135. // "中转台放晶" 控件的槽函数
  136. void onCheckBoxBondBlockCheckClicked(bool isChecked);
  137. void onCheckBoxBondLoseCheckClicked(bool isChecked);
  138. void onCheckBoxBondFindForceClicked(bool isChecked);
  139. void onDoubleSpinBoxPreBondPosZEditingFinished();
  140. void onDoubleSpinBoxBondForceEditingFinished();
  141. void onDoubleSpinBoxBondPosZEditingFinished();
  142. void onSpinBoxBondGrabDelayEditingFinished();
  143. void onSpinBoxBondBlockCheckDelayEditingFinished();
  144. void onSpinBoxBondDelayEditingFinished();
  145. void onSpinBoxBondVacDelayEditingFinished();
  146. void onSpinBoxBondBlowDelayEditingFinished();
  147. // "固晶台固晶" 控件的槽函数
  148. void onCheckBoxBondBlockCheck_2Clicked(bool isChecked);
  149. void onCheckBoxBondLoseCheck_2Clicked(bool isChecked);
  150. void onCheckBoxBondFindForce_2Clicked(bool isChecked);
  151. void onDoubleSpinBoxPreBondPosZ_2EditingFinished();
  152. void onDoubleSpinBoxBondForce_2EditingFinished();
  153. void onDoubleSpinBoxBondPosZ_2EditingFinished();
  154. void onSpinBoxBondGrabDelay_2EditingFinished();
  155. void onSpinBoxBondBlockCheckDelay_2EditingFinished();
  156. void onSpinBoxBondDelay_2EditingFinished();
  157. void onSpinBoxBondVacDelay_2EditingFinished();
  158. void onSpinBoxBondBlowDelay_2EditingFinished();
  159. private:
  160. Ui::BondMatrixProgramPageClass ui;
  161. CManageDB* m_manageDB = nullptr;
  162. CProduct* m_pProduct = nullptr;
  163. ns_mat::TipMatrix* m_TipMatrix = nullptr;
  164. std::vector<ns_db::PR_STRATEGY> m_vecPrStrategy;
  165. std::vector<ns_db::PR_TEMPLATE> m_vecPrTemplate;
  166. std::vector<ns_db::PR_BONDINSP> m_vecPrBondInsp;
  167. vector<int> m_vecNozzles;
  168. //当前界面显示的参数
  169. ns_db::BOND_INFO_STRUCT m_curBondInfo;
  170. ns_db::BOND_INFO_STRUCT m_tempBondInfo;
  171. ns_db::PICKBOND_PARAM_STRUCT m_curWaferPickParam;//取晶头取晶
  172. ns_db::PICKBOND_PARAM_STRUCT m_curCalibPlaceParam;//中转台固晶
  173. ns_db::PICKBOND_PARAM_STRUCT m_curCalibPickParam;//中转台取晶
  174. ns_db::PICKBOND_PARAM_STRUCT m_curBondParam;//固晶台固晶
  175. ns_db::PICKBOND_PARAM_STRUCT m_tempWaferPickParam;//取晶头取晶
  176. ns_db::PICKBOND_PARAM_STRUCT m_tempCalibPlaceParam;//中转台固晶
  177. ns_db::PICKBOND_PARAM_STRUCT m_tempCalibPickParam;//中转台取晶
  178. ns_db::PICKBOND_PARAM_STRUCT m_tempBondParam;//固晶台固晶
  179. ns_mat::POINT_INFO_STRUCT m_curPointInfo;
  180. ns_module::CViewInterface* m_pProgramCViewInterface = nullptr;
  181. std::vector<ns_db::PICKBOND_PARAM_STRUCT> m_vecParam;
  182. std::vector<ns_db::PROGRAM_BOND_MATRIX_STRUCT> m_vectBondMatrixs;
  183. std::vector<ns_db::PROGRAM_BOND_MATRIX_STRUCT> m_TempVectBondMatrixs;
  184. std::vector<ns_db::PROGRAM_POINT_MATRIX_STRUCT> m_vecSubMatrixs;
  185. std::vector<ns_db::PROGRAM_POINT_MATRIX_STRUCT> m_TempVecSubMatrixs;
  186. std::vector<BOND_INFO_STRUCT> m_vecBondInfoData;
  187. //子矩阵控件,ID从1开始
  188. QMap<int, QVector<QObject*>> m_mapSubMatrixControls;
  189. int m_curPtIndex = 0;
  190. // 新增字段: 用于管理大矩阵与子矩阵的关系
  191. //QMap<int, std::vector<int>> m_mapBondMatrixToSubMatrices; // 大矩阵ID和对应子矩阵ID的映射
  192. QMap<int, std::vector<ns_db::PROGRAM_POINT_MATRIX_STRUCT>> m_mapBondMatrixToSubMatrices; // 大矩阵ID和对应子矩阵ID的映射
  193. // 用于标识当前矩阵类型(如大矩阵或子矩阵)
  194. bool m_isSubMatrix = false; // 标记是否为子矩阵
  195. QMap<QWidget*, int> m_mapOutWidgetIndex;
  196. QMap<int, QWidget*> m_mapIdOutWidget;
  197. QMap<QWidget*, int> m_mapSubWidgetIndex;
  198. QMap<int, QWidget*> m_mapIdSubWidget;
  199. //QComboBox* comboBoxParagramSet;
  200. QMap<QComboBox*, int> m_mapParagramSetComboBox;
  201. QVBoxLayout* verticalLayout_tem = new QVBoxLayout();
  202. bool m_isComBoxUpdating = false;
  203. bool m_isBondInfoParaChange = false;
  204. };