Mercurial > hg > sonic-visualiser
comparison main/MainWindow.cpp @ 2480:1a04140acf60
Implement undo/redo for renaming layers, fixing #1977
author | Chris Cannam |
---|---|
date | Fri, 27 Mar 2020 10:26:59 +0000 |
parents | acd2dcecc674 |
children | d469d26ffeb1 |
comparison
equal
deleted
inserted
replaced
2479:acd2dcecc674 | 2480:1a04140acf60 |
---|---|
4360 | 4360 |
4361 void | 4361 void |
4362 MainWindow::renameCurrentLayer() | 4362 MainWindow::renameCurrentLayer() |
4363 { | 4363 { |
4364 Pane *pane = m_paneStack->getCurrentPane(); | 4364 Pane *pane = m_paneStack->getCurrentPane(); |
4365 if (pane) { | 4365 if (!pane) return; |
4366 Layer *layer = pane->getSelectedLayer(); | 4366 |
4367 if (layer) { | 4367 Layer *layer = pane->getSelectedLayer(); |
4368 bool ok = false; | 4368 if (!layer) return; |
4369 QString newName = QInputDialog::getText | 4369 |
4370 (this, tr("Rename Layer"), | 4370 bool ok = false; |
4371 tr("New name for this layer:"), | 4371 QString newName = QInputDialog::getText |
4372 QLineEdit::Normal, layer->objectName(), &ok); | 4372 (this, tr("Rename Layer"), |
4373 if (ok) { | 4373 tr("New name for this layer:"), |
4374 layer->setPresentationName(newName); | 4374 QLineEdit::Normal, layer->objectName(), &ok); |
4375 setupExistingLayersMenus(); | 4375 if (!ok) return; |
4376 } | 4376 |
4377 } | 4377 bool existingNameSet = layer->isPresentationNameSet(); |
4378 } | 4378 QString existingName = layer->getLayerPresentationName(); |
4379 | |
4380 CommandHistory::getInstance()->addCommand | |
4381 (new GenericCommand | |
4382 (tr("Rename Layer"), | |
4383 [=]() { | |
4384 layer->setPresentationName(newName); | |
4385 setupExistingLayersMenus(); | |
4386 }, | |
4387 [=]() { | |
4388 layer->setPresentationName(existingNameSet ? existingName : ""); | |
4389 setupExistingLayersMenus(); | |
4390 })); | |
4379 } | 4391 } |
4380 | 4392 |
4381 void | 4393 void |
4382 MainWindow::findTransform() | 4394 MainWindow::findTransform() |
4383 { | 4395 { |