BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
JobRealTimeWidget.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/JobRealTimeWidget.cpp
6 //! @brief Implements class JobRealTimeWidget
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 <QVBoxLayout>
21 
22 namespace {
23 const bool reuse_widget = true;
24 }
25 
27  : QWidget(parent), m_stackedWidget(new ItemStackPresenter<ParameterTuningWidget>(reuse_widget))
28 {
29  setWindowTitle(Constants::JobRealTimeWidgetName);
30  setObjectName("JobRealTimeWidget");
31  setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
32 
33  auto mainLayout = new QVBoxLayout;
34  mainLayout->setMargin(0);
35  mainLayout->setSpacing(0);
36  mainLayout->addWidget(m_stackedWidget);
37  setLayout(mainLayout);
38 
39  m_stackedWidget->setModel(jobModel);
40 }
41 
43 {
44  return m_stackedWidget->itemWidget(jobItem);
45 }
46 
48 {
49  return QSize(Constants::REALTIME_WIDGET_WIDTH_HINT, 480);
50 }
51 
53 {
54  return QSize(100, 100);
55 }
56 
58 {
59  if (!isValidJobItem(jobItem)) {
61  return;
62  }
63 
64  m_stackedWidget->setItem(jobItem);
65 }
66 
67 //! Returns true if JobItem is valid for real time simulation.
68 
70 {
71  if (item && (item->isCompleted() || item->isCanceled() || item->isFailed()))
72  return true;
73 
74  return false;
75 }
Defines class JobItem.
Defines class JobModel.
Defines class JobRealTimeWidget.
Defines class ParameterTuningWidget.
The ItemStackPresenter templated class extends ItemStackWidget so it could operate with SesionItem ed...
void setItem(U *item, bool *isNew=0)
Shows the widget for given item (and hides previous one).
T * itemWidget(SessionItem *item)
void setModel(SessionModel *model)
bool isFailed() const
Definition: JobItem.cpp:160
bool isCompleted() const
Definition: JobItem.cpp:150
bool isCanceled() const
Definition: JobItem.cpp:155
QSize sizeHint() const
void setItem(JobItem *jobItem)
JobRealTimeWidget(JobModel *jobModel, QWidget *parent=nullptr)
ItemStackPresenter< ParameterTuningWidget > * m_stackedWidget
ParameterTuningWidget * parameterTuningWidget(JobItem *jobItem)
QSize minimumSizeHint() const
bool isValidJobItem(JobItem *item)
Returns true if JobItem is valid for real time simulation.
Main widget for real time parameter tuning.
Defines namespace Constants.
const unsigned int REALTIME_WIDGET_WIDTH_HINT
const QString JobRealTimeWidgetName