From ba80b6b861e753ef4ed8cacfcebf84a248d9493f Mon Sep 17 00:00:00 2001 From: 2ndbeam <2ndbeam@disroot.org> Date: Mon, 30 Jun 2025 21:52:33 +0300 Subject: [PATCH] Simple warnings --- line.cpp | 5 +++++ line.h | 1 + mainwindow.cpp | 32 ++++++++++++++++++++++++++++ mainwindow.ui | 57 +++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 94 insertions(+), 1 deletion(-) diff --git a/line.cpp b/line.cpp index 7d243cc..db0d1d9 100644 --- a/line.cpp +++ b/line.cpp @@ -27,6 +27,11 @@ const QPoint &Line::getEnd() const return end; } +const QString &Line::getColor() const +{ + return color; +} + QString Line::getColor() { return color; diff --git a/line.h b/line.h index 6bb0151..ba229d7 100644 --- a/line.h +++ b/line.h @@ -16,6 +16,7 @@ public: void setColor(QString color); const QPoint& getStart() const; const QPoint& getEnd() const; + const QString& getColor() const; QString getColor(); QString toLuaTable(); }; diff --git a/mainwindow.cpp b/mainwindow.cpp index da50b3a..0ba6064 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -34,8 +34,40 @@ void MainWindow::onGridUpdated() ui->listLines->clear(); + QMap> colorCount; for (int i = 0; i< ui->gridPreview->getLines().size(); i++) + { ui->listLines->addItem(QString("Line #%1").arg(i + 1)); + QString color = ui->gridPreview->getLine(i).getColor(); + auto iter = colorCount.find(color); + if (iter == colorCount.end()) + colorCount.insert(color, { i + 1 }); + else + iter->push_back(i + 1); + } + + ui->treeWarnings->clear(); + + for (auto iter = colorCount.begin(); iter != colorCount.end(); iter++) + { + if (iter->size() > 1) + { + QTreeWidgetItem *topItem = new QTreeWidgetItem(ui->treeWarnings, QStringList{ + QString("Color \"%1\" is used by several lines:").arg(iter.key()) + }); + + for(int i = 0; i < iter->size(); i++) + { + QTreeWidgetItem *innerItem = new QTreeWidgetItem(topItem, QStringList { + QString("Line #%1").arg(iter->at(i)) + }); + topItem->addChild(innerItem); + } + + ui->treeWarnings->addTopLevelItem(topItem); + } + } + ui->treeWarnings->expandAll(); PointProbe pp = ui->gridPreview->getCapturedProbe(); diff --git a/mainwindow.ui b/mainwindow.ui index 0983c16..1cab455 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -28,7 +28,11 @@ - + + + Qt::ContextMenuPolicy::NoContextMenu + + @@ -426,6 +430,57 @@ + + + QDockWidget::DockWidgetFeature::DockWidgetMovable + + + Warnings + + + 8 + + + + + + + QFrame::Shape::StyledPanel + + + QFrame::Shadow::Raised + + + 2 + + + + + + -1 + + + true + + + true + + + false + + + + 1 + + + + + + + + + +