BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
RealDataMaskWidget.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/ImportDataWidgets/RealDataMaskWidget.cpp
6 //! @brief Implements class RealDataMaskWidget
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 <QAction>
22 #include <QBoxLayout>
23 
25  : SessionItemWidget(parent), m_maskEditor(new MaskEditor)
26 {
27  setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
28 
29  QHBoxLayout* hlayout = new QHBoxLayout;
30  hlayout->setMargin(0);
31  hlayout->setSpacing(0);
32 
33  hlayout->addWidget(m_maskEditor);
34 
35  QVBoxLayout* mainLayout = new QVBoxLayout;
36  mainLayout->setMargin(0);
37  mainLayout->setSpacing(0);
38 
39  mainLayout->addLayout(hlayout);
40  setLayout(mainLayout);
41 }
42 
44 {
46 }
47 
49 {
50  auto intensityItem = intensityDataItem();
51  auto container = maskContainer(intensityItem);
52  m_maskEditor->setMaskContext(intensityItem->model(), container->index(), intensityItem);
53  m_maskEditor->update();
54 }
55 
57 {
59 }
60 
62 {
63  IntensityDataItem* result = dynamic_cast<RealDataItem*>(currentItem())->intensityDataItem();
64  ASSERT(result);
65  return result;
66 }
67 
69 {
70  auto containerItem = intensityData->getItem(IntensityDataItem::T_MASKS);
71  if (!containerItem)
72  containerItem = intensityData->model()->insertNewItem("MaskContainer", intensityData);
73 
74  MaskContainerItem* result = dynamic_cast<MaskContainerItem*>(containerItem);
75  return result;
76 }
#define ASSERT(condition)
Definition: Assert.h:31
Defines class IntensityDataItem.
Defines class MaskEditor.
Defines MaskItems classes.
Defines class RealDataItem.
Defines class RealDataMaskWidget.
Defines class SessionModel.
static const QString T_MASKS
Container holding various masks as children.
Definition: MaskItems.h:24
Main class to draw masks on top of intensity data map.
Definition: MaskEditor.h:31
QList< QAction * > topToolBarActions()
Returns list of actions intended for styled toolbar (on the top).
Definition: MaskEditor.cpp:86
void resetContext()
Definition: MaskEditor.cpp:66
void setMaskContext(SessionModel *model, const QModelIndex &maskContainerIndex, IntensityDataItem *intensityItem)
Main method to setup context for mask editing.
Definition: MaskEditor.cpp:50
The RealDataItem class represents intensity data imported from file and intended for fitting.
Definition: RealDataItem.h:35
QList< QAction * > actionList()
MaskContainerItem * maskContainer(IntensityDataItem *intensityData)
RealDataMaskWidget(QWidget *parent=0)
MaskEditor * m_maskEditor
IntensityDataItem * intensityDataItem()
The SessionItemWidget class is a base for all widgets representing the content of SessionItem.
SessionItem * currentItem()
SessionModel * model() const
Returns model of this item.
Definition: SessionItem.cpp:66
SessionItem * getItem(const QString &tag="", int row=0) const
Returns item in given row of given tag.
SessionItem * insertNewItem(QString model_type, SessionItem *parent_item=nullptr, int row=-1, QString tag="")