BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
OffSpecularBeamEditor.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/OffSpecularBeamEditor.cpp
6 //! @brief Implements class OffSpecularBeamEditor
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 
21 #include <QGridLayout>
22 #include <QGroupBox>
23 
24 namespace {
25 const QString wavelength_title("Wavelength [nm]");
26 const QString inclination_title("Inclination angle [deg]");
27 const QString azimuthal_title("Azimuthal angle [deg]");
28 const QString polarization_title("Polarization (Bloch vector)");
29 } // namespace
30 
32  : SessionItemWidget(parent)
33  , m_columnResizer(columnResizer)
34  , m_intensityEditor(new ComponentEditor(ComponentEditor::PlainWidget))
35  , m_wavelengthEditor(new ComponentEditor(ComponentEditor::InfoWidget, wavelength_title))
36  , m_inclinationEditor(new ComponentEditor(ComponentEditor::GroupWidget, inclination_title))
37  , m_azimuthalEditor(new ComponentEditor(ComponentEditor::InfoWidget, azimuthal_title))
38  , m_gridLayout(new QGridLayout)
39 {
40  m_gridLayout->addWidget(m_intensityEditor, 0, 0);
41  m_gridLayout->addWidget(m_wavelengthEditor, 1, 0);
42  m_gridLayout->addWidget(m_inclinationEditor, 1, 1);
43  m_gridLayout->addWidget(m_azimuthalEditor, 1, 2);
44 
45  auto mainLayout = new QVBoxLayout;
46  mainLayout->addLayout(m_gridLayout);
47  mainLayout->addStretch();
48  setLayout(mainLayout);
49 
56 
60 }
61 
63 {
65 
66  auto wavelengthItem = beamItem()->getItem(BeamItem::P_WAVELENGTH);
68 
70  m_inclinationEditor->setItem(inclinationItem);
71 
72  auto azimuthalItem = beamItem()->getItem(BeamItem::P_AZIMUTHAL_ANGLE);
74 }
75 
77 {
82 }
83 
85 {
86  auto result = dynamic_cast<OffSpecularInstrumentItem*>(currentItem());
87  ASSERT(result);
88  return result;
89 }
90 
92 {
93  return instrumentItem()->beamItem();
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 BeamDistributionItem.
Defines class ColumnResizer.
Defines ComponentEditor class.
Defines class DistributionDialog.
Defines InstrumentItems classes.
Defines class OffSpecularBeamEditor.
static const QString P_DISTRIBUTION
static const QString P_AZIMUTHAL_ANGLE
Definition: BeamItems.h:31
static const QString P_WAVELENGTH
Definition: BeamItems.h:29
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 setItem(SessionItem *item)
void dialogRequest(SessionItem *item, const QString &names)
The dialog which shows an editor to change parameters of DistributionItem.
virtual BeamItem * beamItem() const
ComponentEditor * m_inclinationEditor
void onDialogRequest(SessionItem *item, const QString &name)
ComponentEditor * m_wavelengthEditor
ColumnResizer * m_columnResizer
ComponentEditor * m_azimuthalEditor
OffSpecularInstrumentItem * instrumentItem()
ComponentEditor * m_intensityEditor
OffSpecularBeamEditor(ColumnResizer *columnResizer, QWidget *parent=nullptr)
static const QString P_ALPHA_AXIS
The SessionItemWidget class is a base for all widgets representing the content of SessionItem.
SessionItem * currentItem()
SessionItem * getItem(const QString &tag="", int row=0) const
Returns item in given row of given tag.
QString const & name(EShape k)
Definition: particles.cpp:21