diff --git a/GUI/View/Project/PyImportAssistant.cpp b/GUI/View/Project/PyImportAssistant.cpp index a27b7dc9443d755fbecc575372ce54f2da110618..db33105cc4af227e87cd3747cafc70945e8b664d 100644 --- a/GUI/View/Project/PyImportAssistant.cpp +++ b/GUI/View/Project/PyImportAssistant.cpp @@ -107,7 +107,7 @@ std::unique_ptr<MultiLayer> createMultiLayer(const QString& snippet, const QStri PyObjectPtr result{PyInterpreter::createMultiLayerFromPython( result_ptr, snippet.toStdString(), funcName.toStdString(), bornagainDir())}; - std::unique_ptr<MultiLayer> multilayer_ptr(reinterpret_cast<MultiLayer*>(result_ptr)); + std::unique_ptr<MultiLayer> multilayer_ptr(reinterpret_cast<MultiLayer*>(result_ptr)->clone()); if (!result.valid()) { QApplication::restoreOverrideCursor(); @@ -184,9 +184,9 @@ std::unique_ptr<MultiLayer> PyImportAssistant::importMultiLayer() if (funcName.isEmpty()) return {}; - auto sample = createMultiLayer(snippet, funcName); + std::unique_ptr<MultiLayer> sample = createMultiLayer(snippet, funcName); if (!sample) - return {}; + throw std::runtime_error("Import did not yield MultiLayer object"); if (sample->sampleName() == "Unnamed") sample->setSampleName(GUI::Util::Path::baseName(fileName).toStdString()); diff --git a/GUI/View/SampleDesigner/SampleListModel.cpp b/GUI/View/SampleDesigner/SampleListModel.cpp index 304e0d788ee84464dc6ac1b562153be343529c67..fc297ae116c5608e51d76af337242876275db0d1 100644 --- a/GUI/View/SampleDesigner/SampleListModel.cpp +++ b/GUI/View/SampleDesigner/SampleListModel.cpp @@ -162,14 +162,13 @@ QModelIndex SampleListModel::createSampleFromExamples(const QString& className, #ifdef BORNAGAIN_PYTHON QModelIndex SampleListModel::createSampleFromPython() { - auto sample = PyImportAssistant::importMultiLayer(); + std::unique_ptr<MultiLayer> sample = PyImportAssistant::importMultiLayer(); if (!sample) - return {}; // any messages already shown to user; no dlg necessary anymore + return {}; // any messages already shown to user - - auto* sampleItem = PyImportAssistant::itemizeSample(*sample); + SampleItem* sampleItem = PyImportAssistant::itemizeSample(*sample); if (!sampleItem) - return {}; // any messages already shown to user; no dlg necessary anymore + return {}; // any messages already shown to user sampleItem->setDescription("Imported from python code");