Mercurial > hg > sonic-visualiser
diff main/MainWindow.cpp @ 1558:28d80ef79473
Report on failures that happen while configuring a transform
author | Chris Cannam |
---|---|
date | Thu, 19 Jan 2017 10:50:04 +0000 |
parents | 44e09e1996a3 |
children | 3b8bd7e520c5 |
line wrap: on
line diff
--- a/main/MainWindow.cpp Thu Jan 19 09:57:58 2017 +0000 +++ b/main/MainWindow.cpp Thu Jan 19 10:50:04 2017 +0000 @@ -3881,8 +3881,17 @@ return; } - Transform transform = TransformFactory::getInstance()-> - getDefaultTransformFor(transformId); + Transform transform; + try { + transform = TransformFactory::getInstance()-> + getDefaultTransformFor(transformId); + } catch (std::exception &e) { // e.g. Piper server failure + QMessageBox::critical + (this, tr("Failed to query transform attributes"), + tr("<b>Failed to query transform attributes</b><p>Plugin or server error: %1</p>") + .arg(e.what())); + return; + } std::vector<Model *> candidateInputModels = m_document->getTransformInputModels(); @@ -3951,15 +3960,22 @@ // SVDEBUG << "MainWindow::addLayer: Input model is " << input.getModel() << " \"" << input.getModel()->objectName() << "\"" << endl << "transform:" << endl << transform.toXmlString() << endl; - Layer *newLayer = m_document->createDerivedLayer(transform, input); - - if (newLayer) { - m_document->addLayerToView(pane, newLayer); - m_document->setChannel(newLayer, input.getChannel()); - m_recentTransforms.add(transformId); - m_paneStack->setCurrentLayer(pane, newLayer); + try { + Layer *newLayer = m_document->createDerivedLayer(transform, input); + if (newLayer) { + m_document->addLayerToView(pane, newLayer); + m_document->setChannel(newLayer, input.getChannel()); + m_recentTransforms.add(transformId); + m_paneStack->setCurrentLayer(pane, newLayer); + } + } catch (std::exception &e) { // e.g. Piper server failure + QMessageBox::critical + (this, tr("Transform failed"), + tr("<b>Failed to run transform</b><p>Plugin or server error: %1</p>") + .arg(e.what())); + return; } - + updateMenuStates(); }