BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SpecularBeamEditor.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/InstrumentWidgets/SpecularBeamEditor.cpp
6 //! @brief Defines class SpecularBeamEditor
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
22 #include <QGridLayout>
23 #include <QGroupBox>
24 
25 namespace {
26 const QString wavelength_title("Wavelength [nm]");
27 const QString inclination_title("Inclination angles [deg]");
28 const QString footprint_title("Footprint correction");
29 const QString polarization_title("Polarization (Bloch vector)");
30 } // namespace
31 
32 SpecularBeamEditor::SpecularBeamEditor(ColumnResizer* columnResizer, QWidget* parent)
33  : SessionItemWidget(parent)
34  , m_columnResizer(columnResizer)
35  , m_intensityEditor(new ComponentEditor(ComponentEditor::PlainWidget))
36  , m_wavelengthEditor(new ComponentEditor(ComponentEditor::InfoWidget, wavelength_title))
37  , m_inclinationEditor(new ComponentEditor(ComponentEditor::InfoWidget, inclination_title))
38  , m_footprint_editor(new ComponentEditor(ComponentEditor::GroupWidget, footprint_title))
39  , m_gridLayout(new QGridLayout)
40 {
41  m_gridLayout->addWidget(m_intensityEditor, 0, 0);
42  m_gridLayout->addWidget(m_wavelengthEditor, 1, 0);
43  m_gridLayout->addWidget(m_inclinationEditor, 1, 1);
44  m_gridLayout->addWidget(LayoutUtils::placeHolder(), 1, 2);
45  m_gridLayout->addWidget(m_footprint_editor, 2, 0);
46 
47  auto mainLayout = new QVBoxLayout;
48  mainLayout->addLayout(m_gridLayout);
49  mainLayout->addStretch();
50  setLayout(mainLayout);
51 
56 
60 }
61 
63 {
64  const auto beam_item = instrumentItem()->beamItem();
65  ASSERT(beam_item);
66 
68 
69  auto wavelengthItem = beam_item->getItem(SpecularBeamItem::P_WAVELENGTH);
71 
72  auto inclinationItem = beam_item->getItem(SpecularBeamItem::P_INCLINATION_ANGLE);
74  inclinationItem->getItem(SpecularBeamInclinationItem::P_DISTRIBUTION));
76  inclinationItem->getItem(SpecularBeamInclinationItem::P_ALPHA_AXIS));
77 
79 }
80 
82 {
87 }
88 
90 {
91  auto result = dynamic_cast<SpecularInstrumentItem*>(currentItem());
92  ASSERT(result);
93  return result;
94 }
95 
97 {
98  if (!item)
99  return;
100 
101  auto dialog = new DistributionDialog(this);
102  dialog->setItem(item);
103  dialog->setNameOfEditor(name);
104  dialog->show();
105 }
#define ASSERT(condition)
Definition: Assert.h:31
Defines class ColumnResizer.
Defines ComponentEditor class.
Defines class DistributionDialog.
Defines InstrumentItems classes.
Defines LayoutUtils namespace.
Defines class SpecularBeamEditor.
Declares the class SpecularBeamInclinationItem.
static const QString P_DISTRIBUTION
static const QString P_WAVELENGTH
Definition: BeamItems.h:29
static const QString P_INCLINATION_ANGLE
Definition: BeamItems.h:30
static const QString P_INTENSITY
Definition: BeamItems.h:28
The ColumnResizer class provides vertically aligned widgets from diferent layouts.
Definition: ColumnResizer.h:37
void addWidgetsFromGridLayout(QGridLayout *, int column)
Component editor for SessionItem.
void addItem(SessionItem *item)
void setItem(SessionItem *item)
void dialogRequest(SessionItem *item, const QString &names)
The dialog which shows an editor to change parameters of DistributionItem.
The SessionItemWidget class is a base for all widgets representing the content of SessionItem.
SessionItem * currentItem()
ColumnResizer * m_columnResizer
ComponentEditor * m_footprint_editor
ComponentEditor * m_wavelengthEditor
ComponentEditor * m_intensityEditor
QGridLayout * m_gridLayout
void onDialogRequest(SessionItem *item, const QString &name)
SpecularBeamEditor(ColumnResizer *columnResizer, QWidget *parent=nullptr)
ComponentEditor * m_inclinationEditor
SpecularInstrumentItem * instrumentItem()
static const QString P_FOOPTPRINT
Definition: BeamItems.h:56
SpecularBeamItem * beamItem() const override
QWidget * placeHolder()
Returns empty widget to occupy place in layout.
QString const & name(EShape k)
Definition: particles.cpp:21