BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
DepthProbeInstrumentEditor.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/DepthProbeInstrumentEditor.cpp
6 //! @brief Implements class DepthProbeInstrumentEditor
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 <QVBoxLayout>
24 
25 namespace {
26 const QString wavelength_title("Wavelength [nm]");
27 const QString inclination_title("Inclination angles [deg]");
28 const QString depth_axis_title("Depth axis [nm]");
29 } // namespace
30 
32  : SessionItemWidget(parent)
33  , m_wavelengthEditor(new ComponentEditor(ComponentEditor::InfoWidget, wavelength_title))
34  , m_inclinationEditor(new ComponentEditor(ComponentEditor::InfoWidget, inclination_title))
35  , m_depthAxisEditor(new ComponentEditor(ComponentEditor::InfoWidget, depth_axis_title))
36  , m_gridLayout(new QGridLayout)
37 {
38  m_gridLayout->addWidget(m_wavelengthEditor, 1, 0);
39  m_gridLayout->addWidget(m_inclinationEditor, 1, 1);
40  m_gridLayout->addWidget(m_depthAxisEditor, 1, 2);
41 
42  auto mainLayout = new QVBoxLayout;
43  mainLayout->addWidget(StyleUtils::createDetailsWidget(m_gridLayout, "Parameters"));
44  mainLayout->addStretch();
45  setLayout(mainLayout);
46 
51 }
52 
54 {
55  const auto beam_item = instrumentItem()->getItem(DepthProbeInstrumentItem::P_BEAM);
56 
57  auto wavelengthItem = beam_item->getItem(SpecularBeamItem::P_WAVELENGTH);
59 
60  auto inclinationItem = beam_item->getItem(SpecularBeamItem::P_INCLINATION_ANGLE);
62  inclinationItem->getItem(SpecularBeamInclinationItem::P_DISTRIBUTION));
64  inclinationItem->getItem(SpecularBeamInclinationItem::P_ALPHA_AXIS));
66 }
67 
69 {
72 }
73 
75 {
76  return dynamic_cast<DepthProbeInstrumentItem*>(currentItem());
77 }
78 
80 {
81  if (!item)
82  return;
83 
84  auto dialog = new DistributionDialog(this);
85  dialog->setItem(item);
86  dialog->setNameOfEditor(name);
87  dialog->show();
88 }
Defines ComponentEditor class.
Defines class DepthProbeInstrumentEditor.
Defines DepthProbeInstrumentItem class.
Defines class DistributionDialog.
Defines LayoutUtils namespace.
Declares the class SpecularBeamInclinationItem.
DefinesStyleUtils namespace.
static const QString P_DISTRIBUTION
static const QString P_WAVELENGTH
Definition: BeamItems.h:29
static const QString P_INCLINATION_ANGLE
Definition: BeamItems.h:30
Component editor for SessionItem.
void addItem(SessionItem *item)
void setItem(SessionItem *item)
void dialogRequest(SessionItem *item, const QString &names)
DepthProbeInstrumentEditor(QWidget *parent=nullptr)
DepthProbeInstrumentItem * instrumentItem()
void onDialogRequest(SessionItem *item, const QString &name)
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()
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
QWidget * createDetailsWidget(QWidget *content, const QString &name, bool expanded=true)
Creates details widget holding user content inside.
Definition: StyleUtils.cpp:96