diff --git a/gridpreview.cpp b/gridpreview.cpp index 582a9a1..93d113a 100644 --- a/gridpreview.cpp +++ b/gridpreview.cpp @@ -66,6 +66,15 @@ const QList &GridPreview::getLines() const return lines; } +void GridPreview::clear() +{ + lines.clear(); + width = 5; + height = 5; + + emit updatedContents(); +} + const Line &GridPreview::getLine(int index) const { return lines.at(index); diff --git a/gridpreview.h b/gridpreview.h index f15873c..89db5b0 100644 --- a/gridpreview.h +++ b/gridpreview.h @@ -50,6 +50,8 @@ public: PointProbe& getCapturedProbe(); const QList& getLines() const; + void clear(); + const QString toLuaTable(); void paintEvent(QPaintEvent* event); const QColor colorFromString(const QString color); diff --git a/mainwindow.cpp b/mainwindow.cpp index 3bcc18d..da50b3a 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -90,3 +90,35 @@ bool MainWindow::isSelectedLineCorrect(int line) return line >= 0 && line < size && size > 0; } + +void MainWindow::on_buttonSave_clicked() +{ + QString fileName = QFileDialog::getSaveFileName(this, QString("Save grid"), ".", "Lua source code (*.lua)"); + QFile file(fileName); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) + return; + + QTextStream out(&file); + out << ui->gridPreview->toLuaTable(); +} + + +void MainWindow::on_buttonClear_clicked() +{ + ui->gridPreview->clear(); +} + + +void MainWindow::on_buttonDeleteLine_clicked() +{ + int selected = ui->listLines->currentRow(); + + if (!isSelectedLineCorrect(selected)) + return; + + ui->gridPreview->getCapturedProbe().ownerIndex = -1; + ui->gridPreview->removeLine(selected); + + ui->listLines->clearSelection(); +} + diff --git a/mainwindow.h b/mainwindow.h index 56938f5..fed122c 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -2,6 +2,7 @@ #define MAINWINDOW_H #include +#include QT_BEGIN_NAMESPACE namespace Ui { @@ -29,6 +30,12 @@ private slots: void on_comboLineColor_currentTextChanged(const QString &arg1); void on_listLines_currentRowChanged(int currentRow); + void on_buttonSave_clicked(); + + void on_buttonClear_clicked(); + + void on_buttonDeleteLine_clicked(); + private: Ui::MainWindow *ui; int lastEditedLine = -1;