// ************************************************************************************************ // // BornAgain: simulate and fit reflection and scattering // //! @file GUI/View/Sample/LayerStackForm.cpp //! @brief Implements class LayerStackForm. //! //! @homepage http://www.bornagainproject.org //! @license GNU General Public License v3 or higher (see COPYING) //! @copyright Forschungszentrum Jülich GmbH 2024 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS) // // ************************************************************************************************ #include "GUI/View/Sample/LayerStackForm.h" #include "GUI/Model/Sample/LayerStackItem.h" #include "GUI/View/Sample/SampleEditorController.h" #include <QPushButton> namespace { //! Widget with a button to add a layer or stack (the "Add layer/add stack" buttons shown between //! items) class AddLayerContainerWidget : public QWidget { public: AddLayerContainerWidget(QWidget* parent, LayerStackItem& parentStackItem, ItemWithLayers* itemBefore, SampleEditorController* ec) : QWidget(parent) , m_item(itemBefore) { auto* l = new QHBoxLayout(this); l->setContentsMargins(0, 0, 0, 0); l->addStretch(); auto* layer_btn = new QPushButton("Add layer", this); l->addWidget(layer_btn); connect(layer_btn, &QPushButton::clicked, [&] { ec->addLayerItem(parentStackItem, itemBefore); }); auto* stack_btn = new QPushButton("Add stack", this); l->addWidget(stack_btn); connect(stack_btn, &QPushButton::clicked, [&] { ec->addLayerItem(parentStackItem, itemBefore); }); l->addStretch(); } ItemWithLayers* m_item; }; } // namespace LayerStackForm::LayerStackForm(QWidget* parent, LayerStackItem* stack, SampleEditorController* ec) : LayerContainerForm(parent, stack, ec, "stack") , m_layout(new QVBoxLayout(this)) { } LayerStackItem* LayerStackForm::stackItem() const { return dynamic_cast<LayerStackItem*>(m_item); }