Skip to content
Snippets Groups Projects
Commit 0ff4a814 authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

StackedJobFrames with fixed suite of five frames

parent e1a32325
No related branches found
No related tags found
1 merge request!2445frames and axis panels now stateless, and created at startup
......@@ -37,11 +37,11 @@ ProgressCanvas::ProgressCanvas()
void ProgressCanvas::setJobItem()
{
if (const JobItem* ji = gDoc->jobs()->currentItem()) {
connect(ji->fitSuiteItem(), &FitSuiteItem::iterationCountChanged, this,
&ProgressCanvas::onIterationCountChanged, Qt::UniqueConnection);
show();
connect(ji->fitSuiteItem(), &FitSuiteItem::iterationCountChanged, this,
&ProgressCanvas::onIterationCountChanged, Qt::UniqueConnection);
show();
} else
hide();
hide();
}
void ProgressCanvas::onIterationCountChanged(int iter)
......
......@@ -14,11 +14,8 @@
#include "GUI/View/Frame/StackedFrames.h"
#include "Base/Util/Assert.h"
#include "GUI/Model/Data/Data1DItem.h"
#include "GUI/Model/Data/Data2DItem.h"
#include "GUI/Model/Data/DataItem.h"
#include "GUI/Model/Files/DatafilesSet.h"
#include "GUI/Model/Job/JobItem.h"
#include "GUI/Model/Job/JobsSet.h"
#include "GUI/Model/Project/ProjectDocument.h"
#include "GUI/View/Frame/Fit1DFrame.h"
#include "GUI/View/Frame/Fit2DFrame.h"
......@@ -52,54 +49,35 @@ StackedDataFrames::StackedDataFrames()
void StackedDataFrames::showCurrentFrame()
{
if (const DatafileItem* dfi = gDoc->datafiles()->currentItem()) {
if (dfi->rank() == 1)
setCurrentIndex(1);
else if (dfi->rank() == 2)
setCurrentIndex(2);
else
ASSERT_NEVER;
} else
if (const DatafileItem* dfi = gDoc->datafiles()->currentItem())
setCurrentIndex(dfi->rank());
else
setCurrentIndex(0);
}
StackedFrames::StackedFrames()
StackedJobFrames::StackedJobFrames()
{
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
setMinimumSize(500, 600);
QWidget* widget = new ::EmptyFrame;
addWidget(widget);
m_item_to_widget[nullptr] = widget;
setCurrentWidget(widget);
}
addWidget(new ::EmptyFrame);
addWidget(new Plot1DFrame);
addWidget(new Plot2DFrame);
addWidget(new Fit1DFrame);
addWidget(new Fit2DFrame);
setCurrentIndex(0);
void StackedFrames::setStackedItem(QObject* item)
{
QWidget* widget;
auto it = m_item_to_widget.find(item);
if (it != m_item_to_widget.end()) {
widget = it.value();
} else {
widget = newFrame(item);
addWidget(widget);
m_item_to_widget[item] = widget;
}
setCurrentWidget(widget);
connect(gDoc->datafiles(), &DatafilesSet::setChanged, this,
&StackedJobFrames::showCurrentFrame);
showCurrentFrame();
}
QWidget* StackedJobFrames::newFrame(QObject* obj) const
void StackedJobFrames::showCurrentFrame()
{
if (dynamic_cast<Data1DItem*>(obj))
return new Plot1DFrame;
if (dynamic_cast<Data2DItem*>(obj))
return new Plot2DFrame;
if (auto* item = dynamic_cast<JobItem*>(obj)) {
if (item->rank() == 1)
return new Fit1DFrame;
if (item->rank() == 2)
return new Fit2DFrame;
}
ASSERT_NEVER;
if (const JobItem* ji = gDoc->jobs()->currentItem()) {
const int offset = ji->isValidForFitting() ? 2 : 0;
setCurrentIndex(offset + ji->rank());
} else
setCurrentIndex(0);
}
......@@ -15,36 +15,18 @@
#ifndef BORNAGAIN_GUI_VIEW_FRAME_STACKEDFRAMES_H
#define BORNAGAIN_GUI_VIEW_FRAME_STACKEDFRAMES_H
#include "Base/Types/OwningVector.h"
#include <QMap>
#include <QStackedWidget>
class StackedDataFrames : public QStackedWidget {
public:
StackedDataFrames();
void showCurrentFrame();
private:
OwningVector<QWidget> m_widgets;
};
class StackedFrames : public QStackedWidget {
class StackedJobFrames : public QStackedWidget {
public:
StackedFrames();
//! Shows the widget for given item (and hides previous one).
//! If no widget yet exists, it will be created.
void setStackedItem(QObject* item);
private:
virtual QWidget* newFrame(QObject*) const = 0;
QMap<QObject*, QWidget*> m_item_to_widget;
};
class StackedJobFrames : public StackedFrames {
private:
QWidget* newFrame(QObject*) const override;
StackedJobFrames();
void showCurrentFrame();
};
#endif // BORNAGAIN_GUI_VIEW_FRAME_STACKEDFRAMES_H
......@@ -112,7 +112,7 @@ void JobView::fillViewMenu(QMenu* menu)
void JobView::onJobSelectionChanged()
{
setJob(selectedJobItem());
setJob();
m_job_real_time_widget->setJobItem(selectedJobItem());
m_fit_activity_panel->setJobItem(selectedJobItem());
......@@ -143,21 +143,14 @@ void JobView::onJobSelected(JobItem* job_item)
setActivity(newActivity);
setJob(job_item);
setJob();
emit jobSelected(GUI::ID::Job);
}
void JobView::setJob(JobItem* job_item)
void JobView::setJob()
{
if (job_item) {
if (job_item->isValidForFitting())
m_data_frames->setStackedItem(job_item);
else
m_data_frames->setStackedItem(job_item->simulatedDataItem());
} else {
m_data_frames->setStackedItem(nullptr);
}
m_data_frames->showCurrentFrame();
}
......
......@@ -52,7 +52,7 @@ private slots:
private:
JobItem* selectedJobItem();
void setActivity(JobViewActivity activity);
void setJob(JobItem* job_item);
void setJob();
void resetLayout();
......
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