BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ProjectionsWidget.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/JobWidgets/ProjectionsWidget.cpp
6 //! @brief Implements class ProjectionsWidget
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 
17 #include <QTabWidget>
18 #include <QVBoxLayout>
19 
20 namespace {
21 const int horizontal_projection_tab = 0;
22 const int vertical_projection_tab = 1;
23 } // namespace
24 
26  : SessionItemWidget(parent)
27  , m_xProjection(new ProjectionsPlot("HorizontalLineMask"))
28  , m_yProjection(new ProjectionsPlot("VerticalLineMask"))
29  , m_tabWidget(new QTabWidget)
30 {
31  QVBoxLayout* layout = new QVBoxLayout;
32  layout->setMargin(0);
33  layout->setSpacing(0);
34 
35  m_tabWidget->setTabPosition(QTabWidget::North);
36  m_tabWidget->insertTab(HORIZONTAL, m_xProjection, "Horizontal");
37  m_tabWidget->insertTab(VERTICAL, m_yProjection, "Vertical");
38 
39  layout->addWidget(m_tabWidget);
40  setLayout(layout);
41 
42  setConnected(true);
43 }
44 
46 {
47  SessionItemWidget::setItem(intensityItem);
48  m_xProjection->setItem(intensityItem);
49  m_yProjection->setItem(intensityItem);
50 }
51 
52 void ProjectionsWidget::onActivityModeChanged(MaskEditorFlags::Activity value)
53 {
54  setConnected(false);
55 
57  m_tabWidget->setCurrentIndex(horizontal_projection_tab);
58  else if (value == MaskEditorFlags::VERTICAL_LINE_MODE)
59  m_tabWidget->setCurrentIndex(vertical_projection_tab);
60 
61  setConnected(true);
62 }
63 
64 void ProjectionsWidget::onMarginsChanged(double left, double right)
65 {
66  m_xProjection->onMarginsChanged(left, right);
67  m_yProjection->onMarginsChanged(left, right);
68 }
69 
71 {
72  if (tab_index == horizontal_projection_tab)
74  else if (tab_index == vertical_projection_tab)
76 }
77 
78 void ProjectionsWidget::setConnected(bool isConnected)
79 {
80  if (isConnected)
81  connect(m_tabWidget, &QTabWidget::currentChanged, this, &ProjectionsWidget::onTabChanged);
82  else
83  disconnect(m_tabWidget, &QTabWidget::currentChanged, this,
85 }
Defines class ProjectionsPlot.
Defines class ProjectionsWidget.
A customplot based widget to display projections of IntensityDataItem on X,Y axes.
void onMarginsChanged(double left, double right)
void changeActivityRequest(MaskEditorFlags::Activity value)
ProjectionsWidget(QWidget *parent=0)
void setItem(SessionItem *intensityItem)
void onActivityModeChanged(MaskEditorFlags::Activity value)
ProjectionsPlot * m_yProjection
void onTabChanged(int tab_index)
void setConnected(bool isConnected)
QTabWidget * m_tabWidget
ProjectionsPlot * m_xProjection
void onMarginsChanged(double left, double right)
The SessionItemWidget class is a base for all widgets representing the content of SessionItem.
virtual void setItem(SessionItem *item)