Ask for confirmation before closing a DBC file open for editing. If
closing the file also close editing windows as well. Fix for issue #149
This commit is contained in:
@@ -34,6 +34,7 @@ DBCLoadSaveWindow::DBCLoadSaveWindow(const QVector<CANFrame> *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();
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ private slots:
|
||||
private:
|
||||
Ui::DBCLoadSaveWindow *ui;
|
||||
DBCHandler *dbcHandler;
|
||||
DBCFile *currentlyEditingFile;
|
||||
const QVector<CANFrame> *referenceFrames;
|
||||
DBCMainEditor *editorWindow;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user