From eefdeaae7ec7f0219223644e09cace04f6430118 Mon Sep 17 00:00:00 2001 From: Matthias Puchner <github@mpuchner.de> Date: Tue, 7 Dec 2021 13:09:23 +0100 Subject: [PATCH] show only the currently selected sample in py preview --- GUI/View/SampleDesigner/SampleView.cpp | 3 ++ GUI/View/SampleDesigner/ScriptPanel.cpp | 39 +++++++++++++++---------- GUI/View/SampleDesigner/ScriptPanel.h | 4 +++ 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/GUI/View/SampleDesigner/SampleView.cpp b/GUI/View/SampleDesigner/SampleView.cpp index f1a906a1e4d..7e27f6f3ad1 100644 --- a/GUI/View/SampleDesigner/SampleView.cpp +++ b/GUI/View/SampleDesigner/SampleView.cpp @@ -76,6 +76,9 @@ SampleView::SampleView(QWidget* parent, ProjectDocument* document) connect(sampleSelectionView, &SampleListView::currentSampleChanged, m_realSpacePanel->canvas(), &RealSpaceCanvas::setCurrentItem); + connect(sampleSelectionView, &SampleListView::currentSampleChanged, scriptPanel, + &ScriptPanel::setCurrentSample); + connect(editor, &LayerOrientedSampleEditor::requestViewInRealSpace, this, &SampleView::onRequestViewInRealSpace); diff --git a/GUI/View/SampleDesigner/ScriptPanel.cpp b/GUI/View/SampleDesigner/ScriptPanel.cpp index 427eb3e3ae3..8e3af3eb6b2 100644 --- a/GUI/View/SampleDesigner/ScriptPanel.cpp +++ b/GUI/View/SampleDesigner/ScriptPanel.cpp @@ -40,6 +40,7 @@ ScriptPanel::ScriptPanel(SampleModel* sampleModel, QWidget* parent) , m_highlighter(nullptr) , m_updateTimer(new UpdateTimer(accumulateUpdatesDuringMsec, this)) , m_cautionSign(new CautionSign(m_textEdit)) + , m_currentMultiLayerItem(nullptr) { setWindowTitle("Python Script"); setObjectName("ScriptPanel"); @@ -56,6 +57,12 @@ ScriptPanel::ScriptPanel(SampleModel* sampleModel, QWidget* parent) m_textEdit->setFontPointSize(DesignerHelper::getPythonEditorFontSize()); } +void ScriptPanel::setCurrentSample(MultiLayerItem* multiLayerItem) +{ + m_currentMultiLayerItem = multiLayerItem; + updateEditor(); +} + void ScriptPanel::updateEditor() { if (!m_highlighter) { @@ -109,23 +116,23 @@ void ScriptPanel::hideEvent(QHideEvent*) QString ScriptPanel::generateCodeSnippet() { m_cautionSign->clear(); - QString result; - for (const MultiLayerItem* sampleItem : m_sampleModel->multiLayerItems()) { - try { - auto multilayer = GUI::Model::DomainObjectBuilder::buildMultiLayer(*sampleItem); - if (!result.isEmpty()) - result.append("\n"); - result.append(QString::fromStdString(Py::Export::sampleCode(*multilayer))); - } catch (const std::exception& ex) { - QString message = - QString("Generation of Python Script failed. Code is not complete.\n\n" - "It can happen if sample requires further assembling or some of sample " - "parameters are not valid. See details below.\n\n%1") - .arg(QString::fromStdString(ex.what())); - - m_cautionSign->setCautionMessage(message); - } + if (m_currentMultiLayerItem == nullptr) + return {}; + + QString result; + try { + auto multilayer = + GUI::Model::DomainObjectBuilder::buildMultiLayer(*m_currentMultiLayerItem); + result.append(QString::fromStdString(Py::Export::sampleCode(*multilayer))); + } catch (const std::exception& ex) { + QString message = + QString("Generation of Python Script failed. Code is not complete.\n\n" + "It can happen if sample requires further assembling or some of sample " + "parameters are not valid. See details below.\n\n%1") + .arg(QString::fromStdString(ex.what())); + + m_cautionSign->setCautionMessage(message); } return result; diff --git a/GUI/View/SampleDesigner/ScriptPanel.h b/GUI/View/SampleDesigner/ScriptPanel.h index bc8bd6c6c1a..dff8439d7f0 100644 --- a/GUI/View/SampleDesigner/ScriptPanel.h +++ b/GUI/View/SampleDesigner/ScriptPanel.h @@ -25,6 +25,7 @@ class QShowEvent; class QHideEvent; class QTextEdit; class QModelIndex; +class MultiLayerItem; //! Resides at the bottom of SampleView and displays a Python script. @@ -34,6 +35,8 @@ class ScriptPanel : public QWidget { public: explicit ScriptPanel(SampleModel* sampleModel, QWidget* parent); + void setCurrentSample(MultiLayerItem* multiLayerItem); + protected: void showEvent(QShowEvent*) override; void hideEvent(QHideEvent*) override; @@ -52,6 +55,7 @@ private: PythonSyntaxHighlighter* m_highlighter; UpdateTimer* m_updateTimer; CautionSign* m_cautionSign; + MultiLayerItem* m_currentMultiLayerItem; }; #endif // BORNAGAIN_GUI_VIEW_SAMPLEDESIGNER_SCRIPTPANEL_H -- GitLab