BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
DistributionEditor.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/InfoWidgets/DistributionEditor.cpp
6 //! @brief Implements class DistributionEditor
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 
20 #include <QBoxLayout>
21 
22 namespace {
23 int minimum_width = 250;
24 }
25 
27  : SessionItemWidget(parent)
28  , m_propertyEditor(new ComponentFlatView)
29  , m_item(nullptr)
30  , m_plotwidget(new DistributionWidget)
31  , m_box(new QGroupBox)
32 {
33 
34  auto boxLayout = new QVBoxLayout;
35  m_propertyEditor->setMaximumWidth(minimum_width);
36  boxLayout->addWidget(m_propertyEditor);
37  boxLayout->setContentsMargins(0, 0, 0, 0);
38  m_box->setLayout(boxLayout);
39 
40  auto verticalLayout = new QVBoxLayout;
41  verticalLayout->addWidget(m_box);
42  verticalLayout->addStretch(1);
43 
44  auto mainLayout = new QHBoxLayout;
45  mainLayout->addWidget(m_plotwidget, 1);
46  mainLayout->addSpacing(5);
47  mainLayout->addLayout(verticalLayout);
48 
49  setLayout(mainLayout);
50 }
51 
53 {
56 
58  [this](const QString& name) { onPropertyChanged(name); }, this);
59 
61 }
62 
63 void DistributionEditor::onPropertyChanged(const QString& property_name)
64 {
65  if (property_name == GroupItem::T_ITEMS)
67 }
68 
70 {
71  auto result = dynamic_cast<GroupItem*>(currentItem());
72  ASSERT(result);
73  return result;
74 }
75 
77 {
78  auto result = dynamic_cast<DistributionItem*>(groupItem()->currentItem());
79  ASSERT(result);
80  return result;
81 }
82 
84 {
85  m_box->setTitle(name);
87 }
#define ASSERT(condition)
Definition: Assert.h:31
Defines class ComponentFlatView.
Defines class DistributionEditor.
Defines class DistributionItem and several subclasses.
Defines class DistributionWidget.
Defines class GroupItem.
Component property widget for SessionItems.
void setItem(SessionItem *item)
void onPropertyChanged(const QString &property_name)
ComponentFlatView * m_propertyEditor
void setNameOfEditor(QString name)
DistributionWidget * m_plotwidget
DistributionItem * distributionItem()
DistributionEditor(QWidget *parent=nullptr)
The DistributionWidget class plots 1d functions corresponding to domain's Distribution1D.
void setItem(DistributionItem *item)
void setXAxisName(const QString &xAxisName)
SessionItem * currentItem() const
Definition: GroupItem.cpp:41
static const QString T_ITEMS
Definition: GroupItem.h:27
void setOnPropertyChange(std::function< void(QString)> f, const void *caller=0)
Definition: ModelMapper.cpp:35
The SessionItemWidget class is a base for all widgets representing the content of SessionItem.
SessionItem * currentItem()
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.
QString const & name(EShape k)
Definition: particles.cpp:21