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 {