diff --git a/dbc/dbcloadsavewindow.cpp b/dbc/dbcloadsavewindow.cpp index 7bc5a58..5853b66 100644 --- a/dbc/dbcloadsavewindow.cpp +++ b/dbc/dbcloadsavewindow.cpp @@ -34,6 +34,7 @@ DBCLoadSaveWindow::DBCLoadSaveWindow(const QVector *frames, QWidget *p connect(ui->tableFiles, &QTableWidget::cellDoubleClicked, this, &DBCLoadSaveWindow::cellDoubleClicked); editorWindow = new DBCMainEditor(frames); + currentlyEditingFile = nullptr; installEventFilter(this); } @@ -108,10 +109,25 @@ void DBCLoadSaveWindow::saveFile() void DBCLoadSaveWindow::removeFile() { + bool bContinue = true; int idx = ui->tableFiles->currentRow(); if (idx < 0) return; - dbcHandler->removeDBCFile(idx); - ui->tableFiles->removeRow(idx); + + if (currentlyEditingFile == dbcHandler->getFileByIdx(idx)) + { + bContinue = false; + QMessageBox::StandardButton confirmDialog; + confirmDialog = QMessageBox::question(this, "Confirm Deletion", "This DBC is currently open for editing.\nMake sure you've saved any changes!\nAre you sure you want to remove this DBC?", + QMessageBox::Yes|QMessageBox::No); + if (confirmDialog == QMessageBox::Yes) bContinue = true; + } + + if (bContinue) + { + editorWindow->close(); + dbcHandler->removeDBCFile(idx); + ui->tableFiles->removeRow(idx); + } } void DBCLoadSaveWindow::moveUp() @@ -185,6 +201,7 @@ void DBCLoadSaveWindow::cellChanged(int row, int col) void DBCLoadSaveWindow::cellDoubleClicked(int row, int col) { Q_UNUSED(col) + currentlyEditingFile = dbcHandler->getFileByIdx(row); editorWindow->setFileIdx(row); editorWindow->show(); } diff --git a/dbc/dbcloadsavewindow.h b/dbc/dbcloadsavewindow.h index 6e41e0c..a307a86 100644 --- a/dbc/dbcloadsavewindow.h +++ b/dbc/dbcloadsavewindow.h @@ -32,6 +32,7 @@ private slots: private: Ui::DBCLoadSaveWindow *ui; DBCHandler *dbcHandler; + DBCFile *currentlyEditingFile; const QVector *referenceFrames; DBCMainEditor *editorWindow; diff --git a/dbc/dbcmaineditor.cpp b/dbc/dbcmaineditor.cpp index 2afe9cc..8486df5 100644 --- a/dbc/dbcmaineditor.cpp +++ b/dbc/dbcmaineditor.cpp @@ -103,6 +103,7 @@ void DBCMainEditor::closeEvent(QCloseEvent *event) { Q_UNUSED(event); writeSettings(); + sigEditor->close(); } void DBCMainEditor::readSettings() @@ -153,7 +154,7 @@ void DBCMainEditor::deleteCurrentNode() int thisRow = ui->NodesTable->currentRow(); QString nodeName = ui->NodesTable->item(thisRow, 0)->text(); if (nodeName.length() > 0 && nodeName.compare("Vector__XXX", Qt::CaseInsensitive) != 0) - { + { ui->NodesTable->removeRow(thisRow); dbcFile->dbc_nodes.removeAt(thisRow); inhibitCellChanged = true;