123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676 |
- #include "WaffleProgramPage.h"
- #include <QGroupBox>
- #include <QLineEdit>
- #include "Src/RewriteControl/Controls/SpinBox.h"
- #include "Src/RewriteControl/Controls/DoubleSpinBox.h"
- #include <View/die-bonder-ui/Src/MatrixDialogs/NoBondPtEditDialog.h>
- #include <QLabel>
- #include <QPushButton>
- #include <QHBoxLayout>
- #include <QVBoxLayout>
- #include <algorithm>
- WaffleProgramPage::WaffleProgramPage(QWidget* parent)
- :QWidget(parent)
- {
- ui.setupUi(this);
- ui.pushButtonSave->setProperty("type", "save");
- setStyleSheet("QGroupBox { border: 2px solid #A9B4FF;border-radius: 10px; }");
- //setStyleSheet(
- // "QPushButton{background-color: #A9B4FF;border-radius: 5px;height: 30px;}"
- // "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;}"
- // "QGroupBox{ border: 2px solid red}"
- // //"QGroupBox::title { subcontrol-origin: margin; subcontrol-position: top center; padding: 0 3px; }"
- //);
- m_manageDB = CManageDB::GetInstance();
- if (m_manageDB == nullptr) return;
- m_pProduct = m_manageDB->GetCProduct();
- if (m_pProduct == nullptr) return;
- initPage();
- connect(ui.pushButtonSave, &QPushButton::clicked, this, [=]() {
- m_pProduct->SetAllWaffleMatrix(m_vecWaffleMatrix);
- m_pProduct->SetAllWaffleDieMatrix(m_vecSubWaffleMatrix);
- });
- }
- WaffleProgramPage::~WaffleProgramPage()
- {
- }
- void WaffleProgramPage::AddMatrixPage(int vectorIndex, PROGRAM_WAFFLE_MATRIX_STRUCT matrixData, std::vector<PROGRAM_DIE_MATRIX_STRUCT> vecSubMatrix)
- {
- int matrixNum = m_mapSubMatrixControls.size();
- int newMatrixID = ++matrixNum;
- QVector<QObject*> vecControls;
- QWidget* outWidget = new QWidget();
- QGridLayout* outMatrixGridLayout = new QGridLayout();
- outMatrixGridLayout->setSpacing(6);
- outMatrixGridLayout->setObjectName(QString::fromUtf8("Out GridLayout"));
- QGridLayout* boxGridLayout = new QGridLayout();
- boxGridLayout->setSpacing(6);
- boxGridLayout->setObjectName(QString::fromUtf8("Box GridLayout"));
- QHBoxLayout* buttonLayout = new QHBoxLayout();
- QSpacerItem* item = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- buttonLayout->addSpacerItem(item);
- QPushButton* pushButtonAddOutMatrix = new QPushButton();
- pushButtonAddOutMatrix->setObjectName(QString::fromUtf8("button Add"));
- pushButtonAddOutMatrix->setText(tr("add out Matrix"));
- buttonLayout->addWidget(pushButtonAddOutMatrix);
- connect(pushButtonAddOutMatrix, &QPushButton::clicked, this, [=]() {
- PROGRAM_WAFFLE_MATRIX_STRUCT newMatrix;
- //排序
- std::sort(m_vecWaffleMatrix.begin(), m_vecWaffleMatrix.end(),
- [](const PROGRAM_WAFFLE_MATRIX_STRUCT& a, const PROGRAM_WAFFLE_MATRIX_STRUCT& b) {
- return a.MatrixId < b.MatrixId;
- });
- //找Id
- int newId = 1;
- for (const auto& matrix : m_vecWaffleMatrix)
- {
- if (matrix.MatrixId == newId)
- {
- newId++;
- } else if (matrix.MatrixId > newId)
- {
- break;
- }
- }
- newMatrix.MatrixId = newId;
- int newVectorIndex = m_vecWaffleMatrix.size();
- std::vector<PROGRAM_DIE_MATRIX_STRUCT> newVecSubMatrix;
- m_vecWaffleMatrix.push_back(newMatrix);
- AddMatrixPage(newVectorIndex, newMatrix, newVecSubMatrix);
- });
- //ui.verticalLayout->addLayout(buttonLayout);
- QGroupBox* groupBox = new QGroupBox(outWidget);
- groupBox->setLayout(boxGridLayout);
- QGridLayout* matrixGridLayout = new QGridLayout();
- matrixGridLayout->setSpacing(6);
- matrixGridLayout->setObjectName(QString::fromUtf8("matrixGridLayout"));
- QLabel* labelTitle = new QLabel(outWidget);
- labelTitle->setObjectName(QString::fromUtf8("labelTitle"));
- labelTitle->setText(tr("Matrix ") + QString::number(vectorIndex));
- labelTitle->setStyleSheet("color: #6A78FF;height: 30px");
- matrixGridLayout->addWidget(labelTitle, 0, 1, 1, 3);
- vecControls.push_back(labelTitle);
- QPushButton* pushButtonAdd = new QPushButton(outWidget);
- pushButtonAdd->setObjectName(QString::fromUtf8("button Add"));
- pushButtonAdd->setText(tr("add sub Matrix"));
- matrixGridLayout->addWidget(pushButtonAdd, 1, 1, 1, 1);
- pushButtonAdd->setProperty("type", "default");
- connect(pushButtonAdd, &QPushButton::clicked, this, [=]() {
- int newIndex = m_vecSubWaffleMatrix.size();
- PROGRAM_DIE_MATRIX_STRUCT dieMatrix;
- //排序
- std::sort(m_vecSubWaffleMatrix.begin(), m_vecSubWaffleMatrix.end(),
- [](const PROGRAM_DIE_MATRIX_STRUCT& a, const PROGRAM_DIE_MATRIX_STRUCT& b) {
- return a.MatrixId < b.MatrixId;
- });
- //找Id
- int newId = 1;
- for (const auto& matrix : m_vecSubWaffleMatrix)
- {
- if (matrix.MatrixId == newId)
- {
- newId++;
- } else if (matrix.MatrixId > newId)
- {
- break;
- }
- }
- dieMatrix.MatrixId = newId;
- dieMatrix.strModuleName = "WaffleHead";
- dieMatrix.iModuleId = MODULE_LIST::WaffleHead;
- m_vecSubWaffleMatrix.push_back(dieMatrix);
- //找大矩阵ID/Index
- auto currentIt = m_mapOutWidgetIndex.find(outWidget);
- int index = currentIt.value(); //迭代器 erase后currentIt被删除了
- m_vecWaffleMatrix[index].VecDieMatrixId.push_back(newId);
- AddSubMatrixPage(newIndex, dieMatrix, boxGridLayout);
- });
- QPushButton* pushButtonDelete = new QPushButton(outWidget);
- pushButtonDelete->setObjectName(QString::fromUtf8("button delete"));
- pushButtonDelete->setText(tr("delete Matrix"));
- matrixGridLayout->addWidget(pushButtonDelete, 1, 2, 1, 1);
- connect(pushButtonDelete, &QPushButton::clicked, this, [=]() {
- //处理index
- auto currentIt = m_mapOutWidgetIndex.find(outWidget);
- int index = currentIt.value(); //迭代器 erase后currentIt被删除了
- m_mapOutWidgetIndex.erase(currentIt);
-
- for (auto it = m_mapOutWidgetIndex.begin(); it != m_mapOutWidgetIndex.end(); it++)
- {
- if (it.value() > index)
- {
- int newIndex = it.value() - 1;
- m_mapOutWidgetIndex.insert(it.key(), newIndex);
- }
- }
- //删除缓存数据
- m_vecWaffleMatrix.erase(m_vecWaffleMatrix.begin() + index);
- delete outWidget;
- });
- QLabel* labelRow = new QLabel(outWidget);
- labelRow->setObjectName(QString::fromUtf8("labelRow"));
- labelRow->setText(tr("Row "));
- matrixGridLayout->addWidget(labelRow, 2, 0, 1, 1);
- vecControls.push_back(labelRow);
- SpinBox* spinBoxRow = new SpinBox(outWidget);
- spinBoxRow->setObjectName(QString::fromUtf8("spinBoxRow"));
- matrixGridLayout->addWidget(spinBoxRow, 2, 1, 1, 1);
- vecControls.push_back(spinBoxRow);
- QLabel* labelCol = new QLabel(outWidget);
- labelCol->setObjectName(QString::fromUtf8("labelCol"));
- labelCol->setText(tr("Cow "));
- matrixGridLayout->addWidget(labelCol, 3, 0, 1, 1);
- vecControls.push_back(labelCol);
- SpinBox* spinBoxCol = new SpinBox(outWidget);
- spinBoxCol->setObjectName(QString::fromUtf8("spinBoxCol"));
- matrixGridLayout->addWidget(spinBoxCol, 3, 1, 1, 1);
- vecControls.push_back(spinBoxCol);
- QLabel* labelLeftTop = new QLabel(outWidget);
- 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(outWidget);
- doubleSpinBoxLeftTopX->setObjectName(QString::fromUtf8("doubleSpinBoxLeftTopX"));
- matrixGridLayout->addWidget(doubleSpinBoxLeftTopX, 4, 1, 1, 1);
- vecControls.push_back(doubleSpinBoxLeftTopX);
- DoubleSpinBox* doubleSpinBoxLeftTopY = new DoubleSpinBox(outWidget);
- doubleSpinBoxLeftTopY->setObjectName(QString::fromUtf8("doubleSpinBoxLeftTopY"));
- matrixGridLayout->addWidget(doubleSpinBoxLeftTopY, 4, 2, 1, 1);
- vecControls.push_back(doubleSpinBoxLeftTopY);
- QLabel* labelRightTopPos = new QLabel(outWidget);
- 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(outWidget);
- doubleSpinBoxRightTopX->setObjectName(QString::fromUtf8("doubleSpinBoxRightTopX"));
- matrixGridLayout->addWidget(doubleSpinBoxRightTopX, 5, 1, 1, 1);
- vecControls.push_back(doubleSpinBoxRightTopX);
- DoubleSpinBox* doubleSpinBoxRightTopY = new DoubleSpinBox(outWidget);
- doubleSpinBoxRightTopY->setObjectName(QString::fromUtf8("doubleSpinBoxRightTopY"));
- matrixGridLayout->addWidget(doubleSpinBoxRightTopY, 5, 2, 1, 1);
- vecControls.push_back(doubleSpinBoxRightTopY);
- QLabel* labelRightButtomPos = new QLabel(outWidget);
- 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(outWidget);
- doubleSpinBoxRightButtomX->setObjectName(QString::fromUtf8("doubleSpinBoxRightButtomX"));
- matrixGridLayout->addWidget(doubleSpinBoxRightButtomX, 6, 1, 1, 1);
- vecControls.push_back(doubleSpinBoxRightButtomX);
- DoubleSpinBox* doubleSpinBoxRightButtomY = new DoubleSpinBox(outWidget);
- doubleSpinBoxRightButtomY->setObjectName(QString::fromUtf8("doubleSpinBoxRightButtomY"));
- matrixGridLayout->addWidget(doubleSpinBoxRightButtomY, 6, 2, 1, 1);
- vecControls.push_back(doubleSpinBoxRightTopX);
- QLabel* labelNoBondPts = new QLabel(outWidget);
- 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(outWidget);
- lineEditNoBondPts->setObjectName(QString::fromUtf8("lineEditNoBondPts"));
- matrixGridLayout->addWidget(lineEditNoBondPts, 7, 1, 1, 2);
- vecControls.push_back(lineEditNoBondPts);
- lineEditNoBondPts->setReadOnly(true);
- lineEditNoBondPts->setCursor(Qt::PointingHandCursor);
- lineEditNoBondPts->setProperty("subVectorIndex", vectorIndex); // 存储索引
- lineEditNoBondPts->installEventFilter(this);
- QFrame* line = new QFrame(outWidget);
- line->setFrameShape(QFrame::NoFrame); // 移除默认框架
- line->setFixedHeight(2); // 设置固定高度
- line->setStyleSheet("background-color: #C7CAEB;");
- boxGridLayout->addLayout(matrixGridLayout, 2, 0);
- boxGridLayout->addWidget(line);
- outMatrixGridLayout->addLayout(buttonLayout, 1, 0);
- outMatrixGridLayout->addWidget(groupBox);
- outWidget->setLayout(outMatrixGridLayout);
- ui.verticalLayout->addWidget(outWidget);
- m_mapOutWidgetIndex.insert(outWidget, vectorIndex);
- for (int j = 0; j < matrixData.VecDieMatrixId.size(); j++)
- {
- for (int i = 0; i < m_vecSubWaffleMatrix.size(); i++)
- {
- if (matrixData.VecDieMatrixId[j] == m_vecSubWaffleMatrix[i].MatrixId)
- {
- AddSubMatrixPage(i, m_vecSubWaffleMatrix[i], boxGridLayout);
- }
- }
- }
- QSpacerItem* vSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
- ui.verticalLayout->addItem(vSpacer);
- //for (int i = 0; i = vecSubMatrix.size(); i++)
- //{
- // AddSubMatrixPage(i, vecSubMatrix[i], outMatrixGridLayout);
- //}
- spinBoxRow->setValue(matrixData.PackRow);
- spinBoxCol->setValue(matrixData.PackCol);
- 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);
- connect(spinBoxRow, &SpinBox::editDone, this, [=]() {
- m_vecWaffleMatrix[vectorIndex].PackRow = spinBoxRow->value();
- });
- connect(spinBoxCol, &SpinBox::editDone, this, [=]() {
- m_vecWaffleMatrix[vectorIndex].PackCol = spinBoxCol->value();
- });
- connect(doubleSpinBoxLeftTopX, &DoubleSpinBox::editDone, this, [=]() {
- m_vecWaffleMatrix[vectorIndex].LeftTopPoint.x = doubleSpinBoxLeftTopX->value();
- });
-
- connect(doubleSpinBoxLeftTopY, &DoubleSpinBox::editDone, this, [=]() {
- m_vecWaffleMatrix[vectorIndex].LeftTopPoint.y = doubleSpinBoxLeftTopY->value();
- });
- connect(doubleSpinBoxRightTopX, &DoubleSpinBox::editDone, this, [=]() {
- m_vecWaffleMatrix[vectorIndex].RightTopPoint.x = doubleSpinBoxRightTopX->value();
- });
- connect(doubleSpinBoxRightTopY, &DoubleSpinBox::editDone, this, [=]() {
- m_vecWaffleMatrix[vectorIndex].RightTopPoint.y = doubleSpinBoxRightTopY->value();
- });
- connect(doubleSpinBoxRightButtomX, &DoubleSpinBox::editDone, this, [=]() {
- m_vecWaffleMatrix[vectorIndex].RightBottomPoint.x = doubleSpinBoxRightButtomX->value();
- });
- connect(doubleSpinBoxRightButtomY, &DoubleSpinBox::editDone, this, [=]() {
- m_vecWaffleMatrix[vectorIndex].RightBottomPoint.y = doubleSpinBoxRightButtomY->value();
- });
- connect(lineEditNoBondPts, &QLineEdit::textChanged, this, [=]() {
- });
- }
- void WaffleProgramPage::AddSubMatrixPage(int subVectorIndex, PROGRAM_DIE_MATRIX_STRUCT subMatrix, QGridLayout* layout)
- {
- QVector<QObject*> vecControls;
- QWidget* subWidget = new QWidget();
- QGridLayout* subGridLayout = new QGridLayout(subWidget);
- subGridLayout->setSpacing(6);
- subGridLayout->setObjectName(QString::fromUtf8("subGridLayout"));
- //groupBox->setLayout(subGridLayout);
- QLabel* labelTitle = new QLabel(subWidget);
- labelTitle->setObjectName(QString::fromUtf8("labelTitle"));
- labelTitle->setText(tr("Sub Matrix ") + QString::number(subVectorIndex));
- labelTitle->setStyleSheet("color: #808BFF;height: 30px");
- subGridLayout->addWidget(labelTitle, 0, 1, 1, 3);
- vecControls.push_back(labelTitle);
- QPushButton* pushButtonDelete = new QPushButton(subWidget);
- pushButtonDelete->setObjectName(QString::fromUtf8("button delete"));
- pushButtonDelete->setText(tr("delete Matrix"));
- subGridLayout->addWidget(pushButtonDelete, 1, 2, 1, 1);
- connect(pushButtonDelete, &QPushButton::clicked, this, [=]() {
- //处理index
- auto currentIt = m_mapSubWidgetIndex.find(subWidget);
- int index = currentIt.value(); //迭代器 erase后currentIt被删除了
- m_mapSubWidgetIndex.erase(currentIt);
- for (auto it = m_mapSubWidgetIndex.begin(); it != m_mapSubWidgetIndex.end(); ++it)
- {
- if (it.value() > index)
- {
- //value() 返回的是副本不是引用
- int newIndex = it.value() - 1;
- m_mapSubWidgetIndex.insert(it.key(), newIndex);
- }
- }
- // 子矩阵ID
- int subMatrixId = m_vecSubWaffleMatrix[index].MatrixId;
- //删除缓存
- m_vecSubWaffleMatrix.erase(m_vecSubWaffleMatrix.begin() + index);
- //删除大矩阵子ID数据(遍历删除)
- for (PROGRAM_WAFFLE_MATRIX_STRUCT& matrix : m_vecWaffleMatrix)
- {
- auto it = std::find(matrix.VecDieMatrixId.begin(), matrix.VecDieMatrixId.end(), subMatrixId);
- if (it != matrix.VecDieMatrixId.end())
- {
- matrix.VecDieMatrixId.erase(it);
- }
- }
- delete subWidget;
- });
- QLabel* labelRow = new QLabel(subWidget);
- labelRow->setObjectName(QString::fromUtf8("labelRow"));
- labelRow->setText(tr("Row "));
- subGridLayout->addWidget(labelRow, 2, 0, 1, 1);
- vecControls.push_back(labelRow);
- SpinBox* spinBoxRow = new SpinBox(subWidget);
- spinBoxRow->setObjectName(QString::fromUtf8("spinBoxRow"));
- subGridLayout->addWidget(spinBoxRow, 2, 1, 1, 1);
- vecControls.push_back(spinBoxRow);
- QLabel* labelCol = new QLabel(subWidget);
- labelCol->setObjectName(QString::fromUtf8("labelCol"));
- labelCol->setText(tr("Cow "));
- subGridLayout->addWidget(labelCol, 3, 0, 1, 1);
- vecControls.push_back(labelCol);
- SpinBox* spinBoxCol = new SpinBox(subWidget);
- spinBoxCol->setObjectName(QString::fromUtf8("spinBoxCol"));
- subGridLayout->addWidget(spinBoxCol, 3, 1, 1, 1);
- vecControls.push_back(spinBoxCol);
- QLabel* labelLeftTop = new QLabel(subWidget);
- 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(subWidget);
- doubleSpinBoxLeftTopX->setObjectName(QString::fromUtf8("doubleSpinBoxLeftTopX"));
- subGridLayout->addWidget(doubleSpinBoxLeftTopX, 4, 1, 1, 1);
- vecControls.push_back(doubleSpinBoxLeftTopX);
- DoubleSpinBox* doubleSpinBoxLeftTopY = new DoubleSpinBox(subWidget);
- doubleSpinBoxLeftTopY->setObjectName(QString::fromUtf8("doubleSpinBoxLeftTopY"));
- subGridLayout->addWidget(doubleSpinBoxLeftTopY, 4, 2, 1, 1);
- vecControls.push_back(doubleSpinBoxLeftTopY);
- QLabel* labelRightTopPos = new QLabel(subWidget);
- 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(subWidget);
- doubleSpinBoxRightTopX->setObjectName(QString::fromUtf8("doubleSpinBoxRightTopX"));
- subGridLayout->addWidget(doubleSpinBoxRightTopX, 5, 1, 1, 1);
- vecControls.push_back(doubleSpinBoxRightTopX);
- DoubleSpinBox* doubleSpinBoxRightTopY = new DoubleSpinBox(subWidget);
- doubleSpinBoxRightTopY->setObjectName(QString::fromUtf8("doubleSpinBoxRightTopY"));
- subGridLayout->addWidget(doubleSpinBoxRightTopY, 5, 2, 1, 1);
- vecControls.push_back(doubleSpinBoxRightTopY);
- QLabel* labelRightButtomPos = new QLabel(subWidget);
- 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(subWidget);
- doubleSpinBoxRightButtomX->setObjectName(QString::fromUtf8("doubleSpinBoxRightButtomX"));
- subGridLayout->addWidget(doubleSpinBoxRightButtomX, 6, 1, 1, 1);
- vecControls.push_back(doubleSpinBoxRightButtomX);
- DoubleSpinBox* doubleSpinBoxRightButtomY = new DoubleSpinBox(subWidget);
- doubleSpinBoxRightButtomY->setObjectName(QString::fromUtf8("doubleSpinBoxRightButtomY"));
- subGridLayout->addWidget(doubleSpinBoxRightButtomY, 6, 2, 1, 1);
- vecControls.push_back(doubleSpinBoxRightTopX);
- QLabel* labelNoBondPts = new QLabel(subWidget);
- 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(subWidget);
- lineEditNoBondPts->setObjectName(QString::fromUtf8("lineEditNoBondPts"));
- lineEditNoBondPts->setReadOnly(true);
- lineEditNoBondPts->setCursor(Qt::PointingHandCursor);
- lineEditNoBondPts->setProperty("vectorIndex", subVectorIndex); // 存储索引
- lineEditNoBondPts->installEventFilter(this);
- subGridLayout->addWidget(lineEditNoBondPts, 7, 1, 1, 2);
- vecControls.push_back(lineEditNoBondPts);
- //layout->addLayout(subGridLayout, 11, 0);
- QFrame* line = new QFrame(subWidget);
- line->setFrameShape(QFrame::NoFrame); // 移除默认框架
- line->setFixedHeight(2); // 设置固定高度
- line->setStyleSheet("background-color: #C7CAEB;");
- subGridLayout->addWidget(line, 10, 0, 1, 3);
- layout->addWidget(subWidget);
- m_mapSubWidgetIndex.insert(subWidget, subVectorIndex);
- spinBoxRow->setValue(subMatrix.MatrixRow);
- spinBoxCol->setValue(subMatrix.MatrixCol);
- doubleSpinBoxLeftTopX->setValue(subMatrix.LeftTopPoint.x);
- doubleSpinBoxLeftTopY->setValue(subMatrix.LeftTopPoint.y);
- doubleSpinBoxRightTopX->setValue(subMatrix.RightTopPoint.x);
- doubleSpinBoxRightTopY->setValue(subMatrix.RightTopPoint.y);
- doubleSpinBoxRightButtomX->setValue(subMatrix.RightBottomPoint.x);
- doubleSpinBoxRightButtomY->setValue(subMatrix.RightBottomPoint.y);
- connect(spinBoxRow, &SpinBox::editDone, this, [=]() {
- auto it = m_mapSubWidgetIndex.find(subWidget);
- m_vecSubWaffleMatrix[it.value()].MatrixRow = spinBoxRow->value();
- });
- connect(spinBoxCol, &SpinBox::editDone, this, [=]() {
- auto it = m_mapSubWidgetIndex.find(subWidget);
- m_vecSubWaffleMatrix[it.value()].MatrixCol = spinBoxCol->value();
- });
- connect(doubleSpinBoxLeftTopX, &DoubleSpinBox::editDone, this, [=]() {
- auto it = m_mapSubWidgetIndex.find(subWidget);
- m_vecSubWaffleMatrix[it.value()].LeftTopPoint.x = doubleSpinBoxLeftTopX->value();
- });
- connect(doubleSpinBoxLeftTopY, &DoubleSpinBox::editDone, this, [=]() {
- auto it = m_mapSubWidgetIndex.find(subWidget);
- m_vecSubWaffleMatrix[it.value()].LeftTopPoint.y = doubleSpinBoxLeftTopY->value();
- });
- connect(doubleSpinBoxRightTopX, &DoubleSpinBox::editDone, this, [=]() {
- auto it = m_mapSubWidgetIndex.find(subWidget);
- m_vecSubWaffleMatrix[it.value()].RightTopPoint.x = doubleSpinBoxRightTopX->value();
- });
- connect(doubleSpinBoxRightTopY, &DoubleSpinBox::editDone, this, [=]() {
- auto it = m_mapSubWidgetIndex.find(subWidget);
- m_vecSubWaffleMatrix[it.value()].RightTopPoint.y = doubleSpinBoxRightTopY->value();
- });
- connect(doubleSpinBoxRightButtomX, &DoubleSpinBox::editDone, this, [=]() {
- auto it = m_mapSubWidgetIndex.find(subWidget);
- m_vecSubWaffleMatrix[it.value()].RightBottomPoint.x = doubleSpinBoxRightButtomX->value();
- });
- connect(doubleSpinBoxRightButtomY, &DoubleSpinBox::editDone, this, [=]() {
- auto it = m_mapSubWidgetIndex.find(subWidget);
- m_vecSubWaffleMatrix[it.value()].RightBottomPoint.y = doubleSpinBoxRightButtomY->value();
- });
- connect(lineEditNoBondPts, &QLineEdit::textChanged, this, [=]() {
- auto it = m_mapSubWidgetIndex.find(subWidget);
- });
- }
- bool WaffleProgramPage::eventFilter(QObject* obj, QEvent* event) {
- if (event->type() == QEvent::MouseButtonPress)
- {
- auto* lineEdit = qobject_cast<QLineEdit*>(obj);
- if (lineEdit)
- {
- int index = lineEdit->property("vectorIndex").toInt();
- onNoBondPtsClicked(lineEdit, index);
- return true; // 拦截事件
- }
- }
- return QWidget::eventFilter(obj, event);
- }
- void WaffleProgramPage::onNoBondPtsClicked(QLineEdit* lineEdit, int index) {
- if (index < 0 || index >= m_vecWaffleMatrix.size()) return;
- const auto& waffle = m_vecWaffleMatrix[index];
- NoBondPtEditDialog dlg(waffle.PackRow, waffle.PackCol, waffle.VecNoBondDie, this);
- if (dlg.exec() == QDialog::Accepted)
- {
- QVector<XY_LONG_STRUCT> selected = dlg.getSelectedPoints();
- m_vecWaffleMatrix[index].VecNoBondDie = std::vector<XY_LONG_STRUCT>(selected.begin(), selected.end());
- QStringList ptList;
- for (const auto& pt : selected)
- ptList << QString("(%1,%2)").arg(pt.x).arg(pt.y);
- lineEdit->setText(ptList.join(" "));
- }
- }
- void WaffleProgramPage::SaveAllParam()
- {
- }
- void WaffleProgramPage::MatrixChangeEvent()
- {
- for (PROGRAM_WAFFLE_MATRIX_STRUCT& waffleMatrix : m_vecWaffleMatrix)
- {
- m_pProduct->SetWaffleMatrix(waffleMatrix.MatrixId, waffleMatrix);
- }
- m_pProduct->SetDieMatrix(m_vecSubWaffleMatrix, true);
- //for (PROGRAM_BOND_MATRIX_STRUCT& bondMatrix : m_vecWaffleMatrix)
- //{
- // m_manageDB->GetCProduct()->SetBondMatrix(bondMatrix.BondMatrixId, bondMatrix);
- //}
- //for (PROGRAM_POINT_MATRIX_STRUCT& pointMatrix : m_vecSubMatrixs)
- //{
- // m_manageDB->GetCProduct()->SetPointMatrix(pointMatrix.MatrixId, pointMatrix);
- //}
- }
- void WaffleProgramPage::initPage()
- {
- m_vecWaffleMatrix = m_pProduct->GetWaffleMatrix();
- for (int i = 0; i < m_vecWaffleMatrix.size(); i++)
- {
- for (int j = 0; j < m_vecWaffleMatrix[i].VecDieMatrixId.size(); j++)
- {
- PROGRAM_DIE_MATRIX_STRUCT subMatrix;
- m_pProduct->GetDieMatrix(m_vecWaffleMatrix[i].VecDieMatrixId[j], subMatrix);
- m_vecSubWaffleMatrix.push_back(subMatrix);
- //AddMatrixPage(i, j, subMatrix);
- }
- AddMatrixPage(i, m_vecWaffleMatrix[i], m_vecSubWaffleMatrix);
- //for (int j = 0; j < m_vecWaffleMatrix[i].VecDieMatrixId.size(); j++)
- //{
- // for (int k = 0; k < m_vecSubWaffleMatrix.size(); k++)
- // {
- // if (m_vecWaffleMatrix[i].VecDieMatrixId[j] == m_vecSubWaffleMatrix[k].MatrixId)
- // {
- // AddSubMatrixPage(i, m_vecSubWaffleMatrix[k],nullptr);
- // }
- // }
- //}
- }
- }
|