Skip to content
Snippets Groups Projects
Commit 629e7387 authored by Mikhail Svechnikov's avatar Mikhail Svechnikov Committed by Mikhail Svechnikov
Browse files

doing IntensityDataPropertyWidget connections

parent f34747a3
Branches
Tags
1 merge request!909GUI refactoring: remove mappers from JobItem
......@@ -41,7 +41,6 @@ const QString Instrument("Instrument");
} // namespace Tags
} // namespace
JobItem::JobItem()
: SessionItem(M_TYPE)
{
......@@ -65,11 +64,11 @@ JobItem::JobItem()
registerTag(T_FIT_SUITE, 1, 1, {FitSuiteItem::M_TYPE});
mapper()->setOnChildPropertyChange([this](SessionItem* item, const QString& name) {
if (item->parent() == this && dynamic_cast<DataItem*>(item)
&& DataItem::isAxesUnitsPropertyName(name))
dynamic_cast<DataItem*>(item)->updateCoords(instrumentItem());
});
// mapper()->setOnChildPropertyChange([this](SessionItem* item, const QString& name) {
// if (item->parent() == this && dynamic_cast<DataItem*>(item)
// && DataItem::isAxesUnitsPropertyName(name))
// dynamic_cast<DataItem*>(item)->updateCoords(instrumentItem());
// });
}
QString JobItem::getIdentifier() const
......
......@@ -47,7 +47,6 @@ void ItemComboWidget::registerWidget(const QString& presentationType, factory_fu
}
//! Sets stack to show widget corresponding to given presentation
void ItemComboWidget::setPresentation(const QString& presentationType)
{
if (presentationType.isEmpty()) {
......
......@@ -25,9 +25,9 @@
IntensityDataWidget::IntensityDataWidget(QWidget* parent)
: SessionItemWidget(parent)
, m_intensityCanvas(new IntensityDataCanvas)
, m_propertyWidget(new IntensityDataPropertyWidget)
, m_propertyWidget(new IntensityDataPropertyWidget(this))
, m_fftPresenter(new IntensityDataFFTPresenter(this))
{
{
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
m_propertyWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum);
......
......@@ -35,7 +35,7 @@ FitComparisonWidget::FitComparisonWidget(QWidget* parent)
, m_relativeDiffPlot(new ColorMapCanvas)
, m_fitFlowWidget(new FitFlowWidget)
, m_statusLabel(new PlotStatusLabel(nullptr, this))
, m_propertyWidget(new IntensityDataPropertyWidget)
, m_propertyWidget(new IntensityDataPropertyWidget(this))
, m_resetViewAction(new QAction(this))
, m_comparisonController(new FitComparisonController2D(this))
{
......
......@@ -14,6 +14,8 @@
#include "GUI/View/PlotUtil/IntensityDataPropertyWidget.h"
#include "GUI/Model/Data/IntensityDataItem.h"
#include "GUI/View/Common/SessionItemWidget.h"
#include "GUI/Model/Job/JobItem.h"
#include "GUI/Model/Device/AxesItems.h"
#include "GUI/Util/ComboProperty.h"
#include "GUI/View/Common/DoubleSpinBox.h"
......@@ -27,6 +29,7 @@
IntensityDataPropertyWidget::IntensityDataPropertyWidget(QWidget* parent)
: QWidget(parent)
, parent(parent)
, m_item(nullptr)
{
setWindowTitle("Properties");
......@@ -44,6 +47,7 @@ IntensityDataPropertyWidget::~IntensityDataPropertyWidget()
m_item->mapper()->unsubscribe(this);
}
#include <QDebug>
void IntensityDataPropertyWidget::setItem(IntensityDataItem* item)
{
if (m_item)
......@@ -56,7 +60,18 @@ void IntensityDataPropertyWidget::setItem(IntensityDataItem* item)
if (!item)
return;
m_mainLayout->addRow("Axes units:", createComboBox(item->axesUnits()));
QComboBox* axesUnitsCombo = createComboBox(item->axesUnits());
// Connection instead of using sessionItem mapper
connect(axesUnitsCombo, &QComboBox::currentTextChanged, this, [=](QString currentText) {
Q_UNUSED(currentText)
// It doesn't work for real data map and diff data map
// Also need to connect other intensity data items
if(jobItem())
item->updateCoords(jobItem()->instrumentItem());
});
qInfo() << "IntensityDataPropertyWidget : jobItem is" << jobItem() << endl;
m_mainLayout->addRow("Axes units:", axesUnitsCombo);
m_mainLayout->addRow("Color scheme:", createComboBox(item->gradient()));
m_mainLayout->addRow(createCheckBox(
......@@ -109,6 +124,15 @@ void IntensityDataPropertyWidget::setItem(IntensityDataItem* item)
item->mapper()->setOnItemDestroy([this](SessionItem*) { m_item = nullptr; }, this);
}
const JobItem* IntensityDataPropertyWidget::jobItem() const
{
SessionItemWidget* sessionItemWidget = dynamic_cast<SessionItemWidget*>(parent);
if(!sessionItemWidget)
return nullptr;
return dynamic_cast<JobItem*>(sessionItemWidget->currentItem());
}
QWidget* IntensityDataPropertyWidget::createDoubleSpinbox(DoubleDescriptor d)
{
auto* spinBox = new DoubleSpinBox(this, d);
......@@ -151,7 +175,7 @@ QWidget* IntensityDataPropertyWidget::createCheckBox(const QString& title, funct
return checkBox;
}
QWidget* IntensityDataPropertyWidget::createComboBox(SelectionDescriptor<QString> d)
QComboBox* IntensityDataPropertyWidget::createComboBox(SelectionDescriptor<QString> d)
{
auto* combo = new QComboBox(this);
combo->addItems(d.options);
......
......@@ -18,11 +18,11 @@
#include "GUI/Model/Descriptor/SelectionDescriptor.h"
#include <QList>
#include <QString>
#include <QWidget>
#include <QComboBox>
#include <functional>
class IntensityDataItem;
class SessionItem;
class JobItem;
class QFormLayout;
class DoubleDescriptor;
......@@ -37,6 +37,7 @@ public:
~IntensityDataPropertyWidget();
void setItem(IntensityDataItem* item);
const JobItem* jobItem() const;
private:
QWidget* createDoubleSpinbox(DoubleDescriptor d);
......@@ -44,11 +45,12 @@ private:
QWidget* createCheckBox(const QString& title, SessionItem* item);
QWidget* createCheckBox(const QString& title, function<bool()> getter,
function<void(bool)> setter);
QWidget* createComboBox(SelectionDescriptor<QString> d);
QComboBox* createComboBox(SelectionDescriptor<QString> d);
void updateUIValues();
private:
QWidget* parent;
IntensityDataItem* m_item;
QFormLayout* m_mainLayout;
QList<function<void()>> m_updaters;
......
......@@ -21,13 +21,12 @@
IntensityDataProjectionsWidget::IntensityDataProjectionsWidget(QWidget* parent)
: SessionItemWidget(parent)
, m_projectionsEditor(new ProjectionsEditor)
, m_projectionsEditor(new ProjectionsEditor(this))
{
auto* vlayout = new QVBoxLayout(this);
auto* vlayout = new QVBoxLayout;
vlayout->setMargin(0);
vlayout->setSpacing(0);
vlayout->addWidget(m_projectionsEditor);
setLayout(vlayout);
}
......
......@@ -24,13 +24,13 @@
#include <QItemSelectionModel>
#include <QSplitter>
ProjectionsEditor::ProjectionsEditor(QWidget* parent)
ProjectionsEditor::ProjectionsEditor(SessionItemWidget* upperSessionItemWidget, QWidget* parent)
: QMainWindow(parent)
, m_editorActions(new ProjectionsEditorActions(this))
, m_toolbar(new ProjectionsToolbar(m_editorActions))
, m_projectionsCanvas(new ProjectionsEditorCanvas)
, m_projectionsWidget(new ProjectionsWidget)
, m_propertyPanel(new IntensityDataPropertyWidget)
, m_propertyPanel(new IntensityDataPropertyWidget(upperSessionItemWidget)) // here not "this", because IntensityDataPropertyWidget requires access to jobItem
, m_selectionModel(nullptr)
{
addToolBar(Qt::RightToolBarArea, m_toolbar);
......
......@@ -27,6 +27,7 @@ class ProjectionsEditorCanvas;
class ProjectionsWidget;
class QItemSelectionModel;
class IntensityDataPropertyWidget;
class SessionItemWidget;
//! Editor to draw projections on top of intensity plot. Part of
......@@ -34,7 +35,7 @@ class ProjectionsEditor : public QMainWindow {
Q_OBJECT
public:
ProjectionsEditor(QWidget* parent = nullptr);
ProjectionsEditor(SessionItemWidget* upperSessionItemWidget = nullptr, QWidget* parent = nullptr);
void setContext(SessionModel* model, const QModelIndex& shapeContainerIndex,
IntensityDataItem* intensityItem);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment