|
@@ -0,0 +1,952 @@
|
|
|
|
+#include "ProgrammPage.h"
|
|
|
|
+#include "Src/RewriteControl/Controls/SpinBox.h"
|
|
|
|
+#include "Src/RewriteControl/Controls/DoubleSpinBox.h"
|
|
|
|
+#include <QPushButton>
|
|
|
|
+
|
|
|
|
+ProgrammPage::ProgrammPage(QWidget *parent)
|
|
|
|
+ : QWidget(parent)
|
|
|
|
+{
|
|
|
|
+ ui.setupUi(this);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ ui.spinBoxRow->setVisible(false);
|
|
|
|
+ ui.spinBoxCol->setVisible(false);
|
|
|
|
+ ui.doubleSpinBoxLeftTopX->setVisible(false);
|
|
|
|
+ ui.doubleSpinBoxLeftTopY->setVisible(false);
|
|
|
|
+ ui.doubleSpinBoxRightTopX->setVisible(false);
|
|
|
|
+ ui.doubleSpinBoxRightTopY->setVisible(false);
|
|
|
|
+ ui.doubleSpinBoxRightButtomX->setVisible(false);
|
|
|
|
+ ui.doubleSpinBoxRightButtomY->setVisible(false);
|
|
|
|
+ ui.lineEditNoBondPts->setVisible(false);
|
|
|
|
+ ui.label->setVisible(false);
|
|
|
|
+ ui.label_18->setVisible(false);
|
|
|
|
+ ui.label_2->setVisible(false);
|
|
|
|
+ ui.label_79->setVisible(false);
|
|
|
|
+ ui.label_80->setVisible(false);
|
|
|
|
+ ui.label_81->setVisible(false);
|
|
|
|
+ ui.label_82->setVisible(false);
|
|
|
|
+
|
|
|
|
+ ui.frame->setFrameShape(QFrame::NoFrame); // 盧뇜칵훰움솥
|
|
|
|
+ ui.frame->setFixedHeight(2); // �零미땍멕똑
|
|
|
|
+ ui.frame->setStyleSheet("background-color: #C7CAEB;");
|
|
|
|
+
|
|
|
|
+ setStyleSheet(
|
|
|
|
+ "QDoubleSpinBox{background: #FFFFFF;border: 1px solid #BABBDC;border - radius: 6px;padding: 2px 5px;}"
|
|
|
|
+ "QSpinBox{background: #FFFFFF;border: 1px solid #BABBDC;border - radius: 6px;padding: 2px 5px;}"
|
|
|
|
+ "QLineEdit{background: #FFFFFF;border: 1px solid #BABBDC;border - radius: 6px;padding: 2px 5px;}"
|
|
|
|
+ "QCheckBox::indicator{width: 20px;height: 20px;}"
|
|
|
|
+ "QCheckBox::indicator:unchecked{background - color: #FFFFFF;border-radius: 2px;}"
|
|
|
|
+ "QComboBox{background: #FFFFFF;border: 1px solid #BABBDC;border - radius: 6px;padding: 2px 5px;}"
|
|
|
|
+ "QComboBox::drop - down{width: 20px;}"
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ ui.tab->setStyleSheet("background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #F1F4FD, stop: 1 #E5E4F6)");
|
|
|
|
+
|
|
|
|
+ m_pWaffleProgrammPage = new WaffleProgramPage(this);
|
|
|
|
+ m_manageDB = CManageDB::GetInstance();
|
|
|
|
+
|
|
|
|
+ initPage();
|
|
|
|
+
|
|
|
|
+ connect(ui.pushButtonSave, &QPushButton::clicked, this, [=] {
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ //앤黎鑒앴
|
|
|
|
+ connect(ui.spinBoxRow, &SpinBox::editingFinished, this, [=]() {
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.spinBoxCol, &SpinBox::editingFinished, this, [=]() {
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.doubleSpinBoxLeftTopX, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.doubleSpinBoxLeftTopY, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.doubleSpinBoxRightTopX, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.doubleSpinBoxRightTopY, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.doubleSpinBoxRightButtomX, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.doubleSpinBoxRightButtomY, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ //꽝鑒
|
|
|
|
+ connect(ui.comboBoxDieSource, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [=](int index) {
|
|
|
|
+ if (index == 0)
|
|
|
|
+ {
|
|
|
|
+ m_curBondInfo.eDieSource = DIE_SOURCE::BY_WAFFLE;
|
|
|
|
+ } else if (index == 1)
|
|
|
|
+ {
|
|
|
|
+ m_curBondInfo.eDieSource = DIE_SOURCE::BY_WAFER;
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.checkBoxIsCalib, &QCheckBox::clicked, this, [=](bool isChecked) {
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.spinBoxPickTempID, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ m_curBondInfo.iPickPRStrategyId = ui.spinBoxPickTempID->value();
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.spinBoxPickNozzleID, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ m_curBondInfo.iPickHeadId = ui.spinBoxPickNozzleID->value();
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.spinBoxPreBondTemp, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ m_curBondInfo.iBondFrontPRStrategyId = ui.spinBoxPreBondTemp->value();
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.spinBoxPostBondTemp, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ m_curBondInfo.iBondBackPRStrategyId = ui.spinBoxPostBondTemp->value();
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.spinBoxBondTemp, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ m_curBondInfo.iBondPRStrategyId = ui.spinBoxBondTemp->value();
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.spinBoxLookUpTemp, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ m_curBondInfo.iLookUpPRStrategyId = ui.spinBoxLookUpTemp->value();
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.spinBoxCalibPickTemp, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ m_curBondInfo.iCalibPRStrategyId = ui.spinBoxCalibPickTemp->value();
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.spinBoxBondNozzleID, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ m_curBondInfo.iBondHeadId = ui.spinBoxBondNozzleID->value();
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.doubleSpinBoxBondOffsetX, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_curBondInfo.stOffset.x = ui.doubleSpinBoxBondOffsetX->value();
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.doubleSpinBoxBondOffsetY, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_curBondInfo.stOffset.y = ui.doubleSpinBoxBondOffsetY->value();
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.doubleSpinBoxBondOffsetAngle, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_curBondInfo.stOffset.a = ui.doubleSpinBoxBondOffsetAngle->value();
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.comboBoxPickParamType, &QComboBox::currentTextChanged, this, [=]() {
|
|
|
|
+ UpdatePagePickParam();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.checkBoxPickBlockCheck, &QCheckBox::clicked, this, [=](bool isChecked) {
|
|
|
|
+
|
|
|
|
+ if (ui.comboBoxPickParamType->currentIndex() == 0)//빽뤼분
|
|
|
|
+ {
|
|
|
|
+ m_curWaferPickParam.bCheckBlock = ui.checkBoxPickBlockCheck->isChecked();
|
|
|
|
+ }
|
|
|
|
+ else if (ui.comboBoxPickParamType->currentIndex() == 1)//쑨途憩
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPickParam.bCheckBlock = ui.checkBoxPickBlockCheck->isChecked();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.checkBoxPickLoseCheck, &QCheckBox::clicked, this, [=](bool isChecked) {
|
|
|
|
+ if (ui.comboBoxPickParamType->currentIndex() == 0)//빽뤼분
|
|
|
|
+ {
|
|
|
|
+ m_curWaferPickParam.bCheckLose = ui.checkBoxPickLoseCheck->isChecked();
|
|
|
|
+ } else if (ui.comboBoxPickParamType->currentIndex() == 1)//쑨途憩
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPickParam.bCheckLose = ui.checkBoxPickLoseCheck->isChecked();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.checkBoxPickFindForceCheck, &QCheckBox::clicked, this, [=](bool isChecked) {
|
|
|
|
+ if (ui.comboBoxPickParamType->currentIndex() == 0)//빽뤼분
|
|
|
|
+ {
|
|
|
|
+ m_curWaferPickParam.bFindForce = ui.checkBoxPickFindForceCheck->isChecked();
|
|
|
|
+ } else if (ui.comboBoxPickParamType->currentIndex() == 1)//쑨途憩
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPickParam.bFindForce = ui.checkBoxPickFindForceCheck->isChecked();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.doubleSpinBoxPrePickZ, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxPickParamType->currentIndex() == 0)//빽뤼분
|
|
|
|
+ {
|
|
|
|
+ m_curWaferPickParam.dPreLev = ui.doubleSpinBoxPrePickZ->value();
|
|
|
|
+ } else if (ui.comboBoxPickParamType->currentIndex() == 1)//쑨途憩
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPickParam.dPreLev = ui.doubleSpinBoxPrePickZ->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.doubleSpinBoxPickForce, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxPickParamType->currentIndex() == 0)//빽뤼분
|
|
|
|
+ {
|
|
|
|
+ m_curWaferPickParam.dForce = ui.doubleSpinBoxPickForce->value();
|
|
|
|
+ } else if (ui.comboBoxPickParamType->currentIndex() == 1)//쑨途憩
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPickParam.dForce = ui.doubleSpinBoxPickForce->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.doubleSpinBoxPickPosZ, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxPickParamType->currentIndex() == 0)//빽뤼분
|
|
|
|
+ {
|
|
|
|
+ m_curWaferPickParam.dPickOrBondLev = ui.doubleSpinBoxPickPosZ->value();
|
|
|
|
+ } else if (ui.comboBoxPickParamType->currentIndex() == 1)//쑨途憩
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPickParam.dPickOrBondLev = ui.doubleSpinBoxPickPosZ->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.spinBoxPickGrabDelay, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxPickParamType->currentIndex() == 0)//빽뤼분
|
|
|
|
+ {
|
|
|
|
+ m_curWaferPickParam.iGrabDelay = ui.spinBoxPickGrabDelay->value();
|
|
|
|
+ } else if (ui.comboBoxPickParamType->currentIndex() == 1)//쑨途憩
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPickParam.iGrabDelay = ui.spinBoxPickGrabDelay->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.spinBox_PickDelay, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxPickParamType->currentIndex() == 0)//빽뤼분
|
|
|
|
+ {
|
|
|
|
+ m_curWaferPickParam.iPickOrBondDelay = ui.spinBox_PickDelay->value();
|
|
|
|
+ } else if (ui.comboBoxPickParamType->currentIndex() == 1)//쑨途憩
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPickParam.iPickOrBondDelay = ui.spinBox_PickDelay->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.spinBoxPickBlockCheckDelay, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxPickParamType->currentIndex() == 0)//빽뤼분
|
|
|
|
+ {
|
|
|
|
+ m_curWaferPickParam.iBlockOrLoseDelay = ui.spinBoxPickBlockCheckDelay->value();
|
|
|
|
+ } else if (ui.comboBoxPickParamType->currentIndex() == 1)//쑨途憩
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPickParam.iBlockOrLoseDelay = ui.spinBoxPickBlockCheckDelay->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.spinBoxPickVacDelay, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxPickParamType->currentIndex() == 0)//빽뤼분
|
|
|
|
+ {
|
|
|
|
+ m_curWaferPickParam.iVacuumDelay = ui.spinBoxPickVacDelay->value();
|
|
|
|
+ } else if (ui.comboBoxPickParamType->currentIndex() == 1)//쑨途憩
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPickParam.iVacuumDelay = ui.spinBoxPickVacDelay->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.spinBoxPickBlowDelay, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxPickParamType->currentIndex() == 0)//빽뤼분
|
|
|
|
+ {
|
|
|
|
+ m_curWaferPickParam.iBlowDelay = ui.spinBoxPickBlowDelay->value();
|
|
|
|
+ } else if (ui.comboBoxPickParamType->currentIndex() == 1)//쑨途憩
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPickParam.iBlowDelay = ui.spinBoxPickBlowDelay->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ connect(ui.comboBoxBondParamType, &QComboBox::currentTextChanged, this, [=]() {
|
|
|
|
+ UpdatePageBondParam();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.checkBoxBondBlockCheck, &QCheckBox::clicked, this, [=](bool isChecked) {
|
|
|
|
+ if (ui.comboBoxBondParamType->currentIndex() == 0)//櫓瘻憩렴쑨
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPlaceParam.bCheckBlock = ui.checkBoxBondBlockCheck->isChecked();
|
|
|
|
+ } else if (ui.comboBoxBondParamType->currentIndex() == 1)//미쑨憩미쑨
|
|
|
|
+ {
|
|
|
|
+ m_curBondParam.bCheckBlock = ui.checkBoxBondBlockCheck->isChecked();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.checkBoxBondLoseCheck, &QCheckBox::clicked, this, [=](bool isChecked) {
|
|
|
|
+ if (ui.comboBoxBondParamType->currentIndex() == 0)//櫓瘻憩렴쑨
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPlaceParam.bCheckLose = ui.checkBoxBondLoseCheck->isChecked();
|
|
|
|
+ } else if (ui.comboBoxBondParamType->currentIndex() == 1)//미쑨憩미쑨
|
|
|
|
+ {
|
|
|
|
+ m_curBondParam.bCheckLose = ui.checkBoxBondLoseCheck->isChecked();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.checkBoxBondFindForce, &QCheckBox::clicked, this, [=](bool isChecked) {
|
|
|
|
+ if (ui.comboBoxBondParamType->currentIndex() == 0)//櫓瘻憩렴쑨
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPlaceParam.bFindForce = ui.checkBoxBondFindForce->isChecked();
|
|
|
|
+ } else if (ui.comboBoxBondParamType->currentIndex() == 1)//미쑨憩미쑨
|
|
|
|
+ {
|
|
|
|
+ m_curBondParam.bFindForce = ui.checkBoxBondFindForce->isChecked();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.doubleSpinBoxPreBondPosZ, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxBondParamType->currentIndex() == 0)//櫓瘻憩렴쑨
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPlaceParam.dPreLev = ui.doubleSpinBoxPreBondPosZ->value();
|
|
|
|
+ } else if (ui.comboBoxBondParamType->currentIndex() == 1)//미쑨憩미쑨
|
|
|
|
+ {
|
|
|
|
+ m_curBondParam.dPreLev = ui.doubleSpinBoxPreBondPosZ->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.doubleSpinBoxBondForce, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxBondParamType->currentIndex() == 0)//櫓瘻憩렴쑨
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPlaceParam.dForce = ui.doubleSpinBoxBondForce->value();
|
|
|
|
+ } else if (ui.comboBoxBondParamType->currentIndex() == 1)//미쑨憩미쑨
|
|
|
|
+ {
|
|
|
|
+ m_curBondParam.dForce = ui.doubleSpinBoxBondForce->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(ui.doubleSpinBoxBondPosZ, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxBondParamType->currentIndex() == 0)//櫓瘻憩렴쑨
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPlaceParam.dPickOrBondLev = ui.doubleSpinBoxBondPosZ->value();
|
|
|
|
+ } else if (ui.comboBoxBondParamType->currentIndex() == 1)//미쑨憩미쑨
|
|
|
|
+ {
|
|
|
|
+ m_curBondParam.dPickOrBondLev = ui.doubleSpinBoxBondPosZ->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.spinBoxBondGrabDelay, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxBondParamType->currentIndex() == 0)//櫓瘻憩렴쑨
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPlaceParam.iGrabDelay = ui.spinBoxBondGrabDelay->value();
|
|
|
|
+ } else if (ui.comboBoxBondParamType->currentIndex() == 1)//미쑨憩미쑨
|
|
|
|
+ {
|
|
|
|
+ m_curBondParam.iGrabDelay = ui.spinBoxBondGrabDelay->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.spinBoxBondBlockCheckDelay, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxBondParamType->currentIndex() == 0)//櫓瘻憩렴쑨
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPlaceParam.iBlockOrLoseDelay = ui.spinBoxBondBlockCheckDelay->value();
|
|
|
|
+ } else if (ui.comboBoxBondParamType->currentIndex() == 1)//미쑨憩미쑨
|
|
|
|
+ {
|
|
|
|
+ m_curBondParam.iBlockOrLoseDelay = ui.spinBoxBondBlockCheckDelay->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.spinBoxBondDelay, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxBondParamType->currentIndex() == 0)//櫓瘻憩렴쑨
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPlaceParam.iPickOrBondDelay = ui.spinBoxBondDelay->value();
|
|
|
|
+ } else if (ui.comboBoxBondParamType->currentIndex() == 1)//미쑨憩미쑨
|
|
|
|
+ {
|
|
|
|
+ m_curBondParam.iPickOrBondDelay = ui.spinBoxBondDelay->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.spinBoxBondVacDelay, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxBondParamType->currentIndex() == 0)//櫓瘻憩렴쑨
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPlaceParam.iVacuumDelay = ui.spinBoxBondVacDelay->value();
|
|
|
|
+ } else if (ui.comboBoxBondParamType->currentIndex() == 1)//미쑨憩미쑨
|
|
|
|
+ {
|
|
|
|
+ m_curBondParam.iVacuumDelay = ui.spinBoxBondVacDelay->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(ui.spinBoxBondBlowDelay, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ if (ui.comboBoxBondParamType->currentIndex() == 0)//櫓瘻憩렴쑨
|
|
|
|
+ {
|
|
|
|
+ m_curCalibPlaceParam.iBlowDelay = ui.spinBoxBondBlowDelay->value();
|
|
|
|
+ } else if (ui.comboBoxBondParamType->currentIndex() == 1)//미쑨憩미쑨
|
|
|
|
+ {
|
|
|
|
+ m_curBondParam.iBlowDelay = ui.spinBoxBondBlowDelay->value();
|
|
|
|
+ }
|
|
|
|
+ ParamChangeEvent();
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+ProgrammPage::~ProgrammPage()
|
|
|
|
+{}
|
|
|
|
+
|
|
|
|
+void ProgrammPage::AddMatrixPage(int bondMatrixVectorIndex, int vectorIndex, PROGRAM_POINT_MATRIX_STRUCT matrixData)
|
|
|
|
+{
|
|
|
|
+ int matrixNum = m_mapSubMatrixControls.size();
|
|
|
|
+ int newMatrixID = ++matrixNum;
|
|
|
|
+ QVector<QObject*> vecControls;
|
|
|
|
+
|
|
|
|
+ QGridLayout* subGridLayout = new QGridLayout();
|
|
|
|
+ subGridLayout->setSpacing(6);
|
|
|
|
+ subGridLayout->setObjectName(QString::fromUtf8("subGridLayout"));
|
|
|
|
+
|
|
|
|
+ QFrame* line = new QFrame();
|
|
|
|
+ line->setFrameShape(QFrame::NoFrame); // 盧뇜칵훰움솥
|
|
|
|
+ line->setFixedHeight(2); // �零미땍멕똑
|
|
|
|
+ line->setStyleSheet("background-color: #C7CAEB;");
|
|
|
|
+ ui.verticalLayout_2->addWidget(line);
|
|
|
|
+
|
|
|
|
+ QLabel* labelTitle = new QLabel(this);
|
|
|
|
+ labelTitle->setObjectName(QString::fromUtf8("labelTitle"));
|
|
|
|
+ labelTitle->setText(tr("Sub Matrix ")+ QString::number(vectorIndex));
|
|
|
|
+ subGridLayout->addWidget(labelTitle, 0, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelTitle);
|
|
|
|
+
|
|
|
|
+ QLabel* labelRow = new QLabel(this);
|
|
|
|
+ labelRow->setObjectName(QString::fromUtf8("labelRow"));
|
|
|
|
+ labelRow->setText(tr("Row "));
|
|
|
|
+ subGridLayout->addWidget(labelRow, 1, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelRow);
|
|
|
|
+
|
|
|
|
+ SpinBox* spinBoxRow = new SpinBox(this);
|
|
|
|
+ spinBoxRow->setObjectName(QString::fromUtf8("spinBoxRow"));
|
|
|
|
+ subGridLayout->addWidget(spinBoxRow, 1, 1, 1, 1);
|
|
|
|
+ vecControls.push_back(spinBoxRow);
|
|
|
|
+
|
|
|
|
+ QLabel* labelCol = new QLabel(this);
|
|
|
|
+ labelCol->setObjectName(QString::fromUtf8("labelCol"));
|
|
|
|
+ labelCol->setText(tr("Cow "));
|
|
|
|
+ subGridLayout->addWidget(labelCol, 2, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelCol);
|
|
|
|
+
|
|
|
|
+ SpinBox* spinBoxCol = new SpinBox(this);
|
|
|
|
+ spinBoxCol->setObjectName(QString::fromUtf8("spinBoxCol"));
|
|
|
|
+ subGridLayout->addWidget(spinBoxCol, 2, 1, 1, 1);
|
|
|
|
+ vecControls.push_back(spinBoxCol);
|
|
|
|
+
|
|
|
|
+ QLabel* labelLeftTop = new QLabel(this);
|
|
|
|
+ labelLeftTop->setObjectName(QString::fromUtf8("labelLeftTop"));
|
|
|
|
+ labelLeftTop->setText(tr("Left Top Pos "));
|
|
|
|
+ subGridLayout->addWidget(labelLeftTop, 4, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelLeftTop);
|
|
|
|
+
|
|
|
|
+ DoubleSpinBox* doubleSpinBoxLeftTopX = new DoubleSpinBox(this);
|
|
|
|
+ doubleSpinBoxLeftTopX->setObjectName(QString::fromUtf8("doubleSpinBoxLeftTopX"));
|
|
|
|
+ subGridLayout->addWidget(doubleSpinBoxLeftTopX, 4, 1, 1, 1);
|
|
|
|
+ vecControls.push_back(doubleSpinBoxLeftTopX);
|
|
|
|
+
|
|
|
|
+ DoubleSpinBox* doubleSpinBoxLeftTopY = new DoubleSpinBox(this);
|
|
|
|
+ doubleSpinBoxLeftTopY->setObjectName(QString::fromUtf8("doubleSpinBoxLeftTopY"));
|
|
|
|
+ subGridLayout->addWidget(doubleSpinBoxLeftTopY, 4, 2, 1, 1);
|
|
|
|
+ vecControls.push_back(doubleSpinBoxLeftTopY);
|
|
|
|
+
|
|
|
|
+ QLabel* labelRightTopPos = new QLabel(this);
|
|
|
|
+ labelRightTopPos->setObjectName(QString::fromUtf8("labelRightTopPos"));
|
|
|
|
+ labelRightTopPos->setText(tr("Right Top Pos "));
|
|
|
|
+ subGridLayout->addWidget(labelRightTopPos, 5, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelRightTopPos);
|
|
|
|
+
|
|
|
|
+ DoubleSpinBox* doubleSpinBoxRightTopX = new DoubleSpinBox(this);
|
|
|
|
+ doubleSpinBoxRightTopX->setObjectName(QString::fromUtf8("doubleSpinBoxRightTopX"));
|
|
|
|
+ subGridLayout->addWidget(doubleSpinBoxRightTopX, 5, 1, 1, 1);
|
|
|
|
+ vecControls.push_back(doubleSpinBoxRightTopX);
|
|
|
|
+
|
|
|
|
+ DoubleSpinBox* doubleSpinBoxRightTopY = new DoubleSpinBox(this);
|
|
|
|
+ doubleSpinBoxRightTopY->setObjectName(QString::fromUtf8("doubleSpinBoxRightTopY"));
|
|
|
|
+ subGridLayout->addWidget(doubleSpinBoxRightTopY, 5, 2, 1, 1);
|
|
|
|
+ vecControls.push_back(doubleSpinBoxRightTopY);
|
|
|
|
+
|
|
|
|
+ QLabel* labelRightButtomPos = new QLabel(this);
|
|
|
|
+ labelRightButtomPos->setObjectName(QString::fromUtf8("labelRightButtomPos"));
|
|
|
|
+ labelRightButtomPos->setText(tr("Right Buttom pos"));
|
|
|
|
+ subGridLayout->addWidget(labelRightButtomPos, 6, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelRightButtomPos);
|
|
|
|
+
|
|
|
|
+ DoubleSpinBox* doubleSpinBoxRightButtomX = new DoubleSpinBox(this);
|
|
|
|
+ doubleSpinBoxRightButtomX->setObjectName(QString::fromUtf8("doubleSpinBoxRightButtomX"));
|
|
|
|
+ subGridLayout->addWidget(doubleSpinBoxRightButtomX, 6, 1, 1, 1);
|
|
|
|
+ vecControls.push_back(doubleSpinBoxRightButtomX);
|
|
|
|
+
|
|
|
|
+ DoubleSpinBox* doubleSpinBoxRightButtomY = new DoubleSpinBox(this);
|
|
|
|
+ doubleSpinBoxRightButtomY->setObjectName(QString::fromUtf8("doubleSpinBoxRightButtomY"));
|
|
|
|
+ subGridLayout->addWidget(doubleSpinBoxRightButtomY, 6, 2, 1, 1);
|
|
|
|
+ vecControls.push_back(doubleSpinBoxRightTopX);
|
|
|
|
+
|
|
|
|
+ QLabel* labelNoBondPts = new QLabel(this);
|
|
|
|
+ labelNoBondPts->setObjectName(QString::fromUtf8("labelNoBondPts"));
|
|
|
|
+ labelNoBondPts->setText(tr("No Bond Points"));
|
|
|
|
+ subGridLayout->addWidget(labelNoBondPts, 7, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelNoBondPts);
|
|
|
|
+
|
|
|
|
+ QLineEdit* lineEditNoBondPts = new QLineEdit(this);
|
|
|
|
+ lineEditNoBondPts->setObjectName(QString::fromUtf8("lineEditNoBondPts"));
|
|
|
|
+ subGridLayout->addWidget(lineEditNoBondPts, 7, 1, 1, 2);
|
|
|
|
+ vecControls.push_back(lineEditNoBondPts);
|
|
|
|
+
|
|
|
|
+ m_mapSubMatrixControls.insert(newMatrixID, vecControls);
|
|
|
|
+
|
|
|
|
+ ui.verticalLayout_2->addLayout(subGridLayout);
|
|
|
|
+
|
|
|
|
+ spinBoxRow->setValue(matrixData.MatrixRow);
|
|
|
|
+ spinBoxCol->setValue(matrixData.MatrixCol);
|
|
|
|
+ doubleSpinBoxLeftTopX->setValue(matrixData.LeftTopPoint.x);
|
|
|
|
+ doubleSpinBoxLeftTopY->setValue(matrixData.LeftTopPoint.y);
|
|
|
|
+ doubleSpinBoxRightTopX->setValue(matrixData.RightTopPoint.x);
|
|
|
|
+ doubleSpinBoxRightTopY->setValue(matrixData.RightTopPoint.y);
|
|
|
|
+ doubleSpinBoxRightButtomX->setValue(matrixData.RightBottomPoint.x);
|
|
|
|
+ doubleSpinBoxRightButtomY->setValue(matrixData.RightBottomPoint.y);
|
|
|
|
+
|
|
|
|
+ QString noBondPts = "";
|
|
|
|
+ bool firstTime = false;
|
|
|
|
+ for (XY_LONG_STRUCT pt : matrixData.VecNoBondPt)
|
|
|
|
+ {
|
|
|
|
+ if (!firstTime)
|
|
|
|
+ {
|
|
|
|
+ noBondPts += "(" + QString::number(pt.x) + "," + QString::number(pt.y) + ")";
|
|
|
|
+ firstTime = true;
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ noBondPts += ";(" + QString::number(pt.x) + "," + QString::number(pt.y) + ")";
|
|
|
|
+ }
|
|
|
|
+ lineEditNoBondPts->setText(noBondPts);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ connect(spinBoxRow, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vecSubMatrixs[vectorIndex].MatrixRow = spinBoxRow->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(spinBoxCol, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vecSubMatrixs[vectorIndex].MatrixCol = spinBoxCol->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(doubleSpinBoxLeftTopX, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vecSubMatrixs[vectorIndex].LeftTopPoint.x = doubleSpinBoxLeftTopX->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(doubleSpinBoxLeftTopY, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vecSubMatrixs[vectorIndex].LeftTopPoint.y = doubleSpinBoxLeftTopY->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(doubleSpinBoxRightTopX, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vecSubMatrixs[vectorIndex].RightTopPoint.x = doubleSpinBoxRightTopX->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(doubleSpinBoxRightTopY, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vecSubMatrixs[vectorIndex].RightTopPoint.y = doubleSpinBoxRightTopY->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(doubleSpinBoxRightButtomX, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vecSubMatrixs[vectorIndex].RightBottomPoint.x = doubleSpinBoxRightButtomX->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(doubleSpinBoxRightButtomY, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vecSubMatrixs[vectorIndex].RightBottomPoint.y = doubleSpinBoxRightButtomY->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ connect(lineEditNoBondPts, &QLineEdit::textChanged, this, [=]() {
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void ProgrammPage::AddOutMatrixPage(int vectorIndex, PROGRAM_BOND_MATRIX_STRUCT matrixData)
|
|
|
|
+{
|
|
|
|
+ int matrixNum = m_mapSubMatrixControls.size();
|
|
|
|
+ int newMatrixID = ++matrixNum;
|
|
|
|
+ QVector<QObject*> vecControls;
|
|
|
|
+
|
|
|
|
+ QFrame* line = new QFrame();
|
|
|
|
+ line->setFrameShape(QFrame::NoFrame); // 盧뇜칵훰움솥
|
|
|
|
+ line->setFixedHeight(4); // �零미땍멕똑
|
|
|
|
+ line->setStyleSheet("background-color: #C7CAEB;");
|
|
|
|
+
|
|
|
|
+ ui.verticalLayout_2->addWidget(line);
|
|
|
|
+
|
|
|
|
+ QGridLayout* matrixGridLayout = new QGridLayout();
|
|
|
|
+ matrixGridLayout->setSpacing(6);
|
|
|
|
+ matrixGridLayout->setObjectName(QString::fromUtf8("matrixGridLayout"));
|
|
|
|
+
|
|
|
|
+ QLabel* labelTitle = new QLabel(this);
|
|
|
|
+ labelTitle->setObjectName(QString::fromUtf8("labelRow"));
|
|
|
|
+ labelTitle->setText(tr("Matrix_")+ QString::number(vectorIndex));
|
|
|
|
+ matrixGridLayout->addWidget(labelTitle, 0, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelTitle);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ QLabel* labelRow = new QLabel(this);
|
|
|
|
+ labelRow->setObjectName(QString::fromUtf8("labelRow"));
|
|
|
|
+ labelRow->setText(tr("Row "));
|
|
|
|
+ matrixGridLayout->addWidget(labelRow, 1, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelRow);
|
|
|
|
+
|
|
|
|
+ SpinBox* spinBoxRow = new SpinBox(this);
|
|
|
|
+ spinBoxRow->setObjectName(QString::fromUtf8("spinBoxRow"));
|
|
|
|
+ matrixGridLayout->addWidget(spinBoxRow, 1, 1, 1, 1);
|
|
|
|
+ vecControls.push_back(spinBoxRow);
|
|
|
|
+
|
|
|
|
+ QLabel* labelCol = new QLabel(this);
|
|
|
|
+ labelCol->setObjectName(QString::fromUtf8("labelCol"));
|
|
|
|
+ labelCol->setText(tr("Cow "));
|
|
|
|
+ matrixGridLayout->addWidget(labelCol, 2, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelCol);
|
|
|
|
+
|
|
|
|
+ SpinBox* spinBoxCol = new SpinBox(this);
|
|
|
|
+ spinBoxCol->setObjectName(QString::fromUtf8("spinBoxCol"));
|
|
|
|
+ matrixGridLayout->addWidget(spinBoxCol, 2, 1, 1, 1);
|
|
|
|
+ vecControls.push_back(spinBoxCol);
|
|
|
|
+
|
|
|
|
+ QLabel* labelLeftTop = new QLabel(this);
|
|
|
|
+ labelLeftTop->setObjectName(QString::fromUtf8("labelLeftTop"));
|
|
|
|
+ labelLeftTop->setText(tr("Left Top Pos "));
|
|
|
|
+ matrixGridLayout->addWidget(labelLeftTop, 4, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelLeftTop);
|
|
|
|
+
|
|
|
|
+ DoubleSpinBox* doubleSpinBoxLeftTopX = new DoubleSpinBox(this);
|
|
|
|
+ doubleSpinBoxLeftTopX->setObjectName(QString::fromUtf8("doubleSpinBoxLeftTopX"));
|
|
|
|
+ matrixGridLayout->addWidget(doubleSpinBoxLeftTopX, 4, 1, 1, 1);
|
|
|
|
+ vecControls.push_back(doubleSpinBoxLeftTopX);
|
|
|
|
+
|
|
|
|
+ DoubleSpinBox* doubleSpinBoxLeftTopY = new DoubleSpinBox(this);
|
|
|
|
+ doubleSpinBoxLeftTopY->setObjectName(QString::fromUtf8("doubleSpinBoxLeftTopY"));
|
|
|
|
+ matrixGridLayout->addWidget(doubleSpinBoxLeftTopY, 4, 2, 1, 1);
|
|
|
|
+ vecControls.push_back(doubleSpinBoxLeftTopY);
|
|
|
|
+
|
|
|
|
+ QLabel* labelRightTopPos = new QLabel(this);
|
|
|
|
+ labelRightTopPos->setObjectName(QString::fromUtf8("labelRightTopPos"));
|
|
|
|
+ labelRightTopPos->setText(tr("Right Top Pos "));
|
|
|
|
+ matrixGridLayout->addWidget(labelRightTopPos, 5, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelRightTopPos);
|
|
|
|
+
|
|
|
|
+ DoubleSpinBox* doubleSpinBoxRightTopX = new DoubleSpinBox(this);
|
|
|
|
+ doubleSpinBoxRightTopX->setObjectName(QString::fromUtf8("doubleSpinBoxRightTopX"));
|
|
|
|
+ matrixGridLayout->addWidget(doubleSpinBoxRightTopX, 5, 1, 1, 1);
|
|
|
|
+ vecControls.push_back(doubleSpinBoxRightTopX);
|
|
|
|
+
|
|
|
|
+ DoubleSpinBox* doubleSpinBoxRightTopY = new DoubleSpinBox(this);
|
|
|
|
+ doubleSpinBoxRightTopY->setObjectName(QString::fromUtf8("doubleSpinBoxRightTopY"));
|
|
|
|
+ matrixGridLayout->addWidget(doubleSpinBoxRightTopY, 5, 2, 1, 1);
|
|
|
|
+ vecControls.push_back(doubleSpinBoxRightTopY);
|
|
|
|
+
|
|
|
|
+ QLabel* labelRightButtomPos = new QLabel(this);
|
|
|
|
+ labelRightButtomPos->setObjectName(QString::fromUtf8("labelRightButtomPos"));
|
|
|
|
+ labelRightButtomPos->setText(tr("Right Buttom pos"));
|
|
|
|
+ matrixGridLayout->addWidget(labelRightButtomPos, 6, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelRightButtomPos);
|
|
|
|
+
|
|
|
|
+ DoubleSpinBox* doubleSpinBoxRightButtomX = new DoubleSpinBox(this);
|
|
|
|
+ doubleSpinBoxRightButtomX->setObjectName(QString::fromUtf8("doubleSpinBoxRightButtomX"));
|
|
|
|
+ matrixGridLayout->addWidget(doubleSpinBoxRightButtomX, 6, 1, 1, 1);
|
|
|
|
+ vecControls.push_back(doubleSpinBoxRightButtomX);
|
|
|
|
+
|
|
|
|
+ DoubleSpinBox* doubleSpinBoxRightButtomY = new DoubleSpinBox(this);
|
|
|
|
+ doubleSpinBoxRightButtomY->setObjectName(QString::fromUtf8("doubleSpinBoxRightButtomY"));
|
|
|
|
+ matrixGridLayout->addWidget(doubleSpinBoxRightButtomY, 6, 2, 1, 1);
|
|
|
|
+ vecControls.push_back(doubleSpinBoxRightTopX);
|
|
|
|
+
|
|
|
|
+ QLabel* labelNoBondPts = new QLabel(this);
|
|
|
|
+ labelNoBondPts->setObjectName(QString::fromUtf8("labelNoBondPts"));
|
|
|
|
+ labelNoBondPts->setText(tr("No Bond Points"));
|
|
|
|
+ matrixGridLayout->addWidget(labelNoBondPts, 7, 0, 1, 1);
|
|
|
|
+ vecControls.push_back(labelNoBondPts);
|
|
|
|
+
|
|
|
|
+ QLineEdit* lineEditNoBondPts = new QLineEdit(this);
|
|
|
|
+ lineEditNoBondPts->setObjectName(QString::fromUtf8("lineEditNoBondPts"));
|
|
|
|
+ matrixGridLayout->addWidget(lineEditNoBondPts, 7, 1, 1, 2);
|
|
|
|
+ vecControls.push_back(lineEditNoBondPts);
|
|
|
|
+
|
|
|
|
+ m_mapSubMatrixControls.insert(newMatrixID, vecControls);
|
|
|
|
+
|
|
|
|
+ ui.verticalLayout_2->addLayout(matrixGridLayout);
|
|
|
|
+
|
|
|
|
+ spinBoxRow->setValue(matrixData.BondMatrixRow);
|
|
|
|
+ spinBoxCol->setValue(matrixData.BondMatrixCol);
|
|
|
|
+ doubleSpinBoxLeftTopX->setValue(matrixData.LeftTopPoint.x);
|
|
|
|
+ doubleSpinBoxLeftTopY->setValue(matrixData.LeftTopPoint.y);
|
|
|
|
+ doubleSpinBoxRightTopX->setValue(matrixData.RightTopPoint.x);
|
|
|
|
+ doubleSpinBoxRightTopY->setValue(matrixData.RightTopPoint.y);
|
|
|
|
+ doubleSpinBoxRightButtomX->setValue(matrixData.RightBottomPoint.x);
|
|
|
|
+ doubleSpinBoxRightButtomY->setValue(matrixData.RightBottomPoint.y);
|
|
|
|
+
|
|
|
|
+ QString noBondPts = "";
|
|
|
|
+ bool firstTime = false;
|
|
|
|
+ for (XY_LONG_STRUCT pt : m_vectBondMatrixs[0].VecNoBondPt)
|
|
|
|
+ {
|
|
|
|
+ if (firstTime)
|
|
|
|
+ {
|
|
|
|
+ noBondPts += "(" + QString::number(pt.x) + "," + QString::number(pt.y) + ")";
|
|
|
|
+ firstTime = true;
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ noBondPts += ";(" + QString::number(pt.x) + "," + QString::number(pt.y) + ")";
|
|
|
|
+ }
|
|
|
|
+ lineEditNoBondPts->setText(noBondPts);
|
|
|
|
+
|
|
|
|
+ connect(spinBoxRow, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vectBondMatrixs[vectorIndex].BondMatrixRow = spinBoxRow->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(spinBoxCol, &SpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vectBondMatrixs[vectorIndex].BondMatrixCol = spinBoxCol->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ connect(doubleSpinBoxLeftTopX, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vectBondMatrixs[vectorIndex].LeftTopPoint.x = doubleSpinBoxLeftTopX->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(doubleSpinBoxLeftTopY, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vectBondMatrixs[vectorIndex].LeftTopPoint.y = doubleSpinBoxLeftTopY->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(doubleSpinBoxRightTopX, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vectBondMatrixs[vectorIndex].RightTopPoint.x = doubleSpinBoxRightTopX->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(doubleSpinBoxRightTopY, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vectBondMatrixs[vectorIndex].RightTopPoint.y = doubleSpinBoxRightTopY->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(doubleSpinBoxRightButtomX, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vectBondMatrixs[vectorIndex].RightBottomPoint.x = doubleSpinBoxRightButtomX->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+ connect(doubleSpinBoxRightButtomY, &DoubleSpinBox::editDone, this, [=]() {
|
|
|
|
+ m_vectBondMatrixs[vectorIndex].RightBottomPoint.y = doubleSpinBoxRightButtomY->value();
|
|
|
|
+ MatrixChangeEvent();
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ connect(lineEditNoBondPts, &QLineEdit::textChanged, this, [=]() {
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void ProgrammPage::AddMatrixParam()
|
|
|
|
+{
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void ProgrammPage::UpdatePageParam()
|
|
|
|
+{
|
|
|
|
+ int dieSourceIndex = 0;
|
|
|
|
+ if (m_curBondInfo.eDieSource == DIE_SOURCE::BY_WAFER)
|
|
|
|
+ {
|
|
|
|
+ dieSourceIndex = 1;
|
|
|
|
+ } else if (m_curBondInfo.eDieSource == DIE_SOURCE::BY_WAFFLE)
|
|
|
|
+ {
|
|
|
|
+ dieSourceIndex = 0;
|
|
|
|
+ }
|
|
|
|
+ ui.comboBoxDieSource->setCurrentIndex(dieSourceIndex);
|
|
|
|
+ ui.spinBoxPickTempID->setValue(m_curBondInfo.iPickPRStrategyId);
|
|
|
|
+ ui.spinBoxPickNozzleID->setValue(m_curBondInfo.iPickHeadId);
|
|
|
|
+ ui.spinBoxPreBondTemp->setValue(m_curBondInfo.iBondFrontPRStrategyId);
|
|
|
|
+ ui.spinBoxPostBondTemp->setValue(m_curBondInfo.iBondBackPRStrategyId);
|
|
|
|
+ ui.spinBoxBondTemp->setValue(m_curBondInfo.iBondPRStrategyId);
|
|
|
|
+ ui.spinBoxLookUpTemp->setValue(m_curBondInfo.iLookUpPRStrategyId);
|
|
|
|
+ ui.spinBoxCalibPickTemp->setValue(m_curBondInfo.iCalibPRStrategyId);
|
|
|
|
+ ui.doubleSpinBoxBondOffsetX->setValue(m_curBondInfo.stOffset.x);
|
|
|
|
+ ui.doubleSpinBoxBondOffsetY->setValue(m_curBondInfo.stOffset.y);
|
|
|
|
+ ui.doubleSpinBoxBondOffsetAngle->setValue(m_curBondInfo.stOffset.a);
|
|
|
|
+
|
|
|
|
+ UpdatePagePickParam();
|
|
|
|
+
|
|
|
|
+ UpdatePageBondParam();
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void ProgrammPage::ParamChangeEvent()
|
|
|
|
+{
|
|
|
|
+ m_manageDB->GetCProduct()->SetBondInfoData(m_curBondInfo.iInfoId, m_curBondInfo);
|
|
|
|
+ m_manageDB->GetCProduct()->SetBondParam(m_curWaferPickParam.iId, m_curWaferPickParam);
|
|
|
|
+ m_manageDB->GetCProduct()->SetBondParam(m_curCalibPlaceParam.iId, m_curCalibPlaceParam);
|
|
|
|
+ m_manageDB->GetCProduct()->SetBondParam(m_curCalibPickParam.iId, m_curCalibPickParam);
|
|
|
|
+ m_manageDB->GetCProduct()->SetBondParam(m_curBondParam.iId, m_curBondParam);
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void ProgrammPage::MatrixChangeEvent()
|
|
|
|
+{
|
|
|
|
+ for (PROGRAM_BOND_MATRIX_STRUCT& bondMatrix : m_vectBondMatrixs)
|
|
|
|
+ {
|
|
|
|
+ m_manageDB->GetCProduct()->SetBondMatrix(bondMatrix.BondMatrixId, bondMatrix);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (PROGRAM_POINT_MATRIX_STRUCT& pointMatrix : m_vecSubMatrixs)
|
|
|
|
+ {
|
|
|
|
+ m_manageDB->GetCProduct()->SetPointMatrix(pointMatrix.MatrixId, pointMatrix);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void ProgrammPage::UpdatePagePickParam()
|
|
|
|
+{
|
|
|
|
+ //"혤쑨庫혤쑨"
|
|
|
|
+ if (ui.comboBoxPickParamType->currentIndex() == 0)
|
|
|
|
+ {
|
|
|
|
+ ui.checkBoxPickBlockCheck->setChecked(m_curWaferPickParam.bCheckBlock);
|
|
|
|
+ ui.checkBoxPickLoseCheck->setChecked(m_curWaferPickParam.bCheckLose);
|
|
|
|
+ ui.checkBoxPickFindForceCheck->setChecked(m_curWaferPickParam.bFindForce);
|
|
|
|
+ ui.doubleSpinBoxPrePickZ->setValue(m_curWaferPickParam.dPreLev);
|
|
|
|
+ ui.doubleSpinBoxPickForce->setValue(m_curWaferPickParam.dForce);
|
|
|
|
+ ui.doubleSpinBoxPickPosZ->setValue(m_curWaferPickParam.dPickOrBondLev);
|
|
|
|
+ ui.spinBoxPickGrabDelay->setValue(m_curWaferPickParam.iGrabDelay);
|
|
|
|
+ ui.spinBox_PickDelay->setValue(m_curWaferPickParam.iPickOrBondDelay);
|
|
|
|
+ ui.spinBoxPickBlockCheckDelay->setValue(m_curWaferPickParam.iBlockOrLoseDelay);
|
|
|
|
+ ui.spinBoxPickVacDelay->setValue(m_curWaferPickParam.iVacuumDelay);
|
|
|
|
+ ui.spinBoxPickBlowDelay->setValue(m_curWaferPickParam.iBlowDelay);
|
|
|
|
+ }
|
|
|
|
+ //"櫓瘻憩혤쑨"
|
|
|
|
+ else if (ui.comboBoxPickParamType->currentIndex() == 1)
|
|
|
|
+ {
|
|
|
|
+ ui.checkBoxPickBlockCheck->setChecked(m_curCalibPickParam.bCheckBlock);
|
|
|
|
+ ui.checkBoxPickLoseCheck->setChecked(m_curCalibPickParam.bCheckLose);
|
|
|
|
+ ui.checkBoxPickFindForceCheck->setChecked(m_curCalibPickParam.bFindForce);
|
|
|
|
+ ui.doubleSpinBoxPrePickZ->setValue(m_curCalibPickParam.dPreLev);
|
|
|
|
+ ui.doubleSpinBoxPickForce->setValue(m_curCalibPickParam.dForce);
|
|
|
|
+ ui.doubleSpinBoxPickPosZ->setValue(m_curCalibPickParam.dPickOrBondLev);
|
|
|
|
+ ui.spinBoxPickGrabDelay->setValue(m_curCalibPickParam.iGrabDelay);
|
|
|
|
+ ui.spinBox_PickDelay->setValue(m_curCalibPickParam.iPickOrBondDelay);
|
|
|
|
+ ui.spinBoxPickBlockCheckDelay->setValue(m_curCalibPickParam.iBlockOrLoseDelay);
|
|
|
|
+ ui.spinBoxPickVacDelay->setValue(m_curCalibPickParam.iVacuumDelay);
|
|
|
|
+ ui.spinBoxPickBlowDelay->setValue(m_curCalibPickParam.iBlowDelay);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void ProgrammPage::UpdatePageBondParam()
|
|
|
|
+{
|
|
|
|
+ //"櫓瘻憩렴쑨"
|
|
|
|
+ if (ui.comboBoxBondParamType->currentIndex() == 0)
|
|
|
|
+ {
|
|
|
|
+ ui.checkBoxBondBlockCheck->setChecked(m_curCalibPlaceParam.bCheckBlock);
|
|
|
|
+ ui.checkBoxBondLoseCheck->setChecked(m_curCalibPlaceParam.bCheckLose);
|
|
|
|
+ ui.checkBoxBondFindForce->setChecked(m_curCalibPlaceParam.bFindForce);
|
|
|
|
+ ui.doubleSpinBoxPreBondPosZ->setValue(m_curCalibPlaceParam.dPreLev);
|
|
|
|
+ ui.doubleSpinBoxBondForce->setValue(m_curCalibPlaceParam.dForce);
|
|
|
|
+ ui.doubleSpinBoxBondPosZ->setValue(m_curCalibPlaceParam.dPickOrBondLev);
|
|
|
|
+ ui.spinBoxBondGrabDelay->setValue(m_curCalibPlaceParam.iGrabDelay);
|
|
|
|
+ ui.spinBoxBondDelay->setValue(m_curCalibPlaceParam.iPickOrBondDelay);
|
|
|
|
+ ui.spinBoxBondBlockCheckDelay->setValue(m_curCalibPlaceParam.iBlockOrLoseDelay);
|
|
|
|
+ ui.spinBoxBondVacDelay->setValue(m_curCalibPlaceParam.iVacuumDelay);
|
|
|
|
+ ui.spinBoxBondBlowDelay->setValue(m_curCalibPlaceParam.iBlowDelay);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ //"미쑨憩미쑨"
|
|
|
|
+ else if (ui.comboBoxBondParamType->currentIndex() == 1)
|
|
|
|
+ {
|
|
|
|
+ ui.checkBoxBondBlockCheck->setChecked(m_curBondParam.bCheckBlock);
|
|
|
|
+ ui.checkBoxBondLoseCheck->setChecked(m_curBondParam.bCheckLose);
|
|
|
|
+ ui.checkBoxBondFindForce->setChecked(m_curBondParam.bFindForce);
|
|
|
|
+ ui.doubleSpinBoxPreBondPosZ->setValue(m_curBondParam.dPreLev);
|
|
|
|
+ ui.doubleSpinBoxBondForce->setValue(m_curBondParam.dForce);
|
|
|
|
+ ui.doubleSpinBoxBondPosZ->setValue(m_curBondParam.dPickOrBondLev);
|
|
|
|
+ ui.spinBoxBondGrabDelay->setValue(m_curBondParam.iGrabDelay);
|
|
|
|
+ ui.spinBoxBondDelay->setValue(m_curBondParam.iPickOrBondDelay);
|
|
|
|
+ ui.spinBoxBondBlockCheckDelay->setValue(m_curBondParam.iBlockOrLoseDelay);
|
|
|
|
+ ui.spinBoxBondVacDelay->setValue(m_curBondParam.iVacuumDelay);
|
|
|
|
+ ui.spinBoxBondBlowDelay->setValue(m_curBondParam.iBlowDelay);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void ProgrammPage::initPage()
|
|
|
|
+{
|
|
|
|
+ if (m_manageDB == nullptr)
|
|
|
|
+ {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ //닒빈똥삿혤鑒앴
|
|
|
|
+ m_vectBondMatrixs = m_manageDB->GetCProduct()->GetBondMatrix();
|
|
|
|
+ if (m_vectBondMatrixs.size() == 0)
|
|
|
|
+ {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < m_vectBondMatrixs.size(); i++)
|
|
|
|
+ {
|
|
|
|
+ AddOutMatrixPage(i, m_vectBondMatrixs[i]);
|
|
|
|
+ for (int j = 0; j < m_vectBondMatrixs[i].VecPointMatrixId.size(); j++)
|
|
|
|
+ {
|
|
|
|
+ PROGRAM_POINT_MATRIX_STRUCT subMatrix;
|
|
|
|
+ m_manageDB->GetCProduct()->GetPointMatrix(m_vectBondMatrixs[i].VecPointMatrixId[j], subMatrix);
|
|
|
|
+ m_vecSubMatrixs.push_back(subMatrix);
|
|
|
|
+ AddMatrixPage(i, j, subMatrix);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //for (int i = 0; i < m_vectBondMatrixs[0].VecPointMatrixId.size(); ++i)
|
|
|
|
+ //{
|
|
|
|
+ // PROGRAM_POINT_MATRIX_STRUCT subMatrix;
|
|
|
|
+ // m_manageDB->GetCProduct()->GetPointMatrix(m_vectBondMatrixs[0].VecPointMatrixId[i], subMatrix);
|
|
|
|
+ // m_vecSubMatrixs.push_back(subMatrix);
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //m_manageDB->GetCProduct()->GetDieMatrix(m_vectBondMatrixs[0].VecPointMatrixId[0], m_vecSubMatrixs);
|
|
|
|
+
|
|
|
|
+ //鞫刻앤黎鑒앴
|
|
|
|
+ ui.spinBoxRow->setValue(m_vectBondMatrixs[0].BondMatrixRow);
|
|
|
|
+ ui.spinBoxCol->setValue(m_vectBondMatrixs[0].BondMatrixCol);
|
|
|
|
+ ui.doubleSpinBoxLeftTopX->setValue(m_vectBondMatrixs[0].LeftTopPoint.x);
|
|
|
|
+ ui.doubleSpinBoxLeftTopY->setValue(m_vectBondMatrixs[0].LeftTopPoint.y);
|
|
|
|
+ ui.doubleSpinBoxRightTopX->setValue(m_vectBondMatrixs[0].RightTopPoint.x);
|
|
|
|
+ ui.doubleSpinBoxRightTopY->setValue(m_vectBondMatrixs[0].RightTopPoint.y);
|
|
|
|
+ ui.doubleSpinBoxRightButtomX->setValue(m_vectBondMatrixs[0].RightBottomPoint.x);
|
|
|
|
+ ui.doubleSpinBoxRightButtomY->setValue(m_vectBondMatrixs[0].RightBottomPoint.y);
|
|
|
|
+ QString noBondPts = "";
|
|
|
|
+ bool firstTime = false;
|
|
|
|
+ for (XY_LONG_STRUCT& pt : m_vectBondMatrixs[0].VecNoBondPt)
|
|
|
|
+ {
|
|
|
|
+ if (firstTime)
|
|
|
|
+ {
|
|
|
|
+ noBondPts += "(" + QString::number(pt.x) + "," + QString::number(pt.y) + ")";
|
|
|
|
+ firstTime = true;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ noBondPts += ";(" + QString::number(pt.x) + "," + QString::number(pt.y) + ")";
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ ui.lineEditNoBondPts->setText(noBondPts);
|
|
|
|
+
|
|
|
|
+ //鞫刻綾앤黎섟鑒앴
|
|
|
|
+ //for (PROGRAM_POINT_MATRIX_STRUCT& subMatrix : m_vecSubMatrixs)
|
|
|
|
+ //{
|
|
|
|
+ // AddMatrixPage(subMatrix);
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //닒빈똥삿혤꽝鑒, 寧敬鑒앴
|
|
|
|
+ CResources* pResources = CResources::GetInstance();
|
|
|
|
+ if (pResources == nullptr)
|
|
|
|
+ {
|
|
|
|
+ return ;
|
|
|
|
+ }
|
|
|
|
+ CBondMatrix* pBondMatrix = pResources->GetBondMatrix();
|
|
|
|
+ if (pBondMatrix == nullptr)
|
|
|
|
+ {
|
|
|
|
+ return ;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //pBondMatrix->GetPintInfoByIndex(0, m_curPointInfo);
|
|
|
|
+ m_manageDB->GetCProduct()->GetBondInfoData(m_vectBondMatrixs[0].BondInfoId, m_curBondInfo);
|
|
|
|
+ m_manageDB->GetCProduct()->GetBondParam(m_curBondInfo.iPickParamId, m_curWaferPickParam);
|
|
|
|
+ m_manageDB->GetCProduct()->GetBondParam(m_curBondInfo.iCalibBondParamId, m_curCalibPlaceParam);
|
|
|
|
+ m_manageDB->GetCProduct()->GetBondParam(m_curBondInfo.iCalibPickParamId, m_curCalibPickParam);
|
|
|
|
+ m_manageDB->GetCProduct()->GetBondParam(m_curBondInfo.iBondParamId, m_curBondParam);
|
|
|
|
+
|
|
|
|
+ //鞫刻썹충꽝鑒
|
|
|
|
+ UpdatePageParam();
|
|
|
|
+
|
|
|
|
+ ui.verticalLayoutWaffleMatrix->addWidget(m_pWaffleProgrammPage);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|