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

FitSuiteWidget cleaned up from most of logging related activity.

parent 053befba
No related branches found
No related tags found
No related merge requests found
...@@ -24,11 +24,14 @@ ...@@ -24,11 +24,14 @@
#include "IntensityDataItem.h" #include "IntensityDataItem.h"
#include "FitParameterItems.h" #include "FitParameterItems.h"
#include "GUIHelpers.h" #include "GUIHelpers.h"
#include "FitLog.h"
#include <QTextEdit>
FitSuiteManager::FitSuiteManager(QObject* parent) FitSuiteManager::FitSuiteManager(QObject* parent)
: QObject(parent) : QObject(parent)
, m_runFitManager(new RunFitManager(this)) , m_runFitManager(new RunFitManager(this))
, m_observer(new GUIFitObserver) , m_observer(new GUIFitObserver)
, m_fitlog(new FitLog)
, m_block_progress_update(false) , m_block_progress_update(false)
{ {
connect(m_observer.get(), &GUIFitObserver::plotsUpdate, this, &FitSuiteManager::onPlotsUpdate); connect(m_observer.get(), &GUIFitObserver::plotsUpdate, this, &FitSuiteManager::onPlotsUpdate);
...@@ -36,14 +39,21 @@ FitSuiteManager::FitSuiteManager(QObject* parent) ...@@ -36,14 +39,21 @@ FitSuiteManager::FitSuiteManager(QObject* parent)
connect(m_observer.get(), &GUIFitObserver::progressInfoUpdate, connect(m_observer.get(), &GUIFitObserver::progressInfoUpdate,
this, &FitSuiteManager::onProgressInfoUpdate); this, &FitSuiteManager::onProgressInfoUpdate);
connect(m_observer.get(), &GUIFitObserver::logInfoUpdate,
[&](const QString& text) {
m_fitlog->append(text.toStdString(), FitLogFlags::DEFAULT);});
connect(m_runFitManager, &RunFitManager::fittingStarted, connect(m_runFitManager, &RunFitManager::fittingStarted,
this, &FitSuiteManager::onFittingStarted); this, &FitSuiteManager::onFittingStarted);
connect(m_runFitManager, &RunFitManager::fittingFinished, connect(m_runFitManager, &RunFitManager::fittingFinished,
this, &FitSuiteManager::onFittingFinished); this, &FitSuiteManager::onFittingFinished);
connect(m_runFitManager, &RunFitManager::fittingError, connect(m_runFitManager, &RunFitManager::fittingError,
this, &FitSuiteManager::fittingError); this, &FitSuiteManager::onFittingError);
} }
FitSuiteManager::~FitSuiteManager() = default;
void FitSuiteManager::setItem(JobItem* item) void FitSuiteManager::setItem(JobItem* item)
{ {
m_jobItem = item; m_jobItem = item;
...@@ -78,6 +88,7 @@ void FitSuiteManager::onStartFittingRequest() ...@@ -78,6 +88,7 @@ void FitSuiteManager::onStartFittingRequest()
} catch(std::exception& e) { } catch(std::exception& e) {
m_jobItem->setStatus(Constants::STATUS_FAILED); m_jobItem->setStatus(Constants::STATUS_FAILED);
m_jobItem->fitSuiteItem()->mapper()->unsubscribe(this); m_jobItem->fitSuiteItem()->mapper()->unsubscribe(this);
m_fitlog->append(e.what(), FitLogFlags::ERROR);
emit fittingError(QString::fromStdString(e.what())); emit fittingError(QString::fromStdString(e.what()));
} }
...@@ -93,6 +104,11 @@ std::shared_ptr<GUIFitObserver> FitSuiteManager::fitObserver() ...@@ -93,6 +104,11 @@ std::shared_ptr<GUIFitObserver> FitSuiteManager::fitObserver()
return m_observer; return m_observer;
} }
FitLog* FitSuiteManager::fitLog()
{
return m_fitlog.get();
}
void FitSuiteManager::onStopFittingRequest() void FitSuiteManager::onStopFittingRequest()
{ {
m_runFitManager->interruptFitting(); m_runFitManager->interruptFitting();
...@@ -106,6 +122,8 @@ void FitSuiteManager::onPlotsUpdate() ...@@ -106,6 +122,8 @@ void FitSuiteManager::onPlotsUpdate()
void FitSuiteManager::onFittingStarted() void FitSuiteManager::onFittingStarted()
{ {
m_fitlog->clearLog();
m_jobItem->setStatus(Constants::STATUS_FITTING); m_jobItem->setStatus(Constants::STATUS_FITTING);
m_jobItem->setProgress(0); m_jobItem->setProgress(0);
m_jobItem->setBeginTime(GUIHelpers::currentDateTime()); m_jobItem->setBeginTime(GUIHelpers::currentDateTime());
...@@ -124,9 +142,24 @@ void FitSuiteManager::onFittingFinished() ...@@ -124,9 +142,24 @@ void FitSuiteManager::onFittingFinished()
m_jobItem->setDuration(m_runFitManager->getDuration()); m_jobItem->setDuration(m_runFitManager->getDuration());
m_jobItem->fitSuiteItem()->mapper()->unsubscribe(this); m_jobItem->fitSuiteItem()->mapper()->unsubscribe(this);
if(m_jobItem->isCompleted())
m_fitlog->append("Done", FitLogFlags::SUCCESS);
emit fittingFinished(); emit fittingFinished();
} }
void FitSuiteManager::onFittingError(const QString& text)
{
QString message;
message.append("Current settings cause fitting failure.\n\n");
message.append(text);
m_fitlog->append(message.toStdString(), FitLogFlags::ERROR);
emit fittingError(message);
}
//! Propagates fit progress as reported by GUIFitObserver back to JobItem.
void FitSuiteManager::onProgressInfoUpdate(const FitProgressInfo& info) void FitSuiteManager::onProgressInfoUpdate(const FitProgressInfo& info)
{ {
if(m_block_progress_update) if(m_block_progress_update)
...@@ -169,5 +202,7 @@ void FitSuiteManager::updateLog(const FitProgressInfo& info) ...@@ -169,5 +202,7 @@ void FitSuiteManager::updateLog(const FitProgressInfo& info)
message.append(parinfo); message.append(parinfo);
} }
emit fittingMessage(message); m_fitlog->append(message.toStdString(), FitLogFlags::DEFAULT);
// emit fittingMessage(message);
} }
...@@ -25,6 +25,7 @@ class JobItem; ...@@ -25,6 +25,7 @@ class JobItem;
class RunFitManager; class RunFitManager;
class GUIFitObserver; class GUIFitObserver;
class FitProgressInfo; class FitProgressInfo;
class FitLog;
//! Handles all activity related to the single fitting task for JobItem. //! Handles all activity related to the single fitting task for JobItem.
//! Provides interaction between FitSuiteWidget and fit observers. //! Provides interaction between FitSuiteWidget and fit observers.
...@@ -34,17 +35,19 @@ class BA_CORE_API_ FitSuiteManager : public QObject ...@@ -34,17 +35,19 @@ class BA_CORE_API_ FitSuiteManager : public QObject
Q_OBJECT Q_OBJECT
public: public:
FitSuiteManager(QObject* parent = nullptr); FitSuiteManager(QObject* parent = nullptr);
~FitSuiteManager();
void setItem(JobItem* item); void setItem(JobItem* item);
RunFitManager* runFitManager(); RunFitManager* runFitManager();
std::shared_ptr<GUIFitObserver> fitObserver(); std::shared_ptr<GUIFitObserver> fitObserver();
FitLog* fitLog();
signals: signals:
void fittingStarted(); void fittingStarted();
void fittingFinished(); void fittingFinished();
void fittingError(const QString& message); void fittingError(const QString& message);
void fittingMessage(const QString& message); // void fittingMessage(const QString& message);
public slots: public slots:
void onStartFittingRequest(); void onStartFittingRequest();
...@@ -54,6 +57,7 @@ private slots: ...@@ -54,6 +57,7 @@ private slots:
void onPlotsUpdate(); void onPlotsUpdate();
void onFittingStarted(); void onFittingStarted();
void onFittingFinished(); void onFittingFinished();
void onFittingError(const QString& text);
void onProgressInfoUpdate(const FitProgressInfo &info); void onProgressInfoUpdate(const FitProgressInfo &info);
void updateIterationCount(const FitProgressInfo &info); void updateIterationCount(const FitProgressInfo &info);
void updateFitParameterValues(const FitProgressInfo &info); void updateFitParameterValues(const FitProgressInfo &info);
...@@ -63,6 +67,7 @@ private: ...@@ -63,6 +67,7 @@ private:
JobItem* m_jobItem; JobItem* m_jobItem;
RunFitManager *m_runFitManager; RunFitManager *m_runFitManager;
std::shared_ptr<GUIFitObserver> m_observer; std::shared_ptr<GUIFitObserver> m_observer;
std::unique_ptr<FitLog> m_fitlog;
bool m_block_progress_update; bool m_block_progress_update;
}; };
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include "FitSuiteManager.h" #include "FitSuiteManager.h"
#include "RunFitControlWidget.h" #include "RunFitControlWidget.h"
#include "JobMessagePanel.h" #include "JobMessagePanel.h"
#include "FitLog.h"
#include <QMessageBox> #include <QMessageBox>
#include <QTabWidget> #include <QTabWidget>
#include <QVBoxLayout> #include <QVBoxLayout>
...@@ -96,6 +97,7 @@ void FitSuiteWidget::setModelTuningWidget(ParameterTuningWidget *tuningWidget) ...@@ -96,6 +97,7 @@ void FitSuiteWidget::setModelTuningWidget(ParameterTuningWidget *tuningWidget)
void FitSuiteWidget::setJobMessagePanel(JobMessagePanel* jobMessagePanel) void FitSuiteWidget::setJobMessagePanel(JobMessagePanel* jobMessagePanel)
{ {
m_jobMessagePanel = jobMessagePanel; m_jobMessagePanel = jobMessagePanel;
m_fitSuiteManager->fitLog()->setMessagePanel(m_jobMessagePanel);
} }
QSize FitSuiteWidget::sizeHint() const QSize FitSuiteWidget::sizeHint() const
...@@ -108,52 +110,10 @@ QSize FitSuiteWidget::minimumSizeHint() const ...@@ -108,52 +110,10 @@ QSize FitSuiteWidget::minimumSizeHint() const
return QSize(25, 25); return QSize(25, 25);
} }
//! Propagates fit progress as reported by GUIFitObserver back to JobItem.
//void FitSuiteWidget::onProgressInfoUpdate(const FitProgressInfo &info)
//{
// if(m_block_progress_update) return;
// m_block_progress_update = true;
// updateIterationCount(info);
// updateTuningWidgetParameterValues(info);
// updateLog(info);
// m_block_progress_update = false;
//}
void FitSuiteWidget::onFittingStarted()
{
m_jobMessagePanel->onClearLog();
}
void FitSuiteWidget::onFittingFinished()
{
if(m_currentItem->isCompleted())
m_jobMessagePanel->onMessage(QStringLiteral("Done"), QColor(Qt::darkBlue));
}
void FitSuiteWidget::onFittingLogUpdate(const QString& text)
{
m_jobMessagePanel->onMessage(text);
}
void FitSuiteWidget::onFittingError(const QString& text) void FitSuiteWidget::onFittingError(const QString& text)
{ {
QString message; m_controlWidget->onFittingError(text);
message.append("Current settings cause fitting failure.\n\n");
message.append(text);
m_jobMessagePanel->onMessage(message, QColor(Qt::darkRed));
m_controlWidget->onFittingError(message);
}
void FitSuiteWidget::onFittingMessage(const QString& text)
{
m_jobMessagePanel->onMessage(text);
} }
void FitSuiteWidget::connectSignals() void FitSuiteWidget::connectSignals()
...@@ -161,17 +121,7 @@ void FitSuiteWidget::connectSignals() ...@@ -161,17 +121,7 @@ void FitSuiteWidget::connectSignals()
connect(m_controlWidget, SIGNAL(startFittingPushed()), m_fitSuiteManager, SLOT(onStartFittingRequest())); connect(m_controlWidget, SIGNAL(startFittingPushed()), m_fitSuiteManager, SLOT(onStartFittingRequest()));
connect(m_controlWidget, SIGNAL(stopFittingPushed()), m_fitSuiteManager, SLOT(onStopFittingRequest())); connect(m_controlWidget, SIGNAL(stopFittingPushed()), m_fitSuiteManager, SLOT(onStopFittingRequest()));
connect(m_fitSuiteManager, SIGNAL(fittingStarted()), this, SLOT(onFittingStarted()));
connect(m_fitSuiteManager, SIGNAL(fittingFinished()), this, SLOT(onFittingFinished()));
connect(m_fitSuiteManager, SIGNAL(fittingMessage(QString)),
this, SLOT(onFittingMessage(QString)));
connect(m_fitSuiteManager, SIGNAL(fittingError(QString)), connect(m_fitSuiteManager, SIGNAL(fittingError(QString)),
this, SLOT(onFittingError(QString))); this, SLOT(onFittingError(QString)));
connect(m_fitSuiteManager->fitObserver().get(), SIGNAL(logInfoUpdate(QString)),
this, SLOT(onFittingLogUpdate(QString)));
} }
...@@ -57,11 +57,7 @@ public: ...@@ -57,11 +57,7 @@ public:
QSize minimumSizeHint() const; QSize minimumSizeHint() const;
private slots: private slots:
void onFittingStarted();
void onFittingFinished();
void onFittingLogUpdate(const QString &text);
void onFittingError(const QString &text); void onFittingError(const QString &text);
void onFittingMessage(const QString &text);
private: private:
void connectSignals(); void connectSignals();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment