Skip to content
Snippets Groups Projects
Commit ce18faf3 authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

Start/Stop fitting signals are connected

parent 0def8d85
No related branches found
No related tags found
No related merge requests found
......@@ -76,6 +76,9 @@ QWidget *FitActivityPanel::createRunControlWidget()
layout->addWidget(m_intervalSlider);
result->setLayout(layout);
connect(m_startButton, SIGNAL(clicked(bool)), this, SLOT(onStartClick()));
connect(m_stopButton, SIGNAL(clicked(bool)), this, SLOT(onStopClicked()));
return result;
}
......@@ -91,7 +94,12 @@ void FitActivityPanel::setItem(JobItem *item)
if( !widget && isValidJobItem(item)) {
widget = new FitSuiteWidget(m_jobModel);
widget->setItem(item);
widget->setModelTuningWidget(m_realTimeWidget->getItemModelTuningWidget(item));
widget->setModelTuningWidget(m_realTimeWidget->getTuningWidgetForItem(item));
connect(widget, SIGNAL(fittingStarted()), this, SLOT(onFittingStarted()));
connect(widget, SIGNAL(fittingFinished()), this, SLOT(onFittingFinished()));
m_stack->addWidget(widget);
m_jobItemToFitWidget[item] = widget;
......@@ -130,9 +138,42 @@ void FitActivityPanel::updateCurrentItem()
setItem(m_currentItem);
}
void FitActivityPanel::onStartClick()
{
if(FitSuiteWidget *widget = getCurrentFitSuiteWidget()) {
widget->startFitting();
}
}
void FitActivityPanel::onStopClicked()
{
if(FitSuiteWidget *widget = getCurrentFitSuiteWidget()) {
widget->stopFitting();
}
}
void FitActivityPanel::onFittingStarted()
{
m_startButton->setEnabled(false);
m_stopButton->setEnabled(true);
}
void FitActivityPanel::onFittingFinished()
{
m_startButton->setEnabled(true);
m_stopButton->setEnabled(false);
}
bool FitActivityPanel::isValidJobItem(JobItem *item)
{
Q_UNUSED(item);
return true;
// return (item->isCompleted() || item->isCanceled()) && item->getMultiLayerItem() && item->getInstrumentItem();
// return (item->isCompleted() || item->isCanceled()) && item->getMultiLayerItem() && item->getInstrumentItem();
}
FitSuiteWidget *FitActivityPanel::getCurrentFitSuiteWidget()
{
FitSuiteWidget *result = dynamic_cast<FitSuiteWidget *>(m_stack->currentWidget());
if(result && result->isHidden()) result = 0;
return result;
}
......@@ -45,9 +45,18 @@ public slots:
void onJobItemFinished(const QString &identifier);
void updateCurrentItem();
private slots:
void onStartClick();
void onStopClicked();
void onFittingStarted();
void onFittingFinished();
private:
// void connectFitSuiteWidget(FitSuiteWidget *fitSuiteWidget);
QWidget *createRunControlWidget();
bool isValidJobItem(JobItem *item);
FitSuiteWidget *getCurrentFitSuiteWidget();
QPushButton *m_startButton;
QPushButton *m_stopButton;
......
......@@ -18,8 +18,11 @@
#include "JobModel.h"
#include "JobItem.h"
#include "FitParametersWidget.h"
#include "RunFitManager.h"
#include "GUIFitObserver.h"
#include <QVBoxLayout>
#include <QTabWidget>
#include <QDebug>
FitSuiteWidget::FitSuiteWidget(JobModel *jobModel, QWidget *parent)
: QWidget(parent)
......@@ -27,6 +30,8 @@ FitSuiteWidget::FitSuiteWidget(JobModel *jobModel, QWidget *parent)
, m_fitParametersWidget(new FitParametersWidget(this))
, m_jobModel(jobModel)
, m_currentItem(0)
, m_manager(new RunFitManager(parent))
, m_observer(new GUIFitObserver())
{
QVBoxLayout *layout = new QVBoxLayout;
......@@ -35,13 +40,18 @@ FitSuiteWidget::FitSuiteWidget(JobModel *jobModel, QWidget *parent)
layout->addWidget(m_tabWidget);
setLayout(layout);
connectSignals();
}
FitSuiteWidget::~FitSuiteWidget()
{
}
void FitSuiteWidget::setItem(JobItem *jobItem)
{
m_currentItem = jobItem;
m_fitParametersWidget->setItem(jobItem);
}
void FitSuiteWidget::setModelTuningWidget(ModelTuningWidget *tuningWidget)
......@@ -51,3 +61,48 @@ void FitSuiteWidget::setModelTuningWidget(ModelTuningWidget *tuningWidget)
m_fitParametersWidget->setModelTuningWidget(tuningWidget);
}
void FitSuiteWidget::onError(const QString &text)
{
qDebug() << "FitSuiteWidget::onError" << text;
}
void FitSuiteWidget::onUpdatePlots(OutputData<double> *sim, OutputData<double> *chi2)
{
Q_UNUSED(sim);
Q_UNUSED(chi2);
qDebug() << "FitSuiteWidget::onUpdatePlots";
}
void FitSuiteWidget::onUpdateParameters(const QStringList &parameters, QVector<double> values)
{
Q_UNUSED(parameters);
Q_UNUSED(values);
qDebug() << "FitSuiteWidget::onUpdateParameters";
}
void FitSuiteWidget::startFitting()
{
if(!m_currentItem)
return;
qDebug() << "FitSuiteWidget::startFitting()";
}
void FitSuiteWidget::stopFitting()
{
if(!m_currentItem)
return;
qDebug() << "FitSuiteWidget::stopFitting()";
}
void FitSuiteWidget::connectSignals()
{
connect(m_manager, SIGNAL(startedFitting()), this, SIGNAL(fittingStarted()));
connect(m_manager, SIGNAL(finishedFitting()), this, SIGNAL(fittingFinished()));
connect(m_manager, SIGNAL(error(QString)), this, SLOT(onError(QString)));
connect(m_observer.get(), SIGNAL(updatePlots(OutputData<double>*,OutputData<double>*)),
this, SLOT(onUpdatePlots(OutputData<double>*,OutputData<double>*)));
connect(m_observer.get(), SIGNAL(updateParameters(QStringList,QVector<double>)),
this, SLOT(onUpdateParameters(QStringList,QVector<double>)));
}
......@@ -19,30 +19,53 @@
#include "WinDllMacros.h"
#include <QWidget>
#include <memory>
class QTabWidget;
class JobModel;
class JobItem;
class FitParametersWidget;
class ModelTuningWidget;
class RunFitManager;
class GUIFitObserver;
template <class T> class OutputData;
//! The FitSuiteWidget contains all fit settings for given JobItem (fit parameters,
//! minimizer settings). Controlled by FitActivityPanel
//! minimizer settings) and all logic to start/stop fitting. Controlled by FitActivityPanel
class BA_CORE_API_ FitSuiteWidget : public QWidget
{
Q_OBJECT
public:
FitSuiteWidget(JobModel *jobModel, QWidget *parent = 0);
~FitSuiteWidget();
void setItem(JobItem *jobItem);
void setModelTuningWidget(ModelTuningWidget *tuningWidget);
signals:
void fittingStarted();
void fittingFinished();
public slots:
void onError(const QString &text);
void onUpdatePlots(OutputData<double>*sim, OutputData<double>*chi2);
void onUpdateParameters(const QStringList &parameters, QVector<double> values);
void startFitting();
void stopFitting();
private:
void connectSignals();
QTabWidget *m_tabWidget;
FitParametersWidget *m_fitParametersWidget;
JobModel *m_jobModel;
JobItem *m_currentItem;
RunFitManager *m_manager;
std::shared_ptr<GUIFitObserver> m_observer;
};
#endif
......@@ -53,7 +53,7 @@ JobRealTimeWidget::JobRealTimeWidget(JobModel *jobModel, QWidget *parent)
connect(m_toolBar, SIGNAL(resetParameters()), this, SLOT(onResetParameters()));
}
ModelTuningWidget *JobRealTimeWidget::getItemModelTuningWidget(JobItem *jobItem)
ModelTuningWidget *JobRealTimeWidget::getTuningWidgetForItem(JobItem *jobItem)
{
return m_jobItemToTuningWidget[jobItem];
}
......
......@@ -35,7 +35,7 @@ class BA_CORE_API_ JobRealTimeWidget : public JobPresenter
public:
explicit JobRealTimeWidget(JobModel *jobModel, QWidget *parent = 0);
ModelTuningWidget *getItemModelTuningWidget(JobItem *jobItem);
ModelTuningWidget *getTuningWidgetForItem(JobItem *jobItem);
public slots:
void setItem(JobItem *item);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment