Skip to content
Snippets Groups Projects
Commit d4a38bdf authored by Yurov, Dmitry's avatar Yurov, Dmitry
Browse files

Enable specular view in GUI

Redmine: #1936
parent 7a26c432
No related branches found
No related tags found
No related merge requests found
......@@ -263,6 +263,25 @@ QString JobItem::presentationType()
return getItemValue(P_PRESENTATION_TYPE).toString();
}
QString JobItem::defaultPresentationType()
{
auto instrument = instrumentItem();
if (!instrument)
GUIHelpers::Error("Error in JobItem::defaultPresentationType: default presentation type "
"cannot be determined");
auto instrument_type = instrument->modelType();
if (instrument_type == Constants::SpecularInstrumentType)
return Constants::SpecularDataPresentation;
else if (instrument_type == Constants::GISASInstrumentType
|| instrument_type == Constants::OffSpecInstrumentType)
return Constants::IntensityDataPresentation;
else
GUIHelpers::Error("Error in JobItem::defaultPresentationType: unknown type of instrument "
"attached to the job item.");
return QString();
}
//! Updates the name of file to store intensity data.
void JobItem::updateIntensityDataFileName()
......
......@@ -98,6 +98,7 @@ public:
RealDataItem* realDataItem();
QString presentationType();
QString defaultPresentationType();
private:
void updateIntensityDataFileName();
......
......@@ -91,6 +91,8 @@ JobItem *JobModel::addJob(const MultiLayerItem *multiLayerItem,
jobItem->getItem(JobItem::P_SAMPLE_NAME)->setValue(multiLayerItem->itemName());
jobItem->getItem(JobItem::P_INSTRUMENT_NAME)->setValue(instrumentItem->itemName());
jobItem->setItemValue(JobItem::P_PRESENTATION_TYPE, jobItem->defaultPresentationType());
ParameterTreeUtils::createParameterTree(jobItem);
JobModelFunctions::setupJobItemOutput(jobItem);
......
......@@ -62,7 +62,6 @@ void JobModelFunctions::setupJobItemOutput(JobItem* jobItem)
}
//! Setups JobItem for fit.
void JobModelFunctions::setupJobItemForFit(JobItem *jobItem, const RealDataItem *realDataItem)
......
......@@ -263,6 +263,7 @@ const ModelType AVERAGE_LAYER_MATERIAL = "Average Layer Material";
// --- Presentation types ----------------------------------------------------------
const QString IntensityDataPresentation = "Color Map";
const QString SpecularDataPresentation = "Reflectometry";
const QString IntensityProjectionsPresentation = "Projections";
const QString FitComparisonPresentation = "Fit Data";
const QString MaskEditorPresentation = "Mask Editor";
......
......@@ -61,9 +61,9 @@ void JobOutputDataWidget::onActivityChanged(int activity)
if (activity == JobViewFlags::FITTING_ACTIVITY) {
widget->setPresentation(Constants::FitComparisonPresentation);
} else if (activity == JobViewFlags::REAL_TIME_ACTIVITY) {
widget->setPresentation(Constants::IntensityDataPresentation);
widget->setDefaultPresentation();
} else if (activity == JobViewFlags::JOB_VIEW_ACTIVITY) {
widget->setPresentation(Constants::IntensityDataPresentation);
widget->setDefaultPresentation();
}
}
}
......@@ -74,5 +74,5 @@ bool JobOutputDataWidget::isValidJobItem(JobItem *item)
return false;
// do not show running job items, the rest (canceled, fitted, etc) are shown
return item->isRunning() ? false: true;
return !item->isRunning();
}
......@@ -13,10 +13,11 @@
// ************************************************************************** //
#include "JobResultsPresenter.h"
#include "IntensityDataProjectionsWidget.h"
#include "FitComparisonWidget.h"
#include "JobItem.h"
#include "IntensityDataProjectionsWidget.h"
#include "IntensityDataWidget.h"
#include "JobItem.h"
#include "SpecularDataWidget.h"
namespace {
// Will switch to the presentation which was used before for given item
......@@ -32,6 +33,8 @@ JobResultsPresenter::JobResultsPresenter(QWidget* parent)
create_new<IntensityDataProjectionsWidget>);
registerWidget(Constants::FitComparisonPresentation, create_new<FitComparisonWidget>);
registerWidget(Constants::SpecularDataPresentation, create_new<SpecularDataWidget>);
}
QString JobResultsPresenter::itemPresentation() const
......@@ -48,6 +51,13 @@ void JobResultsPresenter::setPresentation(const QString& presentationType)
currentItem()->setItemValue(JobItem::P_PRESENTATION_TYPE, presentationType);
}
void JobResultsPresenter::setDefaultPresentation()
{
auto job_item = dynamic_cast<JobItem*>(currentItem());
Q_ASSERT(job_item);
setPresentation(job_item->defaultPresentationType());
}
//! Returns list of presentation types, available for given item. JobItem with fitting abilities
//! is valid for IntensityDataWidget and FitComparisonWidget.
......@@ -68,6 +78,7 @@ QStringList JobResultsPresenter::presentationList(SessionItem* item)
Q_ASSERT(item->modelType() == Constants::JobItemType);
return QStringList() << Constants::IntensityDataPresentation
<< Constants::SpecularDataPresentation
<< Constants::IntensityProjectionsPresentation
<< Constants::FitComparisonPresentation;
}
......@@ -28,6 +28,7 @@ public:
explicit JobResultsPresenter(QWidget* parent = 0);
void setPresentation(const QString& presentationType) override;
void setDefaultPresentation();
protected:
QString itemPresentation() const override;
......
......@@ -13,11 +13,12 @@
// ************************************************************************** //
#include "SpecularDataWidget.h"
#include "SpecularDataItem.h"
#include "SpecularDataCanvas.h"
#include "JobItem.h"
#include "GUIHelpers.h"
#include "IntensityDataItemUtils.h"
#include "IntensityDataPropertyWidget.h"
#include "JobItem.h"
#include "SpecularDataItem.h"
#include "SpecularDataCanvas.h"
#include <QBoxLayout>
#include <QMenu>
......@@ -69,12 +70,10 @@ void SpecularDataWidget::onContextMenuRequest(const QPoint& point)
SpecularDataItem* SpecularDataWidget::specularDataItem()
{
// temporarily commented out
// return IntensityDataItemUtils::intensityDataItem(currentItem());
auto parent = currentItem();
if (!parent || parent->modelType() != Constants::JobItemType)
throw GUIHelpers::Error(
"Error in SpecularDataWidget::specularDataItem: parent item is of unexpected type");
// temporary solution, should be removed after starting to use
// JobItem
SpecularDataItem* result = dynamic_cast<SpecularDataItem*>(currentItem());
Q_ASSERT(result);
return result;
return &parent->item<SpecularDataItem>(JobItem::T_OUTPUT);
}
......@@ -15,6 +15,7 @@
#include "TestView.h"
#include "AccordionWidget.h"
#include "JobModel.h"
#include "JobItem.h"
#include "MaskEditor.h"
#include "MaterialEditor.h"
#include "MinimizerItem.h"
......@@ -184,13 +185,15 @@ void TestView::test_ba3d()
void TestView::test_specular_data_widget()
{
SessionModel* tempModel = new SessionModel("Test", this);
auto data = fillTestItem(tempModel->insertNewItem(Constants::SpecularDataType));
auto job_item = dynamic_cast<JobItem*>(tempModel->insertNewItem(Constants::JobItemType));
fillTestItem(tempModel->insertNewItem(Constants::SpecularDataType,
tempModel->indexOfItem(job_item), -1, JobItem::T_OUTPUT));
QVBoxLayout *layout = new QVBoxLayout;
layout->setMargin(0);
layout->setSpacing(0);
auto widget = new SpecularDataWidget(this);
widget->setItem(data);
widget->setItem(job_item);
layout->addWidget(widget);
setLayout(layout);
}
......
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