// ************************************************************************************************ // // BornAgain: simulate and fit reflection and scattering // //! @file GUI/View/SampleDesigner/ParticleLayoutForm.h //! @brief Defines class ParticleLayoutForm //! //! @homepage http://www.bornagainproject.org //! @license GNU General Public License v3 or higher (see COPYING) //! @copyright Forschungszentrum Jülich GmbH 2021 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS) // // ************************************************************************************************ #ifndef BORNAGAIN_GUI_VIEW_SAMPLEDESIGNER_PARTICLELAYOUTFORM_H #define BORNAGAIN_GUI_VIEW_SAMPLEDESIGNER_PARTICLELAYOUTFORM_H #include <QGroupBox> #include <QList> class QAction; class SampleEditorController; class QFormLayout; class ParticleLayoutItem; class LayerForm; class SessionItem; class ItemWithParticles; class DoubleSpinBox; //! Form for editing a particle layout class ParticleLayoutForm : public QGroupBox { Q_OBJECT public: ParticleLayoutForm(LayerForm* parent, ParticleLayoutItem* layoutItem, SampleEditorController* ec); void enableStructureEditing(bool b); ParticleLayoutItem* layoutItem() const; void onParticleAdded(SessionItem* item); void onAboutToRemoveParticle(ItemWithParticles* item); //! Disable/enable total density property depending on type of interference function. //! //! E.g. 2-dimensional interference calculates density automatically, so //! the property shown in the particle layout shall be disabled. void updateDensityEnabling(); //! Update the shown density value. //! //! This does not update any internal values, it only refreshes the shown value. void updateDensityValue(); private: QFormLayout* m_layout; ParticleLayoutItem* m_layoutItem; QAction* m_removeAction; SampleEditorController* m_ec; QList<QWidget*> m_structureEditingWidgets; DoubleSpinBox* m_totalDensitySpinBox; }; #endif // BORNAGAIN_GUI_VIEW_SAMPLEDESIGNER_PARTICLELAYOUTFORM_H