major api and quality of life changes

This commit is contained in:
Alexey 2025-06-30 13:43:47 +03:00
commit 67e63561c4
7 changed files with 113 additions and 24 deletions

View file

@ -8,7 +8,14 @@ MainWindow::MainWindow(QWidget *parent)
ui->setupUi(this);
QObject::connect(ui->gridPreview, &GridPreview::updatedContents,
this, &MainWindow::onGridUpdated);
ui->gridPreview->updatedContents();
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()
@ -24,6 +31,15 @@ void MainWindow::onGridUpdated()
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)
@ -37,3 +53,40 @@ 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;
}