#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QObject::connect(ui->gridPreview, &GridPreview::updatedContents, this, &MainWindow::onGridUpdated); colorMap.insert(QString("red"), Qt::red); colorMap.insert(QString("green"), Qt::green); colorMap.insert(QString("blue"), Qt::blue); ui->gridPreview->setColorMap(colorMap); emit ui->gridPreview->updatedContents(); ui->comboLineColor->addItems(colorMap.keys()); } MainWindow::~MainWindow() { delete ui; } void MainWindow::onGridUpdated() { ui->gridPreview->repaint(); ui->textPreview->setPlainText(ui->gridPreview->toLuaTable()); ui->spinGridWidth->setValue(ui->gridPreview->getWidth()); ui->spinGridHeight->setValue(ui->gridPreview->getHeight()); ui->listLines->clear(); for (int i = 0; i< ui->gridPreview->getLines().size(); i++) ui->listLines->addItem(QString("Line #%1").arg(i + 1)); PointProbe pp = ui->gridPreview->getCapturedProbe(); ui->listLines->setCurrentRow(pp.ownerIndex); } void MainWindow::on_spinGridWidth_valueChanged(int arg1) { ui->gridPreview->setSize(arg1, ui->gridPreview->getHeight()); } void MainWindow::on_spinGridHeight_valueChanged(int arg1) { ui->gridPreview->setSize(ui->gridPreview->getWidth(), arg1); } void MainWindow::on_comboLineColor_currentTextChanged(const QString&) { int selected = ui->listLines->currentRow(); if (!isSelectedLineCorrect(selected)) return; ui->gridPreview->setLineColor(selected, ui->comboLineColor->currentText()); } void MainWindow::on_listLines_currentRowChanged(int currentRow) { if (!isSelectedLineCorrect(currentRow)) return; PointProbe &probe = ui->gridPreview->getCapturedProbe(); probe.ownerIndex = currentRow; Line line = ui->gridPreview->getLine(currentRow); int startX = line.getStart().x(), startY = line.getStart().y(), endX = line.getEnd().x(), endY = line.getEnd().y(); ui->spinLineStartPointX->setValue(startX); ui->spinLineStartPointY->setValue(startY); ui->spinLineEndPointX->setValue(endX); ui->spinLineEndPointY->setValue(endY); ui->comboLineColor->setCurrentIndex(ui->comboLineColor->findText(line.getColor())); } bool MainWindow::isSelectedLineCorrect(int line) { int size = ui->gridPreview->getLines().size(); return line >= 0 && line < size && size > 0; }