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

AxisPanel decoupled from DataPropertyWidget

parent b21dc3f8
No related branches found
No related tags found
1 merge request!2321rm DataPropertyWidget, axis/axes panels w/o inheritance
......@@ -72,8 +72,6 @@ Fit1DFrame::Fit1DFrame(JobItem* job_item)
connect(m_reset_view_action, &QAction::triggered, this, &Fit1DFrame::onResetViewAction);
m_axis_panel->setVisible(false);
connect(m_axis_panel, &DataPropertyWidget::axesRangeResetRequested, this,
&Fit1DFrame::onResetViewAction);
ASSERT(job_item);
m_data_source = std::make_unique<DataSource>(job_item);
......
......@@ -46,7 +46,7 @@ SpecularFrame::SpecularFrame(Data1DItem* item)
hlayout->addWidget(m_specular_canvas);
connect(m_specular_canvas, &SpecularDataCanvas::customContextMenuRequested,
[](const QPoint& point) { execContextMenu(point); });
[](const QPoint& point) { execContextMenu(point); });
auto* axis_panel = new AxisPanel;
hlayout->addWidget(axis_panel);
......
......@@ -13,10 +13,16 @@
// ************************************************************************************************
#include "GUI/View/Setup/AxisPanel.h"
#include "Base/Axis/Frame.h"
#include "Base/Util/Assert.h"
#include "GUI/Model/Axis/AmplitudeAxisItem.h"
#include "GUI/Model/Axis/BasicAxisItem.h"
#include "GUI/Model/Data/Data1DItem.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"
#include "GUI/Support/Data/ComboProperty.h"
#include "GUI/View/Numeric/DoubleSpinBox.h"
......@@ -28,6 +34,17 @@
#include <QFormLayout>
#include <QLineEdit>
AxisPanel::AxisPanel()
: m_main_layout(new QFormLayout(this))
{
setWindowTitle("Properties");
m_main_layout->setContentsMargins(8, 20, 8, 8);
m_main_layout->setSpacing(5);
}
AxisPanel::~AxisPanel() = default;
void AxisPanel::createPanelElements()
{
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::MinimumExpanding);
......@@ -41,20 +58,6 @@ void AxisPanel::createPanelElements()
GUI::Util::Layout::clearLayout(m_main_layout);
m_updaters.clear();
/*
m_main_layout->addRow("Axes units:",
GUI::Util::createUnitsComboBox(
axesUnitsList(),
[this] { return currentData1DItem()->currentAxesUnits(); },
[this](const QString& newVal) {
for (auto item : allData1DItems())
item->setCurrentAxesUnits(newVal);
emit axesRangeResetRequested();
gDoc->setModified();
},
&m_updaters));
*/
// -- x-axis
auto* xGroup = new StaticGroupBox("X axis", this);
auto* xFormLayout = new QFormLayout(xGroup->body());
......@@ -151,3 +154,24 @@ void AxisPanel::createPanelElements()
connect(item, &DataItem::axesUnitsChanged, this, &AxisPanel::updateItemCoords,
Qt::UniqueConnection);
}
void AxisPanel::setJobOrDatafileItem(QObject* item)
{
m_data_source = std::make_unique<DataSource>(item);
createPanelElements();
}
void AxisPanel::updateItemCoords(DataItem* item)
{
if (!item)
return;
emit item->axesUnitsReplotRequested();
updateUIValues();
}
void AxisPanel::updateUIValues()
{
for (const auto& updater : m_updaters)
updater();
}
......@@ -15,13 +15,31 @@
#ifndef BORNAGAIN_GUI_VIEW_SETUP_AXISPANEL_H
#define BORNAGAIN_GUI_VIEW_SETUP_AXISPANEL_H
#include "GUI/View/Access/DataPropertyWidget.h"
#include <QFormLayout>
#include <QWidget>
class DataItem;
class DataSource;
//! Widget to edit properties of a Data1DItem.
class AxisPanel : public DataPropertyWidget {
class AxisPanel : public QWidget {
Q_OBJECT
public:
AxisPanel();
~AxisPanel();
void setJobOrDatafileItem(QObject* item);
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_AXISPANEL_H
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