BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
RunFitControlWidget Class Reference

The RunFitControlWidget contains elements to start/stop fitting and to provide minimal diagnostic. More...

Inheritance diagram for RunFitControlWidget:
[legend]
Collaboration diagram for RunFitControlWidget:
[legend]

Public Slots

void onFittingError (const QString &what)
 

Signals

void startFittingPushed ()
 
void stopFittingPushed ()
 

Public Member Functions

 RunFitControlWidget (QWidget *parent=0)
 
 ~RunFitControlWidget ()
 
virtual QList< QAction * > actionList ()
 
SessionItemcurrentItem ()
 
const SessionItemcurrentItem () const
 
virtual void setItem (SessionItem *item)
 

Protected Member Functions

virtual void hideEvent (QHideEvent *)
 
virtual void showEvent (QShowEvent *)
 
virtual void subscribeToItem ()
 
virtual void unsubscribeFromItem ()
 

Private Slots

void onFitSuitePropertyChange (const QString &name)
 
void onSliderValueChanged (int value)
 

Private Member Functions

FitSuiteItemfitSuiteItem ()
 
bool isValidJobItem ()
 
JobItemjobItem ()
 
int sliderUpdateInterval ()
 
int sliderValueToUpdateInterval (int value)
 converts slider value (1-15) to update interval to be propagated to FitSuiteWidget More...
 
void unsubscribeFromChildren ()
 
void updateControlElements ()
 Updates button "enabled" status and warning status depending on current job conditions. More...
 

Private Attributes

QSlider * m_intervalSlider
 
SessionItemControllerm_itemController
 
QLabel * m_iterationsCountLabel
 
QPushButton * m_startButton
 
QPushButton * m_stopButton
 
QLabel * m_updateIntervalLabel
 
WarningSignm_warningSign
 

Detailed Description

The RunFitControlWidget contains elements to start/stop fitting and to provide minimal diagnostic.

Part of FitSuiteWidget.

Definition at line 32 of file RunFitControlWidget.h.

Constructor & Destructor Documentation

◆ RunFitControlWidget()

RunFitControlWidget::RunFitControlWidget ( QWidget *  parent = 0)

Definition at line 34 of file RunFitControlWidget.cpp.

35  : SessionItemWidget(parent)
36  , m_startButton(new QPushButton)
37  , m_stopButton(new QPushButton)
38  , m_intervalSlider(new QSlider)
39  , m_updateIntervalLabel(new QLabel)
40  , m_iterationsCountLabel(new QLabel)
41  , m_warningSign(new WarningSign(this))
42 {
43  setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
45 
46  m_startButton->setText("Run");
47  m_startButton->setToolTip("Run fitting");
48  m_startButton->setMaximumWidth(80);
49 
50  m_stopButton->setText("Stop");
51  m_stopButton->setToolTip("Interrupt fitting");
52  m_stopButton->setMaximumWidth(80);
53 
54  m_intervalSlider->setToolTip(slider_tooltip);
55  m_intervalSlider->setOrientation(Qt::Horizontal);
56  m_intervalSlider->setRange(0, static_cast<int>(slider_to_interval.size()) - 1);
57  m_intervalSlider->setMaximumWidth(120);
58  m_intervalSlider->setMinimumWidth(120);
59  m_intervalSlider->setFocusPolicy(Qt::NoFocus);
60  m_intervalSlider->setValue(5);
61 
62  QFont font("Monospace", DesignerHelper::getLabelFontSize(), QFont::Normal);
63  font.setPointSize(DesignerHelper::getPortFontSize());
64  m_updateIntervalLabel->setToolTip(slider_tooltip);
65  m_updateIntervalLabel->setFont(font);
66  m_updateIntervalLabel->setText(QString::number(sliderUpdateInterval()));
67 
68  auto layout = new QHBoxLayout;
69  layout->setSpacing(0);
70  layout->addWidget(m_startButton);
71  layout->addSpacing(5);
72  layout->addWidget(m_stopButton);
73  layout->addSpacing(5);
74  layout->addWidget(m_intervalSlider);
75  layout->addSpacing(2);
76  layout->addWidget(m_updateIntervalLabel);
77  layout->addSpacing(5);
78  layout->addStretch();
79  layout->addWidget(m_iterationsCountLabel);
80  setLayout(layout);
81 
82  connect(m_startButton, &QPushButton::clicked, [&]() { startFittingPushed(); });
83  connect(m_stopButton, &QPushButton::clicked, this, [&]() { stopFittingPushed(); });
84  connect(m_intervalSlider, &QSlider::valueChanged, this,
86 
87  setEnabled(false);
88 }
static int getLabelFontSize()
static int getPortFontSize()
QPushButton * m_stopButton
QPushButton * m_startButton
WarningSign * m_warningSign
void onSliderValueChanged(int value)
SessionItemWidget(QWidget *parent=0)
The WarningSign controls appearance of WarningSignWidget on top of parent widget.
Definition: WarningSign.h:25
const unsigned int RUN_FIT_CONTROL_WIDGET_HEIGHT

References DesignerHelper::getLabelFontSize(), DesignerHelper::getPortFontSize(), m_intervalSlider, m_iterationsCountLabel, m_startButton, m_stopButton, m_updateIntervalLabel, onSliderValueChanged(), Constants::RUN_FIT_CONTROL_WIDGET_HEIGHT, sliderUpdateInterval(), startFittingPushed(), and stopFittingPushed().

Here is the call graph for this function:

◆ ~RunFitControlWidget()

RunFitControlWidget::~RunFitControlWidget ( )

Definition at line 90 of file RunFitControlWidget.cpp.

91 {
93 }

References unsubscribeFromChildren().

Here is the call graph for this function:

Member Function Documentation

◆ actionList()

QList< QAction * > SessionItemWidget::actionList ( )
virtualinherited

◆ currentItem() [1/2]

SessionItem * SessionItemWidget::currentItem ( )
inherited

Definition at line 41 of file SessionItemWidget.cpp.

42 {
43  return const_cast<SessionItem*>(static_cast<const SessionItemWidget*>(this)->currentItem());
44 }
The SessionItemWidget class is a base for all widgets representing the content of SessionItem.
SessionItem * currentItem()

Referenced by RectangularDetectorEditor::detectorItem(), SphericalDetectorEditor::detectorItem(), FitFlowWidget::fitSuiteItem(), DistributionEditor::groupItem(), DepthProbeInstrumentEditor::instrumentItem(), EnvironmentEditor::instrumentItem(), GISASBeamEditor::instrumentItem(), GISASDetectorEditor::instrumentItem(), GISASInstrumentEditor::instrumentItem(), OffSpecularBeamEditor::instrumentItem(), OffSpecularInstrumentEditor::instrumentItem(), PolarizationAnalysisEditor::instrumentItem(), SpecularBeamEditor::instrumentItem(), SpecularInstrumentEditor::instrumentItem(), RealDataMaskWidget::intensityDataItem(), IntensityDataCanvas::intensityDataItem(), IntensityDataProjectionsWidget::intensityDataItem(), IntensityDataWidget::intensityDataItem(), ProjectionsPlot::intensityItem(), ColorMap::intensityItem(), DetectorPresenter::itemPresentation(), InstrumentPresenter::itemPresentation(), JobResultsPresenter::itemPresentation(), FitComparisonWidget::jobItem(), FitComparisonWidget1D::jobItem(), FitParameterWidget::jobItem(), jobItem(), JobPropertiesWidget::jobItem(), ParameterTuningWidget::jobItem(), SpecularDataImportWidget::realDataItem(), ItemComboWidget::setPresentation(), JobResultsPresenter::setPresentation(), SpecularDataCanvas::specularDataItem(), SpecularDataImportWidget::specularDataItem(), SpecularDataWidget::specularDataItem(), SpecularPlot::specularItem(), ItemComboWidget::subscribeToItem(), DistributionEditor::subscribeToItem(), GISASDetectorEditor::subscribeToItem(), PolarizationAnalysisEditor::subscribeToItem(), IntensityDataPropertyWidget::subscribeToItem(), JobPropertiesWidget::subscribeToItem(), ProjectionsPropertyPanel::subscribeToItem(), ProjectionsPlot::unsubscribeFromChildren(), and Plot1D::viewItem().

◆ currentItem() [2/2]

const SessionItem * SessionItemWidget::currentItem ( ) const
inherited

Definition at line 46 of file SessionItemWidget.cpp.

47 {
48  return m_itemController->currentItem();
49 }
SessionItemController * m_itemController

References SessionItemController::currentItem(), and SessionItemWidget::m_itemController.

Here is the call graph for this function:

◆ fitSuiteItem()

FitSuiteItem * RunFitControlWidget::fitSuiteItem ( )
private

Definition at line 177 of file RunFitControlWidget.cpp.

178 {
179  return jobItem() ? jobItem()->fitSuiteItem() : nullptr;
180 }
FitSuiteItem * fitSuiteItem()
Definition: JobItem.cpp:235

References JobItem::fitSuiteItem(), and jobItem().

Referenced by onFitSuitePropertyChange(), onSliderValueChanged(), subscribeToItem(), and unsubscribeFromChildren().

Here is the call graph for this function:

◆ hideEvent()

void SessionItemWidget::hideEvent ( QHideEvent *  )
protectedvirtualinherited

Definition at line 56 of file SessionItemWidget.cpp.

57 {
59 }
void unsubscribe()
Fully unsubscribes the parent from listening item's signals.

References SessionItemWidget::m_itemController, and SessionItemController::unsubscribe().

Here is the call graph for this function:

◆ isValidJobItem()

bool RunFitControlWidget::isValidJobItem ( )
private

Definition at line 182 of file RunFitControlWidget.cpp.

183 {
184  return jobItem() ? jobItem()->isValidForFitting() : false;
185 }
bool isValidForFitting()
Definition: JobItem.cpp:165

References JobItem::isValidForFitting(), and jobItem().

Referenced by updateControlElements().

Here is the call graph for this function:

◆ jobItem()

JobItem * RunFitControlWidget::jobItem ( )
private

Definition at line 172 of file RunFitControlWidget.cpp.

173 {
174  return dynamic_cast<JobItem*>(currentItem());
175 }

References SessionItemWidget::currentItem().

Referenced by fitSuiteItem(), isValidJobItem(), subscribeToItem(), and updateControlElements().

Here is the call graph for this function:

◆ onFitSuitePropertyChange

void RunFitControlWidget::onFitSuitePropertyChange ( const QString &  name)
privateslot

Definition at line 110 of file RunFitControlWidget.cpp.

111 {
114  m_iterationsCountLabel->setText(QString::number(niter));
115  }
116 }
static const QString P_ITERATION_COUNT
Definition: FitSuiteItem.h:27
FitSuiteItem * fitSuiteItem()
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.
QString const & name(EShape k)
Definition: particles.cpp:21

References fitSuiteItem(), SessionItem::getItemValue(), m_iterationsCountLabel, RealSpace::Particles::name(), and FitSuiteItem::P_ITERATION_COUNT.

Referenced by subscribeToItem().

Here is the call graph for this function:

◆ onFittingError

void RunFitControlWidget::onFittingError ( const QString &  what)
slot

Definition at line 95 of file RunFitControlWidget.cpp.

96 {
98  m_iterationsCountLabel->setText("");
100 }
void clear()
Clears warning message;.
Definition: WarningSign.cpp:40
void setWarningMessage(const QString &warningMessage)
Shows warning sign on the screen.
Definition: WarningSign.cpp:58

References WarningSign::clear(), m_iterationsCountLabel, m_warningSign, and WarningSign::setWarningMessage().

Referenced by FitSessionWidget::onFittingError().

Here is the call graph for this function:

◆ onSliderValueChanged

void RunFitControlWidget::onSliderValueChanged ( int  value)
privateslot

Definition at line 102 of file RunFitControlWidget.cpp.

103 {
104  int interval = sliderValueToUpdateInterval(value);
105  m_updateIntervalLabel->setText(QString::number(interval));
106  if (fitSuiteItem())
108 }
static const QString P_UPDATE_INTERVAL
Definition: FitSuiteItem.h:26
int sliderValueToUpdateInterval(int value)
converts slider value (1-15) to update interval to be propagated to FitSuiteWidget
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.

References fitSuiteItem(), m_updateIntervalLabel, FitSuiteItem::P_UPDATE_INTERVAL, SessionItem::setItemValue(), and sliderValueToUpdateInterval().

Referenced by RunFitControlWidget().

Here is the call graph for this function:

◆ setItem()

void SessionItemWidget::setItem ( SessionItem item)
virtualinherited

Reimplemented in SpecularPlotCanvas, SpecularDataImportWidget, SpecularDataWidget, IntensityDataWidget, SpecularDataCanvas, ProjectionsWidget, IntensityDataCanvas, ColorMapCanvas, and Plot1DCanvas.

Definition at line 28 of file SessionItemWidget.cpp.

29 {
31 
32  if (isVisible())
34 }
void setItem(SessionItem *item)
void subscribe()
Subscribe parent to item's signals.

References SessionItemWidget::m_itemController, SessionItemController::setItem(), and SessionItemController::subscribe().

Referenced by IntensityDataWidget::onFFTAction(), JobSelectorWidget::onSelectionChanged(), ProjectionsEditor::resetContext(), ProjectionsEditor::setContext(), MaskGraphicsProxy::setIntensityItem(), FitSessionWidget::setItem(), Plot1DCanvas::setItem(), InstrumentEditorWidget::setItem(), ColorMapCanvas::setItem(), IntensityDataCanvas::setItem(), ProjectionsWidget::setItem(), SpecularDataCanvas::setItem(), DistributionDialog::setItem(), IntensityDataWidget::setItem(), SpecularDataWidget::setItem(), SpecularDataImportWidget::setItem(), SpecularPlotCanvas::setItem(), ItemComboWidget::setPresentation(), GISASInstrumentEditor::subscribeToItem(), OffSpecularInstrumentEditor::subscribeToItem(), SpecularInstrumentEditor::subscribeToItem(), FitComparisonWidget::subscribeToItem(), FitComparisonWidget1D::subscribeToItem(), and GISASDetectorEditor::updateDetectorPresenter().

Here is the call graph for this function:

◆ showEvent()

void SessionItemWidget::showEvent ( QShowEvent *  )
protectedvirtualinherited

Definition at line 51 of file SessionItemWidget.cpp.

52 {
54 }

References SessionItemWidget::m_itemController, and SessionItemController::subscribe().

Here is the call graph for this function:

◆ sliderUpdateInterval()

int RunFitControlWidget::sliderUpdateInterval ( )
private

Definition at line 143 of file RunFitControlWidget.cpp.

144 {
146 }

References m_intervalSlider, and sliderValueToUpdateInterval().

Referenced by RunFitControlWidget(), and subscribeToItem().

Here is the call graph for this function:

◆ sliderValueToUpdateInterval()

int RunFitControlWidget::sliderValueToUpdateInterval ( int  value)
private

converts slider value (1-15) to update interval to be propagated to FitSuiteWidget

Definition at line 150 of file RunFitControlWidget.cpp.

151 {
152  size_t svalue = static_cast<size_t>(value);
153  return svalue < slider_to_interval.size() ? slider_to_interval[svalue] : default_interval;
154 }

Referenced by onSliderValueChanged(), and sliderUpdateInterval().

◆ startFittingPushed

void RunFitControlWidget::startFittingPushed ( )
signal

◆ stopFittingPushed

void RunFitControlWidget::stopFittingPushed ( )
signal

◆ subscribeToItem()

void RunFitControlWidget::subscribeToItem ( )
protectedvirtual

Reimplemented from SessionItemWidget.

Definition at line 118 of file RunFitControlWidget.cpp.

119 {
121 
123 
125  [this](const QString& name) { onFitSuitePropertyChange(name); }, this);
126 
128 
130  [this](const QString& name) {
131  if (name == JobItem::P_STATUS)
133  },
134  this);
135 }
static const QString P_STATUS
Definition: JobItem.h:40
void setOnPropertyChange(std::function< void(QString)> f, const void *caller=0)
Definition: ModelMapper.cpp:35
void updateControlElements()
Updates button "enabled" status and warning status depending on current job conditions.
void onFitSuitePropertyChange(const QString &name)
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.

References fitSuiteItem(), jobItem(), SessionItem::mapper(), RealSpace::Particles::name(), onFitSuitePropertyChange(), FitSuiteItem::P_ITERATION_COUNT, JobItem::P_STATUS, FitSuiteItem::P_UPDATE_INTERVAL, SessionItem::setItemValue(), ModelMapper::setOnPropertyChange(), sliderUpdateInterval(), and updateControlElements().

Here is the call graph for this function:

◆ unsubscribeFromChildren()

void RunFitControlWidget::unsubscribeFromChildren ( )
private

Definition at line 187 of file RunFitControlWidget.cpp.

188 {
189  if (fitSuiteItem())
190  fitSuiteItem()->mapper()->unsubscribe(this);
191 }
void unsubscribe(const void *caller)
Cancells all subscribtion of given caller.
Definition: ModelMapper.cpp:98

References fitSuiteItem(), SessionItem::mapper(), and ModelMapper::unsubscribe().

Referenced by ~RunFitControlWidget(), and unsubscribeFromItem().

Here is the call graph for this function:

◆ unsubscribeFromItem()

void RunFitControlWidget::unsubscribeFromItem ( )
protectedvirtual

Reimplemented from SessionItemWidget.

Definition at line 137 of file RunFitControlWidget.cpp.

138 {
139  setEnabled(false);
141 }

References unsubscribeFromChildren().

Here is the call graph for this function:

◆ updateControlElements()

void RunFitControlWidget::updateControlElements ( )
private

Updates button "enabled" status and warning status depending on current job conditions.

Definition at line 158 of file RunFitControlWidget.cpp.

159 {
160  setEnabled(isValidJobItem());
161 
162  if (jobItem()->getStatus() == "Fitting") {
163  m_startButton->setEnabled(false);
164  m_stopButton->setEnabled(true);
165  m_warningSign->clear();
166  } else {
167  m_startButton->setEnabled(true);
168  m_stopButton->setEnabled(false);
169  }
170 }

References WarningSign::clear(), isValidJobItem(), jobItem(), m_startButton, m_stopButton, and m_warningSign.

Referenced by subscribeToItem().

Here is the call graph for this function:

Member Data Documentation

◆ m_intervalSlider

QSlider* RunFitControlWidget::m_intervalSlider
private

Definition at line 64 of file RunFitControlWidget.h.

Referenced by RunFitControlWidget(), and sliderUpdateInterval().

◆ m_itemController

◆ m_iterationsCountLabel

QLabel* RunFitControlWidget::m_iterationsCountLabel
private

◆ m_startButton

QPushButton* RunFitControlWidget::m_startButton
private

Definition at line 62 of file RunFitControlWidget.h.

Referenced by RunFitControlWidget(), and updateControlElements().

◆ m_stopButton

QPushButton* RunFitControlWidget::m_stopButton
private

Definition at line 63 of file RunFitControlWidget.h.

Referenced by RunFitControlWidget(), and updateControlElements().

◆ m_updateIntervalLabel

QLabel* RunFitControlWidget::m_updateIntervalLabel
private

Definition at line 65 of file RunFitControlWidget.h.

Referenced by RunFitControlWidget(), and onSliderValueChanged().

◆ m_warningSign

WarningSign* RunFitControlWidget::m_warningSign
private

Definition at line 67 of file RunFitControlWidget.h.

Referenced by onFittingError(), and updateControlElements().


The documentation for this class was generated from the following files: