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

AxisPanel decoupled, rm DataPropertyWidget

parent 8cf310f1
No related branches found
No related tags found
1 merge request!2321rm DataPropertyWidget, axis/axes panels w/o inheritance
// ************************************************************************************************
//
// BornAgain: simulate and fit reflection and scattering
//
//! @file GUI/View/Access/DataPropertyWidget.cpp
//! @brief Defines class DataPropertyWidget.
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2022
//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
// ************************************************************************************************
#include "GUI/View/Access/DataPropertyWidget.h"
#include "Base/Axis/Frame.h"
#include "Base/Util/Assert.h"
#include "GUI/Model/Data/DataItem.h"
#include "GUI/Model/Device/DatafileItem.h"
#include "GUI/Model/Device/InstrumentItems.h"
#include "GUI/Model/Job/DataSource.h"
#include "GUI/Model/Job/JobItem.h"
#include "GUI/Model/Project/ProjectDocument.h"
DataPropertyWidget::DataPropertyWidget()
: m_main_layout(new QFormLayout(this))
{
setWindowTitle("Properties");
m_main_layout->setContentsMargins(8, 20, 8, 8);
m_main_layout->setSpacing(5);
}
DataPropertyWidget::~DataPropertyWidget() = default;
void DataPropertyWidget::setJobOrDatafileItem(QObject* item)
{
m_data_source = std::make_unique<DataSource>(item);
createPanelElements();
}
void DataPropertyWidget::updateItemCoords(DataItem* item)
{
if (!item)
return;
emit item->axesUnitsReplotRequested();
updateUIValues();
}
void DataPropertyWidget::updateUIValues()
{
for (const auto& updater : m_updaters)
updater();
}
// ************************************************************************************************
//
// BornAgain: simulate and fit reflection and scattering
//
//! @file GUI/View/Access/DataPropertyWidget.h
//! @brief Defines class DataPropertyWidget.
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2022
//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
// ************************************************************************************************
#ifndef BORNAGAIN_GUI_VIEW_ACCESS_DATAPROPERTYWIDGET_H
#define BORNAGAIN_GUI_VIEW_ACCESS_DATAPROPERTYWIDGET_H
#include <QFormLayout>
#include <QWidget>
class DataItem;
class DataSource;
//! Base class for AxesPanel and AxisPanel.
class DataPropertyWidget : public QWidget {
Q_OBJECT
public:
explicit DataPropertyWidget();
~DataPropertyWidget();
void setJobOrDatafileItem(QObject* item);
signals:
void axesRangeResetRequested();
protected:
void updateItemCoords(DataItem* item);
void updateUIValues();
virtual void createPanelElements() = 0;
QFormLayout* m_main_layout;
QList<std::function<void()>> m_updaters;
std::unique_ptr<DataSource> m_data_source;
};
#endif // BORNAGAIN_GUI_VIEW_ACCESS_DATAPROPERTYWIDGET_H
......@@ -74,8 +74,6 @@ Fit2DFrame::Fit2DFrame(JobItem* job_item)
connect(m_reset_view_action, &QAction::triggered, this, &Fit2DFrame::onResetViewAction);
m_axes_panel->setVisible(false);
connect(m_axes_panel, &DataPropertyWidget::axesRangeResetRequested, this,
&Fit2DFrame::onResetViewAction);
ASSERT(job_item);
m_data_source = std::make_unique<DataSource>(job_item);
......
......@@ -28,6 +28,17 @@
#include <QFormLayout>
#include <QLineEdit>
AxesPanel::AxesPanel()
: m_main_layout(new QFormLayout(this))
{
setWindowTitle("Properties");
m_main_layout->setContentsMargins(8, 20, 8, 8);
m_main_layout->setSpacing(5);
}
AxesPanel::~AxesPanel() = default;
void AxesPanel::createPanelElements()
{
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::MinimumExpanding);
......@@ -209,3 +220,24 @@ void AxesPanel::createPanelElements()
&AxesPanel::updateItemCoords, Qt::UniqueConnection);
*/
}
void AxesPanel::setJobOrDatafileItem(QObject* item)
{
m_data_source = std::make_unique<DataSource>(item);
createPanelElements();
}
void AxesPanel::updateItemCoords(DataItem* item)
{
if (!item)
return;
emit item->axesUnitsReplotRequested();
updateUIValues();
}
void AxesPanel::updateUIValues()
{
for (const auto& updater : m_updaters)
updater();
}
......@@ -15,13 +15,30 @@
#ifndef BORNAGAIN_GUI_VIEW_SETUP_AXESPANEL_H
#define BORNAGAIN_GUI_VIEW_SETUP_AXESPANEL_H
#include "GUI/View/Access/DataPropertyWidget.h"
#include <QFormLayout>
#include <QWidget>
//! Widget to edit properties of an Data2DItem.
class DataItem;
class DataSource;
//! Widget to edit properties of a Data2DItem.
class AxesPanel : public QWidget {
public:
AxesPanel();
~AxesPanel();
void setJobOrDatafileItem(QObject* item);
class AxesPanel : public DataPropertyWidget {
private:
void createPanelElements() override;
void updateItemCoords(DataItem* item);
void updateUIValues();
void createPanelElements();
QFormLayout* m_main_layout;
QList<std::function<void()>> m_updaters;
std::unique_ptr<DataSource> m_data_source;
};
#endif // BORNAGAIN_GUI_VIEW_SETUP_AXESPANEL_H
......@@ -24,7 +24,6 @@ class DataSource;
//! Widget to edit properties of a Data1DItem.
class AxisPanel : public QWidget {
Q_OBJECT
public:
AxisPanel();
~AxisPanel();
......
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